{"version":3,"file":"js/81-a253b9d5d9a9763b30b6.js","mappings":"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AAEqpO,YAAY,EAAMC,cAAc,EAAMC,UAAU,EAAMrrO,UAAWkrO,EAAIppO,GAAO9B,EAgBnJ,MAAMyyJ,EAAa,CACxBxsD,wBAAyB,CACvB,CACE/pG,GAAI,YACJyD,MAAO,YACP21C,UAAU,EACVC,WAAW,EACXn9B,SAAS,GAEX,CACElc,GAAI,QACJyD,MAAO,QACP21C,UAAU,EACVC,WAAW,EACXn9B,SAAS,GAEX,CACElc,GAAI,eACJyD,MAAO,YACP21C,UAAU,EACVC,WAAW,EACXn9B,SAAS,GAEX,CACElc,GAAI,aACJyD,MAAO,UACP21C,UAAU,EACVC,WAAW,EACXn9B,SAAS,GAEX,CACElc,GAAI,aACJyD,MAAO,SACP21C,UAAU,EACVC,WAAW,EACXn9B,SAAS,GAEX,CACElc,GAAI,qBACJyD,MAAO,eACP21C,UAAU,EACVC,WAAW,EACXn9B,SAAS,GAEX,CACElc,GAAI,QACJyD,MAAO,QACP21C,UAAU,EACVC,WAAW,EACXn9B,SAAS,GAEX,CACElc,GAAI,SACJyD,MAAO,SACP21C,UAAU,EACVC,WAAW,EACXn9B,SAAS,GAEX,CACElc,GAAI,SACJyD,MAAO,SACP21C,UAAU,EACVC,WAAW,EACXn9B,SAAS,GAEX,CACElc,GAAI,WACJyD,MAAO,WACP21C,UAAU,EACVC,WAAW,EACXn9B,SAAS,GAEX,CACElc,GAAI,gBACJyD,MAAO,gBACP21C,UAAU,EACVC,WAAW,EACXn9B,SAAS,GAEX,CACElc,GAAI,sBACJyD,MAAO,UACP21C,UAAU,EACVC,WAAW,EACXn9B,SAAS,GAEX,CACElc,GAAI,EAAAwkL,iBAAiBC,MACrBhhL,MAAO,QACP21C,UAAU,EACVC,WAAW,EACXn9B,SAAS,IAGbta,QAAS,CACP,CACE2H,KAAM,YACN9F,MAAO,aAET,CACE8F,KAAM,QACN9F,MAAO,SAET,CACE8F,KAAM,eACN9F,MAAO,aAET,CACE8F,KAAM,aACN9F,MAAO,WAET,CACE8F,KAAM,aACN9F,MAAO,UAET,CACE8F,KAAM,qBACN9F,MAAO,gBAET,CACE8F,KAAM,QACN9F,MAAO,SAET,CACE8F,KAAM,SACN9F,MAAO,UAET,CACE8F,KAAM,SACN9F,MAAO,UAET,CACE8F,KAAM,WACN9F,MAAO,YAET,CACE8F,KAAM,gBACN9F,MAAO,iBAET,CACE8F,KAAM,sBACN9F,MAAO,WAET,CACE8F,KAAM,QACN9F,MAAO,UAGX4hQ,gBAAiB,CACf,CACE97P,KAAM,YACN9F,MAAO,aAET,CACE8F,KAAM,QACN9F,MAAO,SAET,CACE8F,KAAM,eACN9F,MAAO,aAET,CACE8F,KAAM,aACN9F,MAAO,WAET,CACE8F,KAAM,aACN9F,MAAO,UAET,CACE8F,KAAM,qBACN9F,MAAO,gBAET,CACE8F,KAAM,QACN9F,MAAO,SAET,CACE8F,KAAM,SACN9F,MAAO,UAET,CACE8F,KAAM,WACN9F,MAAO,YAET,CACE8F,KAAM,gBACN9F,MAAO,iBAET,CACE8F,KAAM,sBACN9F,MAAO,YAGX0tC,gBAAiB,CACf,CACE5nC,KAAM,eACN9F,MAAO,aAET,CACE8F,KAAM,aACN9F,MAAO,WAET,CACE8F,KAAM,aACN9F,MAAO,UAET,CACE8F,KAAM,qBACN9F,MAAO,gBAET,CACE8F,KAAM,QACN9F,MAAO,SAET,CACE8F,KAAM,SACN9F,MAAO,UAET,CACE8F,KAAM,SACN9F,MAAO,UAET,CACE8F,KAAM,WACN9F,MAAO,YAET,CACE8F,KAAM,gBACN9F,MAAO,iBAET,CACE8F,KAAM,sBACN9F,MAAO,WAET,CACE8F,KAAM,QACN9F,MAAO,UAGX6hQ,wBAAyB,CACvB,CACE/7P,KAAM,eACN9F,MAAO,aAET,CACE8F,KAAM,aACN9F,MAAO,WAET,CACE8F,KAAM,aACN9F,MAAO,UAET,CACE8F,KAAM,qBACN9F,MAAO,gBAET,CACE8F,KAAM,QACN9F,MAAO,SAET,CACE8F,KAAM,SACN9F,MAAO,UAET,CACE8F,KAAM,WACN9F,MAAO,YAET,CACE8F,KAAM,gBACN9F,MAAO,iBAET,CACE8F,KAAM,sBACN9F,MAAO,YAGX8hQ,qBAAsB,CACpBhkE,cAAc,EACdp5J,YAAY,EACZurI,YAAY,EACZ6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","sources":["webpack://Scout/./app/javascript/components/ sync ^\\.\\/.*$","webpack://Scout/./app/javascript/components/AIStudio/AIInterviewModal/AIInterviewModal.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIInterviewModal/components/LoadingMessage.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIInterviewModal/components/ResponseMessage.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioModal/AIStudioModal.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioModal/AIStudioTeaserModal.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioModal/Buttons/OptionalInput.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioModal/FelixNotification.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioModal/Footers/DisplayResponseFooter.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioModal/Steps/DisplayResponse.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioModal/Steps/JobDescriptionInput.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioModal/Steps/OptionalInput.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioModal/Steps/QuestionsInput.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioModal/Steps/WelcomePage.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioModal/config.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioQuestions/AIStudioForm.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioQuestions/AIStudioQuestions.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioQuestions/AIStudioResponse.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioQuestions/Footers/ResponseFooter.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioSmartShare/Footers/ResponseFooter.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioSmartShare/Footers/WelcomeFooter.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioSmartShare/Graphics/buttonSVGs.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioSmartShare/Inputs/JobDescription.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioSmartShare/SmartShare.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioSmartShare/Steps/DisplayDescription.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioSmartShare/Steps/JobBoardInput.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioSmartShare/Steps/ResponseStep.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioSmartShare/Steps/SocialInputStep.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioSmartShare/Steps/SocialMediaPreview.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioSmartShare/Steps/WelcomePage.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioSmartShare/config.tsx","webpack://Scout/./app/javascript/components/AIStudio/ApplicationSummaries/ExpandedSummaryModal.tsx","webpack://Scout/./app/javascript/components/AIStudio/ApplicationSummaries/Inputs/Inclusions.tsx","webpack://Scout/./app/javascript/components/AIStudio/ApplicationSummaries/InsightsModal/InputStep.tsx","webpack://Scout/./app/javascript/components/AIStudio/ApplicationSummaries/InsightsModal/InsightsModal.tsx","webpack://Scout/./app/javascript/components/AIStudio/ApplicationSummaries/InsightsModal/ResponseStep.tsx","webpack://Scout/./app/javascript/components/AIStudio/ApplicationSummaries/QuestionsModal/FollowUpEmail/EditStep.tsx","webpack://Scout/./app/javascript/components/AIStudio/ApplicationSummaries/QuestionsModal/FollowUpEmail/FollowUpEmail.tsx","webpack://Scout/./app/javascript/components/AIStudio/ApplicationSummaries/QuestionsModal/FollowUpEmail/InputStep.tsx","webpack://Scout/./app/javascript/components/AIStudio/ApplicationSummaries/QuestionsModal/HomeStep/HomeStep.tsx","webpack://Scout/./app/javascript/components/AIStudio/ApplicationSummaries/QuestionsModal/HomeStep/InputTab.tsx","webpack://Scout/./app/javascript/components/AIStudio/ApplicationSummaries/QuestionsModal/HomeStep/SavedQuestionsTab.tsx","webpack://Scout/./app/javascript/components/AIStudio/ApplicationSummaries/QuestionsModal/InterviewQuestions.tsx","webpack://Scout/./app/javascript/components/AIStudio/ApplicationSummaries/QuestionsModal/ResponseStep.tsx","webpack://Scout/./app/javascript/components/AIStudio/ApplicationSummaries/SummaryPopover.tsx","webpack://Scout/./app/javascript/components/AIStudio/NewJobIntegration/AIStudioNewJob.tsx","webpack://Scout/./app/javascript/components/AIStudio/NewJobIntegration/QuestionsPreview.tsx","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/Buttons/EmailButton.tsx","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/Buttons/ExportButton.tsx","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/Buttons/ToggleButtons.tsx","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/CopyableQuestions.tsx","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/DisplayHTMLCollapsible.tsx","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/DisplayHTMLViewOnly.tsx","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/Footers/DynamicFooter.tsx","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/Graphics/FelixSVG.tsx","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/Inputs/PositionTitle.tsx","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/Inputs/PreferredSkills.tsx","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/Inputs/StyledDropdown.tsx","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/Inputs/Switch.tsx","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/SelectableCopyableQuestions.tsx","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/StaticQuestionsPreview.tsx","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/Steps/ErrorScreen.tsx","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/Steps/LoadingResponse.tsx","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/sharedConfig.tsx","webpack://Scout/./app/javascript/components/Calendly/AddToCalendlyEventModal/index.tsx","webpack://Scout/./app/javascript/components/Calendly/Modal/Modal.tsx","webpack://Scout/./app/javascript/components/Calendly/Modal/components/CompleteModal/index.tsx","webpack://Scout/./app/javascript/components/Calendly/Modal/components/Steps/Step1/Step1.tsx","webpack://Scout/./app/javascript/components/Calendly/Modal/components/Steps/Step2/EventType.tsx","webpack://Scout/./app/javascript/components/Calendly/Modal/components/Steps/Step2/Step2.tsx","webpack://Scout/./app/javascript/components/Calendly/Modal/components/Steps/Step3/Step3.tsx","webpack://Scout/./app/javascript/components/Calendly/Modal/components/Steps/Step4/OverviewItem.tsx","webpack://Scout/./app/javascript/components/Calendly/Modal/components/Steps/Step4/Step4.tsx","webpack://Scout/./app/javascript/components/Calendly/ScheduledEvents/BadAPIModal.tsx","webpack://Scout/./app/javascript/components/Calendly/ScheduledEvents/ScheduledEvents.tsx","webpack://Scout/./app/javascript/components/Calendly/ScheduledEvents/components/EventItem/index.tsx","webpack://Scout/./app/javascript/components/CareersPortalReport/index.tsx","webpack://Scout/./app/javascript/components/CareersPortalSocialPreview/index.tsx","webpack://Scout/./app/javascript/components/NewEngage/AISearch/EngageAISearch.tsx","webpack://Scout/./app/javascript/components/NewEngage/AISearch/EngageSearchBar.tsx","webpack://Scout/./app/javascript/components/NewEngage/AISearch/EngageSearchTableActions.tsx","webpack://Scout/./app/javascript/components/NewEngage/AISearch/EngageSearchTableRows.tsx","webpack://Scout/./app/javascript/components/NewEngage/AISearch/EngageTableActionComponents.tsx","webpack://Scout/./app/javascript/components/NewEngage/AISearch/Modals/ActionDrawer/ActionDrawerModals.tsx","webpack://Scout/./app/javascript/components/NewEngage/AISearch/Modals/ActionDrawer/AddToCandidatePool.tsx","webpack://Scout/./app/javascript/components/NewEngage/AISearch/Modals/AddCurrentSearch.tsx","webpack://Scout/./app/javascript/components/NewEngage/AISearch/Modals/TLPMatchModal/EditBooleanStep.tsx","webpack://Scout/./app/javascript/components/NewEngage/AISearch/Modals/TLPMatchModal/SelectTLPStep.tsx","webpack://Scout/./app/javascript/components/NewEngage/AISearch/Modals/TLPMatchModal/TLPMatchModal.tsx","webpack://Scout/./app/javascript/components/NewEngage/AISearch/SearchFilters.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePoolAnalytics/Analytics/Analytics.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePoolAnalytics/Analytics/OpenEmailStatistics.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePoolAnalytics/Analytics/StatusStatistics.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePoolAnalytics/Applications/ApplicationTableRows.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePoolAnalytics/Applications/Applications.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePoolAnalytics/Applications/config.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePoolAnalytics/CandidatePoolAnalytics.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePoolAnalytics/EmailTemplates/EmailTemplates.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePools/CandidatePools.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePools/CandidatePoolsActionComponents.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePools/CandidatePoolsTableRows.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePools/Modals/ActionDrawerModals.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePools/Modals/CandidatePool/CandidatePoolsTableRows.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePools/Modals/CandidatePool/CandidateTabTableActionComponents.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePools/Modals/CandidatePool/CandidatesTab.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePools/Modals/CandidatePool/EmailTab.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePools/Modals/CandidatePool/EmailsTableRows.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePools/Modals/CandidatePool/IndividualCandidatePoolModal.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePools/Modals/CandidatePool/candidatesConfig.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePools/Modals/CandidatePool/emailConfig.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePools/Modals/CreateNewPoolButton.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePools/Modals/CreateNewPoolModal.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePools/config.tsx","webpack://Scout/./app/javascript/components/NewEngage/Engage.tsx","webpack://Scout/./app/javascript/components/NewEngage/Graphics/SelectJobSVG.tsx","webpack://Scout/./app/javascript/components/NewEngage/SharedComponents/AndOrToggle.tsx","webpack://Scout/./app/javascript/components/NewEngage/SharedComponents/BooleanEditor.tsx","webpack://Scout/./app/javascript/components/NewEngage/SharedComponents/Modals/EmailCandidate.tsx","webpack://Scout/./app/javascript/components/NewEngage/SharedComponents/Modals/ExternalEmail.tsx","webpack://Scout/./app/javascript/components/NewEngage/Tabs/TabPanel.tsx","webpack://Scout/./app/javascript/components/NewEngage/Tabs/TabSelector.tsx","webpack://Scout/./app/javascript/components/NewEngage/config.tsx","webpack://Scout/./app/javascript/components/NewLogin/NewLogin.tsx","webpack://Scout/./app/javascript/components/NewLogin/utils/FadeChildrenVisibility.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Application.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/ApplicationBetaButton.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/ApplicationHeader.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/ApplicationStatusPopover.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/ExportButton.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Logos/Logos.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/AlayaCare.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/AlreadyExportedModal.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/Cognology/Cognology.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/Cognology/CognologyAfterApprovalModal.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/Cognology/CognologyApprovalDetails.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/Cognology/CognologyStep1.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/Cognology/CognologySummary.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/Cognology/CognologyWaitingForApprovalModal.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/Fit2Work.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/FoundU.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/Hronboard.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/Mvs.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/OnboardExpress.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/Referoo.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/Roubler.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/SparkHire.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/Testgrid.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/UnusualActivity.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/XRef.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/OldIntegrationsLink.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Records/Fit2WorkRecord.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Records/FoundURecord.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Records/MvsRecord.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Records/ReferooRecord.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Records/SparkHireRecord.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Records/TestgridRecord.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Records/XrefRecord.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/UpdateStatusIcon.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/index.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/AddEditTask.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/AddForm.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/AddToEvent.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/AttachmentPreviewModal.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/Components/EmailBodyComponent.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/Components/EmailsDropdown.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/Components/FormResponseInfo.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/Components/FormsDropdown.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/Components/NotificationOptionsSwitch.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/Components/TimestampTable.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/Components/TimestampTableForm.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/Components/TimestampTableRow.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/CreateApproval.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/DeleteApplication.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/DeleteAttachment.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/DeleteFormResponse.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/EditFormResponseModal.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/EmailExternal.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/ExitConfirmationModal.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/ExportToOnboard.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/InviteToTimeslot.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/MissingPlaceholdersConfirmationModal.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/MoveApplicationModal.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/SearchIndex.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/SendEmail.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/SendForm.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/SendSms.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/TaskWorkflow.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/MoreOptionsPopover.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/AISummary.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/AISummaryNoAccess.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/Actions.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/AdditionalInfo.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/Attachments/AudioPreview.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/Attachments/ImagePreview.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/Attachments/PdfPreview.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/Attachments/TextPreview.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/Attachments/VideoPreview.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/Attachments/WordPreview.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/Attachments/index.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/Icons.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/Questionnaire.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/QuestionsAndRatings.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/Rating.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/RatingCard.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/Ratings.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/Responses.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/Section/Section.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/SortableSection.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/index.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/SmartFormsTab/FormResponseActions.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/SmartFormsTab/FormResponseDetails.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/SmartFormsTab/SmartFormsTab.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/TasksAndEventsTab/Tasks/Task.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/TasksAndEventsTab/Tasks/TasksTab.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/TasksAndEventsTab/Tasks/index.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/TasksAndEventsTab/index.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/index.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalForm/ActionModal.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalForm/AnswersView.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalForm/ApprovalForm.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalForm/ApprovalFormPage.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalForm/ApproversTable.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalForm/AvailabilityAnswer.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalForm/DocumentViewer.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalForm/EditApproverModal.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalForms.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalFormsTab.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalFormsTable.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalManagers/ApprovalManagers.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalManagers/ApprovalManagersTable.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalManagers/NewApprovalManager.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalManagers/Search.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalPublicLinks/ApprovalPublicLink.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalPublicLinks/ApprovalPublicLinks.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalPublicLinks/ApprovalPublicLinksTable.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalTemplate/ApprovalTemplateFields.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalTemplateSettings/AdvancedTab.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalTemplateSettings/ApprovalTemplateSettings.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalTemplateSettings/ApproversListAutoComplete.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalTemplateSettings/ApproversListText.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalTemplateSettings/DefaultApproversTab.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalTemplateSettings/FormTitleTab.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalTemplateSettings/TemplateTitleTab.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalTemplates/ApprovalTemplates.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalTemplates/ApprovalTemplatesTable.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalTemplates/FilterDropdown.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalTemplates/MoveApprovalTemplate.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalTemplates/NotePopover.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalTemplates/Search.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ArchivedFormsAndTemplates/ArchivedFormsAndTemplates.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/Dropdowns/DndFieldDropdown.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/Dropdowns/FieldDropdown.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/Dropdowns/FilterDropdown.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/Dropdowns/SortableField.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/NewApproval/NewApproval.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/NewApproval/NewApprovalModal.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/NewApproval/NewApprovalModalFromCandidate.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/NewApprovalPublicLink/NewApprovalPublicLinkModal.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/NotePopover.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/Questions/Modals/AddSystemField.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/Questions/Modals/AvailabilityPreview.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/Questions/Modals/BooleanFieldSwitch.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/Questions/Modals/NewEmailTemplateField.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/Questions/Modals/NewField.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/Questions/Modals/SortableChoice.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/Questions/NewSystemFieldSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/Questions/QuestionCardSensor.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/Questions/Questions.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/Questions/SortableItem.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/Search.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidate/ActivitiesTab.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidate/AddRecord.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidate/Candidate.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidate/CandidateApplicationsTableRows.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidate/CandidateIcon.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidate/CandidateTags.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidate/CandidateTasks/AddEditTaskModal.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidate/CandidateTasks/CandidateTask.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidate/CandidateTasks/CandidateTasksTab.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidate/CandidateTasks/EmptyTab.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidate/CandidateTasks/TaskWorkflowModal.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidate/CandidateTasks/index.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidate/MergeCandidates.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidate/Notepad.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidate/ProfileTab.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidate/config.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidate/index.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidates/Candidates.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidates/CandidatesTableRows.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidates/DeleteCandidate.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidates/EditCandidate.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidates/config.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidates/index.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Buttons/BetaButton.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Buttons/CreateButton.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Buttons/LoadingButton.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Buttons/StepperLeftButton.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Buttons/StepperRightButton.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Charts/DonutChart.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Charts/LineChart.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/AddressInput.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/AttachmentSelectorAndPreview.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/AttachmentsPreview.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/AutocompleteInput.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/AvailabilityFieldQuestion.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/CircularProgressWithLabel.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/EmptyState.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/FormCheckboxGroup.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/FormRadioButtonGroup.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/FormRadioButtonWithTextInputGroup.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/FormRankField.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/FormSelectField.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/FormSelectWithIconField.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/FormTextField.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/InfoBox.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/JobAdSuccessDialog.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/MultiSelect.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/MultiSelectWithCreate.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/MultiTagInput.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/MultipleDatesPicker.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/SelectField.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/SingleDatePicker.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/SmsTemplateComponent.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/StyledSnackbar.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/TagList/TagList.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/TextEditor.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/VirtualizedAutocomplete.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/VirtualizedGroupedAutocomplete.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericModal/ModalFooterButtons.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericModal/StyledModal.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/Dropdowns/ColumnSettings.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/Dropdowns/Filters.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/Dropdowns/SortableField.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/ExportCsvButton.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/Filters/DateRangeFilter.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/Filters/MultiSelectFilter.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/Filters/RadiusSearchFilter.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/GenericTable.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/GenericTableActions.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/GenericTableBody.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/GenericTableHead.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/GenericTablePagination.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/ItemActionsDrawer.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/LoadingTableItems.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/NoItemsMessage.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/SearchInput.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/TableArrows.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/TableCells/ExpandableLinkedTags.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/TableCells/FormattedDate.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/TableCells/NotesWithSubjectLine.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/TablePopovers/AddNoteWithSubjectLine.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/TablePopovers/AttachmentsList.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/TablePopovers/MoreOptionsList.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/TotalSelectedIndicator.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/TotalSelectedIndicatorWithActions.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/genericTableReducer.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Graphics/FileTickSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Graphics/UploadSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Icons/Icons.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Modals/ConfirmationDialog.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Modals/DownloadModal.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Modals/FilePreviewModal.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Modals/GenericDialog.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Modals/WarningDialog.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/ActionButton.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/ActionPopover.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/AdTypePopover.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/Broadbean/AdTable.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/Broadbean/BroadbeanAds.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/CouncilJobs/AdTable.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/CouncilJobs/ApproveSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/CouncilJobs/CouncilJobsAd.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/CouncilJobs/CouncilJobsAds.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/CouncilJobs/NewCouncilJobsAd/NewCouncilJobsAd.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/ExpiryDialog.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/ExpiryPopover.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/FilterButton.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/GenericDialog.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/Idibu/IdibuAds.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/Indeed/AdTable.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/Indeed/IndeedAds.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/Seek/AdTable.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/Seek/CopyAdIdButton.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/Seek/CreateAdDialog.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/Seek/SeekAds.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/TableSkeleton.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/ViewJobs/AdTable.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/ViewJobs/ViewJobsAds.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/OptionToggleGroup/OptionToggleGroup.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/PreviewTable/TableBody.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/PreviewTable/TableHeader.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/PreviewTable/index.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/AttachmentAndGoogleDriveSelector.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/AttachmentSelector.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/DebounceInput.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/DocTypeIcon.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/HtmlEditor.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/QuestionFieldGenerator.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/QuestionFieldViewer.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/RequisitionInfoViewer.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/SingleAttachmentSelector.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/formatUserPermissions.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/useWebSockets.tsx","webpack://Scout/./app/javascript/components/NewUI/Dashboard/Dashboard.tsx","webpack://Scout/./app/javascript/components/NewUI/Dashboard/assets/Banner.tsx","webpack://Scout/./app/javascript/components/NewUI/Dashboard/assets/EventCircle.tsx","webpack://Scout/./app/javascript/components/NewUI/Dashboard/components/KpiBanner.tsx","webpack://Scout/./app/javascript/components/NewUI/Dashboard/components/KpiItem.tsx","webpack://Scout/./app/javascript/components/NewUI/Dashboard/components/Loader.tsx","webpack://Scout/./app/javascript/components/NewUI/Dashboard/components/NewApplicants.tsx","webpack://Scout/./app/javascript/components/NewUI/Dashboard/components/PinnedJobs.tsx","webpack://Scout/./app/javascript/components/NewUI/Dashboard/components/TasksDashboard/TaskItem/TaskItem.tsx","webpack://Scout/./app/javascript/components/NewUI/Dashboard/components/TasksDashboard/TasksDashboard.tsx","webpack://Scout/./app/javascript/components/NewUI/Dashboard/components/TasksDashboard/components/TaskItem.tsx","webpack://Scout/./app/javascript/components/NewUI/Dashboard/components/UpcomingEvents/UpcomingEvents.tsx","webpack://Scout/./app/javascript/components/NewUI/Dashboard/components/UpcomingEvents/components/AttendeeList.tsx","webpack://Scout/./app/javascript/components/NewUI/Dashboard/components/UpcomingEvents/components/EventItem.tsx","webpack://Scout/./app/javascript/components/NewUI/Dashboard/components/UpcomingEvents/copyEventLinks.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Advanced/AIStudio/AIStudioSettings.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Advanced/AIStudio/QuestionsList.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Advanced/GoogleConversionScript/GoogleScript.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Advanced/PanelWorkflow/PanelWorkflow.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Advanced/RequisitionInfo/RequisitionInfo.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Advanced/Revolve/Revolve.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Advanced/TestGrid/NoTests.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Advanced/TestGrid/TestGrid.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Advanced/TestGrid/TestGridModal.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/AutoForward/AutoForward.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/AutoForward/NewAutoForward.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/AutoReply/AutoReply.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/AutoReply/NewAutoReply.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/AutoSMSForward/AutoSMSForward.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/AutoSMSForward/NewAutoSMSForward.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/AutoSMSReply/AutoSMSReply.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/AutoSMSReply/NewAutoSMSReply.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/AutoStatuses/AutoStatuses.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/AutoStatuses/NoAutoStatusSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/AutoStatuses/QuestionBased.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/AutoStatuses/RatingBased.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/StatusTransitions/TimeBased.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/helpers/getBodyFromSmsTemplateValue.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/shared/CancelButton.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/shared/DelaySelect.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/shared/DelaySelectWrapper.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/shared/ImmediateChangesNotice.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Description/Description.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/EditJob.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/EditJobToggleLeftSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/EditJobToggleRightSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/General/Classifications/Classifications.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/General/General.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/HRQuestions/HRQuestions.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/HRQuestions/Modals/AddSystemField.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/HRQuestions/Modals/NewField.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/HRQuestions/NewSystemFieldSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/HRQuestions/NoQuestionSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/HRQuestions/QuestionCardSensor.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/HRQuestions/SortableItem.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Questions/Modals/AddSystemField.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Questions/Modals/NewField.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Questions/Modals/SortableChoice.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Questions/NewSystemFieldSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Questions/NoQuestionArrowSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Questions/NoQuestionSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Questions/QuestionCardSensor.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Questions/QuestionList.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Questions/Questions.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Questions/SortableItem.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Sources/AccountClockIcon.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Sources/Sources.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Sources/SourcesIconSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Template/Template.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/index.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/shared/SkeletonTable.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/ActionModals/AddTask/AddTasks.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/ActionModals/CeridianDayforce/CeridianDayforce.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/ActionModals/MoveJob/MoveJob.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/ActionModals/RatingSet/RatingSet.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/ActionModals/Revisions/Revisions.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/ActionModals/StartWorkflow/StartWorkFlow.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Applications.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/ApplicationsActionsPanel.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/ApplicationsTable.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/CustomIcons.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Dropdowns/FieldDropdown.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Dropdowns/FilterDropdown.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Dropdowns/SortableField.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/EditableNote.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Modals/AddToEvent.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Modals/CSVExport.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Modals/ChangeStatus.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Modals/EmailCandidates.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Modals/ExportFoundu.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Modals/ExportPDF.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Modals/ExportToOnboard.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Modals/ExternalEmail.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Modals/InviteToTimeslot.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Modals/MoveApplications.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Modals/NewApplication.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Modals/SMSCandidates.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Modals/TempCSVExport.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/NotePopover.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Search.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/SelectedApplicants.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Attachments/Attachments.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/CandidateAttachments/CandidateAttachments.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/CandidateAttachments/SortableRow.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/EmailStatus/ClicksNoBackgroundSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/EmailStatus/EmailPreviewModal.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/EmailStatus/EmailStatus.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/EmailStatus/NoEmailStatusSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/EmailStatus/StatusTypeIcon.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/EmailStatus/Widgets/BouncedSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/EmailStatus/Widgets/ClicksSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/EmailStatus/Widgets/DeliveredSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/EmailStatus/Widgets/OpenedSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/EmailStatus/Widgets/Statistics.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/EmailStatus/Widgets/UnsubscribedSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Graphs/ChartWidget.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Graphs/DatePicker.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Job.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Multiposter.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Notes/NoteList.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Notes/Notes.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Notes/SadNoteSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Widgets/ApplicationsAndViews.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Widgets/CreationExpiry.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Widgets/JobInformation.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Widgets/Subcontainer.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/index.tsx","webpack://Scout/./app/javascript/components/NewUI/Jobs/Dropdowns/Export.tsx","webpack://Scout/./app/javascript/components/NewUI/Jobs/Dropdowns/FieldDropdown.tsx","webpack://Scout/./app/javascript/components/NewUI/Jobs/Dropdowns/FilterDropdown.tsx","webpack://Scout/./app/javascript/components/NewUI/Jobs/Dropdowns/SortableField.tsx","webpack://Scout/./app/javascript/components/NewUI/Jobs/Jobs.tsx","webpack://Scout/./app/javascript/components/NewUI/Jobs/JobsTable/ArchivedJobs.tsx","webpack://Scout/./app/javascript/components/NewUI/Jobs/JobsTable/CurrentJobs.tsx","webpack://Scout/./app/javascript/components/NewUI/Jobs/JobsTable/CurrentJobsTableHeader.tsx","webpack://Scout/./app/javascript/components/NewUI/Jobs/JobsTable/CurrentJobsTableRow.tsx","webpack://Scout/./app/javascript/components/NewUI/Jobs/JobsTable/NoJobs.tsx","webpack://Scout/./app/javascript/components/NewUI/Jobs/JobsTable/NotesPopover.tsx","webpack://Scout/./app/javascript/components/NewUI/Jobs/JobsTable/TableSkeleton.tsx","webpack://Scout/./app/javascript/components/NewUI/Jobs/NewJob/Attachment/Attachments.tsx","webpack://Scout/./app/javascript/components/NewUI/Jobs/NewJob/NewJob.tsx","webpack://Scout/./app/javascript/components/NewUI/Jobs/Search.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Header/Components/Breadcrumbs.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Header/Components/ProfileDropdown/ProfileDropdown.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Header/Components/ProfileDropdown/ProfileDropdownPopper.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Header/Components/Search.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Header/Components/ShowRightMenu.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Header/Components/SwitchEntityDialog.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Header/Header.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Navbar/Assets/AppsIcon.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Navbar/Components/AppMenu/AppMenu.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Navbar/Components/AppMenu/AppMenuItems.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Navbar/Components/ExpandCollapseButton.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Navbar/Components/NavigationItems/CollapsedNavigationChildren.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Navbar/Components/NavigationItems/NavigationChildren.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Navbar/Components/NavigationItems/NavigationItems.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Navbar/Components/NavigationItems/NavigationParent.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Navbar/Navbar.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Widgetsbar/ActivityFeed/ActivityFeed.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Widgetsbar/ActivityFeed/ActivityFeedItem.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Widgetsbar/RecentlyViewed/RecentlyViewed.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Widgetsbar/RecentlyViewed/RecentlyViewedItem.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Widgetsbar/Widgetsbar.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Widgetsbar/WidgetsbarWrapper.tsx","webpack://Scout/./app/javascript/components/NewUI/SmartForms/EditFormPage.tsx","webpack://Scout/./app/javascript/components/NewUI/SmartForms/Questions/Modals/AddSystemField.tsx","webpack://Scout/./app/javascript/components/NewUI/SmartForms/Questions/Modals/ImportFields.tsx","webpack://Scout/./app/javascript/components/NewUI/SmartForms/Questions/Modals/NewField.tsx","webpack://Scout/./app/javascript/components/NewUI/SmartForms/Questions/Questions.tsx","webpack://Scout/./app/javascript/components/NewUI/SmartForms/Questions/SortableItem.tsx","webpack://Scout/./app/javascript/components/NewUI/SmartForms/Sample/ListItem.tsx","webpack://Scout/./app/javascript/components/NewUI/SmartForms/Sample/SampleList.tsx","webpack://Scout/./app/javascript/components/NewUI/SmartForms/Search.tsx","webpack://Scout/./app/javascript/components/NewUI/SmartForms/SmartFormFields.tsx","webpack://Scout/./app/javascript/components/NewUI/SmartForms/SmartFormModal.tsx","webpack://Scout/./app/javascript/components/NewUI/SmartForms/SmartFormPreview.tsx","webpack://Scout/./app/javascript/components/NewUI/SmartForms/SmartFormPreviewPage.tsx","webpack://Scout/./app/javascript/components/NewUI/SmartForms/SmartForms.tsx","webpack://Scout/./app/javascript/components/NewUI/SmartForms/SmartFormsTable.tsx","webpack://Scout/./app/javascript/components/NewUI/SmartForms/index.tsx","webpack://Scout/./app/javascript/components/NewUI/utils/scroll-to-element.tsx","webpack://Scout/./app/javascript/components/ScoutCalendar/CreateEvent/CreateEvent.tsx","webpack://Scout/./app/javascript/components/ScoutCalendar/CreateEvent/EventProgress/DateDisplay.tsx","webpack://Scout/./app/javascript/components/ScoutCalendar/CreateEvent/EventProgress/FirstStep.tsx","webpack://Scout/./app/javascript/components/ScoutCalendar/CreateEvent/EventProgress/GroupedAvatars.tsx","webpack://Scout/./app/javascript/components/ScoutCalendar/CreateEvent/EventProgress/ReviewStep.tsx","webpack://Scout/./app/javascript/components/ScoutCalendar/CreateEvent/EventProgress/SecondStep.tsx","webpack://Scout/./app/javascript/components/ScoutCalendar/EventCreated.tsx","webpack://Scout/./app/javascript/components/ScoutCalendar/ListView.tsx","webpack://Scout/./app/javascript/components/ScoutCalendar/ScoutCalendar.tsx","webpack://Scout/./app/javascript/components/ScoutCalendar/Settings.tsx","webpack://Scout/./app/javascript/components/ScoutCalendar/ViewEvent/ActionButtons.tsx","webpack://Scout/./app/javascript/components/ScoutCalendar/ViewEvent/ActionModal.tsx","webpack://Scout/./app/javascript/components/ScoutCalendar/ViewEvent/SelectedCandidatesTable.tsx","webpack://Scout/./app/javascript/components/ScoutCalendar/ViewEvent/index.tsx","webpack://Scout/./app/javascript/components/ScoutCalendar/helper.tsx","webpack://Scout/./app/javascript/components/ScoutCalendar/index.tsx","webpack://Scout/./app/javascript/components/TestActionCable.tsx","webpack://Scout/./app/javascript/components/ThemeContext/ThemeContext.tsx","webpack://Scout/./app/javascript/components/WorkatoNotification.tsx","webpack://Scout/./app/javascript/components/Xref/XrefDialogue.tsx","webpack://Scout/./app/javascript/components/Xref/XrefDialogueButton.tsx","webpack://Scout/./app/javascript/components/Xref/index.tsx","webpack://Scout/./app/javascript/components/admin/integrations/api.jsx","webpack://Scout/./app/javascript/components/admin/integrations/index.jsx","webpack://Scout/./app/javascript/components/admin/integrations/info/show.jsx","webpack://Scout/./app/javascript/components/admin/integrations/new.jsx","webpack://Scout/./app/javascript/components/admin/integrations/show.jsx","webpack://Scout/./app/javascript/components/admin/menu.jsx","webpack://Scout/./app/javascript/components/admin/paying_users/index.jsx","webpack://Scout/./app/javascript/components/admin/services/api.jsx","webpack://Scout/./app/javascript/components/admin/services/index.jsx","webpack://Scout/./app/javascript/components/admin/services/show.jsx","webpack://Scout/./app/javascript/components/admin/services/subservices/show.jsx","webpack://Scout/./app/javascript/components/admin/submenu.jsx","webpack://Scout/./app/javascript/components/admin/video_interview/index.jsx","webpack://Scout/./app/javascript/components/admin/video_interview/upload.jsx","webpack://Scout/./app/javascript/components/admin/video_interview/video_bookmarks_helper.jsx","webpack://Scout/./app/javascript/components/admin/video_interview/video_interview_helper.jsx","webpack://Scout/./app/javascript/components/custom_integrations/integration_settings.jsx","webpack://Scout/./app/javascript/components/custom_integrations/integrations.jsx","webpack://Scout/./app/javascript/components/mvs_request_test.jsx","webpack://Scout/./app/javascript/components/saved_search/item.jsx","webpack://Scout/./app/javascript/components/saved_search/table.jsx","webpack://Scout/./app/javascript/components/scout-trainings/index.jsx","webpack://Scout/./app/javascript/components/scout-trainings/portal-button.jsx","webpack://Scout/./app/javascript/components/scout-trainings/table.jsx","webpack://Scout/./app/javascript/components/scout/EventStatusSelect.tsx","webpack://Scout/./app/javascript/components/scout/add_button.jsx","webpack://Scout/./app/javascript/components/scout/autocomplete.jsx","webpack://Scout/./app/javascript/components/scout/nested_autocomplete.jsx","webpack://Scout/./app/javascript/components/scout/select.jsx","webpack://Scout/./app/javascript/components/scout/table/fields/control/link_control.jsx","webpack://Scout/./app/javascript/components/scout/table/fields/custom_control.jsx","webpack://Scout/./app/javascript/components/scout/table/fields/data.jsx","webpack://Scout/./app/javascript/components/scout/table/fields/inplace_input_editor.jsx","webpack://Scout/./app/javascript/components/scout/table/fields/link.jsx","webpack://Scout/./app/javascript/components/scout/table/filter.jsx","webpack://Scout/./app/javascript/components/scout/table/headers/callback.jsx","webpack://Scout/./app/javascript/components/scout/table/headers/data.jsx","webpack://Scout/./app/javascript/components/scout/table/pagination.jsx","webpack://Scout/./app/javascript/components/scout/table/row.jsx","webpack://Scout/./app/javascript/components/scout/table/table.jsx","webpack://Scout/./app/javascript/components/scout/tags.jsx","webpack://Scout/./app/javascript/components/search_results/filtering_options_table.jsx","webpack://Scout/./app/javascript/components/search_results/header.jsx","webpack://Scout/./app/javascript/components/search_results/header_row.jsx","webpack://Scout/./app/javascript/components/search_results/item.jsx","webpack://Scout/./app/javascript/components/search_results/pagination.jsx","webpack://Scout/./app/javascript/components/search_results/search_box.jsx","webpack://Scout/./app/javascript/components/search_results/table.jsx","webpack://Scout/./app/javascript/components/search_results/table_with_spinner.jsx","webpack://Scout/./app/javascript/components/shared/accordion.jsx","webpack://Scout/./app/javascript/components/shared/commonStyles.jsx","webpack://Scout/./app/javascript/components/ActivityFeed/ActivityFeed.js","webpack://Scout/./app/javascript/components/ActivityFeed/index.js","webpack://Scout/./app/javascript/components/ActivityFeed/styles.js","webpack://Scout/./app/javascript/components/CareersPortalSocialPreview/useStyles.js","webpack://Scout/./app/javascript/components/IndeedIntegration/AdEditor/AdEditor.js","webpack://Scout/./app/javascript/components/IndeedIntegration/AdEditor/Steps/Step1.js","webpack://Scout/./app/javascript/components/IndeedIntegration/AdEditor/Steps/Step2.js","webpack://Scout/./app/javascript/components/IndeedIntegration/AdEditor/Steps/Step3.js","webpack://Scout/./app/javascript/components/IndeedIntegration/AdEditor/index.js","webpack://Scout/./app/javascript/components/IndeedIntegration/AdEditor/useStyles.js","webpack://Scout/./app/javascript/components/IndeedIntegration/AdList/AdList.js","webpack://Scout/./app/javascript/components/IndeedIntegration/AdList/index.js","webpack://Scout/./app/javascript/components/IndeedIntegration/AdList/useStyles.js","webpack://Scout/./app/javascript/components/IndeedIntegration/SponsoredJobEditor/SponsoredJobEditor.js","webpack://Scout/./app/javascript/components/IndeedIntegration/SponsoredJobEditor/index.js","webpack://Scout/./app/javascript/components/IndeedIntegration/components/AdTable/AdTable.js","webpack://Scout/./app/javascript/components/IndeedIntegration/components/AdTable/index.js","webpack://Scout/./app/javascript/components/IndeedIntegration/components/AdTable/useStyles.js","webpack://Scout/./app/javascript/components/IndeedIntegration/components/GenericDialog/GenericDialog.js","webpack://Scout/./app/javascript/components/IndeedIntegration/components/GenericDialog/index.js","webpack://Scout/./app/javascript/components/KpiDashboard/KpiCard/KpiCard.js","webpack://Scout/./app/javascript/components/KpiDashboard/KpiCard/index.js","webpack://Scout/./app/javascript/components/KpiDashboard/KpiCard/styles.js","webpack://Scout/./app/javascript/components/KpiDashboard/KpiDashboard.js","webpack://Scout/./app/javascript/components/KpiDashboard/KpiSettings/KpiSettings.js","webpack://Scout/./app/javascript/components/KpiDashboard/KpiSettings/KpiSettingsCard/KpiSettingsCard.js","webpack://Scout/./app/javascript/components/KpiDashboard/KpiSettings/KpiSettingsCard/index.js","webpack://Scout/./app/javascript/components/KpiDashboard/KpiSettings/index.js","webpack://Scout/./app/javascript/components/KpiDashboard/KpiSettings/styles.js","webpack://Scout/./app/javascript/components/KpiDashboard/index.js","webpack://Scout/./app/javascript/components/KpiDashboard/styles.js","webpack://Scout/./app/javascript/components/NewUI/Components/Charts/DonutTooltip.js","webpack://Scout/./app/javascript/components/NewUI/Components/Charts/LineTooltip.js","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/StepperComponent.js","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/ViewJobs/AdEditor.js","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/ViewJobs/Steps/Step1.js","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/ViewJobs/Steps/Step2.js","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/ViewJobs/Steps/Step3.js","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/ViewJobs/useStyles.js","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/handleDraftValue.js","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/handleNext.js","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/salaryHelper.js","webpack://Scout/./app/javascript/components/SeekAd/AdEditor/AdEditor.js","webpack://Scout/./app/javascript/components/SeekAd/AdEditor/Components/AdProductSelection.js","webpack://Scout/./app/javascript/components/SeekAd/AdEditor/Components/AdSelection.js","webpack://Scout/./app/javascript/components/SeekAd/AdEditor/Components/ExitConfirmationDialog.js","webpack://Scout/./app/javascript/components/SeekAd/AdEditor/Components/ExitExistingDialogContent.js","webpack://Scout/./app/javascript/components/SeekAd/AdEditor/Components/ExitNewDialogContent.js","webpack://Scout/./app/javascript/components/SeekAd/AdEditor/Components/PayDetails.js","webpack://Scout/./app/javascript/components/SeekAd/AdEditor/Components/SeekBillingReference.js","webpack://Scout/./app/javascript/components/SeekAd/AdEditor/Components/WorkTypes.js","webpack://Scout/./app/javascript/components/SeekAd/AdEditor/Steps/Step1.js","webpack://Scout/./app/javascript/components/SeekAd/AdEditor/Steps/Step2.js","webpack://Scout/./app/javascript/components/SeekAd/AdEditor/Steps/Step3.js","webpack://Scout/./app/javascript/components/SeekAd/AdEditor/Steps/Step4.js","webpack://Scout/./app/javascript/components/SeekAd/AdEditor/UtilComponents/TextAreaWithCounter.js","webpack://Scout/./app/javascript/components/SeekAd/AdEditor/index.js","webpack://Scout/./app/javascript/components/SeekAd/AdEditor/useDialogStyles.js","webpack://Scout/./app/javascript/components/SeekAd/AdEditor/useStyles.js","webpack://Scout/./app/javascript/components/SeekAd/SeekAd.js","webpack://Scout/./app/javascript/components/SeekAd/index.js","webpack://Scout/./app/javascript/components/StatusCategories/API.js","webpack://Scout/./app/javascript/components/StatusCategories/CategoryDeck.js","webpack://Scout/./app/javascript/components/StatusCategories/StatusCategories.js","webpack://Scout/./app/javascript/components/StatusCategories/index.js","webpack://Scout/./app/javascript/components/StatusCategories/useStyles.js","webpack://Scout/./app/javascript/components/TextUsModal/TextUsModal.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/Messenger.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/CandidateDetails/CandidateDetails.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/CandidateDetails/index.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/CandidateDetails/useStyles.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/CandidateFilter/CandidateFilter.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/CandidateFilter/index.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/CandidateFilter/useStyles.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/CandidateListItem/CandidateListItem.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/CandidateListItem/index.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/CandidateListItem/useStyles.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/ChatBox/ChatBox.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/ChatBox/components/SignatureToggle.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/ChatBox/components/TagPicker.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/ChatBox/components/TemplatePicker.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/ChatBox/index.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/ChatBox/useStyles.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/ChatWindow/ChatWindow.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/ChatWindow/components/ChatItem.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/ChatWindow/index.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/ChatWindow/useStyles.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/index.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/useStyles.js","webpack://Scout/./app/javascript/components/TextUsModal/components/SelectRecipients/SelectRecipients.js","webpack://Scout/./app/javascript/components/TextUsModal/components/SelectRecipients/index.js","webpack://Scout/./app/javascript/components/TextUsModal/components/SelectRecipients/useStyles.js","webpack://Scout/./app/javascript/components/TextUsModal/index.js","webpack://Scout/./app/javascript/components/TextUsModal/useStyles.js","webpack://Scout/./app/javascript/components/admin/data-source.js","webpack://Scout/./app/javascript/components/inputs/Checkbox/Checkbox.js","webpack://Scout/./app/javascript/components/inputs/Checkbox/index.js","webpack://Scout/./app/javascript/components/inputs/Select/Select.js","webpack://Scout/./app/javascript/components/inputs/Select/index.js","webpack://Scout/./app/javascript/components/inputs/TextInput/TextInput.js","webpack://Scout/./app/javascript/components/inputs/TextInput/index.js","webpack://Scout/./app/javascript/components/scout/service-interface-client.js","webpack://Scout/./app/javascript/lib/Api.js","webpack://Scout/./app/javascript/server_rendering.js","webpack://Scout/./app/javascript/components/AIStudio/AIInterviewModal/constants.ts","webpack://Scout/./app/javascript/components/AIStudio/AIInterviewModal/styles.ts","webpack://Scout/./app/javascript/components/AIStudio/AIStudioModal/reducer.ts","webpack://Scout/./app/javascript/components/AIStudio/AIStudioModal/styles.ts","webpack://Scout/./app/javascript/components/AIStudio/AIStudioQuestions/styles.ts","webpack://Scout/./app/javascript/components/AIStudio/AIStudioSmartShare/API.ts","webpack://Scout/./app/javascript/components/AIStudio/AIStudioSmartShare/reducer.ts","webpack://Scout/./app/javascript/components/AIStudio/AIStudioSmartShare/styles.ts","webpack://Scout/./app/javascript/components/AIStudio/ApplicationSummaries/config.ts","webpack://Scout/./app/javascript/components/AIStudio/ApplicationSummaries/styles.ts","webpack://Scout/./app/javascript/components/AIStudio/NewJobIntegration/styles.ts","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/Utility/dismissNotification.ts","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/Utility/questionStringToArray.ts","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/styles.ts","webpack://Scout/./app/javascript/components/Calendly/API.ts","webpack://Scout/./app/javascript/components/Calendly/AddToCalendlyEventModal/useStyles.ts","webpack://Scout/./app/javascript/components/Calendly/Modal/components/CompleteModal/useStyles.ts","webpack://Scout/./app/javascript/components/Calendly/Modal/components/Steps/Step1/useStyles.ts","webpack://Scout/./app/javascript/components/Calendly/Modal/components/Steps/Step2/useStyles.ts","webpack://Scout/./app/javascript/components/Calendly/Modal/components/Steps/Step3/useStyles.ts","webpack://Scout/./app/javascript/components/Calendly/Modal/components/Steps/Step4/useStyles.ts","webpack://Scout/./app/javascript/components/Calendly/Modal/index.ts","webpack://Scout/./app/javascript/components/Calendly/Modal/useStyles.ts","webpack://Scout/./app/javascript/components/Calendly/ScheduledEvents/components/EventItem/useStyles.ts","webpack://Scout/./app/javascript/components/Calendly/ScheduledEvents/constants.ts","webpack://Scout/./app/javascript/components/Calendly/ScheduledEvents/index.ts","webpack://Scout/./app/javascript/components/Calendly/ScheduledEvents/useStyles.ts","webpack://Scout/./app/javascript/components/CareersPortalReport/styles.ts","webpack://Scout/./app/javascript/components/NewEngage/SharedComponents/booleanQueryParser.ts","webpack://Scout/./app/javascript/components/NewEngage/SharedComponents/styles.ts","webpack://Scout/./app/javascript/components/NewEngage/helper.ts","webpack://Scout/./app/javascript/components/NewEngage/reducer.ts","webpack://Scout/./app/javascript/components/NewEngage/styles.ts","webpack://Scout/./app/javascript/components/NewLogin/API.ts","webpack://Scout/./app/javascript/components/NewLogin/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Application/API.ts","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/helper.ts","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Application/SmartFormsTab/get-answer-attributes.ts","webpack://Scout/./app/javascript/components/NewUI/Application/SmartFormsTab/get-answer-value.ts","webpack://Scout/./app/javascript/components/NewUI/Application/SmartFormsTab/validate-form-submission.ts","webpack://Scout/./app/javascript/components/NewUI/Application/config.ts","webpack://Scout/./app/javascript/components/NewUI/Application/constants/zoomSettings.ts","webpack://Scout/./app/javascript/components/NewUI/Application/helper.ts","webpack://Scout/./app/javascript/components/NewUI/Application/reducer.ts","webpack://Scout/./app/javascript/components/NewUI/Application/styles.ts","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/API.ts","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalForm/styles.ts","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalTemplateSettings/styles.ts","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalTemplates/config.ts","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/NewApproval/styles.ts","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/NewApprovalPublicLink/styles.ts","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/Questions/styles.ts","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/config.ts","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/helper.ts","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/index.ts","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Candidate/API.ts","webpack://Scout/./app/javascript/components/NewUI/Candidate/reducer.ts","webpack://Scout/./app/javascript/components/NewUI/Candidate/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Candidates/API.ts","webpack://Scout/./app/javascript/components/NewUI/Candidates/reducer.ts","webpack://Scout/./app/javascript/components/NewUI/Candidates/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Charts/helper.ts","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/TagList/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/sharedClasses.ts","webpack://Scout/./app/javascript/components/NewUI/Components/GenericModal/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/Dropdowns/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/tableHelper.ts","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/utilities.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Modals/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/CouncilJobs/NewCouncilJobsAd/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/Seek/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Components/PreviewTable/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/HtmlEditorFonts.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/callAPI.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/convertToLocalEnglish.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/convertToLocalEnglish/data/index.spec.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/convertToLocalEnglish/diff/diff.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/convertToLocalEnglish/internals/case.spec.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/convertToLocalEnglish/internals/case.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/convertToLocalEnglish/internals/translate.spec.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/convertToLocalEnglish/internals/translate.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/convertToLocalEnglish/internals/translateCase.spec.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/convertToLocalEnglish/internals/translateCase.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/convertToLocalEnglish/internals/translateWord.spec.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/convertToLocalEnglish/internals/translateWord.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/copyToClipboard.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/countryParser.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/emailIsValid.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/handleAPIRequest.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/handleRichCopy.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/humanFileSize.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/immutableRemove.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/secondsToString.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/stringToSeconds.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Dashboard/API.ts","webpack://Scout/./app/javascript/components/NewUI/Dashboard/components/TasksDashboard/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Dashboard/components/UpcomingEvents/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Dashboard/index.ts","webpack://Scout/./app/javascript/components/NewUI/Dashboard/styles.ts","webpack://Scout/./app/javascript/components/NewUI/EditJob/Advanced/styles.ts","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/styles.ts","webpack://Scout/./app/javascript/components/NewUI/EditJob/HRQuestions/styles.ts","webpack://Scout/./app/javascript/components/NewUI/EditJob/Questions/styles.ts","webpack://Scout/./app/javascript/components/NewUI/EditJob/styles.ts","webpack://Scout/./app/javascript/components/NewUI/EditJob/tabIndexUtils.ts","webpack://Scout/./app/javascript/components/NewUI/Job/API.ts","webpack://Scout/./app/javascript/components/NewUI/Job/ActionModals/AddTask/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Job/ActionModals/CeridianDayforce/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Job/ActionModals/MoveJob/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Job/ActionModals/RatingSet/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Job/ActionModals/Revisions/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Job/ActionModals/StartWorkflow/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/config.ts","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Job/Attachments/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Job/CandidateAttachments/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Job/EmailStatus/Widgets/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Job/EmailStatus/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Job/Graphs/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Job/Notes/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Job/Widgets/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Job/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Job/types.ts","webpack://Scout/./app/javascript/components/NewUI/Jobs/API.ts","webpack://Scout/./app/javascript/components/NewUI/Jobs/Dropdowns/useStyles.ts","webpack://Scout/./app/javascript/components/NewUI/Jobs/JobsTable/useStyles.ts","webpack://Scout/./app/javascript/components/NewUI/Jobs/NewJob/Attachment/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Jobs/NewJob/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Jobs/config.ts","webpack://Scout/./app/javascript/components/NewUI/Jobs/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Layout/Header/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Layout/Navbar/config.ts","webpack://Scout/./app/javascript/components/NewUI/Layout/Navbar/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Layout/Widgetsbar/config.ts","webpack://Scout/./app/javascript/components/NewUI/Layout/Widgetsbar/styles.ts","webpack://Scout/./app/javascript/components/NewUI/SmartForms/API.ts","webpack://Scout/./app/javascript/components/NewUI/SmartForms/Questions/styles.ts","webpack://Scout/./app/javascript/components/NewUI/SmartForms/config.ts","webpack://Scout/./app/javascript/components/NewUI/SmartForms/reducer.ts","webpack://Scout/./app/javascript/components/NewUI/SmartForms/styles.ts","webpack://Scout/./app/javascript/components/NewUI/SmartForms/types.ts","webpack://Scout/./app/javascript/components/NewUI/constants.ts","webpack://Scout/./app/javascript/components/NewUI/helpers/uiPreferencesHelpers.ts","webpack://Scout/./app/javascript/components/NewUI/hooks/useApplicationsForTask.ts","webpack://Scout/./app/javascript/components/NewUI/hooks/useDispatch.ts","webpack://Scout/./app/javascript/components/NewUI/hooks/useDragScroll.ts","webpack://Scout/./app/javascript/components/NewUI/hooks/useEmailTemplatesOptions.ts","webpack://Scout/./app/javascript/components/NewUI/hooks/useEvents.ts","webpack://Scout/./app/javascript/components/NewUI/hooks/useFieldChoiceList.ts","webpack://Scout/./app/javascript/components/NewUI/hooks/useInputValidation.ts","webpack://Scout/./app/javascript/components/NewUI/hooks/useIsOverflow.ts","webpack://Scout/./app/javascript/components/NewUI/hooks/useJobsForTask.ts","webpack://Scout/./app/javascript/components/NewUI/hooks/usePlaceholders.ts","webpack://Scout/./app/javascript/components/NewUI/hooks/useThrottle.ts","webpack://Scout/./app/javascript/components/NewUI/shared/commonStyles.ts","webpack://Scout/./app/javascript/components/NewUI/shared/styleClasses.ts","webpack://Scout/./app/javascript/components/NewUI/utils/attachment-type.ts","webpack://Scout/./app/javascript/components/NewUI/utils/device-detect.ts","webpack://Scout/./app/javascript/components/NewUI/utils/emoji-checker.ts","webpack://Scout/./app/javascript/components/NewUI/utils/formatToUserTimeZone.ts","webpack://Scout/./app/javascript/components/NewUI/utils/local-storage.ts","webpack://Scout/./app/javascript/components/NewUI/utils/sortable-column.ts","webpack://Scout/./app/javascript/components/RecruitApiClient.ts","webpack://Scout/./app/javascript/components/ScoutCalendar/API.ts","webpack://Scout/./app/javascript/components/ScoutCalendar/CreateEvent/EventProgress/styles.ts","webpack://Scout/./app/javascript/components/ScoutCalendar/CreateEvent/styles.ts","webpack://Scout/./app/javascript/components/ScoutCalendar/ViewEvent/styles.ts","webpack://Scout/./app/javascript/components/ScoutCalendar/reducer.ts","webpack://Scout/./app/javascript/components/ScoutCalendar/styles.ts","webpack://Scout/./app/javascript/components/SeekAd/hooks/useInitSeekAd.ts","webpack://Scout/./app/javascript/components/SeekAd/hooks/usePreviewSeekAd.ts","webpack://Scout/./app/javascript/components/SeekAd/hooks/useSeekAccounts.ts","webpack://Scout/./app/javascript/components/SeekAd/hooks/useSeekCurrencies.ts","webpack://Scout/./app/javascript/components/SeekAd/hooks/useSeekGlobalData.ts","webpack://Scout/./app/javascript/components/SeekAd/hooks/useSeekPayTypes.ts","webpack://Scout/./app/javascript/components/TableStyles.ts","webpack://Scout/./app/javascript/components/ThemeContext/ThemeObject.ts","webpack://Scout/./app/javascript/components/ThemeContext/constants.ts","webpack://Scout/./app/javascript/components/shared/permissionHelpers.ts","webpack://Scout/./node_modules/moment/locale/ sync ^\\.\\/.*$"],"sourcesContent":["var map = {\n\t\"./AIStudio/AIInterviewModal/AIInterviewModal\": 917,\n\t\"./AIStudio/AIInterviewModal/AIInterviewModal.tsx\": 917,\n\t\"./AIStudio/AIInterviewModal/components\": 82154,\n\t\"./AIStudio/AIInterviewModal/components/\": 82154,\n\t\"./AIStudio/AIInterviewModal/components/LoadingMessage\": 65089,\n\t\"./AIStudio/AIInterviewModal/components/LoadingMessage.tsx\": 65089,\n\t\"./AIStudio/AIInterviewModal/components/ResponseMessage\": 13120,\n\t\"./AIStudio/AIInterviewModal/components/ResponseMessage.tsx\": 13120,\n\t\"./AIStudio/AIInterviewModal/components/index\": 82154,\n\t\"./AIStudio/AIInterviewModal/components/index.ts\": 82154,\n\t\"./AIStudio/AIInterviewModal/constants\": 49120,\n\t\"./AIStudio/AIInterviewModal/constants.ts\": 49120,\n\t\"./AIStudio/AIInterviewModal/styles\": 8871,\n\t\"./AIStudio/AIInterviewModal/styles.ts\": 8871,\n\t\"./AIStudio/AIStudioModal/AIStudioModal\": 26091,\n\t\"./AIStudio/AIStudioModal/AIStudioModal.tsx\": 26091,\n\t\"./AIStudio/AIStudioModal/AIStudioTeaserModal\": 82487,\n\t\"./AIStudio/AIStudioModal/AIStudioTeaserModal.tsx\": 82487,\n\t\"./AIStudio/AIStudioModal/Buttons/OptionalInput\": 82470,\n\t\"./AIStudio/AIStudioModal/Buttons/OptionalInput.tsx\": 82470,\n\t\"./AIStudio/AIStudioModal/FelixNotification\": 47271,\n\t\"./AIStudio/AIStudioModal/FelixNotification.tsx\": 47271,\n\t\"./AIStudio/AIStudioModal/Footers/DisplayResponseFooter\": 13859,\n\t\"./AIStudio/AIStudioModal/Footers/DisplayResponseFooter.tsx\": 13859,\n\t\"./AIStudio/AIStudioModal/Steps/DisplayResponse\": 56663,\n\t\"./AIStudio/AIStudioModal/Steps/DisplayResponse.tsx\": 56663,\n\t\"./AIStudio/AIStudioModal/Steps/JobDescriptionInput\": 29471,\n\t\"./AIStudio/AIStudioModal/Steps/JobDescriptionInput.tsx\": 29471,\n\t\"./AIStudio/AIStudioModal/Steps/OptionalInput\": 21756,\n\t\"./AIStudio/AIStudioModal/Steps/OptionalInput.tsx\": 21756,\n\t\"./AIStudio/AIStudioModal/Steps/QuestionsInput\": 30431,\n\t\"./AIStudio/AIStudioModal/Steps/QuestionsInput.tsx\": 30431,\n\t\"./AIStudio/AIStudioModal/Steps/WelcomePage\": 46533,\n\t\"./AIStudio/AIStudioModal/Steps/WelcomePage.tsx\": 46533,\n\t\"./AIStudio/AIStudioModal/config\": 41508,\n\t\"./AIStudio/AIStudioModal/config.tsx\": 41508,\n\t\"./AIStudio/AIStudioModal/reducer\": 70004,\n\t\"./AIStudio/AIStudioModal/reducer.ts\": 70004,\n\t\"./AIStudio/AIStudioModal/styles\": 33684,\n\t\"./AIStudio/AIStudioModal/styles.ts\": 33684,\n\t\"./AIStudio/AIStudioQuestions/AIStudioForm\": 71296,\n\t\"./AIStudio/AIStudioQuestions/AIStudioForm.tsx\": 71296,\n\t\"./AIStudio/AIStudioQuestions/AIStudioQuestions\": 43487,\n\t\"./AIStudio/AIStudioQuestions/AIStudioQuestions.tsx\": 43487,\n\t\"./AIStudio/AIStudioQuestions/AIStudioResponse\": 73403,\n\t\"./AIStudio/AIStudioQuestions/AIStudioResponse.tsx\": 73403,\n\t\"./AIStudio/AIStudioQuestions/Footers/ResponseFooter\": 47497,\n\t\"./AIStudio/AIStudioQuestions/Footers/ResponseFooter.tsx\": 47497,\n\t\"./AIStudio/AIStudioQuestions/styles\": 48480,\n\t\"./AIStudio/AIStudioQuestions/styles.ts\": 48480,\n\t\"./AIStudio/AIStudioSmartShare/API\": 26279,\n\t\"./AIStudio/AIStudioSmartShare/API.ts\": 26279,\n\t\"./AIStudio/AIStudioSmartShare/Footers/ResponseFooter\": 56182,\n\t\"./AIStudio/AIStudioSmartShare/Footers/ResponseFooter.tsx\": 56182,\n\t\"./AIStudio/AIStudioSmartShare/Footers/WelcomeFooter\": 93701,\n\t\"./AIStudio/AIStudioSmartShare/Footers/WelcomeFooter.tsx\": 93701,\n\t\"./AIStudio/AIStudioSmartShare/Graphics/buttonSVGs\": 97405,\n\t\"./AIStudio/AIStudioSmartShare/Graphics/buttonSVGs.tsx\": 97405,\n\t\"./AIStudio/AIStudioSmartShare/Inputs/JobDescription\": 12926,\n\t\"./AIStudio/AIStudioSmartShare/Inputs/JobDescription.tsx\": 12926,\n\t\"./AIStudio/AIStudioSmartShare/SmartShare\": 8985,\n\t\"./AIStudio/AIStudioSmartShare/SmartShare.tsx\": 8985,\n\t\"./AIStudio/AIStudioSmartShare/Steps/DisplayDescription\": 58989,\n\t\"./AIStudio/AIStudioSmartShare/Steps/DisplayDescription.tsx\": 58989,\n\t\"./AIStudio/AIStudioSmartShare/Steps/JobBoardInput\": 75388,\n\t\"./AIStudio/AIStudioSmartShare/Steps/JobBoardInput.tsx\": 75388,\n\t\"./AIStudio/AIStudioSmartShare/Steps/ResponseStep\": 74294,\n\t\"./AIStudio/AIStudioSmartShare/Steps/ResponseStep.tsx\": 74294,\n\t\"./AIStudio/AIStudioSmartShare/Steps/SocialInputStep\": 67424,\n\t\"./AIStudio/AIStudioSmartShare/Steps/SocialInputStep.tsx\": 67424,\n\t\"./AIStudio/AIStudioSmartShare/Steps/SocialMediaPreview\": 44116,\n\t\"./AIStudio/AIStudioSmartShare/Steps/SocialMediaPreview.tsx\": 44116,\n\t\"./AIStudio/AIStudioSmartShare/Steps/WelcomePage\": 98152,\n\t\"./AIStudio/AIStudioSmartShare/Steps/WelcomePage.tsx\": 98152,\n\t\"./AIStudio/AIStudioSmartShare/config\": 41971,\n\t\"./AIStudio/AIStudioSmartShare/config.tsx\": 41971,\n\t\"./AIStudio/AIStudioSmartShare/reducer\": 27119,\n\t\"./AIStudio/AIStudioSmartShare/reducer.ts\": 27119,\n\t\"./AIStudio/AIStudioSmartShare/styles\": 35349,\n\t\"./AIStudio/AIStudioSmartShare/styles.ts\": 35349,\n\t\"./AIStudio/ApplicationSummaries/ExpandedSummaryModal\": 90707,\n\t\"./AIStudio/ApplicationSummaries/ExpandedSummaryModal.tsx\": 90707,\n\t\"./AIStudio/ApplicationSummaries/Inputs/Inclusions\": 6424,\n\t\"./AIStudio/ApplicationSummaries/Inputs/Inclusions.tsx\": 6424,\n\t\"./AIStudio/ApplicationSummaries/InsightsModal/InputStep\": 2998,\n\t\"./AIStudio/ApplicationSummaries/InsightsModal/InputStep.tsx\": 2998,\n\t\"./AIStudio/ApplicationSummaries/InsightsModal/InsightsModal\": 39346,\n\t\"./AIStudio/ApplicationSummaries/InsightsModal/InsightsModal.tsx\": 39346,\n\t\"./AIStudio/ApplicationSummaries/InsightsModal/ResponseStep\": 4433,\n\t\"./AIStudio/ApplicationSummaries/InsightsModal/ResponseStep.tsx\": 4433,\n\t\"./AIStudio/ApplicationSummaries/QuestionsModal/FollowUpEmail/EditStep\": 90687,\n\t\"./AIStudio/ApplicationSummaries/QuestionsModal/FollowUpEmail/EditStep.tsx\": 90687,\n\t\"./AIStudio/ApplicationSummaries/QuestionsModal/FollowUpEmail/FollowUpEmail\": 83685,\n\t\"./AIStudio/ApplicationSummaries/QuestionsModal/FollowUpEmail/FollowUpEmail.tsx\": 83685,\n\t\"./AIStudio/ApplicationSummaries/QuestionsModal/FollowUpEmail/InputStep\": 967,\n\t\"./AIStudio/ApplicationSummaries/QuestionsModal/FollowUpEmail/InputStep.tsx\": 967,\n\t\"./AIStudio/ApplicationSummaries/QuestionsModal/HomeStep/HomeStep\": 8797,\n\t\"./AIStudio/ApplicationSummaries/QuestionsModal/HomeStep/HomeStep.tsx\": 8797,\n\t\"./AIStudio/ApplicationSummaries/QuestionsModal/HomeStep/InputTab\": 1535,\n\t\"./AIStudio/ApplicationSummaries/QuestionsModal/HomeStep/InputTab.tsx\": 1535,\n\t\"./AIStudio/ApplicationSummaries/QuestionsModal/HomeStep/SavedQuestionsTab\": 12825,\n\t\"./AIStudio/ApplicationSummaries/QuestionsModal/HomeStep/SavedQuestionsTab.tsx\": 12825,\n\t\"./AIStudio/ApplicationSummaries/QuestionsModal/InterviewQuestions\": 31314,\n\t\"./AIStudio/ApplicationSummaries/QuestionsModal/InterviewQuestions.tsx\": 31314,\n\t\"./AIStudio/ApplicationSummaries/QuestionsModal/ResponseStep\": 19513,\n\t\"./AIStudio/ApplicationSummaries/QuestionsModal/ResponseStep.tsx\": 19513,\n\t\"./AIStudio/ApplicationSummaries/SummaryPopover\": 4484,\n\t\"./AIStudio/ApplicationSummaries/SummaryPopover.tsx\": 4484,\n\t\"./AIStudio/ApplicationSummaries/config\": 50979,\n\t\"./AIStudio/ApplicationSummaries/config.ts\": 50979,\n\t\"./AIStudio/ApplicationSummaries/styles\": 95839,\n\t\"./AIStudio/ApplicationSummaries/styles.ts\": 95839,\n\t\"./AIStudio/ApplicationSummaries/types\": 40540,\n\t\"./AIStudio/ApplicationSummaries/types.ts\": 40540,\n\t\"./AIStudio/NewJobIntegration/AIStudioNewJob\": 88073,\n\t\"./AIStudio/NewJobIntegration/AIStudioNewJob.tsx\": 88073,\n\t\"./AIStudio/NewJobIntegration/QuestionsPreview\": 76611,\n\t\"./AIStudio/NewJobIntegration/QuestionsPreview.tsx\": 76611,\n\t\"./AIStudio/NewJobIntegration/styles\": 92968,\n\t\"./AIStudio/NewJobIntegration/styles.ts\": 92968,\n\t\"./AIStudio/SharedComponents/Buttons/EmailButton\": 33032,\n\t\"./AIStudio/SharedComponents/Buttons/EmailButton.tsx\": 33032,\n\t\"./AIStudio/SharedComponents/Buttons/ExportButton\": 36616,\n\t\"./AIStudio/SharedComponents/Buttons/ExportButton.tsx\": 36616,\n\t\"./AIStudio/SharedComponents/Buttons/ToggleButtons\": 86723,\n\t\"./AIStudio/SharedComponents/Buttons/ToggleButtons.tsx\": 86723,\n\t\"./AIStudio/SharedComponents/CopyableQuestions\": 43228,\n\t\"./AIStudio/SharedComponents/CopyableQuestions.tsx\": 43228,\n\t\"./AIStudio/SharedComponents/DisplayHTMLCollapsible\": 1151,\n\t\"./AIStudio/SharedComponents/DisplayHTMLCollapsible.tsx\": 1151,\n\t\"./AIStudio/SharedComponents/DisplayHTMLViewOnly\": 70586,\n\t\"./AIStudio/SharedComponents/DisplayHTMLViewOnly.tsx\": 70586,\n\t\"./AIStudio/SharedComponents/Footers/DynamicFooter\": 63997,\n\t\"./AIStudio/SharedComponents/Footers/DynamicFooter.tsx\": 63997,\n\t\"./AIStudio/SharedComponents/Graphics/FelixSVG\": 29992,\n\t\"./AIStudio/SharedComponents/Graphics/FelixSVG.tsx\": 29992,\n\t\"./AIStudio/SharedComponents/Graphics/felix-loading.json\": 47279,\n\t\"./AIStudio/SharedComponents/Inputs/PositionTitle\": 86827,\n\t\"./AIStudio/SharedComponents/Inputs/PositionTitle.tsx\": 86827,\n\t\"./AIStudio/SharedComponents/Inputs/PreferredSkills\": 38547,\n\t\"./AIStudio/SharedComponents/Inputs/PreferredSkills.tsx\": 38547,\n\t\"./AIStudio/SharedComponents/Inputs/StyledDropdown\": 74742,\n\t\"./AIStudio/SharedComponents/Inputs/StyledDropdown.tsx\": 74742,\n\t\"./AIStudio/SharedComponents/Inputs/Switch\": 47652,\n\t\"./AIStudio/SharedComponents/Inputs/Switch.tsx\": 47652,\n\t\"./AIStudio/SharedComponents/SelectableCopyableQuestions\": 8388,\n\t\"./AIStudio/SharedComponents/SelectableCopyableQuestions.tsx\": 8388,\n\t\"./AIStudio/SharedComponents/StaticQuestionsPreview\": 3519,\n\t\"./AIStudio/SharedComponents/StaticQuestionsPreview.tsx\": 3519,\n\t\"./AIStudio/SharedComponents/Steps/ErrorScreen\": 65124,\n\t\"./AIStudio/SharedComponents/Steps/ErrorScreen.tsx\": 65124,\n\t\"./AIStudio/SharedComponents/Steps/LoadingResponse\": 8751,\n\t\"./AIStudio/SharedComponents/Steps/LoadingResponse.tsx\": 8751,\n\t\"./AIStudio/SharedComponents/Utility/dismissNotification\": 19410,\n\t\"./AIStudio/SharedComponents/Utility/dismissNotification.ts\": 19410,\n\t\"./AIStudio/SharedComponents/Utility/questionStringToArray\": 72216,\n\t\"./AIStudio/SharedComponents/Utility/questionStringToArray.ts\": 72216,\n\t\"./AIStudio/SharedComponents/sharedConfig\": 88885,\n\t\"./AIStudio/SharedComponents/sharedConfig.tsx\": 88885,\n\t\"./AIStudio/SharedComponents/styles\": 52870,\n\t\"./AIStudio/SharedComponents/styles.ts\": 52870,\n\t\"./AIStudio/SharedComponents/types\": 59443,\n\t\"./AIStudio/SharedComponents/types.ts\": 59443,\n\t\"./ActivityFeed\": 13854,\n\t\"./ActivityFeed/\": 13854,\n\t\"./ActivityFeed/ActivityFeed\": 15697,\n\t\"./ActivityFeed/ActivityFeed.js\": 15697,\n\t\"./ActivityFeed/index\": 13854,\n\t\"./ActivityFeed/index.js\": 13854,\n\t\"./ActivityFeed/styles\": 87218,\n\t\"./ActivityFeed/styles.js\": 87218,\n\t\"./Calendly/API\": 48864,\n\t\"./Calendly/API.ts\": 48864,\n\t\"./Calendly/AddToCalendlyEventModal\": 42198,\n\t\"./Calendly/AddToCalendlyEventModal/\": 42198,\n\t\"./Calendly/AddToCalendlyEventModal/index\": 42198,\n\t\"./Calendly/AddToCalendlyEventModal/index.tsx\": 42198,\n\t\"./Calendly/AddToCalendlyEventModal/useStyles\": 50707,\n\t\"./Calendly/AddToCalendlyEventModal/useStyles.ts\": 50707,\n\t\"./Calendly/Modal\": 99814,\n\t\"./Calendly/Modal/\": 99814,\n\t\"./Calendly/Modal/Modal\": 25853,\n\t\"./Calendly/Modal/Modal.tsx\": 25853,\n\t\"./Calendly/Modal/components/CompleteModal\": 16668,\n\t\"./Calendly/Modal/components/CompleteModal/\": 16668,\n\t\"./Calendly/Modal/components/CompleteModal/index\": 16668,\n\t\"./Calendly/Modal/components/CompleteModal/index.tsx\": 16668,\n\t\"./Calendly/Modal/components/CompleteModal/useStyles\": 39149,\n\t\"./Calendly/Modal/components/CompleteModal/useStyles.ts\": 39149,\n\t\"./Calendly/Modal/components/Steps/Step1/Step1\": 26556,\n\t\"./Calendly/Modal/components/Steps/Step1/Step1.tsx\": 26556,\n\t\"./Calendly/Modal/components/Steps/Step1/useStyles\": 4124,\n\t\"./Calendly/Modal/components/Steps/Step1/useStyles.ts\": 4124,\n\t\"./Calendly/Modal/components/Steps/Step2/EventType\": 49200,\n\t\"./Calendly/Modal/components/Steps/Step2/EventType.tsx\": 49200,\n\t\"./Calendly/Modal/components/Steps/Step2/Step2\": 22752,\n\t\"./Calendly/Modal/components/Steps/Step2/Step2.tsx\": 22752,\n\t\"./Calendly/Modal/components/Steps/Step2/useStyles\": 29409,\n\t\"./Calendly/Modal/components/Steps/Step2/useStyles.ts\": 29409,\n\t\"./Calendly/Modal/components/Steps/Step3/Step3\": 25368,\n\t\"./Calendly/Modal/components/Steps/Step3/Step3.tsx\": 25368,\n\t\"./Calendly/Modal/components/Steps/Step3/useStyles\": 55938,\n\t\"./Calendly/Modal/components/Steps/Step3/useStyles.ts\": 55938,\n\t\"./Calendly/Modal/components/Steps/Step4/OverviewItem\": 46772,\n\t\"./Calendly/Modal/components/Steps/Step4/OverviewItem.tsx\": 46772,\n\t\"./Calendly/Modal/components/Steps/Step4/Step4\": 29084,\n\t\"./Calendly/Modal/components/Steps/Step4/Step4.tsx\": 29084,\n\t\"./Calendly/Modal/components/Steps/Step4/useStyles\": 28335,\n\t\"./Calendly/Modal/components/Steps/Step4/useStyles.ts\": 28335,\n\t\"./Calendly/Modal/index\": 99814,\n\t\"./Calendly/Modal/index.ts\": 99814,\n\t\"./Calendly/Modal/useStyles\": 19115,\n\t\"./Calendly/Modal/useStyles.ts\": 19115,\n\t\"./Calendly/ScheduledEvents\": 43317,\n\t\"./Calendly/ScheduledEvents/\": 43317,\n\t\"./Calendly/ScheduledEvents/BadAPIModal\": 46445,\n\t\"./Calendly/ScheduledEvents/BadAPIModal.tsx\": 46445,\n\t\"./Calendly/ScheduledEvents/ScheduledEvents\": 49665,\n\t\"./Calendly/ScheduledEvents/ScheduledEvents.tsx\": 49665,\n\t\"./Calendly/ScheduledEvents/components/EventItem\": 10606,\n\t\"./Calendly/ScheduledEvents/components/EventItem/\": 10606,\n\t\"./Calendly/ScheduledEvents/components/EventItem/index\": 10606,\n\t\"./Calendly/ScheduledEvents/components/EventItem/index.tsx\": 10606,\n\t\"./Calendly/ScheduledEvents/components/EventItem/useStyles\": 63667,\n\t\"./Calendly/ScheduledEvents/components/EventItem/useStyles.ts\": 63667,\n\t\"./Calendly/ScheduledEvents/constants\": 29188,\n\t\"./Calendly/ScheduledEvents/constants.ts\": 29188,\n\t\"./Calendly/ScheduledEvents/index\": 43317,\n\t\"./Calendly/ScheduledEvents/index.ts\": 43317,\n\t\"./Calendly/ScheduledEvents/useStyles\": 54132,\n\t\"./Calendly/ScheduledEvents/useStyles.ts\": 54132,\n\t\"./Calendly/types\": 7697,\n\t\"./Calendly/types.ts\": 7697,\n\t\"./CareersPortalReport\": 77511,\n\t\"./CareersPortalReport/\": 77511,\n\t\"./CareersPortalReport/index\": 77511,\n\t\"./CareersPortalReport/index.tsx\": 77511,\n\t\"./CareersPortalReport/styles\": 48519,\n\t\"./CareersPortalReport/styles.ts\": 48519,\n\t\"./CareersPortalSocialPreview\": 88796,\n\t\"./CareersPortalSocialPreview/\": 88796,\n\t\"./CareersPortalSocialPreview/index\": 88796,\n\t\"./CareersPortalSocialPreview/index.tsx\": 88796,\n\t\"./CareersPortalSocialPreview/useStyles\": 3080,\n\t\"./CareersPortalSocialPreview/useStyles.js\": 3080,\n\t\"./IndeedIntegration/AdEditor\": 86005,\n\t\"./IndeedIntegration/AdEditor/\": 86005,\n\t\"./IndeedIntegration/AdEditor/AdEditor\": 61809,\n\t\"./IndeedIntegration/AdEditor/AdEditor.js\": 61809,\n\t\"./IndeedIntegration/AdEditor/Steps\": 5461,\n\t\"./IndeedIntegration/AdEditor/Steps/\": 5461,\n\t\"./IndeedIntegration/AdEditor/Steps/Step1\": 56956,\n\t\"./IndeedIntegration/AdEditor/Steps/Step1.js\": 56956,\n\t\"./IndeedIntegration/AdEditor/Steps/Step2\": 86693,\n\t\"./IndeedIntegration/AdEditor/Steps/Step2.js\": 86693,\n\t\"./IndeedIntegration/AdEditor/Steps/Step3\": 84774,\n\t\"./IndeedIntegration/AdEditor/Steps/Step3.js\": 84774,\n\t\"./IndeedIntegration/AdEditor/Steps/index\": 5461,\n\t\"./IndeedIntegration/AdEditor/Steps/index.js\": 5461,\n\t\"./IndeedIntegration/AdEditor/index\": 86005,\n\t\"./IndeedIntegration/AdEditor/index.js\": 86005,\n\t\"./IndeedIntegration/AdEditor/useStyles\": 14800,\n\t\"./IndeedIntegration/AdEditor/useStyles.js\": 14800,\n\t\"./IndeedIntegration/AdList\": 72308,\n\t\"./IndeedIntegration/AdList/\": 72308,\n\t\"./IndeedIntegration/AdList/AdList\": 70531,\n\t\"./IndeedIntegration/AdList/AdList.js\": 70531,\n\t\"./IndeedIntegration/AdList/index\": 72308,\n\t\"./IndeedIntegration/AdList/index.js\": 72308,\n\t\"./IndeedIntegration/AdList/useStyles\": 70381,\n\t\"./IndeedIntegration/AdList/useStyles.js\": 70381,\n\t\"./IndeedIntegration/SponsoredJobEditor\": 93702,\n\t\"./IndeedIntegration/SponsoredJobEditor/\": 93702,\n\t\"./IndeedIntegration/SponsoredJobEditor/SponsoredJobEditor\": 16011,\n\t\"./IndeedIntegration/SponsoredJobEditor/SponsoredJobEditor.js\": 16011,\n\t\"./IndeedIntegration/SponsoredJobEditor/index\": 93702,\n\t\"./IndeedIntegration/SponsoredJobEditor/index.js\": 93702,\n\t\"./IndeedIntegration/components/AdTable\": 57261,\n\t\"./IndeedIntegration/components/AdTable/\": 57261,\n\t\"./IndeedIntegration/components/AdTable/AdTable\": 65566,\n\t\"./IndeedIntegration/components/AdTable/AdTable.js\": 65566,\n\t\"./IndeedIntegration/components/AdTable/index\": 57261,\n\t\"./IndeedIntegration/components/AdTable/index.js\": 57261,\n\t\"./IndeedIntegration/components/AdTable/useStyles\": 34424,\n\t\"./IndeedIntegration/components/AdTable/useStyles.js\": 34424,\n\t\"./IndeedIntegration/components/GenericDialog\": 6615,\n\t\"./IndeedIntegration/components/GenericDialog/\": 6615,\n\t\"./IndeedIntegration/components/GenericDialog/GenericDialog\": 41566,\n\t\"./IndeedIntegration/components/GenericDialog/GenericDialog.js\": 41566,\n\t\"./IndeedIntegration/components/GenericDialog/index\": 6615,\n\t\"./IndeedIntegration/components/GenericDialog/index.js\": 6615,\n\t\"./KpiDashboard\": 65117,\n\t\"./KpiDashboard/\": 65117,\n\t\"./KpiDashboard/KpiCard\": 66534,\n\t\"./KpiDashboard/KpiCard/\": 66534,\n\t\"./KpiDashboard/KpiCard/KpiCard\": 32186,\n\t\"./KpiDashboard/KpiCard/KpiCard.js\": 32186,\n\t\"./KpiDashboard/KpiCard/index\": 66534,\n\t\"./KpiDashboard/KpiCard/index.js\": 66534,\n\t\"./KpiDashboard/KpiCard/styles\": 3002,\n\t\"./KpiDashboard/KpiCard/styles.js\": 3002,\n\t\"./KpiDashboard/KpiDashboard\": 70495,\n\t\"./KpiDashboard/KpiDashboard.js\": 70495,\n\t\"./KpiDashboard/KpiSettings\": 16065,\n\t\"./KpiDashboard/KpiSettings/\": 16065,\n\t\"./KpiDashboard/KpiSettings/KpiSettings\": 13318,\n\t\"./KpiDashboard/KpiSettings/KpiSettings.js\": 13318,\n\t\"./KpiDashboard/KpiSettings/KpiSettingsCard\": 55035,\n\t\"./KpiDashboard/KpiSettings/KpiSettingsCard/\": 55035,\n\t\"./KpiDashboard/KpiSettings/KpiSettingsCard/KpiSettingsCard\": 31614,\n\t\"./KpiDashboard/KpiSettings/KpiSettingsCard/KpiSettingsCard.js\": 31614,\n\t\"./KpiDashboard/KpiSettings/KpiSettingsCard/index\": 55035,\n\t\"./KpiDashboard/KpiSettings/KpiSettingsCard/index.js\": 55035,\n\t\"./KpiDashboard/KpiSettings/index\": 16065,\n\t\"./KpiDashboard/KpiSettings/index.js\": 16065,\n\t\"./KpiDashboard/KpiSettings/styles\": 48683,\n\t\"./KpiDashboard/KpiSettings/styles.js\": 48683,\n\t\"./KpiDashboard/index\": 65117,\n\t\"./KpiDashboard/index.js\": 65117,\n\t\"./KpiDashboard/styles\": 36831,\n\t\"./KpiDashboard/styles.js\": 36831,\n\t\"./NewEngage/AISearch/EngageAISearch\": 93391,\n\t\"./NewEngage/AISearch/EngageAISearch.tsx\": 93391,\n\t\"./NewEngage/AISearch/EngageSearchBar\": 58526,\n\t\"./NewEngage/AISearch/EngageSearchBar.tsx\": 58526,\n\t\"./NewEngage/AISearch/EngageSearchTableActions\": 12639,\n\t\"./NewEngage/AISearch/EngageSearchTableActions.tsx\": 12639,\n\t\"./NewEngage/AISearch/EngageSearchTableRows\": 35126,\n\t\"./NewEngage/AISearch/EngageSearchTableRows.tsx\": 35126,\n\t\"./NewEngage/AISearch/EngageTableActionComponents\": 75043,\n\t\"./NewEngage/AISearch/EngageTableActionComponents.tsx\": 75043,\n\t\"./NewEngage/AISearch/Modals/ActionDrawer/ActionDrawerModals\": 63508,\n\t\"./NewEngage/AISearch/Modals/ActionDrawer/ActionDrawerModals.tsx\": 63508,\n\t\"./NewEngage/AISearch/Modals/ActionDrawer/AddToCandidatePool\": 24964,\n\t\"./NewEngage/AISearch/Modals/ActionDrawer/AddToCandidatePool.tsx\": 24964,\n\t\"./NewEngage/AISearch/Modals/AddCurrentSearch\": 92303,\n\t\"./NewEngage/AISearch/Modals/AddCurrentSearch.tsx\": 92303,\n\t\"./NewEngage/AISearch/Modals/TLPMatchModal/EditBooleanStep\": 58290,\n\t\"./NewEngage/AISearch/Modals/TLPMatchModal/EditBooleanStep.tsx\": 58290,\n\t\"./NewEngage/AISearch/Modals/TLPMatchModal/SelectTLPStep\": 80942,\n\t\"./NewEngage/AISearch/Modals/TLPMatchModal/SelectTLPStep.tsx\": 80942,\n\t\"./NewEngage/AISearch/Modals/TLPMatchModal/TLPMatchModal\": 85270,\n\t\"./NewEngage/AISearch/Modals/TLPMatchModal/TLPMatchModal.tsx\": 85270,\n\t\"./NewEngage/AISearch/SearchFilters\": 15095,\n\t\"./NewEngage/AISearch/SearchFilters.tsx\": 15095,\n\t\"./NewEngage/CandidatePoolAnalytics/Analytics/Analytics\": 54990,\n\t\"./NewEngage/CandidatePoolAnalytics/Analytics/Analytics.tsx\": 54990,\n\t\"./NewEngage/CandidatePoolAnalytics/Analytics/OpenEmailStatistics\": 11419,\n\t\"./NewEngage/CandidatePoolAnalytics/Analytics/OpenEmailStatistics.tsx\": 11419,\n\t\"./NewEngage/CandidatePoolAnalytics/Analytics/StatusStatistics\": 11071,\n\t\"./NewEngage/CandidatePoolAnalytics/Analytics/StatusStatistics.tsx\": 11071,\n\t\"./NewEngage/CandidatePoolAnalytics/Applications/ApplicationTableRows\": 97658,\n\t\"./NewEngage/CandidatePoolAnalytics/Applications/ApplicationTableRows.tsx\": 97658,\n\t\"./NewEngage/CandidatePoolAnalytics/Applications/Applications\": 51482,\n\t\"./NewEngage/CandidatePoolAnalytics/Applications/Applications.tsx\": 51482,\n\t\"./NewEngage/CandidatePoolAnalytics/Applications/config\": 13237,\n\t\"./NewEngage/CandidatePoolAnalytics/Applications/config.tsx\": 13237,\n\t\"./NewEngage/CandidatePoolAnalytics/CandidatePoolAnalytics\": 24760,\n\t\"./NewEngage/CandidatePoolAnalytics/CandidatePoolAnalytics.tsx\": 24760,\n\t\"./NewEngage/CandidatePoolAnalytics/EmailTemplates/EmailTemplates\": 45162,\n\t\"./NewEngage/CandidatePoolAnalytics/EmailTemplates/EmailTemplates.tsx\": 45162,\n\t\"./NewEngage/CandidatePools/CandidatePools\": 54078,\n\t\"./NewEngage/CandidatePools/CandidatePools.tsx\": 54078,\n\t\"./NewEngage/CandidatePools/CandidatePoolsActionComponents\": 22204,\n\t\"./NewEngage/CandidatePools/CandidatePoolsActionComponents.tsx\": 22204,\n\t\"./NewEngage/CandidatePools/CandidatePoolsTableRows\": 40651,\n\t\"./NewEngage/CandidatePools/CandidatePoolsTableRows.tsx\": 40651,\n\t\"./NewEngage/CandidatePools/Modals/ActionDrawerModals\": 50406,\n\t\"./NewEngage/CandidatePools/Modals/ActionDrawerModals.tsx\": 50406,\n\t\"./NewEngage/CandidatePools/Modals/CandidatePool/CandidatePoolsTableRows\": 10206,\n\t\"./NewEngage/CandidatePools/Modals/CandidatePool/CandidatePoolsTableRows.tsx\": 10206,\n\t\"./NewEngage/CandidatePools/Modals/CandidatePool/CandidateTabTableActionComponents\": 40239,\n\t\"./NewEngage/CandidatePools/Modals/CandidatePool/CandidateTabTableActionComponents.tsx\": 40239,\n\t\"./NewEngage/CandidatePools/Modals/CandidatePool/CandidatesTab\": 36214,\n\t\"./NewEngage/CandidatePools/Modals/CandidatePool/CandidatesTab.tsx\": 36214,\n\t\"./NewEngage/CandidatePools/Modals/CandidatePool/EmailTab\": 45560,\n\t\"./NewEngage/CandidatePools/Modals/CandidatePool/EmailTab.tsx\": 45560,\n\t\"./NewEngage/CandidatePools/Modals/CandidatePool/EmailsTableRows\": 84075,\n\t\"./NewEngage/CandidatePools/Modals/CandidatePool/EmailsTableRows.tsx\": 84075,\n\t\"./NewEngage/CandidatePools/Modals/CandidatePool/IndividualCandidatePoolModal\": 30164,\n\t\"./NewEngage/CandidatePools/Modals/CandidatePool/IndividualCandidatePoolModal.tsx\": 30164,\n\t\"./NewEngage/CandidatePools/Modals/CandidatePool/candidatesConfig\": 35225,\n\t\"./NewEngage/CandidatePools/Modals/CandidatePool/candidatesConfig.tsx\": 35225,\n\t\"./NewEngage/CandidatePools/Modals/CandidatePool/emailConfig\": 52167,\n\t\"./NewEngage/CandidatePools/Modals/CandidatePool/emailConfig.tsx\": 52167,\n\t\"./NewEngage/CandidatePools/Modals/CreateNewPoolButton\": 56393,\n\t\"./NewEngage/CandidatePools/Modals/CreateNewPoolButton.tsx\": 56393,\n\t\"./NewEngage/CandidatePools/Modals/CreateNewPoolModal\": 2470,\n\t\"./NewEngage/CandidatePools/Modals/CreateNewPoolModal.tsx\": 2470,\n\t\"./NewEngage/CandidatePools/config\": 70432,\n\t\"./NewEngage/CandidatePools/config.tsx\": 70432,\n\t\"./NewEngage/Engage\": 76060,\n\t\"./NewEngage/Engage.tsx\": 76060,\n\t\"./NewEngage/Graphics/SelectJobSVG\": 94882,\n\t\"./NewEngage/Graphics/SelectJobSVG.tsx\": 94882,\n\t\"./NewEngage/SharedComponents/AndOrToggle\": 54755,\n\t\"./NewEngage/SharedComponents/AndOrToggle.tsx\": 54755,\n\t\"./NewEngage/SharedComponents/BooleanEditor\": 17760,\n\t\"./NewEngage/SharedComponents/BooleanEditor.tsx\": 17760,\n\t\"./NewEngage/SharedComponents/Modals/EmailCandidate\": 93241,\n\t\"./NewEngage/SharedComponents/Modals/EmailCandidate.tsx\": 93241,\n\t\"./NewEngage/SharedComponents/Modals/ExternalEmail\": 4271,\n\t\"./NewEngage/SharedComponents/Modals/ExternalEmail.tsx\": 4271,\n\t\"./NewEngage/SharedComponents/booleanQueryParser\": 50694,\n\t\"./NewEngage/SharedComponents/booleanQueryParser.ts\": 50694,\n\t\"./NewEngage/SharedComponents/styles\": 87723,\n\t\"./NewEngage/SharedComponents/styles.ts\": 87723,\n\t\"./NewEngage/Tabs/TabPanel\": 18915,\n\t\"./NewEngage/Tabs/TabPanel.tsx\": 18915,\n\t\"./NewEngage/Tabs/TabSelector\": 1722,\n\t\"./NewEngage/Tabs/TabSelector.tsx\": 1722,\n\t\"./NewEngage/config\": 28839,\n\t\"./NewEngage/config.tsx\": 28839,\n\t\"./NewEngage/helper\": 59307,\n\t\"./NewEngage/helper.ts\": 59307,\n\t\"./NewEngage/reducer\": 94243,\n\t\"./NewEngage/reducer.ts\": 94243,\n\t\"./NewEngage/styles\": 27193,\n\t\"./NewEngage/styles.ts\": 27193,\n\t\"./NewEngage/types\": 50918,\n\t\"./NewEngage/types.ts\": 50918,\n\t\"./NewLogin/API\": 13881,\n\t\"./NewLogin/API.ts\": 13881,\n\t\"./NewLogin/NewLogin\": 28778,\n\t\"./NewLogin/NewLogin.tsx\": 28778,\n\t\"./NewLogin/styles\": 28531,\n\t\"./NewLogin/styles.ts\": 28531,\n\t\"./NewLogin/utils/FadeChildrenVisibility\": 22050,\n\t\"./NewLogin/utils/FadeChildrenVisibility.tsx\": 22050,\n\t\"./NewUI/Application\": 90777,\n\t\"./NewUI/Application/\": 90777,\n\t\"./NewUI/Application/API\": 37231,\n\t\"./NewUI/Application/API.ts\": 37231,\n\t\"./NewUI/Application/Application\": 58983,\n\t\"./NewUI/Application/Application.tsx\": 58983,\n\t\"./NewUI/Application/ApplicationBetaButton\": 88101,\n\t\"./NewUI/Application/ApplicationBetaButton.tsx\": 88101,\n\t\"./NewUI/Application/ApplicationHeader\": 96752,\n\t\"./NewUI/Application/ApplicationHeader.tsx\": 96752,\n\t\"./NewUI/Application/ApplicationStatusPopover\": 89266,\n\t\"./NewUI/Application/ApplicationStatusPopover.tsx\": 89266,\n\t\"./NewUI/Application/IntegrationsTab\": 91350,\n\t\"./NewUI/Application/IntegrationsTab/\": 91350,\n\t\"./NewUI/Application/IntegrationsTab/ExportButton\": 90022,\n\t\"./NewUI/Application/IntegrationsTab/ExportButton.tsx\": 90022,\n\t\"./NewUI/Application/IntegrationsTab/Logos/AlayaCareLogo.png\": 88981,\n\t\"./NewUI/Application/IntegrationsTab/Logos/CognologyLogo.png\": 59623,\n\t\"./NewUI/Application/IntegrationsTab/Logos/Fit2WorkLogo.png\": 51086,\n\t\"./NewUI/Application/IntegrationsTab/Logos/FoundULogo.png\": 74893,\n\t\"./NewUI/Application/IntegrationsTab/Logos/HronboardLogo.png\": 83843,\n\t\"./NewUI/Application/IntegrationsTab/Logos/Logos\": 41459,\n\t\"./NewUI/Application/IntegrationsTab/Logos/Logos.tsx\": 41459,\n\t\"./NewUI/Application/IntegrationsTab/Logos/MvsLogo.png\": 85620,\n\t\"./NewUI/Application/IntegrationsTab/Logos/OnboardExpressLogo.png\": 19075,\n\t\"./NewUI/Application/IntegrationsTab/Logos/ReferooLogo.png\": 21452,\n\t\"./NewUI/Application/IntegrationsTab/Logos/RoublerLogo.png\": 88781,\n\t\"./NewUI/Application/IntegrationsTab/Logos/SparkHireLogo.png\": 31185,\n\t\"./NewUI/Application/IntegrationsTab/Logos/TestgridLogo.png\": 95144,\n\t\"./NewUI/Application/IntegrationsTab/Logos/XrefLogo.png\": 49519,\n\t\"./NewUI/Application/IntegrationsTab/Modals/AlayaCare\": 96046,\n\t\"./NewUI/Application/IntegrationsTab/Modals/AlayaCare.tsx\": 96046,\n\t\"./NewUI/Application/IntegrationsTab/Modals/AlreadyExportedModal\": 4639,\n\t\"./NewUI/Application/IntegrationsTab/Modals/AlreadyExportedModal.tsx\": 4639,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Cognology/Cognology\": 94430,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Cognology/Cognology.tsx\": 94430,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Cognology/CognologyAfterApprovalModal\": 14352,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Cognology/CognologyAfterApprovalModal.tsx\": 14352,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Cognology/CognologyApprovalDetails\": 67525,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Cognology/CognologyApprovalDetails.tsx\": 67525,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Cognology/CognologyStep1\": 80659,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Cognology/CognologyStep1.tsx\": 80659,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Cognology/CognologySummary\": 53452,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Cognology/CognologySummary.tsx\": 53452,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Cognology/CognologyWaitingForApprovalModal\": 42898,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Cognology/CognologyWaitingForApprovalModal.tsx\": 42898,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Fit2Work\": 57769,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Fit2Work.tsx\": 57769,\n\t\"./NewUI/Application/IntegrationsTab/Modals/FoundU\": 59270,\n\t\"./NewUI/Application/IntegrationsTab/Modals/FoundU.tsx\": 59270,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Hronboard\": 60092,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Hronboard.tsx\": 60092,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Mvs\": 58011,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Mvs.tsx\": 58011,\n\t\"./NewUI/Application/IntegrationsTab/Modals/OnboardExpress\": 39464,\n\t\"./NewUI/Application/IntegrationsTab/Modals/OnboardExpress.tsx\": 39464,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Referoo\": 86087,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Referoo.tsx\": 86087,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Roubler\": 17278,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Roubler.tsx\": 17278,\n\t\"./NewUI/Application/IntegrationsTab/Modals/SparkHire\": 28250,\n\t\"./NewUI/Application/IntegrationsTab/Modals/SparkHire.tsx\": 28250,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Testgrid\": 29175,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Testgrid.tsx\": 29175,\n\t\"./NewUI/Application/IntegrationsTab/Modals/UnusualActivity\": 79853,\n\t\"./NewUI/Application/IntegrationsTab/Modals/UnusualActivity.tsx\": 79853,\n\t\"./NewUI/Application/IntegrationsTab/Modals/XRef\": 82780,\n\t\"./NewUI/Application/IntegrationsTab/Modals/XRef.tsx\": 82780,\n\t\"./NewUI/Application/IntegrationsTab/OldIntegrationsLink\": 99972,\n\t\"./NewUI/Application/IntegrationsTab/OldIntegrationsLink.tsx\": 99972,\n\t\"./NewUI/Application/IntegrationsTab/Records/Fit2WorkRecord\": 9612,\n\t\"./NewUI/Application/IntegrationsTab/Records/Fit2WorkRecord.tsx\": 9612,\n\t\"./NewUI/Application/IntegrationsTab/Records/FoundURecord\": 83927,\n\t\"./NewUI/Application/IntegrationsTab/Records/FoundURecord.tsx\": 83927,\n\t\"./NewUI/Application/IntegrationsTab/Records/MvsRecord\": 26122,\n\t\"./NewUI/Application/IntegrationsTab/Records/MvsRecord.tsx\": 26122,\n\t\"./NewUI/Application/IntegrationsTab/Records/ReferooRecord\": 27786,\n\t\"./NewUI/Application/IntegrationsTab/Records/ReferooRecord.tsx\": 27786,\n\t\"./NewUI/Application/IntegrationsTab/Records/SparkHireRecord\": 94907,\n\t\"./NewUI/Application/IntegrationsTab/Records/SparkHireRecord.tsx\": 94907,\n\t\"./NewUI/Application/IntegrationsTab/Records/TestgridRecord\": 81486,\n\t\"./NewUI/Application/IntegrationsTab/Records/TestgridRecord.tsx\": 81486,\n\t\"./NewUI/Application/IntegrationsTab/Records/XrefRecord\": 20753,\n\t\"./NewUI/Application/IntegrationsTab/Records/XrefRecord.tsx\": 20753,\n\t\"./NewUI/Application/IntegrationsTab/UpdateStatusIcon\": 2454,\n\t\"./NewUI/Application/IntegrationsTab/UpdateStatusIcon.tsx\": 2454,\n\t\"./NewUI/Application/IntegrationsTab/helper\": 28304,\n\t\"./NewUI/Application/IntegrationsTab/helper.ts\": 28304,\n\t\"./NewUI/Application/IntegrationsTab/index\": 91350,\n\t\"./NewUI/Application/IntegrationsTab/index.tsx\": 91350,\n\t\"./NewUI/Application/IntegrationsTab/styles\": 1218,\n\t\"./NewUI/Application/IntegrationsTab/styles.ts\": 1218,\n\t\"./NewUI/Application/Modals/AddEditTask\": 60616,\n\t\"./NewUI/Application/Modals/AddEditTask.tsx\": 60616,\n\t\"./NewUI/Application/Modals/AddForm\": 25197,\n\t\"./NewUI/Application/Modals/AddForm.tsx\": 25197,\n\t\"./NewUI/Application/Modals/AddToEvent\": 99102,\n\t\"./NewUI/Application/Modals/AddToEvent.tsx\": 99102,\n\t\"./NewUI/Application/Modals/AttachmentPreviewModal\": 42760,\n\t\"./NewUI/Application/Modals/AttachmentPreviewModal.tsx\": 42760,\n\t\"./NewUI/Application/Modals/Components/EmailBodyComponent\": 94492,\n\t\"./NewUI/Application/Modals/Components/EmailBodyComponent.tsx\": 94492,\n\t\"./NewUI/Application/Modals/Components/EmailsDropdown\": 34601,\n\t\"./NewUI/Application/Modals/Components/EmailsDropdown.tsx\": 34601,\n\t\"./NewUI/Application/Modals/Components/FormResponseInfo\": 47326,\n\t\"./NewUI/Application/Modals/Components/FormResponseInfo.tsx\": 47326,\n\t\"./NewUI/Application/Modals/Components/FormsDropdown\": 36143,\n\t\"./NewUI/Application/Modals/Components/FormsDropdown.tsx\": 36143,\n\t\"./NewUI/Application/Modals/Components/NotificationOptionsSwitch\": 87528,\n\t\"./NewUI/Application/Modals/Components/NotificationOptionsSwitch.tsx\": 87528,\n\t\"./NewUI/Application/Modals/Components/TimestampTable\": 28905,\n\t\"./NewUI/Application/Modals/Components/TimestampTable.tsx\": 28905,\n\t\"./NewUI/Application/Modals/Components/TimestampTableForm\": 2423,\n\t\"./NewUI/Application/Modals/Components/TimestampTableForm.tsx\": 2423,\n\t\"./NewUI/Application/Modals/Components/TimestampTableRow\": 22925,\n\t\"./NewUI/Application/Modals/Components/TimestampTableRow.tsx\": 22925,\n\t\"./NewUI/Application/Modals/CreateApproval\": 19361,\n\t\"./NewUI/Application/Modals/CreateApproval.tsx\": 19361,\n\t\"./NewUI/Application/Modals/DeleteApplication\": 23599,\n\t\"./NewUI/Application/Modals/DeleteApplication.tsx\": 23599,\n\t\"./NewUI/Application/Modals/DeleteAttachment\": 90582,\n\t\"./NewUI/Application/Modals/DeleteAttachment.tsx\": 90582,\n\t\"./NewUI/Application/Modals/DeleteFormResponse\": 15978,\n\t\"./NewUI/Application/Modals/DeleteFormResponse.tsx\": 15978,\n\t\"./NewUI/Application/Modals/EditFormResponseModal\": 69916,\n\t\"./NewUI/Application/Modals/EditFormResponseModal.tsx\": 69916,\n\t\"./NewUI/Application/Modals/EmailExternal\": 51659,\n\t\"./NewUI/Application/Modals/EmailExternal.tsx\": 51659,\n\t\"./NewUI/Application/Modals/ExitConfirmationModal\": 92688,\n\t\"./NewUI/Application/Modals/ExitConfirmationModal.tsx\": 92688,\n\t\"./NewUI/Application/Modals/ExportToOnboard\": 70736,\n\t\"./NewUI/Application/Modals/ExportToOnboard.tsx\": 70736,\n\t\"./NewUI/Application/Modals/InviteToTimeslot\": 10371,\n\t\"./NewUI/Application/Modals/InviteToTimeslot.tsx\": 10371,\n\t\"./NewUI/Application/Modals/MissingPlaceholdersConfirmationModal\": 35944,\n\t\"./NewUI/Application/Modals/MissingPlaceholdersConfirmationModal.tsx\": 35944,\n\t\"./NewUI/Application/Modals/MoveApplicationModal\": 69802,\n\t\"./NewUI/Application/Modals/MoveApplicationModal.tsx\": 69802,\n\t\"./NewUI/Application/Modals/SearchIndex\": 51206,\n\t\"./NewUI/Application/Modals/SearchIndex.tsx\": 51206,\n\t\"./NewUI/Application/Modals/SendEmail\": 93712,\n\t\"./NewUI/Application/Modals/SendEmail.tsx\": 93712,\n\t\"./NewUI/Application/Modals/SendForm\": 40128,\n\t\"./NewUI/Application/Modals/SendForm.tsx\": 40128,\n\t\"./NewUI/Application/Modals/SendSms\": 24431,\n\t\"./NewUI/Application/Modals/SendSms.tsx\": 24431,\n\t\"./NewUI/Application/Modals/TaskWorkflow\": 420,\n\t\"./NewUI/Application/Modals/TaskWorkflow.tsx\": 420,\n\t\"./NewUI/Application/Modals/styles\": 70182,\n\t\"./NewUI/Application/Modals/styles.ts\": 70182,\n\t\"./NewUI/Application/MoreOptionsPopover\": 79044,\n\t\"./NewUI/Application/MoreOptionsPopover.tsx\": 79044,\n\t\"./NewUI/Application/OverviewTab\": 61234,\n\t\"./NewUI/Application/OverviewTab/\": 61234,\n\t\"./NewUI/Application/OverviewTab/AISummary\": 5676,\n\t\"./NewUI/Application/OverviewTab/AISummary.tsx\": 5676,\n\t\"./NewUI/Application/OverviewTab/AISummaryNoAccess\": 47967,\n\t\"./NewUI/Application/OverviewTab/AISummaryNoAccess.tsx\": 47967,\n\t\"./NewUI/Application/OverviewTab/Actions\": 68475,\n\t\"./NewUI/Application/OverviewTab/Actions.tsx\": 68475,\n\t\"./NewUI/Application/OverviewTab/AdditionalInfo\": 1895,\n\t\"./NewUI/Application/OverviewTab/AdditionalInfo.tsx\": 1895,\n\t\"./NewUI/Application/OverviewTab/Attachments\": 74393,\n\t\"./NewUI/Application/OverviewTab/Attachments/\": 74393,\n\t\"./NewUI/Application/OverviewTab/Attachments/AudioPreview\": 93295,\n\t\"./NewUI/Application/OverviewTab/Attachments/AudioPreview.tsx\": 93295,\n\t\"./NewUI/Application/OverviewTab/Attachments/ImagePreview\": 28524,\n\t\"./NewUI/Application/OverviewTab/Attachments/ImagePreview.tsx\": 28524,\n\t\"./NewUI/Application/OverviewTab/Attachments/PdfPreview\": 21083,\n\t\"./NewUI/Application/OverviewTab/Attachments/PdfPreview.tsx\": 21083,\n\t\"./NewUI/Application/OverviewTab/Attachments/TextPreview\": 91034,\n\t\"./NewUI/Application/OverviewTab/Attachments/TextPreview.tsx\": 91034,\n\t\"./NewUI/Application/OverviewTab/Attachments/VideoPreview\": 47674,\n\t\"./NewUI/Application/OverviewTab/Attachments/VideoPreview.tsx\": 47674,\n\t\"./NewUI/Application/OverviewTab/Attachments/WordPreview\": 56789,\n\t\"./NewUI/Application/OverviewTab/Attachments/WordPreview.tsx\": 56789,\n\t\"./NewUI/Application/OverviewTab/Attachments/index\": 74393,\n\t\"./NewUI/Application/OverviewTab/Attachments/index.tsx\": 74393,\n\t\"./NewUI/Application/OverviewTab/Icons\": 48612,\n\t\"./NewUI/Application/OverviewTab/Icons.tsx\": 48612,\n\t\"./NewUI/Application/OverviewTab/Questionnaire\": 90677,\n\t\"./NewUI/Application/OverviewTab/Questionnaire.tsx\": 90677,\n\t\"./NewUI/Application/OverviewTab/QuestionsAndRatings\": 18730,\n\t\"./NewUI/Application/OverviewTab/QuestionsAndRatings.tsx\": 18730,\n\t\"./NewUI/Application/OverviewTab/Rating\": 50631,\n\t\"./NewUI/Application/OverviewTab/Rating.tsx\": 50631,\n\t\"./NewUI/Application/OverviewTab/RatingCard\": 90993,\n\t\"./NewUI/Application/OverviewTab/RatingCard.tsx\": 90993,\n\t\"./NewUI/Application/OverviewTab/Ratings\": 91532,\n\t\"./NewUI/Application/OverviewTab/Ratings.tsx\": 91532,\n\t\"./NewUI/Application/OverviewTab/Responses\": 88622,\n\t\"./NewUI/Application/OverviewTab/Responses.tsx\": 88622,\n\t\"./NewUI/Application/OverviewTab/Section\": 92758,\n\t\"./NewUI/Application/OverviewTab/Section/\": 92758,\n\t\"./NewUI/Application/OverviewTab/Section/Section\": 79735,\n\t\"./NewUI/Application/OverviewTab/Section/Section.tsx\": 79735,\n\t\"./NewUI/Application/OverviewTab/Section/index\": 92758,\n\t\"./NewUI/Application/OverviewTab/Section/index.ts\": 92758,\n\t\"./NewUI/Application/OverviewTab/Section/types\": 8607,\n\t\"./NewUI/Application/OverviewTab/Section/types.ts\": 8607,\n\t\"./NewUI/Application/OverviewTab/SortableSection\": 51527,\n\t\"./NewUI/Application/OverviewTab/SortableSection.tsx\": 51527,\n\t\"./NewUI/Application/OverviewTab/index\": 61234,\n\t\"./NewUI/Application/OverviewTab/index.tsx\": 61234,\n\t\"./NewUI/Application/SmartFormsTab/FormResponseActions\": 99673,\n\t\"./NewUI/Application/SmartFormsTab/FormResponseActions.tsx\": 99673,\n\t\"./NewUI/Application/SmartFormsTab/FormResponseDetails\": 74994,\n\t\"./NewUI/Application/SmartFormsTab/FormResponseDetails.tsx\": 74994,\n\t\"./NewUI/Application/SmartFormsTab/SmartFormsTab\": 66716,\n\t\"./NewUI/Application/SmartFormsTab/SmartFormsTab.tsx\": 66716,\n\t\"./NewUI/Application/SmartFormsTab/get-answer-attributes\": 96782,\n\t\"./NewUI/Application/SmartFormsTab/get-answer-attributes.ts\": 96782,\n\t\"./NewUI/Application/SmartFormsTab/get-answer-value\": 48754,\n\t\"./NewUI/Application/SmartFormsTab/get-answer-value.ts\": 48754,\n\t\"./NewUI/Application/SmartFormsTab/validate-form-submission\": 42281,\n\t\"./NewUI/Application/SmartFormsTab/validate-form-submission.ts\": 42281,\n\t\"./NewUI/Application/TasksAndEventsTab\": 83903,\n\t\"./NewUI/Application/TasksAndEventsTab/\": 83903,\n\t\"./NewUI/Application/TasksAndEventsTab/Tasks\": 51268,\n\t\"./NewUI/Application/TasksAndEventsTab/Tasks/\": 51268,\n\t\"./NewUI/Application/TasksAndEventsTab/Tasks/Task\": 29149,\n\t\"./NewUI/Application/TasksAndEventsTab/Tasks/Task.tsx\": 29149,\n\t\"./NewUI/Application/TasksAndEventsTab/Tasks/TasksTab\": 17597,\n\t\"./NewUI/Application/TasksAndEventsTab/Tasks/TasksTab.tsx\": 17597,\n\t\"./NewUI/Application/TasksAndEventsTab/Tasks/index\": 51268,\n\t\"./NewUI/Application/TasksAndEventsTab/Tasks/index.tsx\": 51268,\n\t\"./NewUI/Application/TasksAndEventsTab/index\": 83903,\n\t\"./NewUI/Application/TasksAndEventsTab/index.tsx\": 83903,\n\t\"./NewUI/Application/config\": 1805,\n\t\"./NewUI/Application/config.ts\": 1805,\n\t\"./NewUI/Application/constants\": 38001,\n\t\"./NewUI/Application/constants/\": 38001,\n\t\"./NewUI/Application/constants/index\": 38001,\n\t\"./NewUI/Application/constants/index.ts\": 38001,\n\t\"./NewUI/Application/constants/zoomSettings\": 54067,\n\t\"./NewUI/Application/constants/zoomSettings.ts\": 54067,\n\t\"./NewUI/Application/helper\": 41119,\n\t\"./NewUI/Application/helper.ts\": 41119,\n\t\"./NewUI/Application/index\": 90777,\n\t\"./NewUI/Application/index.tsx\": 90777,\n\t\"./NewUI/Application/reducer\": 24871,\n\t\"./NewUI/Application/reducer.ts\": 24871,\n\t\"./NewUI/Application/styles\": 89373,\n\t\"./NewUI/Application/styles.ts\": 89373,\n\t\"./NewUI/Application/types\": 62506,\n\t\"./NewUI/Application/types.ts\": 62506,\n\t\"./NewUI/ApprovalForms\": 21203,\n\t\"./NewUI/ApprovalForms/\": 21203,\n\t\"./NewUI/ApprovalForms/API\": 71307,\n\t\"./NewUI/ApprovalForms/API.ts\": 71307,\n\t\"./NewUI/ApprovalForms/ApprovalForm/ActionModal\": 98138,\n\t\"./NewUI/ApprovalForms/ApprovalForm/ActionModal.tsx\": 98138,\n\t\"./NewUI/ApprovalForms/ApprovalForm/AnswersView\": 35449,\n\t\"./NewUI/ApprovalForms/ApprovalForm/AnswersView.tsx\": 35449,\n\t\"./NewUI/ApprovalForms/ApprovalForm/ApprovalForm\": 76964,\n\t\"./NewUI/ApprovalForms/ApprovalForm/ApprovalForm.tsx\": 76964,\n\t\"./NewUI/ApprovalForms/ApprovalForm/ApprovalFormPage\": 80141,\n\t\"./NewUI/ApprovalForms/ApprovalForm/ApprovalFormPage.tsx\": 80141,\n\t\"./NewUI/ApprovalForms/ApprovalForm/ApproversTable\": 97933,\n\t\"./NewUI/ApprovalForms/ApprovalForm/ApproversTable.tsx\": 97933,\n\t\"./NewUI/ApprovalForms/ApprovalForm/AvailabilityAnswer\": 6632,\n\t\"./NewUI/ApprovalForms/ApprovalForm/AvailabilityAnswer.tsx\": 6632,\n\t\"./NewUI/ApprovalForms/ApprovalForm/DocumentViewer\": 40978,\n\t\"./NewUI/ApprovalForms/ApprovalForm/DocumentViewer.tsx\": 40978,\n\t\"./NewUI/ApprovalForms/ApprovalForm/EditApproverModal\": 32089,\n\t\"./NewUI/ApprovalForms/ApprovalForm/EditApproverModal.tsx\": 32089,\n\t\"./NewUI/ApprovalForms/ApprovalForm/styles\": 28907,\n\t\"./NewUI/ApprovalForms/ApprovalForm/styles.ts\": 28907,\n\t\"./NewUI/ApprovalForms/ApprovalForms\": 6419,\n\t\"./NewUI/ApprovalForms/ApprovalForms.tsx\": 6419,\n\t\"./NewUI/ApprovalForms/ApprovalFormsTab\": 80722,\n\t\"./NewUI/ApprovalForms/ApprovalFormsTab.tsx\": 80722,\n\t\"./NewUI/ApprovalForms/ApprovalFormsTable\": 19855,\n\t\"./NewUI/ApprovalForms/ApprovalFormsTable.tsx\": 19855,\n\t\"./NewUI/ApprovalForms/ApprovalManagers/ApprovalManagers\": 83496,\n\t\"./NewUI/ApprovalForms/ApprovalManagers/ApprovalManagers.tsx\": 83496,\n\t\"./NewUI/ApprovalForms/ApprovalManagers/ApprovalManagersTable\": 53238,\n\t\"./NewUI/ApprovalForms/ApprovalManagers/ApprovalManagersTable.tsx\": 53238,\n\t\"./NewUI/ApprovalForms/ApprovalManagers/NewApprovalManager\": 39357,\n\t\"./NewUI/ApprovalForms/ApprovalManagers/NewApprovalManager.tsx\": 39357,\n\t\"./NewUI/ApprovalForms/ApprovalManagers/Search\": 38833,\n\t\"./NewUI/ApprovalForms/ApprovalManagers/Search.tsx\": 38833,\n\t\"./NewUI/ApprovalForms/ApprovalPublicLinks/ApprovalPublicLink\": 56435,\n\t\"./NewUI/ApprovalForms/ApprovalPublicLinks/ApprovalPublicLink.tsx\": 56435,\n\t\"./NewUI/ApprovalForms/ApprovalPublicLinks/ApprovalPublicLinks\": 83040,\n\t\"./NewUI/ApprovalForms/ApprovalPublicLinks/ApprovalPublicLinks.tsx\": 83040,\n\t\"./NewUI/ApprovalForms/ApprovalPublicLinks/ApprovalPublicLinksTable\": 36302,\n\t\"./NewUI/ApprovalForms/ApprovalPublicLinks/ApprovalPublicLinksTable.tsx\": 36302,\n\t\"./NewUI/ApprovalForms/ApprovalTemplate/ApprovalTemplateFields\": 77019,\n\t\"./NewUI/ApprovalForms/ApprovalTemplate/ApprovalTemplateFields.tsx\": 77019,\n\t\"./NewUI/ApprovalForms/ApprovalTemplateSettings/AdvancedTab\": 6195,\n\t\"./NewUI/ApprovalForms/ApprovalTemplateSettings/AdvancedTab.tsx\": 6195,\n\t\"./NewUI/ApprovalForms/ApprovalTemplateSettings/ApprovalTemplateSettings\": 60902,\n\t\"./NewUI/ApprovalForms/ApprovalTemplateSettings/ApprovalTemplateSettings.tsx\": 60902,\n\t\"./NewUI/ApprovalForms/ApprovalTemplateSettings/ApproversListAutoComplete\": 274,\n\t\"./NewUI/ApprovalForms/ApprovalTemplateSettings/ApproversListAutoComplete.tsx\": 274,\n\t\"./NewUI/ApprovalForms/ApprovalTemplateSettings/ApproversListText\": 37679,\n\t\"./NewUI/ApprovalForms/ApprovalTemplateSettings/ApproversListText.tsx\": 37679,\n\t\"./NewUI/ApprovalForms/ApprovalTemplateSettings/DefaultApproversTab\": 49916,\n\t\"./NewUI/ApprovalForms/ApprovalTemplateSettings/DefaultApproversTab.tsx\": 49916,\n\t\"./NewUI/ApprovalForms/ApprovalTemplateSettings/FormTitleTab\": 2235,\n\t\"./NewUI/ApprovalForms/ApprovalTemplateSettings/FormTitleTab.tsx\": 2235,\n\t\"./NewUI/ApprovalForms/ApprovalTemplateSettings/TemplateTitleTab\": 80899,\n\t\"./NewUI/ApprovalForms/ApprovalTemplateSettings/TemplateTitleTab.tsx\": 80899,\n\t\"./NewUI/ApprovalForms/ApprovalTemplateSettings/styles\": 99804,\n\t\"./NewUI/ApprovalForms/ApprovalTemplateSettings/styles.ts\": 99804,\n\t\"./NewUI/ApprovalForms/ApprovalTemplates/ApprovalTemplates\": 61132,\n\t\"./NewUI/ApprovalForms/ApprovalTemplates/ApprovalTemplates.tsx\": 61132,\n\t\"./NewUI/ApprovalForms/ApprovalTemplates/ApprovalTemplatesTable\": 80170,\n\t\"./NewUI/ApprovalForms/ApprovalTemplates/ApprovalTemplatesTable.tsx\": 80170,\n\t\"./NewUI/ApprovalForms/ApprovalTemplates/FilterDropdown\": 70657,\n\t\"./NewUI/ApprovalForms/ApprovalTemplates/FilterDropdown.tsx\": 70657,\n\t\"./NewUI/ApprovalForms/ApprovalTemplates/MoveApprovalTemplate\": 39608,\n\t\"./NewUI/ApprovalForms/ApprovalTemplates/MoveApprovalTemplate.tsx\": 39608,\n\t\"./NewUI/ApprovalForms/ApprovalTemplates/NotePopover\": 20365,\n\t\"./NewUI/ApprovalForms/ApprovalTemplates/NotePopover.tsx\": 20365,\n\t\"./NewUI/ApprovalForms/ApprovalTemplates/Search\": 39164,\n\t\"./NewUI/ApprovalForms/ApprovalTemplates/Search.tsx\": 39164,\n\t\"./NewUI/ApprovalForms/ApprovalTemplates/config\": 25078,\n\t\"./NewUI/ApprovalForms/ApprovalTemplates/config.ts\": 25078,\n\t\"./NewUI/ApprovalForms/ApprovalTemplates/types\": 9883,\n\t\"./NewUI/ApprovalForms/ApprovalTemplates/types.ts\": 9883,\n\t\"./NewUI/ApprovalForms/ArchivedFormsAndTemplates/ArchivedFormsAndTemplates\": 76300,\n\t\"./NewUI/ApprovalForms/ArchivedFormsAndTemplates/ArchivedFormsAndTemplates.tsx\": 76300,\n\t\"./NewUI/ApprovalForms/Dropdowns/DndFieldDropdown\": 29457,\n\t\"./NewUI/ApprovalForms/Dropdowns/DndFieldDropdown.tsx\": 29457,\n\t\"./NewUI/ApprovalForms/Dropdowns/FieldDropdown\": 77757,\n\t\"./NewUI/ApprovalForms/Dropdowns/FieldDropdown.tsx\": 77757,\n\t\"./NewUI/ApprovalForms/Dropdowns/FilterDropdown\": 50781,\n\t\"./NewUI/ApprovalForms/Dropdowns/FilterDropdown.tsx\": 50781,\n\t\"./NewUI/ApprovalForms/Dropdowns/SortableField\": 12854,\n\t\"./NewUI/ApprovalForms/Dropdowns/SortableField.tsx\": 12854,\n\t\"./NewUI/ApprovalForms/NewApproval/NewApproval\": 71716,\n\t\"./NewUI/ApprovalForms/NewApproval/NewApproval.tsx\": 71716,\n\t\"./NewUI/ApprovalForms/NewApproval/NewApprovalModal\": 29765,\n\t\"./NewUI/ApprovalForms/NewApproval/NewApprovalModal.tsx\": 29765,\n\t\"./NewUI/ApprovalForms/NewApproval/NewApprovalModalFromCandidate\": 81686,\n\t\"./NewUI/ApprovalForms/NewApproval/NewApprovalModalFromCandidate.tsx\": 81686,\n\t\"./NewUI/ApprovalForms/NewApproval/styles\": 88487,\n\t\"./NewUI/ApprovalForms/NewApproval/styles.ts\": 88487,\n\t\"./NewUI/ApprovalForms/NewApprovalPublicLink/NewApprovalPublicLinkModal\": 94105,\n\t\"./NewUI/ApprovalForms/NewApprovalPublicLink/NewApprovalPublicLinkModal.tsx\": 94105,\n\t\"./NewUI/ApprovalForms/NewApprovalPublicLink/styles\": 62948,\n\t\"./NewUI/ApprovalForms/NewApprovalPublicLink/styles.ts\": 62948,\n\t\"./NewUI/ApprovalForms/NotePopover\": 82978,\n\t\"./NewUI/ApprovalForms/NotePopover.tsx\": 82978,\n\t\"./NewUI/ApprovalForms/Questions/Modals/AddSystemField\": 92788,\n\t\"./NewUI/ApprovalForms/Questions/Modals/AddSystemField.tsx\": 92788,\n\t\"./NewUI/ApprovalForms/Questions/Modals/AvailabilityPreview\": 8535,\n\t\"./NewUI/ApprovalForms/Questions/Modals/AvailabilityPreview.tsx\": 8535,\n\t\"./NewUI/ApprovalForms/Questions/Modals/BooleanFieldSwitch\": 97050,\n\t\"./NewUI/ApprovalForms/Questions/Modals/BooleanFieldSwitch.tsx\": 97050,\n\t\"./NewUI/ApprovalForms/Questions/Modals/NewEmailTemplateField\": 30980,\n\t\"./NewUI/ApprovalForms/Questions/Modals/NewEmailTemplateField.tsx\": 30980,\n\t\"./NewUI/ApprovalForms/Questions/Modals/NewField\": 63232,\n\t\"./NewUI/ApprovalForms/Questions/Modals/NewField.tsx\": 63232,\n\t\"./NewUI/ApprovalForms/Questions/Modals/SortableChoice\": 5627,\n\t\"./NewUI/ApprovalForms/Questions/Modals/SortableChoice.tsx\": 5627,\n\t\"./NewUI/ApprovalForms/Questions/NewSystemFieldSVG\": 43432,\n\t\"./NewUI/ApprovalForms/Questions/NewSystemFieldSVG.tsx\": 43432,\n\t\"./NewUI/ApprovalForms/Questions/QuestionCardSensor\": 15107,\n\t\"./NewUI/ApprovalForms/Questions/QuestionCardSensor.tsx\": 15107,\n\t\"./NewUI/ApprovalForms/Questions/Questions\": 23912,\n\t\"./NewUI/ApprovalForms/Questions/Questions.tsx\": 23912,\n\t\"./NewUI/ApprovalForms/Questions/SortableItem\": 93597,\n\t\"./NewUI/ApprovalForms/Questions/SortableItem.tsx\": 93597,\n\t\"./NewUI/ApprovalForms/Questions/styles\": 10507,\n\t\"./NewUI/ApprovalForms/Questions/styles.ts\": 10507,\n\t\"./NewUI/ApprovalForms/Search\": 38225,\n\t\"./NewUI/ApprovalForms/Search.tsx\": 38225,\n\t\"./NewUI/ApprovalForms/config\": 78353,\n\t\"./NewUI/ApprovalForms/config.ts\": 78353,\n\t\"./NewUI/ApprovalForms/helper\": 6907,\n\t\"./NewUI/ApprovalForms/helper.ts\": 6907,\n\t\"./NewUI/ApprovalForms/index\": 21203,\n\t\"./NewUI/ApprovalForms/index.ts\": 21203,\n\t\"./NewUI/ApprovalForms/styles\": 65993,\n\t\"./NewUI/ApprovalForms/styles.ts\": 65993,\n\t\"./NewUI/ApprovalForms/types\": 630,\n\t\"./NewUI/ApprovalForms/types.ts\": 630,\n\t\"./NewUI/Candidate\": 45692,\n\t\"./NewUI/Candidate/\": 45692,\n\t\"./NewUI/Candidate/API\": 35488,\n\t\"./NewUI/Candidate/API.ts\": 35488,\n\t\"./NewUI/Candidate/ActivitiesTab\": 77836,\n\t\"./NewUI/Candidate/ActivitiesTab.tsx\": 77836,\n\t\"./NewUI/Candidate/AddRecord\": 51530,\n\t\"./NewUI/Candidate/AddRecord.tsx\": 51530,\n\t\"./NewUI/Candidate/Candidate\": 11451,\n\t\"./NewUI/Candidate/Candidate.tsx\": 11451,\n\t\"./NewUI/Candidate/CandidateApplicationsTableRows\": 94511,\n\t\"./NewUI/Candidate/CandidateApplicationsTableRows.tsx\": 94511,\n\t\"./NewUI/Candidate/CandidateIcon\": 73920,\n\t\"./NewUI/Candidate/CandidateIcon.tsx\": 73920,\n\t\"./NewUI/Candidate/CandidateTags\": 12248,\n\t\"./NewUI/Candidate/CandidateTags.tsx\": 12248,\n\t\"./NewUI/Candidate/CandidateTasks\": 63844,\n\t\"./NewUI/Candidate/CandidateTasks/\": 63844,\n\t\"./NewUI/Candidate/CandidateTasks/AddEditTaskModal\": 8599,\n\t\"./NewUI/Candidate/CandidateTasks/AddEditTaskModal.tsx\": 8599,\n\t\"./NewUI/Candidate/CandidateTasks/CandidateTask\": 46724,\n\t\"./NewUI/Candidate/CandidateTasks/CandidateTask.tsx\": 46724,\n\t\"./NewUI/Candidate/CandidateTasks/CandidateTasksTab\": 98776,\n\t\"./NewUI/Candidate/CandidateTasks/CandidateTasksTab.tsx\": 98776,\n\t\"./NewUI/Candidate/CandidateTasks/EmptyTab\": 7238,\n\t\"./NewUI/Candidate/CandidateTasks/EmptyTab.tsx\": 7238,\n\t\"./NewUI/Candidate/CandidateTasks/TaskWorkflowModal\": 67507,\n\t\"./NewUI/Candidate/CandidateTasks/TaskWorkflowModal.tsx\": 67507,\n\t\"./NewUI/Candidate/CandidateTasks/index\": 63844,\n\t\"./NewUI/Candidate/CandidateTasks/index.tsx\": 63844,\n\t\"./NewUI/Candidate/MergeCandidates\": 48222,\n\t\"./NewUI/Candidate/MergeCandidates.tsx\": 48222,\n\t\"./NewUI/Candidate/Notepad\": 2411,\n\t\"./NewUI/Candidate/Notepad.tsx\": 2411,\n\t\"./NewUI/Candidate/ProfileTab\": 41162,\n\t\"./NewUI/Candidate/ProfileTab.tsx\": 41162,\n\t\"./NewUI/Candidate/config\": 61396,\n\t\"./NewUI/Candidate/config.tsx\": 61396,\n\t\"./NewUI/Candidate/index\": 45692,\n\t\"./NewUI/Candidate/index.tsx\": 45692,\n\t\"./NewUI/Candidate/reducer\": 72964,\n\t\"./NewUI/Candidate/reducer.ts\": 72964,\n\t\"./NewUI/Candidate/styles\": 51876,\n\t\"./NewUI/Candidate/styles.ts\": 51876,\n\t\"./NewUI/Candidate/types\": 23217,\n\t\"./NewUI/Candidate/types.ts\": 23217,\n\t\"./NewUI/Candidates\": 15219,\n\t\"./NewUI/Candidates/\": 15219,\n\t\"./NewUI/Candidates/API\": 50785,\n\t\"./NewUI/Candidates/API.ts\": 50785,\n\t\"./NewUI/Candidates/Candidates\": 35933,\n\t\"./NewUI/Candidates/Candidates.tsx\": 35933,\n\t\"./NewUI/Candidates/CandidatesTableRows\": 78786,\n\t\"./NewUI/Candidates/CandidatesTableRows.tsx\": 78786,\n\t\"./NewUI/Candidates/DeleteCandidate\": 95955,\n\t\"./NewUI/Candidates/DeleteCandidate.tsx\": 95955,\n\t\"./NewUI/Candidates/EditCandidate\": 78780,\n\t\"./NewUI/Candidates/EditCandidate.tsx\": 78780,\n\t\"./NewUI/Candidates/config\": 95393,\n\t\"./NewUI/Candidates/config.tsx\": 95393,\n\t\"./NewUI/Candidates/index\": 15219,\n\t\"./NewUI/Candidates/index.tsx\": 15219,\n\t\"./NewUI/Candidates/reducer\": 80101,\n\t\"./NewUI/Candidates/reducer.ts\": 80101,\n\t\"./NewUI/Candidates/styles\": 30459,\n\t\"./NewUI/Candidates/styles.ts\": 30459,\n\t\"./NewUI/Candidates/types\": 23384,\n\t\"./NewUI/Candidates/types.ts\": 23384,\n\t\"./NewUI/Components/Buttons/BetaButton\": 83693,\n\t\"./NewUI/Components/Buttons/BetaButton.tsx\": 83693,\n\t\"./NewUI/Components/Buttons/CreateButton\": 89455,\n\t\"./NewUI/Components/Buttons/CreateButton.tsx\": 89455,\n\t\"./NewUI/Components/Buttons/LoadingButton\": 29135,\n\t\"./NewUI/Components/Buttons/LoadingButton.tsx\": 29135,\n\t\"./NewUI/Components/Buttons/StepperLeftButton\": 12655,\n\t\"./NewUI/Components/Buttons/StepperLeftButton.tsx\": 12655,\n\t\"./NewUI/Components/Buttons/StepperRightButton\": 37768,\n\t\"./NewUI/Components/Buttons/StepperRightButton.tsx\": 37768,\n\t\"./NewUI/Components/Charts/DonutChart\": 56583,\n\t\"./NewUI/Components/Charts/DonutChart.tsx\": 56583,\n\t\"./NewUI/Components/Charts/DonutTooltip\": 58791,\n\t\"./NewUI/Components/Charts/DonutTooltip.js\": 58791,\n\t\"./NewUI/Components/Charts/LineChart\": 22461,\n\t\"./NewUI/Components/Charts/LineChart.tsx\": 22461,\n\t\"./NewUI/Components/Charts/LineTooltip\": 11887,\n\t\"./NewUI/Components/Charts/LineTooltip.js\": 11887,\n\t\"./NewUI/Components/Charts/helper\": 82133,\n\t\"./NewUI/Components/Charts/helper.ts\": 82133,\n\t\"./NewUI/Components/Charts/types\": 6524,\n\t\"./NewUI/Components/Charts/types.ts\": 6524,\n\t\"./NewUI/Components/CustomUIElements/AddressInput\": 33506,\n\t\"./NewUI/Components/CustomUIElements/AddressInput.tsx\": 33506,\n\t\"./NewUI/Components/CustomUIElements/AttachmentSelectorAndPreview\": 23555,\n\t\"./NewUI/Components/CustomUIElements/AttachmentSelectorAndPreview.tsx\": 23555,\n\t\"./NewUI/Components/CustomUIElements/AttachmentsPreview\": 87440,\n\t\"./NewUI/Components/CustomUIElements/AttachmentsPreview.tsx\": 87440,\n\t\"./NewUI/Components/CustomUIElements/AutocompleteInput\": 38116,\n\t\"./NewUI/Components/CustomUIElements/AutocompleteInput.tsx\": 38116,\n\t\"./NewUI/Components/CustomUIElements/AvailabilityFieldQuestion\": 85671,\n\t\"./NewUI/Components/CustomUIElements/AvailabilityFieldQuestion.tsx\": 85671,\n\t\"./NewUI/Components/CustomUIElements/CircularProgressWithLabel\": 12364,\n\t\"./NewUI/Components/CustomUIElements/CircularProgressWithLabel.tsx\": 12364,\n\t\"./NewUI/Components/CustomUIElements/EmptyState\": 49228,\n\t\"./NewUI/Components/CustomUIElements/EmptyState.tsx\": 49228,\n\t\"./NewUI/Components/CustomUIElements/FormCheckboxGroup\": 16578,\n\t\"./NewUI/Components/CustomUIElements/FormCheckboxGroup.tsx\": 16578,\n\t\"./NewUI/Components/CustomUIElements/FormRadioButtonGroup\": 19290,\n\t\"./NewUI/Components/CustomUIElements/FormRadioButtonGroup.tsx\": 19290,\n\t\"./NewUI/Components/CustomUIElements/FormRadioButtonWithTextInputGroup\": 4963,\n\t\"./NewUI/Components/CustomUIElements/FormRadioButtonWithTextInputGroup.tsx\": 4963,\n\t\"./NewUI/Components/CustomUIElements/FormRankField\": 83980,\n\t\"./NewUI/Components/CustomUIElements/FormRankField.tsx\": 83980,\n\t\"./NewUI/Components/CustomUIElements/FormSelectField\": 83750,\n\t\"./NewUI/Components/CustomUIElements/FormSelectField.tsx\": 83750,\n\t\"./NewUI/Components/CustomUIElements/FormSelectWithIconField\": 29351,\n\t\"./NewUI/Components/CustomUIElements/FormSelectWithIconField.tsx\": 29351,\n\t\"./NewUI/Components/CustomUIElements/FormTextField\": 98821,\n\t\"./NewUI/Components/CustomUIElements/FormTextField.tsx\": 98821,\n\t\"./NewUI/Components/CustomUIElements/InfoBox\": 44979,\n\t\"./NewUI/Components/CustomUIElements/InfoBox.tsx\": 44979,\n\t\"./NewUI/Components/CustomUIElements/JobAdSuccessDialog\": 75177,\n\t\"./NewUI/Components/CustomUIElements/JobAdSuccessDialog.tsx\": 75177,\n\t\"./NewUI/Components/CustomUIElements/MultiSelect\": 44831,\n\t\"./NewUI/Components/CustomUIElements/MultiSelect.tsx\": 44831,\n\t\"./NewUI/Components/CustomUIElements/MultiSelectWithCreate\": 56859,\n\t\"./NewUI/Components/CustomUIElements/MultiSelectWithCreate.tsx\": 56859,\n\t\"./NewUI/Components/CustomUIElements/MultiTagInput\": 46523,\n\t\"./NewUI/Components/CustomUIElements/MultiTagInput.tsx\": 46523,\n\t\"./NewUI/Components/CustomUIElements/MultipleDatesPicker\": 36097,\n\t\"./NewUI/Components/CustomUIElements/MultipleDatesPicker.tsx\": 36097,\n\t\"./NewUI/Components/CustomUIElements/SelectField\": 1060,\n\t\"./NewUI/Components/CustomUIElements/SelectField.tsx\": 1060,\n\t\"./NewUI/Components/CustomUIElements/SingleDatePicker\": 19772,\n\t\"./NewUI/Components/CustomUIElements/SingleDatePicker.tsx\": 19772,\n\t\"./NewUI/Components/CustomUIElements/SmsTemplateComponent\": 93500,\n\t\"./NewUI/Components/CustomUIElements/SmsTemplateComponent.tsx\": 93500,\n\t\"./NewUI/Components/CustomUIElements/StepperComponent\": 32639,\n\t\"./NewUI/Components/CustomUIElements/StepperComponent.js\": 32639,\n\t\"./NewUI/Components/CustomUIElements/StyledSnackbar\": 15846,\n\t\"./NewUI/Components/CustomUIElements/StyledSnackbar.tsx\": 15846,\n\t\"./NewUI/Components/CustomUIElements/TagList/TagList\": 47225,\n\t\"./NewUI/Components/CustomUIElements/TagList/TagList.tsx\": 47225,\n\t\"./NewUI/Components/CustomUIElements/TagList/styles\": 41549,\n\t\"./NewUI/Components/CustomUIElements/TagList/styles.ts\": 41549,\n\t\"./NewUI/Components/CustomUIElements/TextEditor\": 14708,\n\t\"./NewUI/Components/CustomUIElements/TextEditor.tsx\": 14708,\n\t\"./NewUI/Components/CustomUIElements/VirtualizedAutocomplete\": 12035,\n\t\"./NewUI/Components/CustomUIElements/VirtualizedAutocomplete.tsx\": 12035,\n\t\"./NewUI/Components/CustomUIElements/VirtualizedGroupedAutocomplete\": 78365,\n\t\"./NewUI/Components/CustomUIElements/VirtualizedGroupedAutocomplete.tsx\": 78365,\n\t\"./NewUI/Components/CustomUIElements/sharedClasses\": 75151,\n\t\"./NewUI/Components/CustomUIElements/sharedClasses.ts\": 75151,\n\t\"./NewUI/Components/GenericModal/ModalFooterButtons\": 70589,\n\t\"./NewUI/Components/GenericModal/ModalFooterButtons.tsx\": 70589,\n\t\"./NewUI/Components/GenericModal/StyledModal\": 15385,\n\t\"./NewUI/Components/GenericModal/StyledModal.tsx\": 15385,\n\t\"./NewUI/Components/GenericModal/styles\": 37518,\n\t\"./NewUI/Components/GenericModal/styles.ts\": 37518,\n\t\"./NewUI/Components/GenericTable/Dropdowns/ColumnSettings\": 71293,\n\t\"./NewUI/Components/GenericTable/Dropdowns/ColumnSettings.tsx\": 71293,\n\t\"./NewUI/Components/GenericTable/Dropdowns/Filters\": 94899,\n\t\"./NewUI/Components/GenericTable/Dropdowns/Filters.tsx\": 94899,\n\t\"./NewUI/Components/GenericTable/Dropdowns/SortableField\": 30690,\n\t\"./NewUI/Components/GenericTable/Dropdowns/SortableField.tsx\": 30690,\n\t\"./NewUI/Components/GenericTable/Dropdowns/styles\": 66078,\n\t\"./NewUI/Components/GenericTable/Dropdowns/styles.ts\": 66078,\n\t\"./NewUI/Components/GenericTable/ExportCsvButton\": 72523,\n\t\"./NewUI/Components/GenericTable/ExportCsvButton.tsx\": 72523,\n\t\"./NewUI/Components/GenericTable/Filters/DateRangeFilter\": 11300,\n\t\"./NewUI/Components/GenericTable/Filters/DateRangeFilter.tsx\": 11300,\n\t\"./NewUI/Components/GenericTable/Filters/MultiSelectFilter\": 76356,\n\t\"./NewUI/Components/GenericTable/Filters/MultiSelectFilter.tsx\": 76356,\n\t\"./NewUI/Components/GenericTable/Filters/RadiusSearchFilter\": 24333,\n\t\"./NewUI/Components/GenericTable/Filters/RadiusSearchFilter.tsx\": 24333,\n\t\"./NewUI/Components/GenericTable/GenericTable\": 1848,\n\t\"./NewUI/Components/GenericTable/GenericTable.tsx\": 1848,\n\t\"./NewUI/Components/GenericTable/GenericTableActions\": 65491,\n\t\"./NewUI/Components/GenericTable/GenericTableActions.tsx\": 65491,\n\t\"./NewUI/Components/GenericTable/GenericTableBody\": 70152,\n\t\"./NewUI/Components/GenericTable/GenericTableBody.tsx\": 70152,\n\t\"./NewUI/Components/GenericTable/GenericTableHead\": 5826,\n\t\"./NewUI/Components/GenericTable/GenericTableHead.tsx\": 5826,\n\t\"./NewUI/Components/GenericTable/GenericTablePagination\": 35020,\n\t\"./NewUI/Components/GenericTable/GenericTablePagination.tsx\": 35020,\n\t\"./NewUI/Components/GenericTable/ItemActionsDrawer\": 62256,\n\t\"./NewUI/Components/GenericTable/ItemActionsDrawer.tsx\": 62256,\n\t\"./NewUI/Components/GenericTable/LoadingTableItems\": 20785,\n\t\"./NewUI/Components/GenericTable/LoadingTableItems.tsx\": 20785,\n\t\"./NewUI/Components/GenericTable/NoItemsMessage\": 60813,\n\t\"./NewUI/Components/GenericTable/NoItemsMessage.tsx\": 60813,\n\t\"./NewUI/Components/GenericTable/SearchInput\": 41537,\n\t\"./NewUI/Components/GenericTable/SearchInput.tsx\": 41537,\n\t\"./NewUI/Components/GenericTable/TableArrows\": 6527,\n\t\"./NewUI/Components/GenericTable/TableArrows.tsx\": 6527,\n\t\"./NewUI/Components/GenericTable/TableCells/ExpandableLinkedTags\": 31643,\n\t\"./NewUI/Components/GenericTable/TableCells/ExpandableLinkedTags.tsx\": 31643,\n\t\"./NewUI/Components/GenericTable/TableCells/FormattedDate\": 10511,\n\t\"./NewUI/Components/GenericTable/TableCells/FormattedDate.tsx\": 10511,\n\t\"./NewUI/Components/GenericTable/TableCells/NotesWithSubjectLine\": 48692,\n\t\"./NewUI/Components/GenericTable/TableCells/NotesWithSubjectLine.tsx\": 48692,\n\t\"./NewUI/Components/GenericTable/TablePopovers/AddNoteWithSubjectLine\": 74481,\n\t\"./NewUI/Components/GenericTable/TablePopovers/AddNoteWithSubjectLine.tsx\": 74481,\n\t\"./NewUI/Components/GenericTable/TablePopovers/AttachmentsList\": 63668,\n\t\"./NewUI/Components/GenericTable/TablePopovers/AttachmentsList.tsx\": 63668,\n\t\"./NewUI/Components/GenericTable/TablePopovers/MoreOptionsList\": 40801,\n\t\"./NewUI/Components/GenericTable/TablePopovers/MoreOptionsList.tsx\": 40801,\n\t\"./NewUI/Components/GenericTable/TotalSelectedIndicator\": 13977,\n\t\"./NewUI/Components/GenericTable/TotalSelectedIndicator.tsx\": 13977,\n\t\"./NewUI/Components/GenericTable/TotalSelectedIndicatorWithActions\": 83676,\n\t\"./NewUI/Components/GenericTable/TotalSelectedIndicatorWithActions.tsx\": 83676,\n\t\"./NewUI/Components/GenericTable/genericTableReducer\": 37534,\n\t\"./NewUI/Components/GenericTable/genericTableReducer.tsx\": 37534,\n\t\"./NewUI/Components/GenericTable/styles\": 10605,\n\t\"./NewUI/Components/GenericTable/styles.ts\": 10605,\n\t\"./NewUI/Components/GenericTable/tableHelper\": 48795,\n\t\"./NewUI/Components/GenericTable/tableHelper.ts\": 48795,\n\t\"./NewUI/Components/GenericTable/types\": 44890,\n\t\"./NewUI/Components/GenericTable/types.ts\": 44890,\n\t\"./NewUI/Components/GenericTable/utilities\": 59047,\n\t\"./NewUI/Components/GenericTable/utilities.ts\": 59047,\n\t\"./NewUI/Components/Graphics/FileTickSVG\": 12882,\n\t\"./NewUI/Components/Graphics/FileTickSVG.tsx\": 12882,\n\t\"./NewUI/Components/Graphics/UploadSVG\": 58932,\n\t\"./NewUI/Components/Graphics/UploadSVG.tsx\": 58932,\n\t\"./NewUI/Components/Icons\": 54266,\n\t\"./NewUI/Components/Icons/\": 54266,\n\t\"./NewUI/Components/Icons/Icons\": 36372,\n\t\"./NewUI/Components/Icons/Icons.tsx\": 36372,\n\t\"./NewUI/Components/Icons/index\": 54266,\n\t\"./NewUI/Components/Icons/index.ts\": 54266,\n\t\"./NewUI/Components/Modals/ConfirmationDialog\": 19927,\n\t\"./NewUI/Components/Modals/ConfirmationDialog.tsx\": 19927,\n\t\"./NewUI/Components/Modals/DownloadModal\": 80593,\n\t\"./NewUI/Components/Modals/DownloadModal.tsx\": 80593,\n\t\"./NewUI/Components/Modals/FilePreviewModal\": 4925,\n\t\"./NewUI/Components/Modals/FilePreviewModal.tsx\": 4925,\n\t\"./NewUI/Components/Modals/GenericDialog\": 49841,\n\t\"./NewUI/Components/Modals/GenericDialog.tsx\": 49841,\n\t\"./NewUI/Components/Modals/WarningDialog\": 51553,\n\t\"./NewUI/Components/Modals/WarningDialog.tsx\": 51553,\n\t\"./NewUI/Components/Modals/styles\": 73858,\n\t\"./NewUI/Components/Modals/styles.ts\": 73858,\n\t\"./NewUI/Components/Multiposter/ActionButton\": 24948,\n\t\"./NewUI/Components/Multiposter/ActionButton.tsx\": 24948,\n\t\"./NewUI/Components/Multiposter/ActionPopover\": 72213,\n\t\"./NewUI/Components/Multiposter/ActionPopover.tsx\": 72213,\n\t\"./NewUI/Components/Multiposter/AdTypePopover\": 15490,\n\t\"./NewUI/Components/Multiposter/AdTypePopover.tsx\": 15490,\n\t\"./NewUI/Components/Multiposter/Broadbean/AdTable\": 9814,\n\t\"./NewUI/Components/Multiposter/Broadbean/AdTable.tsx\": 9814,\n\t\"./NewUI/Components/Multiposter/Broadbean/BroadbeanAds\": 20551,\n\t\"./NewUI/Components/Multiposter/Broadbean/BroadbeanAds.tsx\": 20551,\n\t\"./NewUI/Components/Multiposter/CouncilJobs/AdTable\": 2841,\n\t\"./NewUI/Components/Multiposter/CouncilJobs/AdTable.tsx\": 2841,\n\t\"./NewUI/Components/Multiposter/CouncilJobs/ApproveSVG\": 39293,\n\t\"./NewUI/Components/Multiposter/CouncilJobs/ApproveSVG.tsx\": 39293,\n\t\"./NewUI/Components/Multiposter/CouncilJobs/CouncilJobsAd\": 17334,\n\t\"./NewUI/Components/Multiposter/CouncilJobs/CouncilJobsAd.tsx\": 17334,\n\t\"./NewUI/Components/Multiposter/CouncilJobs/CouncilJobsAds\": 89243,\n\t\"./NewUI/Components/Multiposter/CouncilJobs/CouncilJobsAds.tsx\": 89243,\n\t\"./NewUI/Components/Multiposter/CouncilJobs/NewCouncilJobsAd/NewCouncilJobsAd\": 31879,\n\t\"./NewUI/Components/Multiposter/CouncilJobs/NewCouncilJobsAd/NewCouncilJobsAd.tsx\": 31879,\n\t\"./NewUI/Components/Multiposter/CouncilJobs/NewCouncilJobsAd/styles\": 37579,\n\t\"./NewUI/Components/Multiposter/CouncilJobs/NewCouncilJobsAd/styles.ts\": 37579,\n\t\"./NewUI/Components/Multiposter/ExpiryDialog\": 52827,\n\t\"./NewUI/Components/Multiposter/ExpiryDialog.tsx\": 52827,\n\t\"./NewUI/Components/Multiposter/ExpiryPopover\": 96228,\n\t\"./NewUI/Components/Multiposter/ExpiryPopover.tsx\": 96228,\n\t\"./NewUI/Components/Multiposter/FilterButton\": 85344,\n\t\"./NewUI/Components/Multiposter/FilterButton.tsx\": 85344,\n\t\"./NewUI/Components/Multiposter/GenericDialog\": 63911,\n\t\"./NewUI/Components/Multiposter/GenericDialog.tsx\": 63911,\n\t\"./NewUI/Components/Multiposter/Idibu/IdibuAds\": 82615,\n\t\"./NewUI/Components/Multiposter/Idibu/IdibuAds.tsx\": 82615,\n\t\"./NewUI/Components/Multiposter/Indeed/AdTable\": 80133,\n\t\"./NewUI/Components/Multiposter/Indeed/AdTable.tsx\": 80133,\n\t\"./NewUI/Components/Multiposter/Indeed/IndeedAds\": 74443,\n\t\"./NewUI/Components/Multiposter/Indeed/IndeedAds.tsx\": 74443,\n\t\"./NewUI/Components/Multiposter/Seek/AdTable\": 64450,\n\t\"./NewUI/Components/Multiposter/Seek/AdTable.tsx\": 64450,\n\t\"./NewUI/Components/Multiposter/Seek/CopyAdIdButton\": 68064,\n\t\"./NewUI/Components/Multiposter/Seek/CopyAdIdButton.tsx\": 68064,\n\t\"./NewUI/Components/Multiposter/Seek/CreateAdDialog\": 21476,\n\t\"./NewUI/Components/Multiposter/Seek/CreateAdDialog.tsx\": 21476,\n\t\"./NewUI/Components/Multiposter/Seek/SeekAds\": 87961,\n\t\"./NewUI/Components/Multiposter/Seek/SeekAds.tsx\": 87961,\n\t\"./NewUI/Components/Multiposter/Seek/styles\": 71055,\n\t\"./NewUI/Components/Multiposter/Seek/styles.ts\": 71055,\n\t\"./NewUI/Components/Multiposter/TableSkeleton\": 73845,\n\t\"./NewUI/Components/Multiposter/TableSkeleton.tsx\": 73845,\n\t\"./NewUI/Components/Multiposter/ViewJobs/AdEditor\": 84315,\n\t\"./NewUI/Components/Multiposter/ViewJobs/AdEditor.js\": 84315,\n\t\"./NewUI/Components/Multiposter/ViewJobs/AdTable\": 6905,\n\t\"./NewUI/Components/Multiposter/ViewJobs/AdTable.tsx\": 6905,\n\t\"./NewUI/Components/Multiposter/ViewJobs/Steps\": 25667,\n\t\"./NewUI/Components/Multiposter/ViewJobs/Steps/\": 25667,\n\t\"./NewUI/Components/Multiposter/ViewJobs/Steps/Step1\": 2794,\n\t\"./NewUI/Components/Multiposter/ViewJobs/Steps/Step1.js\": 2794,\n\t\"./NewUI/Components/Multiposter/ViewJobs/Steps/Step2\": 87895,\n\t\"./NewUI/Components/Multiposter/ViewJobs/Steps/Step2.js\": 87895,\n\t\"./NewUI/Components/Multiposter/ViewJobs/Steps/Step3\": 98176,\n\t\"./NewUI/Components/Multiposter/ViewJobs/Steps/Step3.js\": 98176,\n\t\"./NewUI/Components/Multiposter/ViewJobs/Steps/index\": 25667,\n\t\"./NewUI/Components/Multiposter/ViewJobs/Steps/index.js\": 25667,\n\t\"./NewUI/Components/Multiposter/ViewJobs/ViewJobsAds\": 9563,\n\t\"./NewUI/Components/Multiposter/ViewJobs/ViewJobsAds.tsx\": 9563,\n\t\"./NewUI/Components/Multiposter/ViewJobs/useStyles\": 49274,\n\t\"./NewUI/Components/Multiposter/ViewJobs/useStyles.js\": 49274,\n\t\"./NewUI/Components/Multiposter/handleDraftValue\": 99067,\n\t\"./NewUI/Components/Multiposter/handleDraftValue.js\": 99067,\n\t\"./NewUI/Components/Multiposter/handleNext\": 22710,\n\t\"./NewUI/Components/Multiposter/handleNext.js\": 22710,\n\t\"./NewUI/Components/Multiposter/salaryHelper\": 80627,\n\t\"./NewUI/Components/Multiposter/salaryHelper.js\": 80627,\n\t\"./NewUI/Components/Multiposter/styles\": 72448,\n\t\"./NewUI/Components/Multiposter/styles.ts\": 72448,\n\t\"./NewUI/Components/Multiposter/types\": 7213,\n\t\"./NewUI/Components/Multiposter/types.ts\": 7213,\n\t\"./NewUI/Components/OptionToggleGroup\": 296,\n\t\"./NewUI/Components/OptionToggleGroup/\": 296,\n\t\"./NewUI/Components/OptionToggleGroup/OptionToggleGroup\": 44820,\n\t\"./NewUI/Components/OptionToggleGroup/OptionToggleGroup.tsx\": 44820,\n\t\"./NewUI/Components/OptionToggleGroup/index\": 296,\n\t\"./NewUI/Components/OptionToggleGroup/index.ts\": 296,\n\t\"./NewUI/Components/PreviewTable\": 54324,\n\t\"./NewUI/Components/PreviewTable/\": 54324,\n\t\"./NewUI/Components/PreviewTable/TableBody\": 87048,\n\t\"./NewUI/Components/PreviewTable/TableBody.tsx\": 87048,\n\t\"./NewUI/Components/PreviewTable/TableHeader\": 6431,\n\t\"./NewUI/Components/PreviewTable/TableHeader.tsx\": 6431,\n\t\"./NewUI/Components/PreviewTable/index\": 54324,\n\t\"./NewUI/Components/PreviewTable/index.tsx\": 54324,\n\t\"./NewUI/Components/PreviewTable/styles\": 96860,\n\t\"./NewUI/Components/PreviewTable/styles.ts\": 96860,\n\t\"./NewUI/Components/PreviewTable/types\": 95497,\n\t\"./NewUI/Components/PreviewTable/types.ts\": 95497,\n\t\"./NewUI/Components/Utilities/AttachmentAndGoogleDriveSelector\": 75036,\n\t\"./NewUI/Components/Utilities/AttachmentAndGoogleDriveSelector.tsx\": 75036,\n\t\"./NewUI/Components/Utilities/AttachmentSelector\": 97358,\n\t\"./NewUI/Components/Utilities/AttachmentSelector.tsx\": 97358,\n\t\"./NewUI/Components/Utilities/DebounceInput\": 70943,\n\t\"./NewUI/Components/Utilities/DebounceInput.tsx\": 70943,\n\t\"./NewUI/Components/Utilities/DocTypeIcon\": 16237,\n\t\"./NewUI/Components/Utilities/DocTypeIcon.tsx\": 16237,\n\t\"./NewUI/Components/Utilities/HtmlEditor\": 60522,\n\t\"./NewUI/Components/Utilities/HtmlEditor.tsx\": 60522,\n\t\"./NewUI/Components/Utilities/HtmlEditorFonts\": 97962,\n\t\"./NewUI/Components/Utilities/HtmlEditorFonts.ts\": 97962,\n\t\"./NewUI/Components/Utilities/QuestionFieldGenerator\": 21741,\n\t\"./NewUI/Components/Utilities/QuestionFieldGenerator.tsx\": 21741,\n\t\"./NewUI/Components/Utilities/QuestionFieldViewer\": 37014,\n\t\"./NewUI/Components/Utilities/QuestionFieldViewer.tsx\": 37014,\n\t\"./NewUI/Components/Utilities/RequisitionInfoViewer\": 67958,\n\t\"./NewUI/Components/Utilities/RequisitionInfoViewer.tsx\": 67958,\n\t\"./NewUI/Components/Utilities/SingleAttachmentSelector\": 99910,\n\t\"./NewUI/Components/Utilities/SingleAttachmentSelector.tsx\": 99910,\n\t\"./NewUI/Components/Utilities/callAPI\": 57220,\n\t\"./NewUI/Components/Utilities/callAPI.ts\": 57220,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish\": 9047,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish.ts\": 9047,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/\": 61760,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/data\": 62633,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/data/\": 62633,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/data/american_spellings.json\": 23869,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/data/british_spellings.json\": 51758,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/data/index\": 62633,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/data/index.spec\": 76700,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/data/index.spec.ts\": 76700,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/data/index.ts\": 62633,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/diff\": 1818,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/diff/\": 1818,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/diff/diff\": 20603,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/diff/diff.ts\": 20603,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/diff/index\": 1818,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/diff/index.ts\": 1818,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/diff/interface\": 59897,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/diff/interface.ts\": 59897,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/index\": 61760,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/index.ts\": 61760,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/case\": 62985,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/case.spec\": 2940,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/case.spec.ts\": 2940,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/case.ts\": 62985,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/interface\": 25102,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/interface.ts\": 25102,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/translate\": 24755,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/translate.spec\": 72022,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/translate.spec.ts\": 72022,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/translate.ts\": 24755,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/translateCase\": 98559,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/translateCase.spec\": 73818,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/translateCase.spec.ts\": 73818,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/translateCase.ts\": 98559,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/translateWord\": 95335,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/translateWord.spec\": 93570,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/translateWord.spec.ts\": 93570,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/translateWord.ts\": 95335,\n\t\"./NewUI/Components/Utilities/copyToClipboard\": 32234,\n\t\"./NewUI/Components/Utilities/copyToClipboard.ts\": 32234,\n\t\"./NewUI/Components/Utilities/countryParser\": 98169,\n\t\"./NewUI/Components/Utilities/countryParser.ts\": 98169,\n\t\"./NewUI/Components/Utilities/emailIsValid\": 64776,\n\t\"./NewUI/Components/Utilities/emailIsValid.ts\": 64776,\n\t\"./NewUI/Components/Utilities/formatUserPermissions\": 35832,\n\t\"./NewUI/Components/Utilities/formatUserPermissions.tsx\": 35832,\n\t\"./NewUI/Components/Utilities/handleAPIRequest\": 33949,\n\t\"./NewUI/Components/Utilities/handleAPIRequest.ts\": 33949,\n\t\"./NewUI/Components/Utilities/handleRichCopy\": 99147,\n\t\"./NewUI/Components/Utilities/handleRichCopy.ts\": 99147,\n\t\"./NewUI/Components/Utilities/humanFileSize\": 70042,\n\t\"./NewUI/Components/Utilities/humanFileSize.ts\": 70042,\n\t\"./NewUI/Components/Utilities/immutableRemove\": 70656,\n\t\"./NewUI/Components/Utilities/immutableRemove.ts\": 70656,\n\t\"./NewUI/Components/Utilities/secondsToString\": 49249,\n\t\"./NewUI/Components/Utilities/secondsToString.ts\": 49249,\n\t\"./NewUI/Components/Utilities/stringToSeconds\": 81861,\n\t\"./NewUI/Components/Utilities/stringToSeconds.ts\": 81861,\n\t\"./NewUI/Components/Utilities/styles\": 72424,\n\t\"./NewUI/Components/Utilities/styles.ts\": 72424,\n\t\"./NewUI/Components/Utilities/useWebSockets\": 13113,\n\t\"./NewUI/Components/Utilities/useWebSockets.tsx\": 13113,\n\t\"./NewUI/Components/sharedTypes\": 29073,\n\t\"./NewUI/Components/sharedTypes.ts\": 29073,\n\t\"./NewUI/Dashboard\": 27349,\n\t\"./NewUI/Dashboard/\": 27349,\n\t\"./NewUI/Dashboard/API\": 36633,\n\t\"./NewUI/Dashboard/API.ts\": 36633,\n\t\"./NewUI/Dashboard/Dashboard\": 52475,\n\t\"./NewUI/Dashboard/Dashboard.tsx\": 52475,\n\t\"./NewUI/Dashboard/assets/Banner\": 76319,\n\t\"./NewUI/Dashboard/assets/Banner.tsx\": 76319,\n\t\"./NewUI/Dashboard/assets/EventCircle\": 48953,\n\t\"./NewUI/Dashboard/assets/EventCircle.tsx\": 48953,\n\t\"./NewUI/Dashboard/components/KpiBanner\": 66570,\n\t\"./NewUI/Dashboard/components/KpiBanner.tsx\": 66570,\n\t\"./NewUI/Dashboard/components/KpiItem\": 95253,\n\t\"./NewUI/Dashboard/components/KpiItem.tsx\": 95253,\n\t\"./NewUI/Dashboard/components/Loader\": 70441,\n\t\"./NewUI/Dashboard/components/Loader.tsx\": 70441,\n\t\"./NewUI/Dashboard/components/NewApplicants\": 80801,\n\t\"./NewUI/Dashboard/components/NewApplicants.tsx\": 80801,\n\t\"./NewUI/Dashboard/components/PinnedJobs\": 83706,\n\t\"./NewUI/Dashboard/components/PinnedJobs.tsx\": 83706,\n\t\"./NewUI/Dashboard/components/TasksDashboard/TaskItem\": 5616,\n\t\"./NewUI/Dashboard/components/TasksDashboard/TaskItem/\": 5616,\n\t\"./NewUI/Dashboard/components/TasksDashboard/TaskItem/TaskItem\": 40396,\n\t\"./NewUI/Dashboard/components/TasksDashboard/TaskItem/TaskItem.tsx\": 40396,\n\t\"./NewUI/Dashboard/components/TasksDashboard/TaskItem/index\": 5616,\n\t\"./NewUI/Dashboard/components/TasksDashboard/TaskItem/index.ts\": 5616,\n\t\"./NewUI/Dashboard/components/TasksDashboard/TasksDashboard\": 15749,\n\t\"./NewUI/Dashboard/components/TasksDashboard/TasksDashboard.tsx\": 15749,\n\t\"./NewUI/Dashboard/components/TasksDashboard/components/TaskItem\": 90606,\n\t\"./NewUI/Dashboard/components/TasksDashboard/components/TaskItem.tsx\": 90606,\n\t\"./NewUI/Dashboard/components/TasksDashboard/styles\": 19123,\n\t\"./NewUI/Dashboard/components/TasksDashboard/styles.ts\": 19123,\n\t\"./NewUI/Dashboard/components/UpcomingEvents/UpcomingEvents\": 19707,\n\t\"./NewUI/Dashboard/components/UpcomingEvents/UpcomingEvents.tsx\": 19707,\n\t\"./NewUI/Dashboard/components/UpcomingEvents/components/AttendeeList\": 67201,\n\t\"./NewUI/Dashboard/components/UpcomingEvents/components/AttendeeList.tsx\": 67201,\n\t\"./NewUI/Dashboard/components/UpcomingEvents/components/EventItem\": 59810,\n\t\"./NewUI/Dashboard/components/UpcomingEvents/components/EventItem.tsx\": 59810,\n\t\"./NewUI/Dashboard/components/UpcomingEvents/copyEventLinks\": 60682,\n\t\"./NewUI/Dashboard/components/UpcomingEvents/copyEventLinks.tsx\": 60682,\n\t\"./NewUI/Dashboard/components/UpcomingEvents/styles\": 14496,\n\t\"./NewUI/Dashboard/components/UpcomingEvents/styles.ts\": 14496,\n\t\"./NewUI/Dashboard/index\": 27349,\n\t\"./NewUI/Dashboard/index.ts\": 27349,\n\t\"./NewUI/Dashboard/styles\": 79923,\n\t\"./NewUI/Dashboard/styles.ts\": 79923,\n\t\"./NewUI/Dashboard/types\": 73776,\n\t\"./NewUI/Dashboard/types.ts\": 73776,\n\t\"./NewUI/EditJob\": 98446,\n\t\"./NewUI/EditJob/\": 98446,\n\t\"./NewUI/EditJob/Advanced/AIStudio/AIStudioSettings\": 59427,\n\t\"./NewUI/EditJob/Advanced/AIStudio/AIStudioSettings.tsx\": 59427,\n\t\"./NewUI/EditJob/Advanced/AIStudio/QuestionsList\": 37997,\n\t\"./NewUI/EditJob/Advanced/AIStudio/QuestionsList.tsx\": 37997,\n\t\"./NewUI/EditJob/Advanced/GoogleConversionScript/GoogleScript\": 81632,\n\t\"./NewUI/EditJob/Advanced/GoogleConversionScript/GoogleScript.tsx\": 81632,\n\t\"./NewUI/EditJob/Advanced/PanelWorkflow/PanelWorkflow\": 99966,\n\t\"./NewUI/EditJob/Advanced/PanelWorkflow/PanelWorkflow.tsx\": 99966,\n\t\"./NewUI/EditJob/Advanced/RequisitionInfo/RequisitionInfo\": 20590,\n\t\"./NewUI/EditJob/Advanced/RequisitionInfo/RequisitionInfo.tsx\": 20590,\n\t\"./NewUI/EditJob/Advanced/Revolve/Revolve\": 46590,\n\t\"./NewUI/EditJob/Advanced/Revolve/Revolve.tsx\": 46590,\n\t\"./NewUI/EditJob/Advanced/TestGrid/NoTests\": 79550,\n\t\"./NewUI/EditJob/Advanced/TestGrid/NoTests.tsx\": 79550,\n\t\"./NewUI/EditJob/Advanced/TestGrid/TestGrid\": 3216,\n\t\"./NewUI/EditJob/Advanced/TestGrid/TestGrid.tsx\": 3216,\n\t\"./NewUI/EditJob/Advanced/TestGrid/TestGridModal\": 36857,\n\t\"./NewUI/EditJob/Advanced/TestGrid/TestGridModal.tsx\": 36857,\n\t\"./NewUI/EditJob/Advanced/styles\": 85555,\n\t\"./NewUI/EditJob/Advanced/styles.ts\": 85555,\n\t\"./NewUI/EditJob/Automation/AutoForward/AutoForward\": 39521,\n\t\"./NewUI/EditJob/Automation/AutoForward/AutoForward.tsx\": 39521,\n\t\"./NewUI/EditJob/Automation/AutoForward/NewAutoForward\": 19779,\n\t\"./NewUI/EditJob/Automation/AutoForward/NewAutoForward.tsx\": 19779,\n\t\"./NewUI/EditJob/Automation/AutoReply/AutoReply\": 15409,\n\t\"./NewUI/EditJob/Automation/AutoReply/AutoReply.tsx\": 15409,\n\t\"./NewUI/EditJob/Automation/AutoReply/NewAutoReply\": 62117,\n\t\"./NewUI/EditJob/Automation/AutoReply/NewAutoReply.tsx\": 62117,\n\t\"./NewUI/EditJob/Automation/AutoSMSForward/AutoSMSForward\": 34729,\n\t\"./NewUI/EditJob/Automation/AutoSMSForward/AutoSMSForward.tsx\": 34729,\n\t\"./NewUI/EditJob/Automation/AutoSMSForward/NewAutoSMSForward\": 58329,\n\t\"./NewUI/EditJob/Automation/AutoSMSForward/NewAutoSMSForward.tsx\": 58329,\n\t\"./NewUI/EditJob/Automation/AutoSMSReply/AutoSMSReply\": 23811,\n\t\"./NewUI/EditJob/Automation/AutoSMSReply/AutoSMSReply.tsx\": 23811,\n\t\"./NewUI/EditJob/Automation/AutoSMSReply/NewAutoSMSReply\": 24013,\n\t\"./NewUI/EditJob/Automation/AutoSMSReply/NewAutoSMSReply.tsx\": 24013,\n\t\"./NewUI/EditJob/Automation/AutoStatuses/AutoStatuses\": 42401,\n\t\"./NewUI/EditJob/Automation/AutoStatuses/AutoStatuses.tsx\": 42401,\n\t\"./NewUI/EditJob/Automation/AutoStatuses/NoAutoStatusSVG\": 60788,\n\t\"./NewUI/EditJob/Automation/AutoStatuses/NoAutoStatusSVG.tsx\": 60788,\n\t\"./NewUI/EditJob/Automation/AutoStatuses/QuestionBased\": 76577,\n\t\"./NewUI/EditJob/Automation/AutoStatuses/QuestionBased.tsx\": 76577,\n\t\"./NewUI/EditJob/Automation/AutoStatuses/RatingBased\": 82328,\n\t\"./NewUI/EditJob/Automation/AutoStatuses/RatingBased.tsx\": 82328,\n\t\"./NewUI/EditJob/Automation/StatusTransitions/TimeBased\": 63427,\n\t\"./NewUI/EditJob/Automation/StatusTransitions/TimeBased.tsx\": 63427,\n\t\"./NewUI/EditJob/Automation/helpers/getBodyFromSmsTemplateValue\": 63842,\n\t\"./NewUI/EditJob/Automation/helpers/getBodyFromSmsTemplateValue.tsx\": 63842,\n\t\"./NewUI/EditJob/Automation/shared/CancelButton\": 63656,\n\t\"./NewUI/EditJob/Automation/shared/CancelButton.tsx\": 63656,\n\t\"./NewUI/EditJob/Automation/shared/DelaySelect\": 37033,\n\t\"./NewUI/EditJob/Automation/shared/DelaySelect.tsx\": 37033,\n\t\"./NewUI/EditJob/Automation/shared/DelaySelectWrapper\": 97164,\n\t\"./NewUI/EditJob/Automation/shared/DelaySelectWrapper.tsx\": 97164,\n\t\"./NewUI/EditJob/Automation/shared/ImmediateChangesNotice\": 67000,\n\t\"./NewUI/EditJob/Automation/shared/ImmediateChangesNotice.tsx\": 67000,\n\t\"./NewUI/EditJob/Automation/styles\": 63780,\n\t\"./NewUI/EditJob/Automation/styles.ts\": 63780,\n\t\"./NewUI/EditJob/Description/Description\": 27815,\n\t\"./NewUI/EditJob/Description/Description.tsx\": 27815,\n\t\"./NewUI/EditJob/EditJob\": 43123,\n\t\"./NewUI/EditJob/EditJob.tsx\": 43123,\n\t\"./NewUI/EditJob/EditJobToggleLeftSVG\": 69200,\n\t\"./NewUI/EditJob/EditJobToggleLeftSVG.tsx\": 69200,\n\t\"./NewUI/EditJob/EditJobToggleRightSVG\": 58703,\n\t\"./NewUI/EditJob/EditJobToggleRightSVG.tsx\": 58703,\n\t\"./NewUI/EditJob/General/Classifications/Classifications\": 24686,\n\t\"./NewUI/EditJob/General/Classifications/Classifications.tsx\": 24686,\n\t\"./NewUI/EditJob/General/General\": 57287,\n\t\"./NewUI/EditJob/General/General.tsx\": 57287,\n\t\"./NewUI/EditJob/HRQuestions/HRQuestions\": 98403,\n\t\"./NewUI/EditJob/HRQuestions/HRQuestions.tsx\": 98403,\n\t\"./NewUI/EditJob/HRQuestions/Modals/AddSystemField\": 95013,\n\t\"./NewUI/EditJob/HRQuestions/Modals/AddSystemField.tsx\": 95013,\n\t\"./NewUI/EditJob/HRQuestions/Modals/NewField\": 85574,\n\t\"./NewUI/EditJob/HRQuestions/Modals/NewField.tsx\": 85574,\n\t\"./NewUI/EditJob/HRQuestions/NewSystemFieldSVG\": 56153,\n\t\"./NewUI/EditJob/HRQuestions/NewSystemFieldSVG.tsx\": 56153,\n\t\"./NewUI/EditJob/HRQuestions/NoQuestionSVG\": 92547,\n\t\"./NewUI/EditJob/HRQuestions/NoQuestionSVG.tsx\": 92547,\n\t\"./NewUI/EditJob/HRQuestions/QuestionCardSensor\": 31520,\n\t\"./NewUI/EditJob/HRQuestions/QuestionCardSensor.tsx\": 31520,\n\t\"./NewUI/EditJob/HRQuestions/SortableItem\": 11249,\n\t\"./NewUI/EditJob/HRQuestions/SortableItem.tsx\": 11249,\n\t\"./NewUI/EditJob/HRQuestions/styles\": 75922,\n\t\"./NewUI/EditJob/HRQuestions/styles.ts\": 75922,\n\t\"./NewUI/EditJob/Questions/Modals/AddSystemField\": 14519,\n\t\"./NewUI/EditJob/Questions/Modals/AddSystemField.tsx\": 14519,\n\t\"./NewUI/EditJob/Questions/Modals/NewField\": 8059,\n\t\"./NewUI/EditJob/Questions/Modals/NewField.tsx\": 8059,\n\t\"./NewUI/EditJob/Questions/Modals/SortableChoice\": 73948,\n\t\"./NewUI/EditJob/Questions/Modals/SortableChoice.tsx\": 73948,\n\t\"./NewUI/EditJob/Questions/NewSystemFieldSVG\": 79139,\n\t\"./NewUI/EditJob/Questions/NewSystemFieldSVG.tsx\": 79139,\n\t\"./NewUI/EditJob/Questions/NoQuestionArrowSVG\": 88020,\n\t\"./NewUI/EditJob/Questions/NoQuestionArrowSVG.tsx\": 88020,\n\t\"./NewUI/EditJob/Questions/NoQuestionSVG\": 57725,\n\t\"./NewUI/EditJob/Questions/NoQuestionSVG.tsx\": 57725,\n\t\"./NewUI/EditJob/Questions/QuestionCardSensor\": 56622,\n\t\"./NewUI/EditJob/Questions/QuestionCardSensor.tsx\": 56622,\n\t\"./NewUI/EditJob/Questions/QuestionList\": 64526,\n\t\"./NewUI/EditJob/Questions/QuestionList.tsx\": 64526,\n\t\"./NewUI/EditJob/Questions/Questions\": 37435,\n\t\"./NewUI/EditJob/Questions/Questions.tsx\": 37435,\n\t\"./NewUI/EditJob/Questions/SortableItem\": 6879,\n\t\"./NewUI/EditJob/Questions/SortableItem.tsx\": 6879,\n\t\"./NewUI/EditJob/Questions/styles\": 96756,\n\t\"./NewUI/EditJob/Questions/styles.ts\": 96756,\n\t\"./NewUI/EditJob/Sources/AccountClockIcon\": 34019,\n\t\"./NewUI/EditJob/Sources/AccountClockIcon.tsx\": 34019,\n\t\"./NewUI/EditJob/Sources/Sources\": 84143,\n\t\"./NewUI/EditJob/Sources/Sources.tsx\": 84143,\n\t\"./NewUI/EditJob/Sources/SourcesIconSVG\": 79000,\n\t\"./NewUI/EditJob/Sources/SourcesIconSVG.tsx\": 79000,\n\t\"./NewUI/EditJob/Template/Template\": 65285,\n\t\"./NewUI/EditJob/Template/Template.tsx\": 65285,\n\t\"./NewUI/EditJob/index\": 98446,\n\t\"./NewUI/EditJob/index.tsx\": 98446,\n\t\"./NewUI/EditJob/shared/SkeletonTable\": 2333,\n\t\"./NewUI/EditJob/shared/SkeletonTable.tsx\": 2333,\n\t\"./NewUI/EditJob/styles\": 12114,\n\t\"./NewUI/EditJob/styles.ts\": 12114,\n\t\"./NewUI/EditJob/tabIndexUtils\": 27424,\n\t\"./NewUI/EditJob/tabIndexUtils.ts\": 27424,\n\t\"./NewUI/EditJob/types\": 60767,\n\t\"./NewUI/EditJob/types.ts\": 60767,\n\t\"./NewUI/Job\": 5194,\n\t\"./NewUI/Job/\": 5194,\n\t\"./NewUI/Job/API\": 65854,\n\t\"./NewUI/Job/API.ts\": 65854,\n\t\"./NewUI/Job/ActionModals/AddTask/AddTasks\": 38393,\n\t\"./NewUI/Job/ActionModals/AddTask/AddTasks.tsx\": 38393,\n\t\"./NewUI/Job/ActionModals/AddTask/styles\": 26046,\n\t\"./NewUI/Job/ActionModals/AddTask/styles.ts\": 26046,\n\t\"./NewUI/Job/ActionModals/CeridianDayforce/CeridianDayforce\": 70,\n\t\"./NewUI/Job/ActionModals/CeridianDayforce/CeridianDayforce.tsx\": 70,\n\t\"./NewUI/Job/ActionModals/CeridianDayforce/styles\": 90736,\n\t\"./NewUI/Job/ActionModals/CeridianDayforce/styles.ts\": 90736,\n\t\"./NewUI/Job/ActionModals/MoveJob/MoveJob\": 40696,\n\t\"./NewUI/Job/ActionModals/MoveJob/MoveJob.tsx\": 40696,\n\t\"./NewUI/Job/ActionModals/MoveJob/styles\": 9196,\n\t\"./NewUI/Job/ActionModals/MoveJob/styles.ts\": 9196,\n\t\"./NewUI/Job/ActionModals/RatingSet/RatingSet\": 34116,\n\t\"./NewUI/Job/ActionModals/RatingSet/RatingSet.tsx\": 34116,\n\t\"./NewUI/Job/ActionModals/RatingSet/styles\": 45029,\n\t\"./NewUI/Job/ActionModals/RatingSet/styles.ts\": 45029,\n\t\"./NewUI/Job/ActionModals/Revisions/Revisions\": 51164,\n\t\"./NewUI/Job/ActionModals/Revisions/Revisions.tsx\": 51164,\n\t\"./NewUI/Job/ActionModals/Revisions/styles\": 92334,\n\t\"./NewUI/Job/ActionModals/Revisions/styles.ts\": 92334,\n\t\"./NewUI/Job/ActionModals/StartWorkflow/StartWorkFlow\": 17456,\n\t\"./NewUI/Job/ActionModals/StartWorkflow/StartWorkFlow.tsx\": 17456,\n\t\"./NewUI/Job/ActionModals/StartWorkflow/styles\": 24151,\n\t\"./NewUI/Job/ActionModals/StartWorkflow/styles.ts\": 24151,\n\t\"./NewUI/Job/Applications/Applications\": 29619,\n\t\"./NewUI/Job/Applications/Applications.tsx\": 29619,\n\t\"./NewUI/Job/Applications/ApplicationsActionsPanel\": 10510,\n\t\"./NewUI/Job/Applications/ApplicationsActionsPanel.tsx\": 10510,\n\t\"./NewUI/Job/Applications/ApplicationsTable\": 12431,\n\t\"./NewUI/Job/Applications/ApplicationsTable.tsx\": 12431,\n\t\"./NewUI/Job/Applications/CustomIcons\": 29661,\n\t\"./NewUI/Job/Applications/CustomIcons.tsx\": 29661,\n\t\"./NewUI/Job/Applications/Dropdowns/FieldDropdown\": 62548,\n\t\"./NewUI/Job/Applications/Dropdowns/FieldDropdown.tsx\": 62548,\n\t\"./NewUI/Job/Applications/Dropdowns/FilterDropdown\": 6026,\n\t\"./NewUI/Job/Applications/Dropdowns/FilterDropdown.tsx\": 6026,\n\t\"./NewUI/Job/Applications/Dropdowns/SortableField\": 72175,\n\t\"./NewUI/Job/Applications/Dropdowns/SortableField.tsx\": 72175,\n\t\"./NewUI/Job/Applications/EditableNote\": 73814,\n\t\"./NewUI/Job/Applications/EditableNote.tsx\": 73814,\n\t\"./NewUI/Job/Applications/Modals/AddToEvent\": 5967,\n\t\"./NewUI/Job/Applications/Modals/AddToEvent.tsx\": 5967,\n\t\"./NewUI/Job/Applications/Modals/CSVExport\": 77023,\n\t\"./NewUI/Job/Applications/Modals/CSVExport.tsx\": 77023,\n\t\"./NewUI/Job/Applications/Modals/ChangeStatus\": 76927,\n\t\"./NewUI/Job/Applications/Modals/ChangeStatus.tsx\": 76927,\n\t\"./NewUI/Job/Applications/Modals/EmailCandidates\": 99691,\n\t\"./NewUI/Job/Applications/Modals/EmailCandidates.tsx\": 99691,\n\t\"./NewUI/Job/Applications/Modals/ExportFoundu\": 28826,\n\t\"./NewUI/Job/Applications/Modals/ExportFoundu.tsx\": 28826,\n\t\"./NewUI/Job/Applications/Modals/ExportPDF\": 28057,\n\t\"./NewUI/Job/Applications/Modals/ExportPDF.tsx\": 28057,\n\t\"./NewUI/Job/Applications/Modals/ExportToOnboard\": 16171,\n\t\"./NewUI/Job/Applications/Modals/ExportToOnboard.tsx\": 16171,\n\t\"./NewUI/Job/Applications/Modals/ExternalEmail\": 44386,\n\t\"./NewUI/Job/Applications/Modals/ExternalEmail.tsx\": 44386,\n\t\"./NewUI/Job/Applications/Modals/InviteToTimeslot\": 94106,\n\t\"./NewUI/Job/Applications/Modals/InviteToTimeslot.tsx\": 94106,\n\t\"./NewUI/Job/Applications/Modals/MoveApplications\": 27515,\n\t\"./NewUI/Job/Applications/Modals/MoveApplications.tsx\": 27515,\n\t\"./NewUI/Job/Applications/Modals/NewApplication\": 87789,\n\t\"./NewUI/Job/Applications/Modals/NewApplication.tsx\": 87789,\n\t\"./NewUI/Job/Applications/Modals/SMSCandidates\": 15608,\n\t\"./NewUI/Job/Applications/Modals/SMSCandidates.tsx\": 15608,\n\t\"./NewUI/Job/Applications/Modals/TempCSVExport\": 68033,\n\t\"./NewUI/Job/Applications/Modals/TempCSVExport.tsx\": 68033,\n\t\"./NewUI/Job/Applications/NotePopover\": 80391,\n\t\"./NewUI/Job/Applications/NotePopover.tsx\": 80391,\n\t\"./NewUI/Job/Applications/Search\": 84969,\n\t\"./NewUI/Job/Applications/Search.tsx\": 84969,\n\t\"./NewUI/Job/Applications/SelectedApplicants\": 40668,\n\t\"./NewUI/Job/Applications/SelectedApplicants.tsx\": 40668,\n\t\"./NewUI/Job/Applications/config\": 62604,\n\t\"./NewUI/Job/Applications/config.ts\": 62604,\n\t\"./NewUI/Job/Applications/styles\": 7336,\n\t\"./NewUI/Job/Applications/styles.ts\": 7336,\n\t\"./NewUI/Job/Attachments/Attachments\": 62923,\n\t\"./NewUI/Job/Attachments/Attachments.tsx\": 62923,\n\t\"./NewUI/Job/Attachments/styles\": 33989,\n\t\"./NewUI/Job/Attachments/styles.ts\": 33989,\n\t\"./NewUI/Job/CandidateAttachments/CandidateAttachments\": 79663,\n\t\"./NewUI/Job/CandidateAttachments/CandidateAttachments.tsx\": 79663,\n\t\"./NewUI/Job/CandidateAttachments/SortableRow\": 68010,\n\t\"./NewUI/Job/CandidateAttachments/SortableRow.tsx\": 68010,\n\t\"./NewUI/Job/CandidateAttachments/styles\": 73986,\n\t\"./NewUI/Job/CandidateAttachments/styles.ts\": 73986,\n\t\"./NewUI/Job/EmailStatus/ClicksNoBackgroundSVG\": 22861,\n\t\"./NewUI/Job/EmailStatus/ClicksNoBackgroundSVG.tsx\": 22861,\n\t\"./NewUI/Job/EmailStatus/EmailPreviewModal\": 44906,\n\t\"./NewUI/Job/EmailStatus/EmailPreviewModal.tsx\": 44906,\n\t\"./NewUI/Job/EmailStatus/EmailStatus\": 34943,\n\t\"./NewUI/Job/EmailStatus/EmailStatus.tsx\": 34943,\n\t\"./NewUI/Job/EmailStatus/NoEmailStatusSVG\": 26348,\n\t\"./NewUI/Job/EmailStatus/NoEmailStatusSVG.tsx\": 26348,\n\t\"./NewUI/Job/EmailStatus/StatusTypeIcon\": 17056,\n\t\"./NewUI/Job/EmailStatus/StatusTypeIcon.tsx\": 17056,\n\t\"./NewUI/Job/EmailStatus/Widgets/BouncedSVG\": 17197,\n\t\"./NewUI/Job/EmailStatus/Widgets/BouncedSVG.tsx\": 17197,\n\t\"./NewUI/Job/EmailStatus/Widgets/ClicksSVG\": 54288,\n\t\"./NewUI/Job/EmailStatus/Widgets/ClicksSVG.tsx\": 54288,\n\t\"./NewUI/Job/EmailStatus/Widgets/DeliveredSVG\": 70353,\n\t\"./NewUI/Job/EmailStatus/Widgets/DeliveredSVG.tsx\": 70353,\n\t\"./NewUI/Job/EmailStatus/Widgets/OpenedSVG\": 75928,\n\t\"./NewUI/Job/EmailStatus/Widgets/OpenedSVG.tsx\": 75928,\n\t\"./NewUI/Job/EmailStatus/Widgets/Statistics\": 96138,\n\t\"./NewUI/Job/EmailStatus/Widgets/Statistics.tsx\": 96138,\n\t\"./NewUI/Job/EmailStatus/Widgets/UnsubscribedSVG\": 6102,\n\t\"./NewUI/Job/EmailStatus/Widgets/UnsubscribedSVG.tsx\": 6102,\n\t\"./NewUI/Job/EmailStatus/Widgets/styles\": 93019,\n\t\"./NewUI/Job/EmailStatus/Widgets/styles.ts\": 93019,\n\t\"./NewUI/Job/EmailStatus/styles\": 65493,\n\t\"./NewUI/Job/EmailStatus/styles.ts\": 65493,\n\t\"./NewUI/Job/Graphs/ChartWidget\": 30670,\n\t\"./NewUI/Job/Graphs/ChartWidget.tsx\": 30670,\n\t\"./NewUI/Job/Graphs/DatePicker\": 8254,\n\t\"./NewUI/Job/Graphs/DatePicker.tsx\": 8254,\n\t\"./NewUI/Job/Graphs/chart-loader.json\": 35064,\n\t\"./NewUI/Job/Graphs/styles\": 33570,\n\t\"./NewUI/Job/Graphs/styles.ts\": 33570,\n\t\"./NewUI/Job/Job\": 80603,\n\t\"./NewUI/Job/Job.tsx\": 80603,\n\t\"./NewUI/Job/Multiposter\": 90706,\n\t\"./NewUI/Job/Multiposter.tsx\": 90706,\n\t\"./NewUI/Job/Notes/NoteList\": 52198,\n\t\"./NewUI/Job/Notes/NoteList.tsx\": 52198,\n\t\"./NewUI/Job/Notes/Notes\": 47971,\n\t\"./NewUI/Job/Notes/Notes.tsx\": 47971,\n\t\"./NewUI/Job/Notes/SadNoteSVG\": 3264,\n\t\"./NewUI/Job/Notes/SadNoteSVG.tsx\": 3264,\n\t\"./NewUI/Job/Notes/styles\": 61472,\n\t\"./NewUI/Job/Notes/styles.ts\": 61472,\n\t\"./NewUI/Job/Widgets/ApplicationsAndViews\": 55908,\n\t\"./NewUI/Job/Widgets/ApplicationsAndViews.tsx\": 55908,\n\t\"./NewUI/Job/Widgets/CreationExpiry\": 88776,\n\t\"./NewUI/Job/Widgets/CreationExpiry.tsx\": 88776,\n\t\"./NewUI/Job/Widgets/JobInformation\": 72951,\n\t\"./NewUI/Job/Widgets/JobInformation.tsx\": 72951,\n\t\"./NewUI/Job/Widgets/Subcontainer\": 36913,\n\t\"./NewUI/Job/Widgets/Subcontainer.tsx\": 36913,\n\t\"./NewUI/Job/Widgets/calendar-clock.svg\": 71664,\n\t\"./NewUI/Job/Widgets/styles\": 91112,\n\t\"./NewUI/Job/Widgets/styles.ts\": 91112,\n\t\"./NewUI/Job/index\": 5194,\n\t\"./NewUI/Job/index.tsx\": 5194,\n\t\"./NewUI/Job/styles\": 85190,\n\t\"./NewUI/Job/styles.ts\": 85190,\n\t\"./NewUI/Job/types\": 17043,\n\t\"./NewUI/Job/types.ts\": 17043,\n\t\"./NewUI/Jobs/API\": 10327,\n\t\"./NewUI/Jobs/API.ts\": 10327,\n\t\"./NewUI/Jobs/Dropdowns/Export\": 52138,\n\t\"./NewUI/Jobs/Dropdowns/Export.tsx\": 52138,\n\t\"./NewUI/Jobs/Dropdowns/FieldDropdown\": 86121,\n\t\"./NewUI/Jobs/Dropdowns/FieldDropdown.tsx\": 86121,\n\t\"./NewUI/Jobs/Dropdowns/FilterDropdown\": 35777,\n\t\"./NewUI/Jobs/Dropdowns/FilterDropdown.tsx\": 35777,\n\t\"./NewUI/Jobs/Dropdowns/SortableField\": 54930,\n\t\"./NewUI/Jobs/Dropdowns/SortableField.tsx\": 54930,\n\t\"./NewUI/Jobs/Dropdowns/useStyles\": 52375,\n\t\"./NewUI/Jobs/Dropdowns/useStyles.ts\": 52375,\n\t\"./NewUI/Jobs/Jobs\": 38541,\n\t\"./NewUI/Jobs/Jobs.tsx\": 38541,\n\t\"./NewUI/Jobs/JobsTable/ArchivedJobs\": 26376,\n\t\"./NewUI/Jobs/JobsTable/ArchivedJobs.tsx\": 26376,\n\t\"./NewUI/Jobs/JobsTable/CurrentJobs\": 34595,\n\t\"./NewUI/Jobs/JobsTable/CurrentJobs.tsx\": 34595,\n\t\"./NewUI/Jobs/JobsTable/CurrentJobsTableHeader\": 21080,\n\t\"./NewUI/Jobs/JobsTable/CurrentJobsTableHeader.tsx\": 21080,\n\t\"./NewUI/Jobs/JobsTable/CurrentJobsTableRow\": 94499,\n\t\"./NewUI/Jobs/JobsTable/CurrentJobsTableRow.tsx\": 94499,\n\t\"./NewUI/Jobs/JobsTable/NoJobs\": 33911,\n\t\"./NewUI/Jobs/JobsTable/NoJobs.tsx\": 33911,\n\t\"./NewUI/Jobs/JobsTable/NotesPopover\": 26176,\n\t\"./NewUI/Jobs/JobsTable/NotesPopover.tsx\": 26176,\n\t\"./NewUI/Jobs/JobsTable/TableSkeleton\": 39577,\n\t\"./NewUI/Jobs/JobsTable/TableSkeleton.tsx\": 39577,\n\t\"./NewUI/Jobs/JobsTable/useStyles\": 92141,\n\t\"./NewUI/Jobs/JobsTable/useStyles.ts\": 92141,\n\t\"./NewUI/Jobs/NewJob/Attachment/Attachments\": 58319,\n\t\"./NewUI/Jobs/NewJob/Attachment/Attachments.tsx\": 58319,\n\t\"./NewUI/Jobs/NewJob/Attachment/styles\": 67537,\n\t\"./NewUI/Jobs/NewJob/Attachment/styles.ts\": 67537,\n\t\"./NewUI/Jobs/NewJob/NewJob\": 38956,\n\t\"./NewUI/Jobs/NewJob/NewJob.tsx\": 38956,\n\t\"./NewUI/Jobs/NewJob/styles\": 56003,\n\t\"./NewUI/Jobs/NewJob/styles.ts\": 56003,\n\t\"./NewUI/Jobs/Search\": 94389,\n\t\"./NewUI/Jobs/Search.tsx\": 94389,\n\t\"./NewUI/Jobs/config\": 14021,\n\t\"./NewUI/Jobs/config.ts\": 14021,\n\t\"./NewUI/Jobs/styles\": 28645,\n\t\"./NewUI/Jobs/styles.ts\": 28645,\n\t\"./NewUI/Jobs/types\": 65330,\n\t\"./NewUI/Jobs/types.ts\": 65330,\n\t\"./NewUI/Layout/Header/Components/Breadcrumbs\": 214,\n\t\"./NewUI/Layout/Header/Components/Breadcrumbs.tsx\": 214,\n\t\"./NewUI/Layout/Header/Components/ProfileDropdown/ProfileDropdown\": 80353,\n\t\"./NewUI/Layout/Header/Components/ProfileDropdown/ProfileDropdown.tsx\": 80353,\n\t\"./NewUI/Layout/Header/Components/ProfileDropdown/ProfileDropdownPopper\": 24323,\n\t\"./NewUI/Layout/Header/Components/ProfileDropdown/ProfileDropdownPopper.tsx\": 24323,\n\t\"./NewUI/Layout/Header/Components/Search\": 53706,\n\t\"./NewUI/Layout/Header/Components/Search.tsx\": 53706,\n\t\"./NewUI/Layout/Header/Components/ShowRightMenu\": 49666,\n\t\"./NewUI/Layout/Header/Components/ShowRightMenu.tsx\": 49666,\n\t\"./NewUI/Layout/Header/Components/SwitchEntityDialog\": 93347,\n\t\"./NewUI/Layout/Header/Components/SwitchEntityDialog.tsx\": 93347,\n\t\"./NewUI/Layout/Header/Header\": 46042,\n\t\"./NewUI/Layout/Header/Header.tsx\": 46042,\n\t\"./NewUI/Layout/Header/styles\": 44957,\n\t\"./NewUI/Layout/Header/styles.ts\": 44957,\n\t\"./NewUI/Layout/Navbar/Assets/AppsIcon\": 48893,\n\t\"./NewUI/Layout/Navbar/Assets/AppsIcon.tsx\": 48893,\n\t\"./NewUI/Layout/Navbar/Components/AppMenu/AppMenu\": 70302,\n\t\"./NewUI/Layout/Navbar/Components/AppMenu/AppMenu.tsx\": 70302,\n\t\"./NewUI/Layout/Navbar/Components/AppMenu/AppMenuItems\": 1316,\n\t\"./NewUI/Layout/Navbar/Components/AppMenu/AppMenuItems.tsx\": 1316,\n\t\"./NewUI/Layout/Navbar/Components/ExpandCollapseButton\": 97566,\n\t\"./NewUI/Layout/Navbar/Components/ExpandCollapseButton.tsx\": 97566,\n\t\"./NewUI/Layout/Navbar/Components/NavigationItems/CollapsedNavigationChildren\": 75588,\n\t\"./NewUI/Layout/Navbar/Components/NavigationItems/CollapsedNavigationChildren.tsx\": 75588,\n\t\"./NewUI/Layout/Navbar/Components/NavigationItems/NavigationChildren\": 52141,\n\t\"./NewUI/Layout/Navbar/Components/NavigationItems/NavigationChildren.tsx\": 52141,\n\t\"./NewUI/Layout/Navbar/Components/NavigationItems/NavigationItems\": 49710,\n\t\"./NewUI/Layout/Navbar/Components/NavigationItems/NavigationItems.tsx\": 49710,\n\t\"./NewUI/Layout/Navbar/Components/NavigationItems/NavigationParent\": 39344,\n\t\"./NewUI/Layout/Navbar/Components/NavigationItems/NavigationParent.tsx\": 39344,\n\t\"./NewUI/Layout/Navbar/Navbar\": 26124,\n\t\"./NewUI/Layout/Navbar/Navbar.tsx\": 26124,\n\t\"./NewUI/Layout/Navbar/config\": 43680,\n\t\"./NewUI/Layout/Navbar/config.ts\": 43680,\n\t\"./NewUI/Layout/Navbar/styles\": 63300,\n\t\"./NewUI/Layout/Navbar/styles.ts\": 63300,\n\t\"./NewUI/Layout/Widgetsbar/ActivityFeed/ActivityFeed\": 281,\n\t\"./NewUI/Layout/Widgetsbar/ActivityFeed/ActivityFeed.tsx\": 281,\n\t\"./NewUI/Layout/Widgetsbar/ActivityFeed/ActivityFeedItem\": 58792,\n\t\"./NewUI/Layout/Widgetsbar/ActivityFeed/ActivityFeedItem.tsx\": 58792,\n\t\"./NewUI/Layout/Widgetsbar/RecentlyViewed/RecentlyViewed\": 27535,\n\t\"./NewUI/Layout/Widgetsbar/RecentlyViewed/RecentlyViewed.tsx\": 27535,\n\t\"./NewUI/Layout/Widgetsbar/RecentlyViewed/RecentlyViewedItem\": 26054,\n\t\"./NewUI/Layout/Widgetsbar/RecentlyViewed/RecentlyViewedItem.tsx\": 26054,\n\t\"./NewUI/Layout/Widgetsbar/Widgetsbar\": 66592,\n\t\"./NewUI/Layout/Widgetsbar/Widgetsbar.tsx\": 66592,\n\t\"./NewUI/Layout/Widgetsbar/WidgetsbarWrapper\": 8419,\n\t\"./NewUI/Layout/Widgetsbar/WidgetsbarWrapper.tsx\": 8419,\n\t\"./NewUI/Layout/Widgetsbar/config\": 6384,\n\t\"./NewUI/Layout/Widgetsbar/config.ts\": 6384,\n\t\"./NewUI/Layout/Widgetsbar/styles\": 35284,\n\t\"./NewUI/Layout/Widgetsbar/styles.ts\": 35284,\n\t\"./NewUI/SmartForms\": 26569,\n\t\"./NewUI/SmartForms/\": 26569,\n\t\"./NewUI/SmartForms/API\": 96191,\n\t\"./NewUI/SmartForms/API.ts\": 96191,\n\t\"./NewUI/SmartForms/EditFormPage\": 79754,\n\t\"./NewUI/SmartForms/EditFormPage.tsx\": 79754,\n\t\"./NewUI/SmartForms/Questions/Modals/AddSystemField\": 47600,\n\t\"./NewUI/SmartForms/Questions/Modals/AddSystemField.tsx\": 47600,\n\t\"./NewUI/SmartForms/Questions/Modals/ImportFields\": 64442,\n\t\"./NewUI/SmartForms/Questions/Modals/ImportFields.tsx\": 64442,\n\t\"./NewUI/SmartForms/Questions/Modals/NewField\": 81980,\n\t\"./NewUI/SmartForms/Questions/Modals/NewField.tsx\": 81980,\n\t\"./NewUI/SmartForms/Questions/Questions\": 4508,\n\t\"./NewUI/SmartForms/Questions/Questions.tsx\": 4508,\n\t\"./NewUI/SmartForms/Questions/SortableItem\": 19542,\n\t\"./NewUI/SmartForms/Questions/SortableItem.tsx\": 19542,\n\t\"./NewUI/SmartForms/Questions/styles\": 91983,\n\t\"./NewUI/SmartForms/Questions/styles.ts\": 91983,\n\t\"./NewUI/SmartForms/Sample/ListItem\": 6005,\n\t\"./NewUI/SmartForms/Sample/ListItem.tsx\": 6005,\n\t\"./NewUI/SmartForms/Sample/SampleList\": 50958,\n\t\"./NewUI/SmartForms/Sample/SampleList.tsx\": 50958,\n\t\"./NewUI/SmartForms/Search\": 31885,\n\t\"./NewUI/SmartForms/Search.tsx\": 31885,\n\t\"./NewUI/SmartForms/SmartFormFields\": 77099,\n\t\"./NewUI/SmartForms/SmartFormFields.tsx\": 77099,\n\t\"./NewUI/SmartForms/SmartFormModal\": 79489,\n\t\"./NewUI/SmartForms/SmartFormModal.tsx\": 79489,\n\t\"./NewUI/SmartForms/SmartFormPreview\": 14566,\n\t\"./NewUI/SmartForms/SmartFormPreview.tsx\": 14566,\n\t\"./NewUI/SmartForms/SmartFormPreviewPage\": 7555,\n\t\"./NewUI/SmartForms/SmartFormPreviewPage.tsx\": 7555,\n\t\"./NewUI/SmartForms/SmartForms\": 16381,\n\t\"./NewUI/SmartForms/SmartForms.tsx\": 16381,\n\t\"./NewUI/SmartForms/SmartFormsTable\": 19097,\n\t\"./NewUI/SmartForms/SmartFormsTable.tsx\": 19097,\n\t\"./NewUI/SmartForms/config\": 25245,\n\t\"./NewUI/SmartForms/config.ts\": 25245,\n\t\"./NewUI/SmartForms/index\": 26569,\n\t\"./NewUI/SmartForms/index.tsx\": 26569,\n\t\"./NewUI/SmartForms/reducer\": 62647,\n\t\"./NewUI/SmartForms/reducer.ts\": 62647,\n\t\"./NewUI/SmartForms/styles\": 81069,\n\t\"./NewUI/SmartForms/styles.ts\": 81069,\n\t\"./NewUI/SmartForms/types\": 826,\n\t\"./NewUI/SmartForms/types.ts\": 826,\n\t\"./NewUI/constants\": 87559,\n\t\"./NewUI/constants.ts\": 87559,\n\t\"./NewUI/helpers/uiPreferencesHelpers\": 24519,\n\t\"./NewUI/helpers/uiPreferencesHelpers.ts\": 24519,\n\t\"./NewUI/hooks\": 45917,\n\t\"./NewUI/hooks/\": 45917,\n\t\"./NewUI/hooks/index\": 45917,\n\t\"./NewUI/hooks/index.ts\": 45917,\n\t\"./NewUI/hooks/useApplicationsForTask\": 81215,\n\t\"./NewUI/hooks/useApplicationsForTask.ts\": 81215,\n\t\"./NewUI/hooks/useDispatch\": 78720,\n\t\"./NewUI/hooks/useDispatch.ts\": 78720,\n\t\"./NewUI/hooks/useDragScroll\": 50305,\n\t\"./NewUI/hooks/useDragScroll.ts\": 50305,\n\t\"./NewUI/hooks/useEmailTemplatesOptions\": 4283,\n\t\"./NewUI/hooks/useEmailTemplatesOptions.ts\": 4283,\n\t\"./NewUI/hooks/useEvents\": 39119,\n\t\"./NewUI/hooks/useEvents.ts\": 39119,\n\t\"./NewUI/hooks/useFieldChoiceList\": 21344,\n\t\"./NewUI/hooks/useFieldChoiceList.ts\": 21344,\n\t\"./NewUI/hooks/useInputValidation\": 25375,\n\t\"./NewUI/hooks/useInputValidation.ts\": 25375,\n\t\"./NewUI/hooks/useIsOverflow\": 62964,\n\t\"./NewUI/hooks/useIsOverflow.ts\": 62964,\n\t\"./NewUI/hooks/useJobsForTask\": 60890,\n\t\"./NewUI/hooks/useJobsForTask.ts\": 60890,\n\t\"./NewUI/hooks/usePlaceholders\": 26352,\n\t\"./NewUI/hooks/usePlaceholders.ts\": 26352,\n\t\"./NewUI/hooks/useThrottle\": 91970,\n\t\"./NewUI/hooks/useThrottle.ts\": 91970,\n\t\"./NewUI/shared/commonStyles\": 48735,\n\t\"./NewUI/shared/commonStyles.ts\": 48735,\n\t\"./NewUI/shared/styleClasses\": 11567,\n\t\"./NewUI/shared/styleClasses.ts\": 11567,\n\t\"./NewUI/utils/attachment-type\": 37668,\n\t\"./NewUI/utils/attachment-type.ts\": 37668,\n\t\"./NewUI/utils/device-detect\": 85998,\n\t\"./NewUI/utils/device-detect.ts\": 85998,\n\t\"./NewUI/utils/emoji-checker\": 9588,\n\t\"./NewUI/utils/emoji-checker.ts\": 9588,\n\t\"./NewUI/utils/formatToUserTimeZone\": 7996,\n\t\"./NewUI/utils/formatToUserTimeZone.ts\": 7996,\n\t\"./NewUI/utils/local-storage\": 49851,\n\t\"./NewUI/utils/local-storage.ts\": 49851,\n\t\"./NewUI/utils/scroll-to-element\": 67540,\n\t\"./NewUI/utils/scroll-to-element.tsx\": 67540,\n\t\"./NewUI/utils/sortable-column\": 92921,\n\t\"./NewUI/utils/sortable-column.ts\": 92921,\n\t\"./RecruitApiClient\": 18364,\n\t\"./RecruitApiClient.ts\": 18364,\n\t\"./ScoutCalendar\": 88258,\n\t\"./ScoutCalendar/\": 88258,\n\t\"./ScoutCalendar/API\": 99950,\n\t\"./ScoutCalendar/API.ts\": 99950,\n\t\"./ScoutCalendar/CreateEvent/CreateEvent\": 38123,\n\t\"./ScoutCalendar/CreateEvent/CreateEvent.tsx\": 38123,\n\t\"./ScoutCalendar/CreateEvent/EventProgress\": 95745,\n\t\"./ScoutCalendar/CreateEvent/EventProgress/\": 95745,\n\t\"./ScoutCalendar/CreateEvent/EventProgress/DateDisplay\": 40689,\n\t\"./ScoutCalendar/CreateEvent/EventProgress/DateDisplay.tsx\": 40689,\n\t\"./ScoutCalendar/CreateEvent/EventProgress/FirstStep\": 93871,\n\t\"./ScoutCalendar/CreateEvent/EventProgress/FirstStep.tsx\": 93871,\n\t\"./ScoutCalendar/CreateEvent/EventProgress/GroupedAvatars\": 12107,\n\t\"./ScoutCalendar/CreateEvent/EventProgress/GroupedAvatars.tsx\": 12107,\n\t\"./ScoutCalendar/CreateEvent/EventProgress/ReviewStep\": 95413,\n\t\"./ScoutCalendar/CreateEvent/EventProgress/ReviewStep.tsx\": 95413,\n\t\"./ScoutCalendar/CreateEvent/EventProgress/SecondStep\": 79629,\n\t\"./ScoutCalendar/CreateEvent/EventProgress/SecondStep.tsx\": 79629,\n\t\"./ScoutCalendar/CreateEvent/EventProgress/index\": 95745,\n\t\"./ScoutCalendar/CreateEvent/EventProgress/index.ts\": 95745,\n\t\"./ScoutCalendar/CreateEvent/EventProgress/styles\": 55671,\n\t\"./ScoutCalendar/CreateEvent/EventProgress/styles.ts\": 55671,\n\t\"./ScoutCalendar/CreateEvent/styles\": 86387,\n\t\"./ScoutCalendar/CreateEvent/styles.ts\": 86387,\n\t\"./ScoutCalendar/EventCreated\": 98916,\n\t\"./ScoutCalendar/EventCreated.tsx\": 98916,\n\t\"./ScoutCalendar/ListView\": 97467,\n\t\"./ScoutCalendar/ListView.tsx\": 97467,\n\t\"./ScoutCalendar/ScoutCalendar\": 10190,\n\t\"./ScoutCalendar/ScoutCalendar.tsx\": 10190,\n\t\"./ScoutCalendar/Settings\": 58751,\n\t\"./ScoutCalendar/Settings.tsx\": 58751,\n\t\"./ScoutCalendar/ViewEvent\": 69826,\n\t\"./ScoutCalendar/ViewEvent/\": 69826,\n\t\"./ScoutCalendar/ViewEvent/ActionButtons\": 35603,\n\t\"./ScoutCalendar/ViewEvent/ActionButtons.tsx\": 35603,\n\t\"./ScoutCalendar/ViewEvent/ActionModal\": 76855,\n\t\"./ScoutCalendar/ViewEvent/ActionModal.tsx\": 76855,\n\t\"./ScoutCalendar/ViewEvent/SelectedCandidatesTable\": 59293,\n\t\"./ScoutCalendar/ViewEvent/SelectedCandidatesTable.tsx\": 59293,\n\t\"./ScoutCalendar/ViewEvent/index\": 69826,\n\t\"./ScoutCalendar/ViewEvent/index.tsx\": 69826,\n\t\"./ScoutCalendar/ViewEvent/styles\": 89950,\n\t\"./ScoutCalendar/ViewEvent/styles.ts\": 89950,\n\t\"./ScoutCalendar/helper\": 41760,\n\t\"./ScoutCalendar/helper.tsx\": 41760,\n\t\"./ScoutCalendar/index\": 88258,\n\t\"./ScoutCalendar/index.tsx\": 88258,\n\t\"./ScoutCalendar/reducer\": 70374,\n\t\"./ScoutCalendar/reducer.ts\": 70374,\n\t\"./ScoutCalendar/styles\": 79894,\n\t\"./ScoutCalendar/styles.ts\": 79894,\n\t\"./ScoutCalendar/types\": 75587,\n\t\"./ScoutCalendar/types.ts\": 75587,\n\t\"./SeekAd\": 13046,\n\t\"./SeekAd/\": 13046,\n\t\"./SeekAd/AdEditor\": 20735,\n\t\"./SeekAd/AdEditor/\": 20735,\n\t\"./SeekAd/AdEditor/AdEditor\": 47475,\n\t\"./SeekAd/AdEditor/AdEditor.js\": 47475,\n\t\"./SeekAd/AdEditor/Components/AdProductSelection\": 81792,\n\t\"./SeekAd/AdEditor/Components/AdProductSelection.js\": 81792,\n\t\"./SeekAd/AdEditor/Components/AdSelection\": 81313,\n\t\"./SeekAd/AdEditor/Components/AdSelection.js\": 81313,\n\t\"./SeekAd/AdEditor/Components/ExitConfirmationDialog\": 73088,\n\t\"./SeekAd/AdEditor/Components/ExitConfirmationDialog.js\": 73088,\n\t\"./SeekAd/AdEditor/Components/ExitExistingDialogContent\": 84970,\n\t\"./SeekAd/AdEditor/Components/ExitExistingDialogContent.js\": 84970,\n\t\"./SeekAd/AdEditor/Components/ExitNewDialogContent\": 75165,\n\t\"./SeekAd/AdEditor/Components/ExitNewDialogContent.js\": 75165,\n\t\"./SeekAd/AdEditor/Components/PayDetails\": 87130,\n\t\"./SeekAd/AdEditor/Components/PayDetails.js\": 87130,\n\t\"./SeekAd/AdEditor/Components/SeekBillingReference\": 52574,\n\t\"./SeekAd/AdEditor/Components/SeekBillingReference.js\": 52574,\n\t\"./SeekAd/AdEditor/Components/WorkTypes\": 54402,\n\t\"./SeekAd/AdEditor/Components/WorkTypes.js\": 54402,\n\t\"./SeekAd/AdEditor/Steps\": 94571,\n\t\"./SeekAd/AdEditor/Steps/\": 94571,\n\t\"./SeekAd/AdEditor/Steps/Step1\": 30530,\n\t\"./SeekAd/AdEditor/Steps/Step1.js\": 30530,\n\t\"./SeekAd/AdEditor/Steps/Step2\": 53135,\n\t\"./SeekAd/AdEditor/Steps/Step2.js\": 53135,\n\t\"./SeekAd/AdEditor/Steps/Step3\": 18776,\n\t\"./SeekAd/AdEditor/Steps/Step3.js\": 18776,\n\t\"./SeekAd/AdEditor/Steps/Step4\": 59629,\n\t\"./SeekAd/AdEditor/Steps/Step4.js\": 59629,\n\t\"./SeekAd/AdEditor/Steps/index\": 94571,\n\t\"./SeekAd/AdEditor/Steps/index.js\": 94571,\n\t\"./SeekAd/AdEditor/UtilComponents/TextAreaWithCounter\": 68866,\n\t\"./SeekAd/AdEditor/UtilComponents/TextAreaWithCounter.js\": 68866,\n\t\"./SeekAd/AdEditor/index\": 20735,\n\t\"./SeekAd/AdEditor/index.js\": 20735,\n\t\"./SeekAd/AdEditor/useDialogStyles\": 33934,\n\t\"./SeekAd/AdEditor/useDialogStyles.js\": 33934,\n\t\"./SeekAd/AdEditor/useStyles\": 95298,\n\t\"./SeekAd/AdEditor/useStyles.js\": 95298,\n\t\"./SeekAd/SeekAd\": 84129,\n\t\"./SeekAd/SeekAd.js\": 84129,\n\t\"./SeekAd/hooks/useInitSeekAd\": 64984,\n\t\"./SeekAd/hooks/useInitSeekAd.ts\": 64984,\n\t\"./SeekAd/hooks/usePreviewSeekAd\": 67966,\n\t\"./SeekAd/hooks/usePreviewSeekAd.ts\": 67966,\n\t\"./SeekAd/hooks/useSeekAccounts\": 80943,\n\t\"./SeekAd/hooks/useSeekAccounts.ts\": 80943,\n\t\"./SeekAd/hooks/useSeekCurrencies\": 35072,\n\t\"./SeekAd/hooks/useSeekCurrencies.ts\": 35072,\n\t\"./SeekAd/hooks/useSeekGlobalData\": 61744,\n\t\"./SeekAd/hooks/useSeekGlobalData.ts\": 61744,\n\t\"./SeekAd/hooks/useSeekPayTypes\": 91888,\n\t\"./SeekAd/hooks/useSeekPayTypes.ts\": 91888,\n\t\"./SeekAd/index\": 13046,\n\t\"./SeekAd/index.js\": 13046,\n\t\"./StatusCategories\": 99909,\n\t\"./StatusCategories/\": 99909,\n\t\"./StatusCategories/API\": 77109,\n\t\"./StatusCategories/API.js\": 77109,\n\t\"./StatusCategories/CategoryDeck\": 67324,\n\t\"./StatusCategories/CategoryDeck.js\": 67324,\n\t\"./StatusCategories/StatusCategories\": 19331,\n\t\"./StatusCategories/StatusCategories.js\": 19331,\n\t\"./StatusCategories/index\": 99909,\n\t\"./StatusCategories/index.js\": 99909,\n\t\"./StatusCategories/useStyles\": 92416,\n\t\"./StatusCategories/useStyles.js\": 92416,\n\t\"./TableStyles\": 94579,\n\t\"./TableStyles.ts\": 94579,\n\t\"./TestActionCable\": 62590,\n\t\"./TestActionCable.tsx\": 62590,\n\t\"./TextUsModal\": 29281,\n\t\"./TextUsModal/\": 29281,\n\t\"./TextUsModal/TextUsModal\": 37409,\n\t\"./TextUsModal/TextUsModal.js\": 37409,\n\t\"./TextUsModal/components/Messenger\": 28958,\n\t\"./TextUsModal/components/Messenger/\": 28958,\n\t\"./TextUsModal/components/Messenger/Messenger\": 18537,\n\t\"./TextUsModal/components/Messenger/Messenger.js\": 18537,\n\t\"./TextUsModal/components/Messenger/components/CandidateDetails\": 7057,\n\t\"./TextUsModal/components/Messenger/components/CandidateDetails/\": 7057,\n\t\"./TextUsModal/components/Messenger/components/CandidateDetails/CandidateDetails\": 8336,\n\t\"./TextUsModal/components/Messenger/components/CandidateDetails/CandidateDetails.js\": 8336,\n\t\"./TextUsModal/components/Messenger/components/CandidateDetails/index\": 7057,\n\t\"./TextUsModal/components/Messenger/components/CandidateDetails/index.js\": 7057,\n\t\"./TextUsModal/components/Messenger/components/CandidateDetails/useStyles\": 65628,\n\t\"./TextUsModal/components/Messenger/components/CandidateDetails/useStyles.js\": 65628,\n\t\"./TextUsModal/components/Messenger/components/CandidateFilter\": 20407,\n\t\"./TextUsModal/components/Messenger/components/CandidateFilter/\": 20407,\n\t\"./TextUsModal/components/Messenger/components/CandidateFilter/CandidateFilter\": 28256,\n\t\"./TextUsModal/components/Messenger/components/CandidateFilter/CandidateFilter.js\": 28256,\n\t\"./TextUsModal/components/Messenger/components/CandidateFilter/index\": 20407,\n\t\"./TextUsModal/components/Messenger/components/CandidateFilter/index.js\": 20407,\n\t\"./TextUsModal/components/Messenger/components/CandidateFilter/useStyles\": 66922,\n\t\"./TextUsModal/components/Messenger/components/CandidateFilter/useStyles.js\": 66922,\n\t\"./TextUsModal/components/Messenger/components/CandidateListItem\": 32674,\n\t\"./TextUsModal/components/Messenger/components/CandidateListItem/\": 32674,\n\t\"./TextUsModal/components/Messenger/components/CandidateListItem/CandidateListItem\": 54112,\n\t\"./TextUsModal/components/Messenger/components/CandidateListItem/CandidateListItem.js\": 54112,\n\t\"./TextUsModal/components/Messenger/components/CandidateListItem/index\": 32674,\n\t\"./TextUsModal/components/Messenger/components/CandidateListItem/index.js\": 32674,\n\t\"./TextUsModal/components/Messenger/components/CandidateListItem/useStyles\": 92099,\n\t\"./TextUsModal/components/Messenger/components/CandidateListItem/useStyles.js\": 92099,\n\t\"./TextUsModal/components/Messenger/components/ChatBox\": 10339,\n\t\"./TextUsModal/components/Messenger/components/ChatBox/\": 10339,\n\t\"./TextUsModal/components/Messenger/components/ChatBox/ChatBox\": 14896,\n\t\"./TextUsModal/components/Messenger/components/ChatBox/ChatBox.js\": 14896,\n\t\"./TextUsModal/components/Messenger/components/ChatBox/components\": 8108,\n\t\"./TextUsModal/components/Messenger/components/ChatBox/components/\": 8108,\n\t\"./TextUsModal/components/Messenger/components/ChatBox/components/SignatureToggle\": 29101,\n\t\"./TextUsModal/components/Messenger/components/ChatBox/components/SignatureToggle.js\": 29101,\n\t\"./TextUsModal/components/Messenger/components/ChatBox/components/TagPicker\": 63126,\n\t\"./TextUsModal/components/Messenger/components/ChatBox/components/TagPicker.js\": 63126,\n\t\"./TextUsModal/components/Messenger/components/ChatBox/components/TemplatePicker\": 80814,\n\t\"./TextUsModal/components/Messenger/components/ChatBox/components/TemplatePicker.js\": 80814,\n\t\"./TextUsModal/components/Messenger/components/ChatBox/components/index\": 8108,\n\t\"./TextUsModal/components/Messenger/components/ChatBox/components/index.js\": 8108,\n\t\"./TextUsModal/components/Messenger/components/ChatBox/index\": 10339,\n\t\"./TextUsModal/components/Messenger/components/ChatBox/index.js\": 10339,\n\t\"./TextUsModal/components/Messenger/components/ChatBox/useStyles\": 11926,\n\t\"./TextUsModal/components/Messenger/components/ChatBox/useStyles.js\": 11926,\n\t\"./TextUsModal/components/Messenger/components/ChatWindow\": 52698,\n\t\"./TextUsModal/components/Messenger/components/ChatWindow/\": 52698,\n\t\"./TextUsModal/components/Messenger/components/ChatWindow/ChatWindow\": 69358,\n\t\"./TextUsModal/components/Messenger/components/ChatWindow/ChatWindow.js\": 69358,\n\t\"./TextUsModal/components/Messenger/components/ChatWindow/components/ChatItem\": 9182,\n\t\"./TextUsModal/components/Messenger/components/ChatWindow/components/ChatItem.js\": 9182,\n\t\"./TextUsModal/components/Messenger/components/ChatWindow/index\": 52698,\n\t\"./TextUsModal/components/Messenger/components/ChatWindow/index.js\": 52698,\n\t\"./TextUsModal/components/Messenger/components/ChatWindow/useStyles\": 41035,\n\t\"./TextUsModal/components/Messenger/components/ChatWindow/useStyles.js\": 41035,\n\t\"./TextUsModal/components/Messenger/index\": 28958,\n\t\"./TextUsModal/components/Messenger/index.js\": 28958,\n\t\"./TextUsModal/components/Messenger/useStyles\": 15647,\n\t\"./TextUsModal/components/Messenger/useStyles.js\": 15647,\n\t\"./TextUsModal/components/SelectRecipients\": 7496,\n\t\"./TextUsModal/components/SelectRecipients/\": 7496,\n\t\"./TextUsModal/components/SelectRecipients/SelectRecipients\": 16971,\n\t\"./TextUsModal/components/SelectRecipients/SelectRecipients.js\": 16971,\n\t\"./TextUsModal/components/SelectRecipients/index\": 7496,\n\t\"./TextUsModal/components/SelectRecipients/index.js\": 7496,\n\t\"./TextUsModal/components/SelectRecipients/useStyles\": 41374,\n\t\"./TextUsModal/components/SelectRecipients/useStyles.js\": 41374,\n\t\"./TextUsModal/index\": 29281,\n\t\"./TextUsModal/index.js\": 29281,\n\t\"./TextUsModal/useStyles\": 78188,\n\t\"./TextUsModal/useStyles.js\": 78188,\n\t\"./ThemeContext/ThemeContext\": 4744,\n\t\"./ThemeContext/ThemeContext.tsx\": 4744,\n\t\"./ThemeContext/ThemeObject\": 81040,\n\t\"./ThemeContext/ThemeObject.ts\": 81040,\n\t\"./ThemeContext/constants\": 44091,\n\t\"./ThemeContext/constants.ts\": 44091,\n\t\"./WorkatoNotification\": 86893,\n\t\"./WorkatoNotification.tsx\": 86893,\n\t\"./Xref\": 63977,\n\t\"./Xref/\": 63977,\n\t\"./Xref/XrefDialogue\": 2987,\n\t\"./Xref/XrefDialogue.tsx\": 2987,\n\t\"./Xref/XrefDialogueButton\": 96628,\n\t\"./Xref/XrefDialogueButton.tsx\": 96628,\n\t\"./Xref/index\": 63977,\n\t\"./Xref/index.tsx\": 63977,\n\t\"./Xref/types\": 56426,\n\t\"./Xref/types.ts\": 56426,\n\t\"./admin/data-source\": 87811,\n\t\"./admin/data-source.js\": 87811,\n\t\"./admin/integrations\": 24769,\n\t\"./admin/integrations/\": 24769,\n\t\"./admin/integrations/api\": 83853,\n\t\"./admin/integrations/api.jsx\": 83853,\n\t\"./admin/integrations/index\": 24769,\n\t\"./admin/integrations/index.jsx\": 24769,\n\t\"./admin/integrations/info/show\": 6317,\n\t\"./admin/integrations/info/show.jsx\": 6317,\n\t\"./admin/integrations/new\": 52803,\n\t\"./admin/integrations/new.jsx\": 52803,\n\t\"./admin/integrations/show\": 5182,\n\t\"./admin/integrations/show.jsx\": 5182,\n\t\"./admin/menu\": 39936,\n\t\"./admin/menu.jsx\": 39936,\n\t\"./admin/paying_users\": 12355,\n\t\"./admin/paying_users/\": 12355,\n\t\"./admin/paying_users/index\": 12355,\n\t\"./admin/paying_users/index.jsx\": 12355,\n\t\"./admin/services\": 47196,\n\t\"./admin/services/\": 47196,\n\t\"./admin/services/api\": 22216,\n\t\"./admin/services/api.jsx\": 22216,\n\t\"./admin/services/index\": 47196,\n\t\"./admin/services/index.jsx\": 47196,\n\t\"./admin/services/show\": 50229,\n\t\"./admin/services/show.jsx\": 50229,\n\t\"./admin/services/subservices/show\": 3540,\n\t\"./admin/services/subservices/show.jsx\": 3540,\n\t\"./admin/submenu\": 52694,\n\t\"./admin/submenu.jsx\": 52694,\n\t\"./admin/video_interview\": 45901,\n\t\"./admin/video_interview/\": 45901,\n\t\"./admin/video_interview/index\": 45901,\n\t\"./admin/video_interview/index.jsx\": 45901,\n\t\"./admin/video_interview/upload\": 4082,\n\t\"./admin/video_interview/upload.jsx\": 4082,\n\t\"./admin/video_interview/video_bookmarks_helper\": 23715,\n\t\"./admin/video_interview/video_bookmarks_helper.jsx\": 23715,\n\t\"./admin/video_interview/video_interview_helper\": 80609,\n\t\"./admin/video_interview/video_interview_helper.jsx\": 80609,\n\t\"./custom_integrations/integration_settings\": 59275,\n\t\"./custom_integrations/integration_settings.jsx\": 59275,\n\t\"./custom_integrations/integrations\": 15660,\n\t\"./custom_integrations/integrations.jsx\": 15660,\n\t\"./inputs/Checkbox\": 34534,\n\t\"./inputs/Checkbox/\": 34534,\n\t\"./inputs/Checkbox/Checkbox\": 33641,\n\t\"./inputs/Checkbox/Checkbox.js\": 33641,\n\t\"./inputs/Checkbox/index\": 34534,\n\t\"./inputs/Checkbox/index.js\": 34534,\n\t\"./inputs/Select\": 14951,\n\t\"./inputs/Select/\": 14951,\n\t\"./inputs/Select/Select\": 34091,\n\t\"./inputs/Select/Select.js\": 34091,\n\t\"./inputs/Select/index\": 14951,\n\t\"./inputs/Select/index.js\": 14951,\n\t\"./inputs/TextInput\": 56784,\n\t\"./inputs/TextInput/\": 56784,\n\t\"./inputs/TextInput/TextInput\": 23837,\n\t\"./inputs/TextInput/TextInput.js\": 23837,\n\t\"./inputs/TextInput/index\": 56784,\n\t\"./inputs/TextInput/index.js\": 56784,\n\t\"./mvs_request_test\": 22508,\n\t\"./mvs_request_test.jsx\": 22508,\n\t\"./saved_search/item\": 1175,\n\t\"./saved_search/item.jsx\": 1175,\n\t\"./saved_search/table\": 32968,\n\t\"./saved_search/table.jsx\": 32968,\n\t\"./scout-trainings\": 32920,\n\t\"./scout-trainings/\": 32920,\n\t\"./scout-trainings/index\": 32920,\n\t\"./scout-trainings/index.jsx\": 32920,\n\t\"./scout-trainings/portal-button\": 81071,\n\t\"./scout-trainings/portal-button.jsx\": 81071,\n\t\"./scout-trainings/table\": 29324,\n\t\"./scout-trainings/table.jsx\": 29324,\n\t\"./scout/EventStatusSelect\": 84154,\n\t\"./scout/EventStatusSelect.tsx\": 84154,\n\t\"./scout/add_button\": 80056,\n\t\"./scout/add_button.jsx\": 80056,\n\t\"./scout/autocomplete\": 49132,\n\t\"./scout/autocomplete.jsx\": 49132,\n\t\"./scout/nested_autocomplete\": 14234,\n\t\"./scout/nested_autocomplete.jsx\": 14234,\n\t\"./scout/select\": 78232,\n\t\"./scout/select.jsx\": 78232,\n\t\"./scout/service-interface-client\": 11484,\n\t\"./scout/service-interface-client.js\": 11484,\n\t\"./scout/table/fields/control/link_control\": 2437,\n\t\"./scout/table/fields/control/link_control.jsx\": 2437,\n\t\"./scout/table/fields/custom_control\": 86922,\n\t\"./scout/table/fields/custom_control.jsx\": 86922,\n\t\"./scout/table/fields/data\": 69409,\n\t\"./scout/table/fields/data.jsx\": 69409,\n\t\"./scout/table/fields/inplace_input_editor\": 93132,\n\t\"./scout/table/fields/inplace_input_editor.jsx\": 93132,\n\t\"./scout/table/fields/link\": 23497,\n\t\"./scout/table/fields/link.jsx\": 23497,\n\t\"./scout/table/filter\": 84069,\n\t\"./scout/table/filter.jsx\": 84069,\n\t\"./scout/table/headers/callback\": 40015,\n\t\"./scout/table/headers/callback.jsx\": 40015,\n\t\"./scout/table/headers/data\": 57646,\n\t\"./scout/table/headers/data.jsx\": 57646,\n\t\"./scout/table/pagination\": 48475,\n\t\"./scout/table/pagination.jsx\": 48475,\n\t\"./scout/table/row\": 4199,\n\t\"./scout/table/row.jsx\": 4199,\n\t\"./scout/table/table\": 58671,\n\t\"./scout/table/table.jsx\": 58671,\n\t\"./scout/tags\": 49587,\n\t\"./scout/tags.jsx\": 49587,\n\t\"./search_results/filtering_options_table\": 85839,\n\t\"./search_results/filtering_options_table.jsx\": 85839,\n\t\"./search_results/header\": 78516,\n\t\"./search_results/header.jsx\": 78516,\n\t\"./search_results/header_row\": 34201,\n\t\"./search_results/header_row.jsx\": 34201,\n\t\"./search_results/item\": 42074,\n\t\"./search_results/item.jsx\": 42074,\n\t\"./search_results/pagination\": 75763,\n\t\"./search_results/pagination.jsx\": 75763,\n\t\"./search_results/search_box\": 70449,\n\t\"./search_results/search_box.jsx\": 70449,\n\t\"./search_results/table\": 42935,\n\t\"./search_results/table.jsx\": 42935,\n\t\"./search_results/table_with_spinner\": 70090,\n\t\"./search_results/table_with_spinner.jsx\": 70090,\n\t\"./shared/accordion\": 44757,\n\t\"./shared/accordion.jsx\": 44757,\n\t\"./shared/commonStyles\": 53050,\n\t\"./shared/commonStyles.jsx\": 53050,\n\t\"./shared/permissionHelpers\": 59323,\n\t\"./shared/permissionHelpers.ts\": 59323\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 86900;","import React, { useEffect, useState, useRef, useCallback, MouseEvent } from 'react';\nimport ReactDOM from 'react-dom';\nimport { ResponseMessage, LoadingMessage } from './components';\n\nexport default function AIInterviewModal(jobDescription: string) {\n  const [isLoading, setIsLoading] = useState<boolean>(false);\n  const lastMessageRef = useRef<HTMLDivElement | null>(null);\n  const [response, setResponse] = useState<{ index: string; content: string }[]>([]);\n\n  const generateChatResponse = useCallback(\n    async (id: string, question: string, input: string, reactComponentRoot?: HTMLElement) => {\n      setIsLoading(true);\n      try {\n        const response = await fetch('/api/v4/ai_interviews', {\n          method: 'POST',\n          headers: {\n            'Content-Type': 'application/json'\n          },\n          body: JSON.stringify({\n            description: jobDescription,\n            question: question,\n            input: input\n          })\n        }).then((res) => res.json());\n        if (response && response.result) {\n          setResponse((prevResponse) => [...prevResponse, { index: id, content: response.result }]);\n\n          // eslint-disable-next-line react/no-deprecated\n          ReactDOM.render(\n            <ResponseMessage id={id} message={response.result} />,\n            reactComponentRoot as unknown as HTMLElement\n          );\n        } else {\n          throw new Error('No response from STG GPT');\n        }\n      } catch (error) {\n        console.error(error);\n      } finally {\n        setIsLoading(false);\n      }\n    },\n    [jobDescription]\n  );\n\n  const updateUI = useCallback(\n    (felixContainer: HTMLElement, number: string, reactComponentRoot: any) => {\n      const button = felixContainer.querySelector('button.felix');\n      const responseMessageContainer = felixContainer.nextElementSibling as HTMLElement;\n\n      if (responseMessageContainer) {\n        responseMessageContainer.style.display = 'unset';\n        if (button) {\n          button.innerHTML = 'Regenerate feedback';\n        }\n      }\n\n      const dataInputField = document.getElementById(\n        `application_answers_attributes_${number}_data`\n      ) as HTMLInputElement;\n\n      const label = document.querySelector(\n        `label[for=\"application_answers_attributes_${number}_data\"]`\n      );\n\n      const labelText = label?.textContent?.replace('*', '') || '';\n\n      // eslint-disable-next-line react/no-deprecated\n      ReactDOM.render(<LoadingMessage />, reactComponentRoot);\n\n      generateChatResponse(button?.id || '', labelText, dataInputField?.value, reactComponentRoot);\n    },\n    [generateChatResponse]\n  );\n\n  const handleButtonClick = useCallback(\n    (event: MouseEvent<HTMLElement>) => {\n      const targetElement = event.target as HTMLElement;\n      const fieldContainer = targetElement.closest('.field-container');\n      const reactComponentRoot = fieldContainer?.querySelector('#react-component-root');\n      const felixContainer = targetElement.closest('.felix-container') as HTMLElement;\n\n      const inputField = felixContainer?.previousElementSibling;\n      const id = (inputField as HTMLElement)?.id;\n      const match = id?.match(/answers_attributes_(\\d+)_/);\n      const number = match ? match[1] : null;\n      if (number !== null) {\n        updateUI(felixContainer, number, reactComponentRoot);\n      }\n    },\n    [updateUI]\n  );\n\n  useEffect(() => {\n    const buttons = document.getElementsByClassName('felix');\n\n    Array.from(buttons).forEach((button) => {\n      button.addEventListener('click', handleButtonClick as unknown as EventListener);\n    });\n\n    return () => {\n      Array.from(buttons).forEach((button) => {\n        button.removeEventListener('click', handleButtonClick as unknown as EventListener);\n      });\n    };\n  }, [generateChatResponse, response, isLoading, handleButtonClick]);\n\n  useEffect(() => {\n    if (lastMessageRef.current) {\n      lastMessageRef.current.scrollIntoView({ behavior: 'smooth' });\n    }\n  }, []);\n\n  return null;\n}\n","import React, { FC } from 'react';\nimport { Box, keyframes, SxProps } from '@mui/material';\nimport { classes } from '../styles';\nimport { DELAYS_IN_SECONDS } from '../constants';\n\nconst blink = keyframes`\n    0% {opacity: 1;}\n    50% {opacity: 0;}\n    100% {opacity: 1;}\n  `;\n\nconst BlinkingDot: FC<{ delay: number; style?: SxProps }> = ({ delay, style }) => (\n  <Box\n    sx={{\n      animation: `${blink} 1s ${delay}s linear infinite`,\n      fontSize: '30px',\n      ...style\n    }}\n  ></Box>\n);\n\nexport const LoadingMessage = () => {\n  return (\n    <Box sx={classes.systemMessage}>\n      Generating\n      {DELAYS_IN_SECONDS.map((delay) => (\n        <BlinkingDot key={delay} delay={delay} />\n      ))}\n    </Box>\n  );\n};\n","import React, { MouseEvent } from 'react';\nimport { Box } from '@mui/material';\nimport { classes } from '../styles';\nimport { IconButton } from '@material-ui/core';\nimport { AIPrompterCloseIcon } from '../../../NewUI/Components/Icons';\n\nexport const ResponseMessage = ({ id, message }: { id: string; message: string }) => {\n  const handleClose = (e: MouseEvent<HTMLElement>) => {\n    e.preventDefault();\n    const reactComponentRoot = document.getElementById(id) as HTMLElement;\n    const responseMessageContainer = reactComponentRoot?.parentElement\n      ?.nextElementSibling as HTMLElement;\n    if (responseMessageContainer) {\n      responseMessageContainer.style.display = 'none';\n      reactComponentRoot.innerHTML = 'Get Felix AI’s feedback on my answer';\n    }\n  };\n\n  return (\n    <Box key={id} sx={classes.responseMessageContainer}>\n      <IconButton style={classes.closeIcon} onClick={handleClose}>\n        <AIPrompterCloseIcon />\n      </IconButton>\n      <Box\n        sx={classes.responseMessageContent}\n        dangerouslySetInnerHTML={{ __html: message.replace(/\\n\\n/g, '<br />') }}\n      ></Box>\n    </Box>\n  );\n};\n","import React, {\n  useEffect,\n  useRef,\n  useCallback,\n  useMemo,\n  useReducer,\n  Dispatch,\n  SetStateAction\n} from 'react';\nimport { Box, Button, Modal } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { WelcomePage } from './Steps/WelcomePage';\nimport AIStudioTeaserModal from './AIStudioTeaserModal';\nimport JobDescriptionInput from './Steps/JobDescriptionInput';\nimport OptionalInput from './Steps/OptionalInput';\nimport DisplayResponse from './Steps/DisplayResponse';\nimport { classes } from './styles';\nimport { FelixButtonSVG } from '../SharedComponents/Graphics/FelixSVG';\nimport LoadingResponse from '../SharedComponents/Steps/LoadingResponse';\nimport QuestionsInput from './Steps/QuestionsInput';\nimport GenericDialog from '../../NewUI/Components/Modals/GenericDialog';\nimport ErrorScreen from '../SharedComponents/Steps/ErrorScreen';\nimport { navbarWidths } from '../../NewUI/Layout/Navbar/config';\nimport { welcomeMessage } from './config';\nimport { aiStudioReducer, initialAIStudioState } from './reducer';\nimport { convertToLocalEnglish } from '../../NewUI/Components/Utilities/convertToLocalEnglish';\nimport FelixNotification from './FelixNotification';\nimport { serialize } from 'object-to-formdata';\n\nexport default function AIStudioModal({\n  aiStudioEnabled,\n  aiSummariesEnabled,\n  aiStudioFrenchEnabled,\n  showPreview,\n  navbarState,\n  jobFlow,\n  setTlpModalOpen,\n  prefillData,\n  setGeneratedContent\n}: {\n  aiStudioEnabled: boolean;\n  aiSummariesEnabled: boolean;\n  aiStudioFrenchEnabled: boolean;\n  showPreview?: boolean;\n  navbarState: keyof typeof navbarWidths;\n  jobFlow?: boolean;\n  setTlpModalOpen?: Dispatch<SetStateAction<boolean>>;\n  prefillData?: {\n    title: string;\n    country: string;\n  };\n  setGeneratedContent?: (content: string) => void;\n}) {\n  const [aiStudioState, dispatch] = useReducer<typeof aiStudioReducer>(\n    aiStudioReducer,\n    initialAIStudioState\n  );\n\n  const typeWriterRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n  const caretRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n  const requestController = useRef<AbortController | null>(null);\n  const aiButtonAnchorRef = useRef<HTMLElement | null>(null);\n\n  const hideButton = useMemo(() => {\n    // is the user on a page that breaks MUI 5?\n    const URLPATH = new URL(window.location.href).pathname;\n    const pathRegexList = [/entities.*edit/, /events/];\n    const isOnIncompatiblePage = pathRegexList.some((regex) => regex.test(URLPATH));\n    const showButton = aiStudioEnabled || aiSummariesEnabled || showPreview;\n\n    return isOnIncompatiblePage || !showButton;\n  }, [aiStudioEnabled, aiSummariesEnabled, showPreview]);\n\n  const generateDescription = useCallback(async () => {\n    dispatch({ type: 'GO_TO_LOADING_STEP' });\n    requestController.current = new AbortController();\n    const data = {\n      ai_studio: {\n        type: 'tlp',\n        tone: aiStudioState.generatedTone,\n        job_details: aiStudioState.jobDetails,\n        send_email_copy: aiStudioState.sendEmail,\n        french: aiStudioState.aiStudioFrenchEnabled,\n        ...(aiStudioState.document && { document: aiStudioState.document })\n      }\n    };\n    const serializedData = serialize(data);\n    try {\n      const response = await fetch('/api/v4/ai_studio', {\n        signal: requestController.current.signal,\n        method: 'POST',\n        body: serializedData,\n        formData: true\n      });\n      const description = await response.json();\n      if (response && description.result && description.result.length > 30) {\n        const localEnglishDescription = convertToLocalEnglish(description.result);\n        dispatch({ type: 'SET_GENERATED_RESPONSE', payload: localEnglishDescription });\n      } else {\n        throw new Error('No response from AI API');\n      }\n    } catch (error) {\n      if (error.name === 'AbortError') {\n        console.log('Description generation aborted');\n      }\n      console.error(error);\n      dispatch({ type: 'SET_GENERATION_ERROR', payload: true });\n    } finally {\n      if (!requestController.current.signal.aborted) {\n        dispatch({ type: 'GO_TO_ERROR_STEP' });\n      }\n    }\n  }, [\n    aiStudioState.aiStudioFrenchEnabled,\n    aiStudioState.generatedTone,\n    aiStudioState.jobDetails,\n    aiStudioState.sendEmail,\n    aiStudioState.document\n  ]);\n\n  const generateQuestions = useCallback(async () => {\n    requestController.current = new AbortController();\n    dispatch({ type: 'GO_TO_LOADING_STEP' });\n    try {\n      const response = await fetch('/api/v4/ai_studio', {\n        signal: requestController.current.signal,\n        method: 'POST',\n        headers: {\n          'Content-Type': 'application/json'\n        },\n        body: JSON.stringify({\n          ai_studio: {\n            type: 'questions',\n            question_type: aiStudioState.questionType,\n            job_details: aiStudioState.jobDetails,\n            number_of_questions: 5\n          }\n        })\n      });\n      const questions = await response.json();\n      if (response && questions.result && questions.result.length > 30) {\n        const localEnglishQuestions = convertToLocalEnglish(questions.result);\n        dispatch({ type: 'SET_GENERATED_RESPONSE', payload: localEnglishQuestions });\n      } else {\n        throw new Error('No response from AI API');\n      }\n    } catch (error) {\n      if (error.name === 'AbortError') {\n        console.log('Description generation aborted');\n      }\n      console.error(error);\n      dispatch({ type: 'SET_GENERATION_ERROR', payload: true });\n    } finally {\n      if (!requestController.current.signal.aborted) {\n        dispatch({ type: 'GO_TO_ERROR_STEP' });\n      }\n    }\n  }, [aiStudioState.jobDetails, aiStudioState.questionType]);\n\n  const typeWriter = useCallback((text: string, i: number) => {\n    if (i < text.length) {\n      dispatch({ type: 'ADD_TO_WELCOME_HEADER', payload: text.charAt(i) });\n      typeWriterRef.current = setTimeout(function () {\n        typeWriter(text, i + 1);\n      }, 100);\n    }\n    if (i === text.length) {\n      caretRef.current = setTimeout(() => {\n        dispatch({ type: 'SET_SHOW_CARET', payload: false });\n      }, 2200);\n    }\n  }, []);\n\n  useEffect(() => {\n    dispatch({ type: 'CLEAR_WELCOME_HEADER' });\n    if (!aiStudioState.open || aiStudioState.currentStep !== 0) return;\n    typeWriter(welcomeMessage[aiStudioState.aiStudioFrenchEnabled ? 'french' : 'english'], 0);\n    return () => {\n      if (typeWriterRef.current) {\n        clearTimeout(typeWriterRef.current);\n      }\n      if (caretRef.current) {\n        clearTimeout(caretRef.current);\n      }\n    };\n  }, [\n    typeWriter,\n    aiStudioState.open,\n    aiStudioState.currentStep,\n    aiStudioState.aiStudioFrenchEnabled\n  ]);\n\n  const handleClose = useCallback(() => {\n    dispatch({ type: 'CLOSE_MODAL' });\n    jobFlow && setTlpModalOpen && setTlpModalOpen(false);\n    // Abort any pending requests\n    requestController?.current?.abort('User quit the modal');\n  }, [jobFlow, setTlpModalOpen]);\n\n  const handleCloseAction = () => {\n    aiStudioState.currentStep === 0\n      ? handleClose()\n      : dispatch({ type: 'SET_CONFIRM_CANCEL_IS_OPEN', payload: true });\n  };\n\n  // Check if the Recruit sidebar is collapsed and set the state accordingly\n  useEffect(() => {\n    if (navbarState) return;\n    const navbarElement = document.querySelector('#sidebar');\n    const navbarObserver = new ResizeObserver((entries) => {\n      if (entries[0].contentRect.width < 200) {\n        dispatch({ type: 'SET_NAVBAR_IS_COLLAPSED', payload: true });\n      } else {\n        dispatch({ type: 'SET_NAVBAR_IS_COLLAPSED', payload: false });\n      }\n    });\n    navbarElement && navbarObserver.observe(navbarElement);\n    return () => {\n      navbarObserver.disconnect();\n    };\n  }, [navbarState]);\n\n  // Handle opening modal from the New Job flow\n  useEffect(() => {\n    jobFlow &&\n      dispatch({ type: 'INIT_NEW_JOB_FLOW', payload: prefillData || { title: '', country: '' } });\n  }, [jobFlow, prefillData]);\n\n  const stepSelect = useCallback(\n    (step) => {\n      if (aiStudioState.generationError) {\n        return (\n          <ErrorScreen\n            regenerateCallback={\n              aiStudioState.generationType === 'description'\n                ? generateDescription\n                : generateQuestions\n            }\n            setGenerationError={(value: boolean) =>\n              dispatch({ type: 'SET_GENERATION_ERROR', payload: value })\n            }\n            backToHome={() => dispatch({ type: 'GO_TO_HOME_STEP' })}\n          />\n        );\n      }\n      switch (step) {\n        case 0:\n          return (\n            <WelcomePage\n              dispatch={dispatch}\n              aiStudioState={aiStudioState}\n              aiStudioFrenchEnabled={aiStudioFrenchEnabled}\n            />\n          );\n        case 1:\n          return (\n            <JobDescriptionInput\n              dispatch={dispatch}\n              aiStudioState={aiStudioState}\n              generateDescription={generateDescription}\n              jobFlow={jobFlow}\n            />\n          );\n        case 2:\n          return <OptionalInput dispatch={dispatch} aiStudioState={aiStudioState} />;\n        case 3:\n          return <LoadingResponse generationType={aiStudioState.generationType} />;\n        case 4:\n          return (\n            <DisplayResponse\n              dispatch={dispatch}\n              aiStudioState={aiStudioState}\n              generateDescription={generateDescription}\n              generateQuestions={generateQuestions}\n              jobFlow={jobFlow}\n              setGeneratedContent={setGeneratedContent}\n              handleClose={handleClose}\n            />\n          );\n        case 5:\n          return (\n            <QuestionsInput\n              dispatch={dispatch}\n              aiStudioState={aiStudioState}\n              generateQuestions={generateQuestions}\n            />\n          );\n        default:\n          return 'Something went wrong';\n      }\n    },\n    [\n      aiStudioFrenchEnabled,\n      aiStudioState,\n      generateDescription,\n      generateQuestions,\n      handleClose,\n      jobFlow,\n      setGeneratedContent\n    ]\n  );\n\n  const buttonClass = () => {\n    return {\n      ...classes.buttonContainer,\n      ...(aiStudioState.buttonHovered &&\n        !(aiStudioState.notificationData?.length > 0) &&\n        classes.hoverAnimation),\n      ...(aiStudioState.navbarIsCollapsed && classes.collapsedNavbar),\n      ...(aiStudioState.notificationData?.length > 0 && classes.notificationAnimation),\n      ...(!!navbarState && classes.newNavbarButtonContainer),\n      ...(navbarState === 'collapsed' && classes.newNavbarCollapsed)\n    };\n  };\n\n  if (hideButton) return null;\n\n  return (\n    <Box sx={{ zIndex: 2 }}>\n      {!jobFlow && (\n        <>\n          <Box\n            id={`ai-studio-button${aiStudioEnabled ? '' : '-teaser'}`}\n            sx={buttonClass()}\n            onMouseEnter={() => dispatch({ type: 'SET_BUTTON_HOVERED', payload: true })}\n            onMouseLeave={() => dispatch({ type: 'SET_BUTTON_HOVERED', payload: false })}\n            onClick={() => dispatch({ type: 'OPEN_MODAL' })}\n          >\n            <Box sx={classes.avatarContainer} ref={aiButtonAnchorRef}>\n              <FelixButtonSVG />\n            </Box>\n            {(navbarState ? navbarState === 'expanded' : !aiStudioState.navbarIsCollapsed) && (\n              <>\n                <Button sx={classes.button}>{!aiStudioState.open ? 'AI Studio' : 'Close'}</Button>\n                {!aiStudioState.open && <Box sx={classes.betaPill}>Beta</Box>}\n              </>\n            )}\n          </Box>\n          {(aiStudioEnabled || aiSummariesEnabled) && (\n            <FelixNotification\n              anchorEl={aiButtonAnchorRef.current}\n              aiStudioState={aiStudioState}\n              dispatch={dispatch}\n            />\n          )}\n        </>\n      )}\n      {aiStudioEnabled ? (\n        <>\n          <Modal\n            open={aiStudioState.open || !!jobFlow}\n            onClose={handleCloseAction}\n            aria-labelledby=\"ai-studio-title\"\n            aria-describedby=\"ai-studio-description\"\n          >\n            <Box sx={classes.modal}>\n              <CloseIcon onClick={handleCloseAction} sx={classes.closeIcon} />\n              {stepSelect(aiStudioState.currentStep)}\n            </Box>\n          </Modal>\n          <GenericDialog\n            isDialogOpen={aiStudioState.confirmCancelIsOpen}\n            setDialogOpen={(value: boolean) =>\n              dispatch({ type: 'SET_CONFIRM_CANCEL_IS_OPEN', payload: value })\n            }\n            title=\"Close AI Studio?\"\n            description=\"All unsaved changes will be lost.\"\n            buttonCallback={() => {\n              dispatch({ type: 'SET_CONFIRM_CANCEL_IS_OPEN', payload: false });\n              handleClose();\n            }}\n            callbackLoading={false}\n            buttonText=\"Close AI Studio\"\n            url=\"\"\n          />\n        </>\n      ) : (\n        <AIStudioTeaserModal open={aiStudioState.open} handleCloseAction={handleCloseAction} />\n      )}\n    </Box>\n  );\n}\n","import React from 'react';\nimport { Box, Modal, Button } from '@mui/material';\nimport DoneIcon from '@mui/icons-material/Done';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { FelixStarsSVG } from '../SharedComponents/Graphics/FelixSVG';\nimport { classes } from './styles';\n\nconst featuresText = [\n  'Job advertisements',\n  'Social media posts',\n  'Talent landing pages',\n  'Screening and interview questions'\n];\n\nconst handleButtonAction = () => {\n  window.open('https://scouttalenthq.com/talent-acquisition-software/ai-studio', '_blank');\n};\n\nconst AIStudioTeaserModal = ({\n  open,\n  handleCloseAction\n}: {\n  open: boolean;\n  handleCloseAction: () => void;\n}) => {\n  return (\n    <Modal open={open} onClose={handleCloseAction} aria-labelledby=\"ai-studio-teaser\">\n      <Box sx={classes.previewModal}>\n        <CloseIcon onClick={handleCloseAction} sx={classes.closeIcon} />\n        <Box sx={classes.teaserContainer}>\n          <FelixStarsSVG />\n          <Box sx={classes.teaserHeader}>\n            <span>Launching: AI Studio</span>\n            <Box sx={classes.teaserPill}>BETA</Box>\n          </Box>\n          <Box sx={{ fontWeight: '700' }}>\n            Reduce the time it takes to create talent attraction content by 80%.\n          </Box>\n          <Box sx={classes.teaserText}>\n            Leverage the power of AI Studio to draft recruitment collateral in seconds:\n          </Box>\n          <Box sx={classes.featureList}>\n            {featuresText.map((feature, index) => (\n              <Box sx={classes.featureListItem} key={index}>\n                <DoneIcon sx={classes.featureListItemIcon} />\n                <Box>{feature}</Box>\n              </Box>\n            ))}\n          </Box>\n          <Button\n            id=\"discover-ai-studio-button\"\n            sx={classes.teaserButton}\n            onClick={handleButtonAction}\n          >\n            Discover benefits\n          </Button>\n        </Box>\n        <Button sx={classes.teaserCloseButton} onClick={handleCloseAction}>\n          No thanks, I don’t want to save time\n        </Button>\n      </Box>\n    </Modal>\n  );\n};\n\nexport default AIStudioTeaserModal;\n","import React from 'react';\nimport { Box, Button } from '@mui/material';\nimport AddIcon from '@mui/icons-material/Add';\nimport DoneIcon from '@mui/icons-material/Done';\nimport { convertPreferredSkills } from '../config';\nimport { classes } from '../styles';\n\nconst OptionalInputButtons = ({\n  jobDetails,\n  pillClickHandler,\n  aiStudioFrenchEnabled\n}: {\n  jobDetails: Record<string, string>;\n  pillClickHandler: (pillType: string) => void;\n  aiStudioFrenchEnabled: boolean;\n}) => {\n  return (\n    <Box sx={classes.pillsContainer}>\n      <Button\n        sx={jobDetails.preferred_skills ? classes.filledPill : classes.pill}\n        endIcon={jobDetails.preferred_skills ? <DoneIcon /> : <AddIcon />}\n        onClick={() => pillClickHandler('preferred_skills')}\n      >\n        {convertPreferredSkills[aiStudioFrenchEnabled ? 'french' : 'english']['preferred_skills']}\n      </Button>\n      <Button\n        sx={jobDetails.position_responsibilities ? classes.filledPill : classes.pill}\n        endIcon={jobDetails.position_responsibilities ? <DoneIcon /> : <AddIcon />}\n        onClick={() => pillClickHandler('position_responsibilities')}\n      >\n        {\n          convertPreferredSkills[aiStudioFrenchEnabled ? 'french' : 'english'][\n            'position_responsibilities'\n          ]\n        }\n      </Button>\n      <Button\n        sx={jobDetails.position_location ? classes.filledPill : classes.pill}\n        endIcon={jobDetails.position_location ? <DoneIcon /> : <AddIcon />}\n        onClick={() => pillClickHandler('position_location')}\n      >\n        {convertPreferredSkills[aiStudioFrenchEnabled ? 'french' : 'english']['position_location']}\n      </Button>\n      <Button\n        sx={jobDetails.salary ? classes.filledPill : classes.pill}\n        endIcon={jobDetails.salary ? <DoneIcon /> : <AddIcon />}\n        onClick={() => pillClickHandler('salary')}\n      >\n        {convertPreferredSkills[aiStudioFrenchEnabled ? 'french' : 'english']['salary']}\n      </Button>\n      <Button\n        sx={jobDetails.company_name ? classes.filledPill : classes.pill}\n        endIcon={jobDetails.company_name ? <DoneIcon /> : <AddIcon />}\n        onClick={() => pillClickHandler('company_name')}\n      >\n        {convertPreferredSkills[aiStudioFrenchEnabled ? 'french' : 'english']['company_name']}\n      </Button>\n      <Button\n        sx={jobDetails.company_description ? classes.filledPill : classes.pill}\n        endIcon={jobDetails.company_description ? <DoneIcon /> : <AddIcon />}\n        onClick={() => pillClickHandler('company_description')}\n      >\n        {\n          convertPreferredSkills[aiStudioFrenchEnabled ? 'french' : 'english'][\n            'company_description'\n          ]\n        }\n      </Button>\n      <Button\n        sx={jobDetails.company_benefits ? classes.filledPill : classes.pill}\n        endIcon={jobDetails.company_benefits ? <DoneIcon /> : <AddIcon />}\n        onClick={() => pillClickHandler('company_benefits')}\n      >\n        {convertPreferredSkills[aiStudioFrenchEnabled ? 'french' : 'english']['company_benefits']}\n      </Button>\n    </Box>\n  );\n};\n\nexport default OptionalInputButtons;\n","import React, { useState, useEffect, useCallback, Dispatch } from 'react';\nimport { Box, Button, Popper, Fade, PopperPlacementType, Modal, Badge } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { classes } from './styles';\nimport { notificationTitles } from './config';\nimport { AIStudioAction, AIStudioState } from './reducer';\nimport BulkSummaries from '../ApplicationSummaries/InsightsModal/ResponseStep';\nimport InterviewQuestions from '../ApplicationSummaries/QuestionsModal/ResponseStep';\nimport { dismissNotification } from '../SharedComponents/Utility/dismissNotification';\nimport { IWebsocketData, INotificationHistoryItem } from '../SharedComponents/types';\nimport { useWebSockets } from '../../NewUI/Components/Utilities/useWebSockets';\nimport StyledSnackbar from '../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport EditStep from '../ApplicationSummaries/QuestionsModal/FollowUpEmail/EditStep';\n\nconst FelixNotification = ({\n  anchorEl,\n  aiStudioState,\n  dispatch\n}: {\n  anchorEl: HTMLElement | null;\n  aiStudioState: AIStudioState;\n  dispatch: Dispatch<AIStudioAction>;\n}) => {\n  const [emails, setEmails] = useState<string[]>([]);\n  const [snackbarState, setSnackbarState] = useState({\n    message: '',\n    state: 'success' as 'success' | 'error' | 'warning'\n  });\n  const displayNumberOfNotifications = () => {\n    if (aiStudioState.notificationData.length > 1) {\n      return aiStudioState.notificationData.length;\n    } else {\n      return 0;\n    }\n  };\n\n  const handleDismissNotification = () => {\n    dismissNotification(aiStudioState.notificationData[0]?.id);\n    dispatch({ type: 'DISMISS_NOTIFICATION' });\n  };\n\n  const { subscribeToChannel } = useWebSockets('AiStudioChannel', (data: IWebsocketData) => {\n    if (data.kind === 'dismissal') {\n      dispatch({ type: 'SET_DISMISSED_NOTIFICATION', payload: data.id });\n    } else {\n      dispatch({ type: 'SET_RECEIVED_NOTIFICATION', payload: data });\n    }\n  });\n\n  const getInitialNotifications = useCallback(async () => {\n    const response = await fetch('/api/v4/ai_generation_histories?exclude_dismissed=true', {\n      method: 'GET',\n      headers: {\n        'Content-Type': 'application/json'\n      }\n    });\n    const notifications = await response.json();\n    const formattedNotifications = notifications?.histories?.map(\n      (notification: INotificationHistoryItem) => ({\n        id: notification.id,\n        kind: notification.kind,\n        content: notification.content,\n        ...(notification.candidate_name && { candidate_name: notification.candidate_name }),\n        ...(notification.application_id && { application_id: notification.application_id }),\n        ...(notification.job_id && { job_id: notification.job_id })\n      })\n    );\n    dispatch({ type: 'SET_NOTIFICATIONS', payload: formattedNotifications });\n  }, [dispatch]);\n\n  useEffect(() => {\n    subscribeToChannel();\n  }, [subscribeToChannel]);\n\n  useEffect(() => {\n    getInitialNotifications();\n  }, [getInitialNotifications]);\n\n  const displayNotificationContent = () => {\n    switch (aiStudioState.notificationData[0]?.kind) {\n      case 'bulk_summary':\n        return (\n          <BulkSummaries\n            summaryData={aiStudioState.notificationData[0]}\n            handleDismissNotification={handleDismissNotification}\n            isNotification\n            setEmails={setEmails}\n            emails={emails}\n            setSnackbar={setSnackbarState}\n          />\n        );\n      case 'interview_questions':\n        return (\n          <InterviewQuestions\n            questionData={aiStudioState.notificationData[0]}\n            setSnackbarState={setSnackbarState}\n            isNotification\n          />\n        );\n      case 'follow_up_email':\n        return (\n          <EditStep\n            emailData={aiStudioState.notificationData[0]}\n            handleClose={handleDismissNotification}\n            goBack={handleDismissNotification}\n            jobId={aiStudioState.notificationData[0]?.job_id}\n            applicationId={aiStudioState.notificationData[0]?.application_id}\n            setSnackbarState={setSnackbarState}\n          />\n        );\n      default:\n        return <div>Something went wrong, please contact support</div>;\n    }\n  };\n\n  const notificationText = (kind) => {\n    if (kind === 'error') {\n      return 'There was an error generating your content';\n    } else {\n      return `Your\n          ${notificationTitles[kind as keyof typeof notificationTitles]}\n          ready!`;\n    }\n  };\n\n  return (\n    <>\n      <Popper\n        open={aiStudioState.notificationData?.length > 0}\n        anchorEl={anchorEl}\n        placement={'right-end' as PopperPlacementType}\n        transition\n        sx={{ zIndex: 1255 }}\n      >\n        {({ TransitionProps }) => (\n          <Fade {...TransitionProps} timeout={700}>\n            <Box sx={classes.notificationPopperContainer}>\n              <Badge badgeContent={displayNumberOfNotifications()} sx={classes.notificationsBadge}>\n                <Box sx={classes.notificationPopper}>\n                  {aiStudioState.notificationData?.length > 0 && (\n                    <>\n                      <Box sx={classes.notificationHeader}>\n                        {notificationText(aiStudioState.notificationData[0]?.kind)}\n                      </Box>\n                      <Box sx={classes.notificationButtons}>\n                        <Button\n                          sx={classes.notificationCloseButton}\n                          onClick={handleDismissNotification}\n                        >\n                          Dismiss\n                        </Button>\n                        {aiStudioState.notificationData[0]?.kind !== 'error' && (\n                          <Button\n                            sx={classes.notificationViewButton}\n                            onClick={() => dispatch({ type: 'VIEW_NOTIFICATION' })}\n                          >\n                            View\n                          </Button>\n                        )}\n                      </Box>\n                    </>\n                  )}\n                </Box>\n                <Box sx={classes.borderBox} />\n              </Badge>\n            </Box>\n          </Fade>\n        )}\n      </Popper>\n      <Modal\n        open={aiStudioState.notificationModalOpen}\n        onClose={handleDismissNotification}\n        aria-labelledby=\"ai-studio-view-notification\"\n        aria-describedby=\"ai-studio-view-notification\"\n      >\n        <Box sx={classes.modal}>\n          <Box sx={classes.notificationModalContent}>\n            <CloseIcon onClick={handleDismissNotification} sx={classes.closeIcon} />\n            {displayNotificationContent()}\n          </Box>\n        </Box>\n      </Modal>\n      <StyledSnackbar\n        message={snackbarState.message}\n        state={snackbarState.state}\n        setSnackbarState={setSnackbarState}\n      />\n    </>\n  );\n};\n\nexport default FelixNotification;\n","import React, { Dispatch } from 'react';\nimport { Box, Button } from '@mui/material';\nimport CodeIcon from '@mui/icons-material/Code';\nimport DoneIcon from '@mui/icons-material/Done';\nimport { FelixMessageSVG } from '../../SharedComponents/Graphics/FelixSVG';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\nimport { modalTitle } from '../config';\nimport { classes } from '../styles';\nimport { AIStudioState, AIStudioAction } from '../reducer';\n\nconst DisplayResponseFooter = ({\n  editableDescription,\n  aiStudioState,\n  dispatch,\n  handleCopy,\n  copied,\n  jobFlow,\n  setGeneratedContent,\n  handleClose\n}: {\n  editableDescription: string;\n  aiStudioState: AIStudioState;\n  dispatch: Dispatch<AIStudioAction>;\n  handleCopy: () => void;\n  copied: boolean;\n  jobFlow?: boolean;\n  setGeneratedContent: (description: string) => void;\n  handleClose: () => void;\n}) => {\n  const handleAddToJobClick = () => {\n    setGeneratedContent(editableDescription);\n    handleClose();\n  };\n\n  const renderPrimaryButton = () => {\n    if (aiStudioState.generationType !== 'description') return null;\n    if (jobFlow) {\n      return (\n        <Button\n          id=\"save-tlp-new-job\"\n          sx={{ ...classes.footerContinueButton, minWidth: '146px' }}\n          endIcon={<DoneIcon />}\n          onClick={handleAddToJobClick}\n        >\n          Add to job\n        </Button>\n      );\n    } else {\n      return (\n        <CopyToClipboard text={editableDescription} onCopy={handleCopy}>\n          <Button id=\"copy-tlp-html\" sx={classes.footerContinueButton} endIcon={<CodeIcon />}>\n            {copied\n              ? aiStudioState.aiStudioFrenchEnabled\n                ? 'Copié'\n                : 'Copied'\n              : aiStudioState.aiStudioFrenchEnabled\n              ? 'Copier'\n              : 'Copy'}{' '}\n            HTML\n          </Button>\n        </CopyToClipboard>\n      );\n    }\n  };\n\n  return (\n    <Box sx={classes.footerContainer}>\n      <Box sx={classes.felixMessageContainer}>\n        <FelixMessageSVG />\n        <Box sx={{ ...classes.felixMessage, maxWidth: '432px' }}>\n          {aiStudioState.aiStudioFrenchEnabled ? (\n            <>\n              <span>Voilà!</span> Votre{' '}\n              <span>\n                {modalTitle['french'][aiStudioState.generationType as keyof typeof modalTitle]}\n              </span>{' '}\n              {aiStudioState.generationType === 'description' ? 'est' : 'sont'} prêt\n              {aiStudioState.generationType === 'description' ? '' : 's'} à l’action. Vous pouvez\n              l’utiliser tel quel ou apporter des ajustements avant de le publier.\n            </>\n          ) : (\n            <>\n              Ta-da! Your{' '}\n              <span>\n                {modalTitle['english'][aiStudioState.generationType as keyof typeof modalTitle]}\n              </span>{' '}\n              {aiStudioState.generationType === 'description' ? 'is' : 'are'} ready for action. You\n              may want to use {aiStudioState.generationType === 'description' ? 'this' : 'them'} as\n              is, or make some adjustments before publishing.\n            </>\n          )}\n        </Box>\n      </Box>\n      <Box\n        sx={{\n          ...classes.footerButtonsContainer,\n          minWidth: '310px',\n          justifyContent:\n            aiStudioState.generationType === 'description' ? 'space-around' : 'flex-end',\n          rowGap: 'none'\n        }}\n      >\n        <Button\n          id={`start-again-${aiStudioState.generationType}`}\n          sx={classes.footerRestartButton}\n          onClick={() =>\n            dispatch({\n              type: 'SET_CURRENT_STEP',\n              payload: aiStudioState.generationType === 'description' ? 1 : 5\n            })\n          }\n        >\n          {aiStudioState.aiStudioFrenchEnabled ? 'Recommencer' : 'Start again'}\n        </Button>\n        {renderPrimaryButton()}\n      </Box>\n    </Box>\n  );\n};\n\nexport default DisplayResponseFooter;\n","import React, { useState, useEffect, useMemo, Dispatch } from 'react';\nimport { Box, Button } from '@mui/material';\nimport CachedIcon from '@mui/icons-material/Cached';\nimport EditIcon from '@mui/icons-material/Edit';\nimport DoneIcon from '@mui/icons-material/Done';\nimport DisplayResponseFooter from '../Footers/DisplayResponseFooter';\nimport { modalTitle } from '../config';\nimport HtmlEditor from '../../../NewUI/Components/Utilities/HtmlEditor';\nimport ConfettiExplosion from 'react-confetti-explosion';\nimport dompurify from 'dompurify';\nimport { AIStudioAction, AIStudioState } from '../reducer';\nimport { classes } from '../styles';\nimport { classes as sharedClasses } from '../../SharedComponents/styles';\nimport CopyableQuestions from '../../SharedComponents/CopyableQuestions';\n\nconst DisplayDescription = ({\n  dispatch,\n  aiStudioState,\n  generateDescription,\n  generateQuestions,\n  jobFlow,\n  setGeneratedContent,\n  handleClose\n}: {\n  dispatch: Dispatch<AIStudioAction>;\n  aiStudioState: AIStudioState;\n  generateDescription: () => void;\n  generateQuestions: () => void;\n  jobFlow?: boolean;\n  setGeneratedContent?: (description: string) => void;\n  handleClose: () => void;\n}) => {\n  const [editableDescription, setEditableDescription] = useState(aiStudioState.generatedResponse);\n  const [isEditing, setIsEditing] = useState(false);\n  const [copied, setCopied] = useState(false);\n  const [playConfetti, setPlayConfetti] = useState(true);\n\n  const handleCopy = () => {\n    setCopied(true);\n    setTimeout(() => setCopied(false), 3000);\n  };\n\n  useEffect(() => {\n    setPlayConfetti(true);\n    const confettiTimeout = setTimeout(() => {\n      setPlayConfetti(false);\n    }, 4100);\n    return () => clearTimeout(confettiTimeout);\n  }, []);\n\n  const regenerationFunction = {\n    description: generateDescription,\n    questions: generateQuestions\n  };\n\n  const displayResponseContent = useMemo(() => {\n    if (aiStudioState.generationType === 'description') {\n      return (\n        <Box sx={{ position: 'relative', width: '100%', height: '500px' }}>\n          {isEditing ? (\n            <HtmlEditor\n              body={editableDescription}\n              onChange={setEditableDescription}\n              maxHeight={500}\n            />\n          ) : (\n            <Box\n              sx={classes.generatedResponseContainer}\n              dangerouslySetInnerHTML={{\n                __html: dompurify.sanitize(editableDescription)\n              }}\n            />\n          )}\n          <Box\n            sx={{\n              ...sharedClasses.floatingActionButton,\n              ...(window?.tinyMCE?.majorVersion === '4' && { display: 'none' })\n            }}\n            onClick={() => {\n              setIsEditing((prev) => !prev);\n            }}\n          >\n            {isEditing ? <DoneIcon /> : <EditIcon />}\n          </Box>\n        </Box>\n      );\n    } else {\n      return <CopyableQuestions questions={aiStudioState.generatedResponse} maxHeight=\"490px\" />;\n    }\n  }, [\n    aiStudioState.generatedResponse,\n    aiStudioState.generationType,\n    editableDescription,\n    isEditing\n  ]);\n\n  return (\n    <Box sx={classes.generatedContainer}>\n      {playConfetti && (\n        <Box sx={{ width: '100%', display: 'flex', justifyContent: 'center' }}>\n          <ConfettiExplosion\n            force={0.5}\n            duration={4000}\n            particleCount={120}\n            height={1000}\n            width={1000}\n          />\n        </Box>\n      )}\n      <Box sx={classes.descriptionHeader}>\n        <Box sx={classes.descriptionHeaderText}>\n          {`${aiStudioState.aiStudioFrenchEnabled ? 'Ton' : 'Your'} ${\n            modalTitle[aiStudioState.aiStudioFrenchEnabled ? 'french' : 'english'][\n              aiStudioState.generationType\n            ]\n          }`}\n        </Box>\n        <Button\n          id={`regenerate-${aiStudioState.generationType}`}\n          sx={classes.pill}\n          endIcon={<CachedIcon />}\n          onClick={\n            regenerationFunction[aiStudioState.generationType as keyof typeof regenerationFunction]\n          }\n        >\n          {aiStudioState.aiStudioFrenchEnabled ? 'Regénérer' : 'Regenerate'}\n        </Button>\n      </Box>\n      {displayResponseContent}\n      <DisplayResponseFooter\n        editableDescription={editableDescription}\n        aiStudioState={aiStudioState}\n        dispatch={dispatch}\n        handleCopy={handleCopy}\n        copied={copied}\n        jobFlow={jobFlow}\n        setGeneratedContent={setGeneratedContent}\n        handleClose={handleClose}\n      />\n    </Box>\n  );\n};\n\nexport default DisplayDescription;\n","import React, { useState, Dispatch } from 'react';\nimport { Box, Button, Checkbox, FormControl } from '@mui/material';\nimport ClearIcon from '@mui/icons-material/Clear';\nimport StyledDropdown from '../../SharedComponents/Inputs/StyledDropdown';\nimport PositionTitleInput from '../../SharedComponents/Inputs/PositionTitle';\nimport OptionalInputButtons from '../Buttons/OptionalInput';\nimport { classes } from '../styles';\nimport DynamicFooter from '../../SharedComponents/Footers/DynamicFooter';\nimport { AIStudioAction, AIStudioState } from '../reducer';\nimport SingleAttachmentSelector from '../../../NewUI/Components/Utilities/SingleAttachmentSelector';\n\nconst aiToneTypes = {\n  english: ['neutral', 'professional', 'casual', 'creative', 'excited', 'urgent', 'persuasive'],\n  french: [\n    'neutre',\n    'professionnel',\n    'décontracté',\n    'créatif',\n    'enthousiaste',\n    'urgent',\n    'persuasif'\n  ]\n};\n\nconst frenchToEnglishTonetype = {\n  neutre: 'neutral',\n  professionnel: 'professional',\n  décontracté: 'casual',\n  créatif: 'creative',\n  enthousiaste: 'excited',\n  urgent: 'urgent',\n  persuasif: 'persuasive'\n};\n\nconst englishToFrenchTonetypes = {\n  neutral: 'neutre',\n  professional: 'professionnel',\n  casual: 'décontracté',\n  creative: 'créatif',\n  excited: 'enthousiaste',\n  urgent: 'urgent',\n  persuasive: 'persuasif'\n};\n\nconst backCloseButton = {\n  jobFlow: {\n    english: 'Close',\n    french: 'Fermer'\n  },\n  studio: {\n    english: 'Back',\n    french: 'Retour'\n  }\n};\n\nconst JobDescriptionInput = ({\n  dispatch,\n  aiStudioState,\n  generateDescription,\n  jobFlow\n}: {\n  dispatch: Dispatch<AIStudioAction>;\n  aiStudioState: AIStudioState;\n  generateDescription: () => void;\n  jobFlow?: boolean;\n}) => {\n  const [positionTitle, setPositionTitle] = useState(\n    aiStudioState.jobDetails['position_title'] || ''\n  );\n  const [fileList, setFileList] = useState(aiStudioState.document || undefined);\n\n  const pillClickHandler = (pillType: string) => {\n    dispatch({ type: 'SELECT_OPTIONAL_INPUT', payload: pillType });\n  };\n\n  const handleBackClick = () => {\n    if (!jobFlow) {\n      setPositionTitle('');\n      setFileList(undefined);\n      dispatch({ type: 'GO_TO_HOME_STEP' });\n    } else {\n      dispatch({ type: 'SET_CONFIRM_CANCEL_IS_OPEN', payload: true });\n    }\n  };\n\n  const handleGenerateClick = () => {\n    setPositionTitle('');\n    generateDescription();\n  };\n\n  const handleClearAllClick = () => {\n    setPositionTitle('');\n    setFileList(undefined);\n    dispatch({ type: 'CLEAR_ALL_JOB_DETAILS' });\n  };\n\n  return (\n    <Box sx={classes.descriptionContainer}>\n      <Box sx={classes.genericContainer}>\n        <Box sx={{ display: 'flex', justifyContent: 'space-between', width: '100%' }}>\n          <Box sx={classes.fieldHeader}>\n            {aiStudioState.aiStudioFrenchEnabled ? 'Titre du poste' : 'Position title'}\n          </Box>\n          <Button sx={classes.pill} endIcon={<ClearIcon />} onClick={handleClearAllClick}>\n            {aiStudioState.aiStudioFrenchEnabled ? 'Effacer tout' : 'Clear all'}\n          </Button>\n        </Box>\n        <PositionTitleInput\n          positionTitle={positionTitle}\n          onChange={setPositionTitle}\n          aiStudioFrenchEnabled={aiStudioState.aiStudioFrenchEnabled}\n          onBlur={(value: string) =>\n            dispatch({ type: 'SET_JOB_DETAILS', payload: value, fieldName: 'position_title' })\n          }\n        />\n        <Box sx={{ marginBlock: '20px' }}>\n          <Box sx={classes.fieldSubHeader}>\n            {aiStudioState.aiStudioFrenchEnabled ? 'Position du poste' : 'Position description'}\n          </Box>\n          <SingleAttachmentSelector\n            setFile={(file) => {\n              dispatch({ type: 'SET_DOCUMENT', payload: file });\n              setFileList(file);\n            }}\n            file={aiStudioState.document || fileList}\n            maxSize={50000000}\n            performUpload={false}\n          />\n        </Box>\n      </Box>\n      <Box sx={classes.optionalInformationContainer}>\n        <Box sx={classes.fieldSubHeader}>\n          {aiStudioState.aiStudioFrenchEnabled\n            ? 'Informations facultatives'\n            : 'Optional information'}\n        </Box>\n        <OptionalInputButtons\n          jobDetails={aiStudioState.jobDetails}\n          pillClickHandler={pillClickHandler}\n          aiStudioFrenchEnabled={aiStudioState.aiStudioFrenchEnabled}\n        />\n      </Box>\n      <FormControl fullWidth>\n        <Box sx={classes.fieldSubHeader}>\n          {aiStudioState.aiStudioFrenchEnabled ? 'Tonalité générée' : 'Generated tone'}\n        </Box>\n        <StyledDropdown\n          id=\"generated-tone\"\n          value={\n            aiStudioState.aiStudioFrenchEnabled\n              ? englishToFrenchTonetypes[aiStudioState.generatedTone]\n              : aiStudioState.generatedTone\n          }\n          onChange={(value) =>\n            dispatch({\n              type: 'SET_GENERATED_TONE',\n              payload: aiStudioState.aiStudioFrenchEnabled ? frenchToEnglishTonetype[value] : value\n            })\n          }\n          options={aiToneTypes[aiStudioState.aiStudioFrenchEnabled ? 'french' : 'english']}\n        />\n      </FormControl>\n      <Box sx={classes.formContainer}>\n        <Checkbox\n          sx={classes.checkbox}\n          checked={aiStudioState.sendEmail}\n          onChange={(e) => dispatch({ type: 'SET_SEND_EMAIL', payload: e.target.checked })}\n        />\n        <Box sx={classes.formLabel}>\n          {aiStudioState.aiStudioFrenchEnabled\n            ? \"Envoyez-moi par email une copie de ma page d'atterrissage pour les candidats (talent landing page).\"\n            : 'Email me a copy of my talent landing page'}\n        </Box>\n      </Box>\n      <DynamicFooter\n        handleSecondaryButtonClick={handleBackClick}\n        handlePrimaryButtonClick={handleGenerateClick}\n        secondaryButtonText={\n          backCloseButton[jobFlow ? 'jobFlow' : 'studio'][\n            aiStudioState.aiStudioFrenchEnabled ? 'french' : 'english'\n          ]\n        }\n        primaryButtonText={aiStudioState.aiStudioFrenchEnabled ? 'Générer' : 'Generate'}\n        primaryButtonID=\"write-tlp-generate-button\"\n        felixMessage={\n          aiStudioState.aiStudioFrenchEnabled ? (\n            <>\n              Dites-moi le titre du poste que vous souhaitez afficher. Tous les autres champs sont{' '}\n              <span>facultatifs</span> mais utiles pour moi.\n            </>\n          ) : (\n            <>\n              Tell me your position title. All other fields are <span>optional</span> but helpful\n              for me.\n            </>\n          )\n        }\n        felixMessageMaxWidth=\"325px\"\n        disablePrimaryButton={positionTitle === ''}\n      />\n    </Box>\n  );\n};\n\nexport default JobDescriptionInput;\n","import React, { useState, useCallback, Dispatch, useEffect } from 'react';\nimport { Box, OutlinedInput } from '@mui/material';\nimport DynamicFooter from '../../SharedComponents/Footers/DynamicFooter';\nimport { placeholderText, felixMessageText, isMultiLineInput } from '../config';\nimport { AIStudioAction, AIStudioState } from '../reducer';\nimport { convertPreferredSkills } from '../config';\nimport { classes } from '../styles';\n\nconst OptionalInput = ({\n  dispatch,\n  aiStudioState\n}: {\n  dispatch: Dispatch<AIStudioAction>;\n  aiStudioState: AIStudioState;\n}) => {\n  const [inputValue, setInputValue] = useState('');\n  const { optionalInputType, jobDetails, currentStep } = aiStudioState;\n\n  const handleBackClick = () => {\n    dispatch({ type: 'SET_CURRENT_STEP', payload: 1 });\n  };\n\n  const handleDoneClick = useCallback(() => {\n    dispatch({\n      type: 'SET_JOB_DETAILS',\n      payload: inputValue,\n      fieldName: optionalInputType\n    });\n    dispatch({ type: 'SET_CURRENT_STEP', payload: 1 });\n  }, [optionalInputType, dispatch, inputValue]);\n\n  useEffect(() => {\n    const handleKeyDown = (e: KeyboardEvent) => {\n      if (e.key === 'Enter' && e.shiftKey) {\n        handleDoneClick();\n      }\n    };\n    document.addEventListener('keydown', handleKeyDown);\n    return () => {\n      document.removeEventListener('keydown', handleKeyDown);\n    };\n  }, [handleDoneClick]);\n\n  useEffect(() => {\n    if (currentStep !== 2 && !jobDetails[optionalInputType as keyof typeof jobDetails]) return;\n    setInputValue(jobDetails[optionalInputType as keyof typeof jobDetails]);\n  }, [currentStep, jobDetails, optionalInputType]);\n\n  return (\n    <Box sx={classes.descriptionContainer}>\n      <Box sx={classes.genericContainer}>\n        <Box sx={classes.fieldHeader}>\n          {\n            convertPreferredSkills[aiStudioState.aiStudioFrenchEnabled ? 'french' : 'english'][\n              optionalInputType\n            ]\n          }\n        </Box>\n        <OutlinedInput\n          id=\"option-field-input\"\n          sx={{\n            ...classes.fieldInput,\n            ...(isMultiLineInput[optionalInputType as keyof typeof isMultiLineInput] && {\n              height: '142px',\n              padding: '0px 16px 4px 16px'\n            })\n          }}\n          placeholder={\n            placeholderText[aiStudioState.aiStudioFrenchEnabled ? 'french' : 'english'][\n              optionalInputType\n            ]\n          }\n          value={inputValue}\n          onChange={(e) => setInputValue(e.target.value)}\n          multiline={isMultiLineInput[optionalInputType as keyof typeof isMultiLineInput]}\n          rows={isMultiLineInput[optionalInputType as keyof typeof isMultiLineInput] ? 5 : 1}\n        />\n      </Box>\n      <DynamicFooter\n        handleSecondaryButtonClick={handleBackClick}\n        handlePrimaryButtonClick={handleDoneClick}\n        primaryButtonText={aiStudioState.aiStudioFrenchEnabled ? 'Terminé' : 'Done'}\n        secondaryButtonText={aiStudioState.aiStudioFrenchEnabled ? 'Retour' : 'Back'}\n        felixMessage={\n          felixMessageText[optionalInputType as keyof typeof felixMessageText][\n            aiStudioState.aiStudioFrenchEnabled ? 'french' : 'english'\n          ]\n        }\n        felixMessageMaxWidth=\"450px\"\n      />\n    </Box>\n  );\n};\n\nexport default OptionalInput;\n","import React, { useState, Dispatch } from 'react';\nimport { Box, FormControl } from '@mui/material';\nimport PositionTitleInput from '../../SharedComponents/Inputs/PositionTitle';\nimport PreferredSkillsInput from '../../SharedComponents/Inputs/PreferredSkills';\nimport StyledDropdown from '../../SharedComponents/Inputs/StyledDropdown';\nimport DynamicFooter from '../../SharedComponents/Footers/DynamicFooter';\nimport { questionTypes } from '../../SharedComponents/sharedConfig';\nimport { classes } from '../styles';\nimport { AIStudioAction, AIStudioState } from '../reducer';\n\nconst QuestionsInput = ({\n  dispatch,\n  aiStudioState,\n  generateQuestions\n}: {\n  dispatch: Dispatch<AIStudioAction>;\n  aiStudioState: AIStudioState;\n  generateQuestions: () => void;\n}) => {\n  const [positionTitle, setPositionTitle] = useState(aiStudioState.jobDetails.position_title || '');\n  const [preferredSkills, setPreferredSkills] = useState(\n    aiStudioState.jobDetails.preferred_skills || ''\n  );\n\n  const handleGenerateClick = () => {\n    setPositionTitle('');\n    setPreferredSkills('');\n    generateQuestions();\n  };\n\n  return (\n    <Box sx={classes.descriptionContainer}>\n      <Box sx={classes.genericContainer}>\n        <Box sx={classes.fieldHeader}>Position title</Box>\n        <PositionTitleInput\n          positionTitle={positionTitle}\n          onChange={setPositionTitle}\n          onBlur={(value: string) =>\n            dispatch({ type: 'SET_JOB_DETAILS', payload: value, fieldName: 'position_title' })\n          }\n        />\n      </Box>\n      <Box sx={classes.genericContainer}>\n        <Box sx={classes.fieldSubHeader}>Preferred skills (optional)</Box>\n        <PreferredSkillsInput\n          preferredSkills={preferredSkills}\n          onChange={setPreferredSkills}\n          onBlur={(value: string) =>\n            dispatch({ type: 'SET_JOB_DETAILS', payload: value, fieldName: 'Preferred_skills' })\n          }\n        />\n      </Box>\n      <Box sx={classes.genericContainer}>\n        <FormControl fullWidth>\n          <Box sx={classes.fieldSubHeader}>Question type</Box>\n          <StyledDropdown\n            id=\"question-type\"\n            value={aiStudioState.questionType}\n            onChange={(value: string) => dispatch({ type: 'SET_QUESTION_TYPE', payload: value })}\n            options={questionTypes}\n          />\n        </FormControl>\n      </Box>\n      <DynamicFooter\n        handleSecondaryButtonClick={() => dispatch({ type: 'GO_TO_HOME_STEP' })}\n        handlePrimaryButtonClick={handleGenerateClick}\n        secondaryButtonText=\"Back\"\n        primaryButtonText=\"Generate\"\n        primaryButtonID=\"write-screening-questions-generate-button\"\n        felixMessage={\n          <>\n            Let me help you write your <span>screening questions</span>!\n          </>\n        }\n        disablePrimaryButton={positionTitle === ''}\n      />\n    </Box>\n  );\n};\n\nexport default QuestionsInput;\n","import React, { Dispatch } from 'react';\nimport { Box, Button, FormControlLabel, Switch } from '@mui/material';\nimport { classes } from '../styles';\nimport { classes as sharedClasses } from '../../SharedComponents/styles';\nimport { FelixSVG } from '../../SharedComponents/Graphics/FelixSVG';\nimport { AIStudioAction, AIStudioState } from '../reducer';\n\nexport const WelcomePage = ({\n  dispatch,\n  aiStudioState,\n  aiStudioFrenchEnabled\n}: {\n  dispatch: Dispatch<AIStudioAction>;\n  aiStudioState: AIStudioState;\n  aiStudioFrenchEnabled: boolean;\n}) => {\n  return (\n    <Box sx={classes.welcomeContainer}>\n      <Box sx={classes.felixContainer}>\n        <FelixSVG />\n      </Box>\n      <Box sx={classes.headersAndOptionsContainer}>\n        <Box\n          sx={{\n            ...classes.header,\n            ...(!aiStudioState.showCaret && { '& span': { borderRight: 'none', lineHeight: '1' } }),\n            ...(aiStudioState.aiStudioFrenchEnabled && { height: '136px' })\n          }}\n        >\n          <span>{aiStudioState.welcomeHeader}</span>\n        </Box>\n        <Box sx={classes.subHeader}>\n          {aiStudioState.aiStudioFrenchEnabled\n            ? 'Comment puis-je vous aider aujourd’hui'\n            : 'What can I help you with today'}\n          ?\n        </Box>\n        <Box sx={classes.optionsContainer}>\n          <Button\n            id=\"write-a-tlp\"\n            sx={classes.option}\n            onClick={() => dispatch({ type: 'SELECT_WRITE_TLP' })}\n          >\n            {aiStudioState.aiStudioFrenchEnabled\n              ? 'Rédigez une description de poste'\n              : 'Write a talent landing page'}\n          </Button>\n          <Button\n            id=\"write-screening-questions\"\n            sx={classes.option}\n            onClick={() => dispatch({ type: 'SELECT_WRITE_SCREENING_QUESTION' })}\n          >\n            {aiStudioState.aiStudioFrenchEnabled\n              ? 'Aidez-moi avec des questions de sélection'\n              : 'Help me with some screening questions'}\n          </Button>\n          {aiStudioFrenchEnabled && (\n            <Box>\n              <FormControlLabel\n                sx={\n                  !aiStudioState.aiStudioFrenchEnabled\n                    ? { ...sharedClasses.switchLabels, ...sharedClasses.labelActive }\n                    : sharedClasses.switchLabels\n                }\n                control={\n                  <Switch\n                    sx={\n                      aiStudioState.aiStudioFrenchEnabled\n                        ? sharedClasses.aiSwitchActive\n                        : sharedClasses.switch\n                    }\n                    checked={aiStudioState.aiStudioFrenchEnabled}\n                    onChange={() => dispatch({ type: 'TOGGLE_FRENCH' })}\n                  />\n                }\n                label={aiStudioState.aiStudioFrenchEnabled ? 'Français' : 'French'}\n                labelPlacement=\"end\"\n              />\n            </Box>\n          )}\n        </Box>\n      </Box>\n    </Box>\n  );\n};\n","import React from 'react';\n\nexport const welcomeMessage = {\n  english: \"Hello! I'm Felix.\",\n  french: 'Salut! Je suis Felix.'\n};\n\nexport const defaultJobDetails = {\n  position_title: '',\n  preferred_skills: '',\n  position_responsibilities: '',\n  position_location: '',\n  salary: '',\n  company_name: '',\n  company_description: '',\n  company_benefits: ''\n};\n\n// OptionalInput.tsx Variables\n\nexport const placeholderText = {\n  english: {\n    preferred_skills: \"eg. 'Attention to detail, time management'\",\n    position_responsibilities:\n      \"eg. 'Designing user interfaces, creating wireframes, conducting user research'\",\n    position_location: \"eg. 'Remote, Brisbane, Australia'\",\n    salary: \"eg. '$100,000 - $120,000'\",\n    company_name: \"eg. 'Google'\",\n    company_description:\n      \"eg. 'We are a tech company that specialises in AI technology. Our mission is to make the world a better place by creating AI that can help people.'\",\n    company_benefits:\n      \"eg. 'Flexible working hours, quarterly team building events, unlimited snacks, employee gym membership'\"\n  },\n  french: {\n    preferred_skills: \"ex. 'Attention aux détails, gestion du temps'\",\n    position_responsibilities:\n      \"ex. 'Conception d'interfaces utilisateur, création de maquettes, réalisation de recherches utilisateur'\",\n    position_location: \"ex. 'À distance, Brisbane, Australie'\",\n    salary: \"ex. '100 000 $ - 120 000 $'\",\n    company_name: \"ex. 'Google'\",\n    company_description:\n      \"ex. 'Nous sommes une entreprise technologique spécialisée dans la technologie de l'IA. Notre mission est de rendre le monde meilleur en créant une IA capable d'aider les gens.'\",\n    company_benefits:\n      \"ex. 'Horaires de travail flexibles, événements trimestriels de renforcement d'équipe, collations illimitées, adhésion à une salle de sport pour les employés'\"\n  }\n};\n\nexport const felixMessageText = {\n  preferred_skills: {\n    english: (\n      <>\n        <span>Preferred skills</span> can include include soft skills such as communication and time\n        management, or technical skills.\n      </>\n    ),\n    french: (\n      <>\n        <span>Les compétences préférées</span> peuvent inclure des compétences douces telles que la\n        communication et la gestion du temps, ou des compétences techniques.\n      </>\n    )\n  },\n  position_responsibilities: {\n    english: (\n      <>\n        <span>Position responsibilities</span> are the tasks that the candidate will be expected to\n        perform.\n      </>\n    ),\n    french: (\n      <>\n        <span>Les responsabilités du poste</span> sont les tâches que le candidat sera censé\n        accomplir.\n      </>\n    )\n  },\n  position_location: {\n    english: (\n      <>\n        <span>Position location</span> is the location of the position and can include remote work\n        with preferred locations.\n      </>\n    ),\n    french: (\n      <>\n        <span>La localisation du poste</span> est l'endroit où se situe le poste et peut inclure le\n        travail à distance avec des lieux préférés.\n      </>\n    )\n  },\n  salary: {\n    english: (\n      <>\n        <span>Salary</span> is the salary range for the position. You can include bonuses,\n        superannuation and other incentives.\n      </>\n    ),\n    french: (\n      <>\n        <span>Salaire</span> est la fourchette de salaire pour le poste. Vous pouvez inclure des\n        bonus, des pensions et d'autres incitations.\n      </>\n    )\n  },\n  company_name: {\n    english: (\n      <>\n        Let me know the <span>name of the company</span> that is hiring, so I can include it in the\n        job description.\n      </>\n    ),\n    french: (\n      <>\n        Faites-moi savoir le <span>nom de l'entreprise</span> qui embauche, pour que je puisse\n        l'inclure dans la description du poste.\n      </>\n    )\n  },\n  company_description: {\n    english: (\n      <>\n        The <span>company description</span> should be a short description of the company. This\n        could include the company&apos;s mission, vision, and values.\n      </>\n    ),\n    french: (\n      <>\n        La <span>description de l'entreprise</span> devrait être une brève description de\n        l'entreprise. Cela pourrait inclure la mission, la vision et les valeurs de l'entreprise.\n      </>\n    )\n  },\n  company_benefits: {\n    english: (\n      <>\n        <span>Company benefits</span> are the benefits that the company offers, such as flexible\n        hours, free lunch on Fridays, or a gym membership.\n      </>\n    ),\n    french: (\n      <>\n        <span>Les avantages de l'entreprise</span> sont les avantages que l'entreprise offre, comme\n        des horaires flexibles, un déjeuner gratuit le vendredi ou une adhésion à une salle de\n        sport.\n      </>\n    )\n  }\n};\n\nexport const isMultiLineInput = {\n  preferred_skills: false,\n  position_responsibilities: true,\n  position_location: false,\n  salary: false,\n  company_name: false,\n  company_description: true,\n  company_benefits: true\n};\n\n// LoadingResponse.tsx Variables\n\nconst loadingType = {\n  description: 'talent landing page',\n  questions: 'screening questions',\n  social: 'social media post',\n  advertisement: 'job board advertisement',\n  interview: 'interview questions',\n  summary: 'candidate summaries'\n};\n\nexport const generateLoadingText = (generationType: string) => [\n  `Sit tight! I'm drafting your ${loadingType[generationType as keyof typeof loadingType]}`,\n  'Waving the wand of computational conjuring',\n  'Researching similar roles',\n  'Crafting a masterpiece of expression',\n  'Exploring the job market',\n  'Rising like a phoenix from the ashes of data',\n  'Doing the work to save you time'\n];\n\n// DisplayResponse.tsx Variables\n\nexport const modalTitle = {\n  english: {\n    description: 'draft talent landing page',\n    questions: 'screening questions',\n    advertisement: 'job board advertisement'\n  },\n  french: {\n    description: 'brouillon de description de poste',\n    questions: 'questions de sélection',\n    advertisement: 'annonce sur un site d’emploi'\n  }\n};\n\nexport const notificationTitles = {\n  bulk_summary: 'Application Summaries are',\n  interview_questions: 'Interview Questions are',\n  follow_up_email: 'Follow Up Email is'\n};\n\n// French translation\nexport const convertPreferredSkills = {\n  english: {\n    preferred_skills: 'Preferred skills',\n    position_responsibilities: 'Position responsibilities',\n    position_location: 'Position location',\n    salary: 'Salary',\n    company_name: 'Company name',\n    company_description: 'Company description',\n    company_benefits: 'Company benefits'\n  },\n  french: {\n    preferred_skills: 'Compétences préférées',\n    position_responsibilities: 'Responsabilités du poste',\n    position_location: 'Emplacement du poste',\n    salary: 'Salaire',\n    company_name: \"Nom de l'entreprise\",\n    company_description: \"Description de l'entreprise\",\n    company_benefits: \"Avantages de l'entreprise\"\n  }\n};\n","import React, { useState, Dispatch, SetStateAction } from 'react';\nimport { Box, FormControl } from '@mui/material';\nimport PositionTitleInput from '../SharedComponents/Inputs/PositionTitle';\nimport PreferredSkillsInput from '../SharedComponents/Inputs/PreferredSkills';\nimport StyledDropdown from '../SharedComponents/Inputs/StyledDropdown';\nimport DynamicFooter from '../SharedComponents/Footers/DynamicFooter';\nimport DisplayHTMLCollapsible from '../SharedComponents/DisplayHTMLCollapsible';\nimport ToggleButtons from '../SharedComponents/Buttons/ToggleButtons';\nimport { questionTypes } from '../SharedComponents/sharedConfig';\nimport { classes } from './styles';\n\nconst toggleButtonOptions = [\n  {\n    value: 'skills',\n    label: 'Use preferred skills'\n  },\n  {\n    value: 'description',\n    label: 'Use job description'\n  }\n];\n\nexport default function AIStudioForm({\n  jobDescription,\n  positionTitle,\n  setPositionTitle,\n  preferredSkills,\n  setPreferredSkills,\n  questionType,\n  setQuestionType,\n  jobInformationSource,\n  setJobInformationSource,\n  generateQuestions\n}: {\n  jobDescription?: string;\n  positionTitle: string;\n  setPositionTitle: Dispatch<SetStateAction<string>>;\n  preferredSkills: string;\n  setPreferredSkills: Dispatch<SetStateAction<string>>;\n  questionType: string;\n  setQuestionType: Dispatch<SetStateAction<string>>;\n  jobInformationSource: string;\n  setJobInformationSource: Dispatch<SetStateAction<string>>;\n  generateQuestions: () => void;\n}) {\n  const [collapsed, setCollapsed] = useState(true);\n  return (\n    <Box sx={{ ...classes.aiQuestionsContainer, rowGap: '42px' }}>\n      <Box sx={classes.genericContainer}>\n        <Box sx={classes.fieldHeader}>Position title</Box>\n        <PositionTitleInput positionTitle={positionTitle} onChange={setPositionTitle} />\n      </Box>\n      {jobDescription && (\n        <Box sx={classes.genericContainer}>\n          <ToggleButtons\n            value={jobInformationSource}\n            setValue={setJobInformationSource}\n            options={toggleButtonOptions}\n          />\n        </Box>\n      )}\n      {jobInformationSource === 'skills' || !jobDescription ? (\n        <Box sx={classes.genericContainer}>\n          <Box sx={classes.fieldSubHeader}>Preferred skills (optional)</Box>\n          <PreferredSkillsInput preferredSkills={preferredSkills} onChange={setPreferredSkills} />\n        </Box>\n      ) : (\n        <Box sx={classes.genericContainer}>\n          <Box sx={classes.fieldSubHeader}>Job description</Box>\n          <DisplayHTMLCollapsible\n            content={jobDescription}\n            collapsed={collapsed}\n            setCollapsed={setCollapsed}\n          />\n        </Box>\n      )}\n      <Box sx={classes.genericContainer}>\n        <FormControl fullWidth>\n          <Box sx={classes.fieldSubHeader}>Question type</Box>\n          <StyledDropdown\n            id=\"generated-tone\"\n            value={questionType}\n            onChange={setQuestionType}\n            options={questionTypes}\n          />\n        </FormControl>\n      </Box>\n      <DynamicFooter\n        handlePrimaryButtonClick={generateQuestions}\n        primaryButtonText=\"Generate\"\n        primaryButtonID=\"generate-questions-integration-button\"\n        disablePrimaryButton={positionTitle === ''}\n        felixMessage={\n          <>\n            Let me help you write your <span>screening questions</span>!\n          </>\n        }\n      />\n    </Box>\n  );\n}\n","import React, { useState, Dispatch, SetStateAction, useCallback, useRef } from 'react';\nimport { Box, Modal } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { StyledSnackbarProps } from '../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport { classes } from './styles';\nimport Api from '../../NewUI/Job/API';\nimport AIStudioForm from './AIStudioForm';\nimport LoadingResponse from '../SharedComponents/Steps/LoadingResponse';\nimport AIStudioResponse from './AIStudioResponse';\nimport ErrorScreen from '../SharedComponents/Steps/ErrorScreen';\nimport { IGeneratedContent } from '../NewJobIntegration/AIStudioNewJob';\nimport { convertToLocalEnglish } from '../../NewUI/Components/Utilities/convertToLocalEnglish';\nimport { LIST_ITEMS_REGEX } from '../SharedComponents/sharedConfig';\n\nexport interface IQuestion {\n  selected?: boolean;\n  title: string;\n  enabled: boolean;\n  required: boolean;\n  rateable: boolean;\n  confidential: boolean;\n}\n\nexport default function AIStudioField({\n  jobId,\n  jobDescription,\n  setSnackbar,\n  modalsOpen,\n  setModalsOpen,\n  getQuestions,\n  jobTitle,\n  setGeneratedContent,\n  userPermissions\n}: {\n  jobId?: number;\n  jobDescription?: string;\n  setSnackbar?: StyledSnackbarProps['setSnackbarState'];\n  modalsOpen: boolean;\n  setModalsOpen: (open: boolean) => void;\n  getQuestions?: () => void;\n  jobTitle: string;\n  setGeneratedContent?: Dispatch<SetStateAction<IGeneratedContent>>;\n  userPermissions: Record<string, Record<string, boolean>>;\n}) {\n  const [questionType, setQuestionType] = useState<string>('general');\n  const [positionTitle, setPositionTitle] = useState(jobTitle);\n  const [preferredSkills, setPreferredSkills] = useState('');\n  const [generatedResponse, setGeneratedResponse] = useState<IQuestion[] | undefined>(undefined);\n  const [generationError, setGenerationError] = useState(false);\n  const [currentStep, setCurrentStep] = useState(0);\n  const [isCreating, setIsCreating] = useState(false);\n  const [jobInformationSource, setJobInformationSource] = useState('skills');\n  const questionsController = useRef<AbortController | null>(null);\n\n  const handleClose = () => {\n    // abort any pending requests\n    questionsController?.current?.abort();\n\n    // close the modal\n    setModalsOpen(!modalsOpen);\n\n    // reset the state to defaults\n    setCurrentStep(0);\n    setPositionTitle(jobTitle);\n    setGenerationError(false);\n    setGeneratedResponse(undefined);\n    setQuestionType('general');\n    setPreferredSkills('');\n  };\n\n  const generateQuestions = useCallback(async () => {\n    questionsController.current = new AbortController();\n    setCurrentStep(1);\n    try {\n      const response = await fetch('/api/v4/ai_studio', {\n        signal: questionsController.current.signal,\n        method: 'POST',\n        headers: {\n          'Content-Type': 'application/json'\n        },\n        body: JSON.stringify({\n          job_id: jobId,\n          ai_studio: {\n            type: 'questions',\n            question_type: questionType,\n            job_details: {\n              position_title: positionTitle,\n              preferred_skills: preferredSkills\n            },\n            number_of_questions: 3,\n            ...(jobInformationSource === 'description' && {\n              use_description: true,\n              job_description: jobDescription\n            })\n          }\n        })\n      }).then((res) => res.json());\n      if (response && response.result && response.result.length > 30) {\n        const localEnglishQuestions = convertToLocalEnglish(response.result);\n        const questions = localEnglishQuestions\n          .replace(LIST_ITEMS_REGEX, '')\n          .split('**')\n          .slice(0, -1)\n          .map((question) => {\n            return {\n              selected: false,\n              title: question,\n              enabled: true,\n              required: false,\n              rateable: false\n            };\n          });\n        setGeneratedResponse(questions);\n      } else {\n        throw new Error('No response from AI API');\n      }\n    } catch (error) {\n      console.error(error);\n      setGenerationError(true);\n    } finally {\n      if (!questionsController.current.signal.aborted) {\n        setCurrentStep(2);\n      }\n    }\n  }, [jobDescription, jobInformationSource, positionTitle, preferredSkills, questionType]);\n\n  const handleSubmit = async () => {\n    setIsCreating(true);\n    const requests = generatedResponse?.map((question) => {\n      if (!question.selected) return;\n      return Api.newField({ 'X-api-authenticate': 'NONE' }, jobId || -1, {\n        field: {\n          title: question.title.replace(/\\n/g, ''),\n          enabled: question.enabled,\n          required: question.required,\n          rateable: question.rateable,\n          confidential: question.confidential,\n          field_type: 'text_area_field'\n        }\n      });\n    });\n    try {\n      await Promise.all(requests);\n      setSnackbar &&\n        setSnackbar({\n          message: 'Fields have been created',\n          state: 'success'\n        });\n    } catch (error) {\n      console.log(error);\n      setSnackbar &&\n        setSnackbar({\n          message: 'Fields could not be created',\n          state: 'error'\n        });\n    } finally {\n      handleClose();\n      setIsCreating(false);\n      getQuestions && getQuestions();\n    }\n  };\n\n  const handleAddToNewJob = () => {\n    const newQuestions =\n      generatedResponse\n        ?.filter((q) => q.selected)\n        .map((question) => {\n          return {\n            title: question.title.replace(/\\n/g, ''),\n            enabled: question.enabled,\n            required: question.required,\n            rateable: question.rateable\n          };\n        }) || [];\n    setGeneratedContent &&\n      setGeneratedContent((prev) => ({\n        ...prev,\n        screeningQuestions: [...prev.screeningQuestions, ...newQuestions]\n      }));\n    handleClose();\n  };\n\n  const stepSelect = () => {\n    if (generationError) {\n      return (\n        <ErrorScreen\n          regenerateCallback={generateQuestions}\n          setGenerationError={setGenerationError}\n          backToHome={() => setCurrentStep(0)}\n        />\n      );\n    }\n    switch (currentStep) {\n      case 0:\n        return (\n          <AIStudioForm\n            jobDescription={jobDescription}\n            positionTitle={positionTitle}\n            setPositionTitle={setPositionTitle}\n            preferredSkills={preferredSkills}\n            setPreferredSkills={setPreferredSkills}\n            questionType={questionType}\n            setQuestionType={setQuestionType}\n            generateQuestions={generateQuestions}\n            jobInformationSource={jobInformationSource}\n            setJobInformationSource={setJobInformationSource}\n          />\n        );\n      case 1:\n        return <LoadingResponse generationType=\"questions\" />;\n      case 2:\n        return (\n          <AIStudioResponse\n            generatedResponse={generatedResponse}\n            setGeneratedResponse={setGeneratedResponse}\n            generateQuestions={generateQuestions}\n            setCurrentStep={setCurrentStep}\n            handleSubmit={jobId ? handleSubmit : handleAddToNewJob}\n            isCreating={isCreating}\n            userPermissions={userPermissions}\n          />\n        );\n      default:\n        return null;\n    }\n  };\n\n  return (\n    <Modal open={modalsOpen} onClose={handleClose} aria-labelledby=\"new-field-modal\">\n      <Box sx={classes.aiModal}>\n        <CloseIcon onClick={handleClose} sx={classes.closeIcon} />\n        {stepSelect()}\n      </Box>\n    </Modal>\n  );\n}\n","import React, { useRef, Dispatch, SetStateAction } from 'react';\nimport { Box, Button, Checkbox } from '@mui/material';\nimport CachedIcon from '@mui/icons-material/Cached';\nimport { IQuestion } from './AIStudioQuestions';\nimport { classes } from './styles';\nimport ConfettiExplosion from 'react-confetti-explosion';\nimport QuestionSwitch from '../SharedComponents/Inputs/Switch';\nimport ResponseFooter from './Footers/ResponseFooter';\n\nexport default function AIStudioResponse({\n  generatedResponse,\n  setGeneratedResponse,\n  generateQuestions,\n  setCurrentStep,\n  handleSubmit,\n  isCreating,\n  userPermissions\n}: {\n  generatedResponse: IQuestion[] | undefined;\n  setGeneratedResponse: Dispatch<SetStateAction<IQuestion[] | undefined>>;\n  generateQuestions: () => void;\n  setCurrentStep: Dispatch<SetStateAction<number>>;\n  handleSubmit: () => void;\n  isCreating: boolean;\n  userPermissions: Record<string, Record<string, boolean>>;\n}) {\n  const playConfetti = useRef(true);\n  setTimeout(() => {\n    playConfetti.current = false;\n  }, 3500);\n  if (generatedResponse === undefined) {\n    return (\n      <Box sx={classes.aiQuestionsContainer}>\n        There was an error generating your questions. Please try again.\n      </Box>\n    );\n  }\n\n  const addButtonText = `Add ${\n    generatedResponse.filter((item) => item.selected).length > 0\n      ? '(' + generatedResponse.filter((item) => item.selected).length + ')'\n      : ''\n  }`;\n\n  const handleSwitchChange = (index: number, type: string) => {\n    playConfetti.current && (playConfetti.current = false);\n    const newQuestions = [...generatedResponse];\n    switch (type) {\n      case 'enabled':\n        newQuestions[index].enabled = !newQuestions[index].enabled;\n        break;\n      case 'required':\n        newQuestions[index].required = !newQuestions[index].required;\n        break;\n      case 'rateable':\n        newQuestions[index].rateable = !newQuestions[index].rateable;\n        break;\n      case 'confidential':\n        newQuestions[index].confidential = !newQuestions[index].confidential;\n        break;\n      default:\n        break;\n    }\n    setGeneratedResponse(newQuestions);\n  };\n\n  const handleSelectQuestion = (index: number) => {\n    playConfetti.current && (playConfetti.current = false);\n    const newQuestions = [...generatedResponse];\n    newQuestions[index].selected = !newQuestions[index].selected;\n    setGeneratedResponse(newQuestions);\n  };\n\n  return (\n    <>\n      {playConfetti.current && (\n        <Box sx={{ width: '100%', display: 'flex', justifyContent: 'center' }}>\n          <ConfettiExplosion\n            force={0.5}\n            duration={4000}\n            particleCount={120}\n            height={1000}\n            width={1000}\n          />\n        </Box>\n      )}\n      <Box sx={classes.aiQuestionsContainer}>\n        <Box sx={classes.descriptionHeader}>\n          <Box sx={classes.descriptionHeaderText}>Your screening questions</Box>\n          <Button\n            id=\"regenerate-questions-integration-button\"\n            sx={classes.pill}\n            endIcon={<CachedIcon />}\n            onClick={generateQuestions}\n          >\n            Regenerate\n          </Button>\n        </Box>\n        <Box sx={classes.questionsContainer}>\n          {generatedResponse.map((item, index) => (\n            <Box sx={classes.question} key={index}>\n              <Box>\n                <Checkbox\n                  sx={classes.checkbox}\n                  checked={item.selected}\n                  onChange={() => handleSelectQuestion(index)}\n                />\n              </Box>\n              <Box sx={{ display: 'flex', flexDirection: 'column', rowGap: '16px' }}>\n                <Box sx={{ marginTop: '7px' }}>{item.title}</Box>\n                <Box>\n                  <Box sx={{ display: 'flex' }}>\n                    <QuestionSwitch\n                      item={item}\n                      index={index}\n                      type=\"enabled\"\n                      label=\"Enabled\"\n                      onChange={handleSwitchChange}\n                    />\n                    <QuestionSwitch\n                      item={item}\n                      index={index}\n                      type=\"required\"\n                      label=\"Required\"\n                      onChange={handleSwitchChange}\n                    />\n                    <QuestionSwitch\n                      item={item}\n                      index={index}\n                      type=\"rateable\"\n                      label=\"Rateable\"\n                      onChange={handleSwitchChange}\n                    />\n                    <QuestionSwitch\n                      item={item}\n                      index={index}\n                      type=\"confidential\"\n                      label=\"Confidential\"\n                      onChange={handleSwitchChange}\n                    />\n                  </Box>\n                </Box>\n              </Box>\n              {generatedResponse[index].confidential && (\n                <Box sx={{ padding: '0 6px', color: '#838383', fontSize: '12px' }}>\n                  <span style={{ fontWeight: 'bold' }}>Confidential Setting Enabled:</span> For DE&I\n                  compliance, only authorised users (HR Admins), can view responses. Hiring Managers\n                  will not have access.\n                </Box>\n              )}\n            </Box>\n          ))}\n        </Box>\n        <ResponseFooter\n          generatedResponse={generatedResponse}\n          setCurrentStep={setCurrentStep}\n          handleSubmit={handleSubmit}\n          isCreating={isCreating}\n          addButtonText={addButtonText}\n        />\n      </Box>\n    </>\n  );\n}\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { Box, Button, CircularProgress } from '@mui/material';\nimport { FelixMessageSVG } from '../../SharedComponents/Graphics/FelixSVG';\nimport { IQuestion } from '../AIStudioQuestions';\nimport { classes } from '../styles';\n\nconst ResponseFooter = ({\n  generatedResponse,\n  setCurrentStep,\n  handleSubmit,\n  isCreating,\n  addButtonText\n}: {\n  generatedResponse: IQuestion[] | undefined;\n  setCurrentStep: Dispatch<SetStateAction<number>>;\n  handleSubmit: () => void;\n  isCreating: boolean;\n  addButtonText: string;\n}) => {\n  return (\n    <Box sx={classes.footerContainer}>\n      <Box sx={classes.felixMessageContainer}>\n        <FelixMessageSVG />\n        <Box sx={classes.felixMessage}>\n          Ta-da! Your <span>screening questions</span> are ready for action, let&apos;s get that\n          position filled!\n        </Box>\n      </Box>\n      <Box\n        sx={{\n          ...classes.footerButtonsContainer,\n          minWidth: '310px',\n          justifyContent: 'flex-end',\n          rowGap: 'none'\n        }}\n      >\n        <Button\n          id=\"back-to-edit-fields-screening-question-integration\"\n          sx={classes.footerBackButton}\n          onClick={() => setCurrentStep(0)}\n        >\n          Back\n        </Button>\n        <Button\n          id=\"add-generated-questions-to-job-button\"\n          sx={classes.footerAddButton}\n          onClick={handleSubmit}\n          disabled={\n            generatedResponse && generatedResponse.filter((item) => item.selected).length < 1\n          }\n        >\n          {isCreating ? <CircularProgress size={20} color=\"inherit\" /> : addButtonText}\n        </Button>\n      </Box>\n    </Box>\n  );\n};\n\nexport default ResponseFooter;\n","import React, { Dispatch } from 'react';\nimport { Box, Button } from '@mui/material';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\nimport ContentCopyIcon from '@mui/icons-material/ContentCopy';\nimport { FelixMessageSVG } from '../../SharedComponents/Graphics/FelixSVG';\nimport { classes } from '../styles';\nimport { SmartShareAction, SmartShareState } from '../reducer';\n\nconst ResponseFooter = ({\n  dispatch,\n  smartShareState,\n  handleRichCopy,\n  handleCopy,\n  jobUrl\n}: {\n  dispatch: Dispatch<SmartShareAction>;\n  smartShareState: SmartShareState;\n  handleRichCopy: () => void;\n  handleCopy: () => void;\n  jobUrl: string;\n}) => {\n  return (\n    <Box sx={classes.footerContainer}>\n      <Box sx={classes.felixMessageContainer}>\n        <FelixMessageSVG />\n        <Box sx={{ ...classes.felixMessage, maxWidth: '400px' }}>\n          {smartShareState.generationType === 'social' ? (\n            <>\n              Your draft <span>social media post</span> is ready to roll! You may want to use this\n              as is, or make some adjustments before publishing.\n            </>\n          ) : (\n            <>\n              Your draft <span>job board advertisement</span> is ready to roll! You may want to use\n              this as is, or make some adjustments before publishing.\n            </>\n          )}\n        </Box>\n      </Box>\n      <Box sx={classes.footerButtonsContainer}>\n        <Button\n          id={`back-to-edit-fields-${smartShareState.generationType}`}\n          sx={classes.footerBackButton}\n          onClick={() => dispatch({ type: 'SET_CURRENT_STEP', payload: 0 })}\n        >\n          Back\n        </Button>\n        {smartShareState.generationType === 'social' ? (\n          <CopyToClipboard\n            text={smartShareState.generatedResponse + `\\n\\n${jobUrl}`}\n            onCopy={() => handleCopy()}\n          >\n            <Button\n              id=\"copy-social-post-button\"\n              sx={classes.footerContinueButton}\n              endIcon={<ContentCopyIcon />}\n            >\n              {smartShareState.copied ? 'Copied!' : 'Copy post text'}\n            </Button>\n          </CopyToClipboard>\n        ) : (\n          <Button\n            id=\"copy-job-board-ad-button\"\n            sx={classes.footerContinueButton}\n            endIcon={<ContentCopyIcon />}\n            onClick={handleRichCopy}\n          >\n            {smartShareState.copied ? 'Copied!' : 'Copy advertisement'}\n          </Button>\n        )}\n      </Box>\n    </Box>\n  );\n};\n\nexport default ResponseFooter;\n","import React from 'react';\nimport { Box } from '@mui/material';\nimport { FelixMessageSVG } from '../../SharedComponents/Graphics/FelixSVG';\nimport { classes } from '../styles';\n\nconst WelcomeFooter = () => {\n  return (\n    <Box sx={classes.footerContainer}>\n      <Box sx={classes.felixMessageContainer}>\n        <FelixMessageSVG />\n        <Box sx={{ ...classes.felixMessage, maxWidth: '608px' }}>\n          <div>\n            Welcome to Smart Share, powered by AI Studio. I&apos;m Felix, your AI assistant.\n          </div>\n          <div>\n            I can help you write a <span>job board advertisment</span> or{' '}\n            <span>social media post</span> for your job.\n          </div>\n        </Box>\n      </Box>\n    </Box>\n  );\n};\n\nexport default WelcomeFooter;\n","import React from 'react';\n\nexport const SocialSVG = () => {\n  return (\n    <svg\n      width=\"180\"\n      height=\"122\"\n      viewBox=\"0 0 180 122\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <g filter=\"url(#filter0_d_3855_3117)\">\n        <rect x=\"6\" y=\"24\" width=\"93\" height=\"92\" rx=\"6\" fill=\"white\" />\n      </g>\n      <rect x=\"14\" y=\"35\" width=\"74\" height=\"44\" fill=\"#E3E8FF\" />\n      <rect x=\"14\" y=\"85\" width=\"64\" height=\"2\" fill=\"#E3E8FF\" />\n      <rect x=\"14\" y=\"96\" width=\"55\" height=\"3\" fill=\"#E3E8FF\" />\n      <g filter=\"url(#filter1_d_3855_3117)\">\n        <rect x=\"81\" y=\"6\" width=\"93\" height=\"92\" rx=\"6\" fill=\"white\" />\n      </g>\n      <rect x=\"89\" y=\"17\" width=\"74\" height=\"43\" fill=\"#E3E8FF\" />\n      <rect x=\"89\" y=\"66\" width=\"64\" height=\"3\" fill=\"#E3E8FF\" />\n      <rect x=\"89\" y=\"77\" width=\"55\" height=\"3\" fill=\"#E3E8FF\" />\n      <ellipse cx=\"167.5\" cy=\"100\" rx=\"9.5\" ry=\"10\" fill=\"#C7D1FF\" />\n      <circle cx=\"119\" cy=\"100\" r=\"10\" fill=\"#C7D1FF\" />\n      <mask id=\"mask0_3855_3117\" maskUnits=\"userSpaceOnUse\" x=\"112\" y=\"92\" width=\"15\" height=\"16\">\n        <rect x=\"112.058\" y=\"92.8486\" width=\"14.368\" height=\"14.368\" fill=\"#D9D9D9\" />\n      </mask>\n      <g mask=\"url(#mask0_3855_3117)\">\n        <path\n          d=\"M121.337 99.4339C121.586 99.4339 121.798 99.3466 121.973 99.172C122.148 98.9974 122.235 98.7853 122.235 98.5359C122.235 98.2864 122.148 98.0744 121.973 97.8998C121.798 97.7252 121.586 97.6379 121.337 97.6379C121.087 97.6379 120.875 97.7252 120.701 97.8998C120.526 98.0744 120.439 98.2864 120.439 98.5359C120.439 98.7853 120.526 98.9974 120.701 99.172C120.875 99.3466 121.087 99.4339 121.337 99.4339ZM117.146 99.4339C117.396 99.4339 117.608 99.3466 117.782 99.172C117.957 98.9974 118.044 98.7853 118.044 98.5359C118.044 98.2864 117.957 98.0744 117.782 97.8998C117.608 97.7252 117.396 97.6379 117.146 97.6379C116.897 97.6379 116.685 97.7252 116.51 97.8998C116.336 98.0744 116.248 98.2864 116.248 98.5359C116.248 98.7853 116.336 98.9974 116.51 99.172C116.685 99.3466 116.897 99.4339 117.146 99.4339ZM119.242 103.325C119.92 103.325 120.536 103.133 121.09 102.749C121.644 102.365 122.045 101.858 122.295 101.23H116.188C116.438 101.858 116.839 102.365 117.393 102.749C117.947 103.133 118.563 103.325 119.242 103.325ZM119.242 106.019C118.413 106.019 117.635 105.862 116.907 105.548C116.178 105.233 115.545 104.807 115.006 104.268C114.467 103.729 114.041 103.096 113.726 102.367C113.412 101.639 113.255 100.861 113.255 100.033C113.255 99.2044 113.412 98.4261 113.726 97.6978C114.041 96.9694 114.467 96.3358 115.006 95.797C115.545 95.2582 116.178 94.8316 116.907 94.5173C117.635 94.203 118.413 94.0459 119.242 94.0459C120.07 94.0459 120.848 94.203 121.576 94.5173C122.305 94.8316 122.938 95.2582 123.477 95.797C124.016 96.3358 124.442 96.9694 124.757 97.6978C125.071 98.4261 125.228 99.2044 125.228 100.033C125.228 100.861 125.071 101.639 124.757 102.367C124.442 103.096 124.016 103.729 123.477 104.268C122.938 104.807 122.305 105.233 121.576 105.548C120.848 105.862 120.07 106.019 119.242 106.019Z\"\n          fill=\"white\"\n        />\n      </g>\n      <circle cx=\"144\" cy=\"100\" r=\"10\" fill=\"#C7D1FF\" />\n      <rect x=\"14\" y=\"85\" width=\"64\" height=\"2\" fill=\"#E3E8FF\" />\n      <rect x=\"14\" y=\"96\" width=\"55\" height=\"3\" fill=\"#E3E8FF\" />\n      <rect x=\"14\" y=\"85\" width=\"64\" height=\"2\" fill=\"#E3E8FF\" />\n      <rect x=\"14\" y=\"96\" width=\"55\" height=\"3\" fill=\"#E3E8FF\" />\n      <rect x=\"14\" y=\"85\" width=\"64\" height=\"2\" fill=\"#E3E8FF\" />\n      <rect x=\"14\" y=\"96\" width=\"55\" height=\"3\" fill=\"#E3E8FF\" />\n      <mask id=\"mask1_3855_3117\" maskUnits=\"userSpaceOnUse\" x=\"161\" y=\"94\" width=\"14\" height=\"14\">\n        <rect x=\"161.368\" y=\"94.3579\" width=\"12.7007\" height=\"12.7007\" fill=\"#D9D9D9\" />\n      </mask>\n      <g mask=\"url(#mask1_3855_3117)\">\n        <path\n          d=\"M167.719 105.471L166.951 104.783C166.061 103.98 165.324 103.288 164.742 102.706C164.16 102.124 163.697 101.601 163.353 101.138C163.009 100.675 162.769 100.25 162.632 99.8615C162.495 99.4734 162.427 99.0766 162.427 98.6708C162.427 97.8418 162.705 97.1494 163.26 96.5937C163.816 96.0381 164.508 95.7603 165.337 95.7603C165.796 95.7603 166.233 95.8573 166.647 96.0513C167.062 96.2454 167.419 96.5188 167.719 96.8716C168.019 96.5188 168.376 96.2454 168.79 96.0513C169.205 95.8573 169.641 95.7603 170.1 95.7603C170.929 95.7603 171.622 96.0381 172.177 96.5937C172.733 97.1494 173.011 97.8418 173.011 98.6708C173.011 99.0766 172.942 99.4734 172.806 99.8615C172.669 100.25 172.429 100.675 172.085 101.138C171.741 101.601 171.278 102.124 170.695 102.706C170.113 103.288 169.377 103.98 168.486 104.783L167.719 105.471Z\"\n          fill=\"white\"\n        />\n      </g>\n      <rect x=\"89\" y=\"17\" width=\"74\" height=\"43\" fill=\"#E3E8FF\" />\n      <rect x=\"89\" y=\"66\" width=\"64\" height=\"3\" fill=\"#E3E8FF\" />\n      <rect x=\"89\" y=\"77\" width=\"55\" height=\"3\" fill=\"#E3E8FF\" />\n      <ellipse cx=\"167.5\" cy=\"100\" rx=\"9.5\" ry=\"10\" fill=\"#C7D1FF\" />\n      <circle cx=\"119\" cy=\"100\" r=\"10\" fill=\"#C7D1FF\" />\n      <mask id=\"mask2_3855_3117\" maskUnits=\"userSpaceOnUse\" x=\"112\" y=\"92\" width=\"15\" height=\"16\">\n        <rect x=\"112.058\" y=\"92.8486\" width=\"14.368\" height=\"14.368\" fill=\"#D9D9D9\" />\n      </mask>\n      <g mask=\"url(#mask2_3855_3117)\">\n        <path\n          d=\"M121.337 99.4339C121.586 99.4339 121.798 99.3466 121.973 99.172C122.148 98.9974 122.235 98.7853 122.235 98.5359C122.235 98.2864 122.148 98.0744 121.973 97.8998C121.798 97.7252 121.586 97.6379 121.337 97.6379C121.087 97.6379 120.875 97.7252 120.701 97.8998C120.526 98.0744 120.439 98.2864 120.439 98.5359C120.439 98.7853 120.526 98.9974 120.701 99.172C120.875 99.3466 121.087 99.4339 121.337 99.4339ZM117.146 99.4339C117.396 99.4339 117.608 99.3466 117.782 99.172C117.957 98.9974 118.044 98.7853 118.044 98.5359C118.044 98.2864 117.957 98.0744 117.782 97.8998C117.608 97.7252 117.396 97.6379 117.146 97.6379C116.897 97.6379 116.685 97.7252 116.51 97.8998C116.336 98.0744 116.248 98.2864 116.248 98.5359C116.248 98.7853 116.336 98.9974 116.51 99.172C116.685 99.3466 116.897 99.4339 117.146 99.4339ZM119.242 103.325C119.92 103.325 120.536 103.133 121.09 102.749C121.644 102.365 122.045 101.858 122.295 101.23H116.188C116.438 101.858 116.839 102.365 117.393 102.749C117.947 103.133 118.563 103.325 119.242 103.325ZM119.242 106.019C118.413 106.019 117.635 105.862 116.907 105.548C116.178 105.233 115.545 104.807 115.006 104.268C114.467 103.729 114.041 103.096 113.726 102.367C113.412 101.639 113.255 100.861 113.255 100.033C113.255 99.2044 113.412 98.4261 113.726 97.6978C114.041 96.9694 114.467 96.3358 115.006 95.797C115.545 95.2582 116.178 94.8316 116.907 94.5173C117.635 94.203 118.413 94.0459 119.242 94.0459C120.07 94.0459 120.848 94.203 121.576 94.5173C122.305 94.8316 122.938 95.2582 123.477 95.797C124.016 96.3358 124.442 96.9694 124.757 97.6978C125.071 98.4261 125.228 99.2044 125.228 100.033C125.228 100.861 125.071 101.639 124.757 102.367C124.442 103.096 124.016 103.729 123.477 104.268C122.938 104.807 122.305 105.233 121.576 105.548C120.848 105.862 120.07 106.019 119.242 106.019Z\"\n          fill=\"white\"\n        />\n      </g>\n      <mask id=\"mask3_3855_3117\" maskUnits=\"userSpaceOnUse\" x=\"161\" y=\"94\" width=\"14\" height=\"14\">\n        <rect x=\"161.368\" y=\"94.3579\" width=\"12.7007\" height=\"12.7007\" fill=\"#D9D9D9\" />\n      </mask>\n      <g mask=\"url(#mask3_3855_3117)\">\n        <path\n          d=\"M167.719 105.471L166.951 104.783C166.061 103.98 165.324 103.288 164.742 102.706C164.16 102.124 163.697 101.601 163.353 101.138C163.009 100.675 162.769 100.25 162.632 99.8615C162.495 99.4734 162.427 99.0766 162.427 98.6708C162.427 97.8418 162.705 97.1494 163.26 96.5937C163.816 96.0381 164.508 95.7603 165.337 95.7603C165.796 95.7603 166.233 95.8573 166.647 96.0513C167.062 96.2454 167.419 96.5188 167.719 96.8716C168.019 96.5188 168.376 96.2454 168.79 96.0513C169.205 95.8573 169.641 95.7603 170.1 95.7603C170.929 95.7603 171.622 96.0381 172.177 96.5937C172.733 97.1494 173.011 97.8418 173.011 98.6708C173.011 99.0766 172.942 99.4734 172.806 99.8615C172.669 100.25 172.429 100.675 172.085 101.138C171.741 101.601 171.278 102.124 170.695 102.706C170.113 103.288 169.377 103.98 168.486 104.783L167.719 105.471Z\"\n          fill=\"white\"\n        />\n      </g>\n      <rect x=\"89\" y=\"17\" width=\"74\" height=\"43\" fill=\"#E3E8FF\" />\n      <rect x=\"89\" y=\"66\" width=\"64\" height=\"3\" fill=\"#E3E8FF\" />\n      <rect x=\"89\" y=\"77\" width=\"55\" height=\"3\" fill=\"#E3E8FF\" />\n      <ellipse cx=\"167.5\" cy=\"100\" rx=\"9.5\" ry=\"10\" fill=\"#C7D1FF\" />\n      <circle cx=\"119\" cy=\"100\" r=\"10\" fill=\"#C7D1FF\" />\n      <mask id=\"mask4_3855_3117\" maskUnits=\"userSpaceOnUse\" x=\"112\" y=\"92\" width=\"15\" height=\"16\">\n        <rect x=\"112.058\" y=\"92.8486\" width=\"14.368\" height=\"14.368\" fill=\"#D9D9D9\" />\n      </mask>\n      <g mask=\"url(#mask4_3855_3117)\">\n        <path\n          d=\"M121.337 99.4339C121.586 99.4339 121.798 99.3466 121.973 99.172C122.148 98.9974 122.235 98.7853 122.235 98.5359C122.235 98.2864 122.148 98.0744 121.973 97.8998C121.798 97.7252 121.586 97.6379 121.337 97.6379C121.087 97.6379 120.875 97.7252 120.701 97.8998C120.526 98.0744 120.439 98.2864 120.439 98.5359C120.439 98.7853 120.526 98.9974 120.701 99.172C120.875 99.3466 121.087 99.4339 121.337 99.4339ZM117.146 99.4339C117.396 99.4339 117.608 99.3466 117.782 99.172C117.957 98.9974 118.044 98.7853 118.044 98.5359C118.044 98.2864 117.957 98.0744 117.782 97.8998C117.608 97.7252 117.396 97.6379 117.146 97.6379C116.897 97.6379 116.685 97.7252 116.51 97.8998C116.336 98.0744 116.248 98.2864 116.248 98.5359C116.248 98.7853 116.336 98.9974 116.51 99.172C116.685 99.3466 116.897 99.4339 117.146 99.4339ZM119.242 103.325C119.92 103.325 120.536 103.133 121.09 102.749C121.644 102.365 122.045 101.858 122.295 101.23H116.188C116.438 101.858 116.839 102.365 117.393 102.749C117.947 103.133 118.563 103.325 119.242 103.325ZM119.242 106.019C118.413 106.019 117.635 105.862 116.907 105.548C116.178 105.233 115.545 104.807 115.006 104.268C114.467 103.729 114.041 103.096 113.726 102.367C113.412 101.639 113.255 100.861 113.255 100.033C113.255 99.2044 113.412 98.4261 113.726 97.6978C114.041 96.9694 114.467 96.3358 115.006 95.797C115.545 95.2582 116.178 94.8316 116.907 94.5173C117.635 94.203 118.413 94.0459 119.242 94.0459C120.07 94.0459 120.848 94.203 121.576 94.5173C122.305 94.8316 122.938 95.2582 123.477 95.797C124.016 96.3358 124.442 96.9694 124.757 97.6978C125.071 98.4261 125.228 99.2044 125.228 100.033C125.228 100.861 125.071 101.639 124.757 102.367C124.442 103.096 124.016 103.729 123.477 104.268C122.938 104.807 122.305 105.233 121.576 105.548C120.848 105.862 120.07 106.019 119.242 106.019Z\"\n          fill=\"white\"\n        />\n      </g>\n      <mask id=\"mask5_3855_3117\" maskUnits=\"userSpaceOnUse\" x=\"161\" y=\"94\" width=\"14\" height=\"14\">\n        <rect x=\"161.368\" y=\"94.3579\" width=\"12.7007\" height=\"12.7007\" fill=\"#D9D9D9\" />\n      </mask>\n      <g mask=\"url(#mask5_3855_3117)\">\n        <path\n          d=\"M167.719 105.471L166.951 104.783C166.061 103.98 165.324 103.288 164.742 102.706C164.16 102.124 163.697 101.601 163.353 101.138C163.009 100.675 162.769 100.25 162.632 99.8615C162.495 99.4734 162.427 99.0766 162.427 98.6708C162.427 97.8418 162.705 97.1494 163.26 96.5937C163.816 96.0381 164.508 95.7603 165.337 95.7603C165.796 95.7603 166.233 95.8573 166.647 96.0513C167.062 96.2454 167.419 96.5188 167.719 96.8716C168.019 96.5188 168.376 96.2454 168.79 96.0513C169.205 95.8573 169.641 95.7603 170.1 95.7603C170.929 95.7603 171.622 96.0381 172.177 96.5937C172.733 97.1494 173.011 97.8418 173.011 98.6708C173.011 99.0766 172.942 99.4734 172.806 99.8615C172.669 100.25 172.429 100.675 172.085 101.138C171.741 101.601 171.278 102.124 170.695 102.706C170.113 103.288 169.377 103.98 168.486 104.783L167.719 105.471Z\"\n          fill=\"white\"\n        />\n      </g>\n      <rect x=\"89\" y=\"17\" width=\"74\" height=\"43\" fill=\"#E3E8FF\" />\n      <rect x=\"89\" y=\"66\" width=\"64\" height=\"3\" fill=\"#E3E8FF\" />\n      <rect x=\"89\" y=\"77\" width=\"55\" height=\"3\" fill=\"#E3E8FF\" />\n      <ellipse cx=\"167.5\" cy=\"100\" rx=\"9.5\" ry=\"10\" fill=\"#C7D1FF\" />\n      <circle cx=\"119\" cy=\"100\" r=\"10\" fill=\"#C7D1FF\" />\n      <mask id=\"mask6_3855_3117\" maskUnits=\"userSpaceOnUse\" x=\"112\" y=\"92\" width=\"15\" height=\"16\">\n        <rect x=\"112.058\" y=\"92.8486\" width=\"14.368\" height=\"14.368\" fill=\"#D9D9D9\" />\n      </mask>\n      <g mask=\"url(#mask6_3855_3117)\">\n        <path\n          d=\"M121.337 99.4339C121.586 99.4339 121.798 99.3466 121.973 99.172C122.148 98.9974 122.235 98.7853 122.235 98.5359C122.235 98.2864 122.148 98.0744 121.973 97.8998C121.798 97.7252 121.586 97.6379 121.337 97.6379C121.087 97.6379 120.875 97.7252 120.701 97.8998C120.526 98.0744 120.439 98.2864 120.439 98.5359C120.439 98.7853 120.526 98.9974 120.701 99.172C120.875 99.3466 121.087 99.4339 121.337 99.4339ZM117.146 99.4339C117.396 99.4339 117.608 99.3466 117.782 99.172C117.957 98.9974 118.044 98.7853 118.044 98.5359C118.044 98.2864 117.957 98.0744 117.782 97.8998C117.608 97.7252 117.396 97.6379 117.146 97.6379C116.897 97.6379 116.685 97.7252 116.51 97.8998C116.336 98.0744 116.248 98.2864 116.248 98.5359C116.248 98.7853 116.336 98.9974 116.51 99.172C116.685 99.3466 116.897 99.4339 117.146 99.4339ZM119.242 103.325C119.92 103.325 120.536 103.133 121.09 102.749C121.644 102.365 122.045 101.858 122.295 101.23H116.188C116.438 101.858 116.839 102.365 117.393 102.749C117.947 103.133 118.563 103.325 119.242 103.325ZM119.242 106.019C118.413 106.019 117.635 105.862 116.907 105.548C116.178 105.233 115.545 104.807 115.006 104.268C114.467 103.729 114.041 103.096 113.726 102.367C113.412 101.639 113.255 100.861 113.255 100.033C113.255 99.2044 113.412 98.4261 113.726 97.6978C114.041 96.9694 114.467 96.3358 115.006 95.797C115.545 95.2582 116.178 94.8316 116.907 94.5173C117.635 94.203 118.413 94.0459 119.242 94.0459C120.07 94.0459 120.848 94.203 121.576 94.5173C122.305 94.8316 122.938 95.2582 123.477 95.797C124.016 96.3358 124.442 96.9694 124.757 97.6978C125.071 98.4261 125.228 99.2044 125.228 100.033C125.228 100.861 125.071 101.639 124.757 102.367C124.442 103.096 124.016 103.729 123.477 104.268C122.938 104.807 122.305 105.233 121.576 105.548C120.848 105.862 120.07 106.019 119.242 106.019Z\"\n          fill=\"white\"\n        />\n      </g>\n      <mask id=\"mask7_3855_3117\" maskUnits=\"userSpaceOnUse\" x=\"161\" y=\"94\" width=\"14\" height=\"14\">\n        <rect x=\"161.368\" y=\"94.3579\" width=\"12.7007\" height=\"12.7007\" fill=\"#D9D9D9\" />\n      </mask>\n      <g mask=\"url(#mask7_3855_3117)\">\n        <path\n          d=\"M167.719 105.471L166.951 104.783C166.061 103.98 165.324 103.288 164.742 102.706C164.16 102.124 163.697 101.601 163.353 101.138C163.009 100.675 162.769 100.25 162.632 99.8615C162.495 99.4734 162.427 99.0766 162.427 98.6708C162.427 97.8418 162.705 97.1494 163.26 96.5937C163.816 96.0381 164.508 95.7603 165.337 95.7603C165.796 95.7603 166.233 95.8573 166.647 96.0513C167.062 96.2454 167.419 96.5188 167.719 96.8716C168.019 96.5188 168.376 96.2454 168.79 96.0513C169.205 95.8573 169.641 95.7603 170.1 95.7603C170.929 95.7603 171.622 96.0381 172.177 96.5937C172.733 97.1494 173.011 97.8418 173.011 98.6708C173.011 99.0766 172.942 99.4734 172.806 99.8615C172.669 100.25 172.429 100.675 172.085 101.138C171.741 101.601 171.278 102.124 170.695 102.706C170.113 103.288 169.377 103.98 168.486 104.783L167.719 105.471Z\"\n          fill=\"white\"\n        />\n      </g>\n      <mask id=\"mask8_3855_3117\" maskUnits=\"userSpaceOnUse\" x=\"138\" y=\"94\" width=\"12\" height=\"12\">\n        <rect x=\"138\" y=\"94\" width=\"12\" height=\"12\" fill=\"#D9D9D9\" />\n      </mask>\n      <g mask=\"url(#mask8_3855_3117)\">\n        <path\n          d=\"M147 104.5H142V98L145.5 94.5L146.125 95.125C146.183 95.1833 146.231 95.2625 146.269 95.3625C146.306 95.4625 146.325 95.5583 146.325 95.65V95.825L145.775 98H148.5C148.767 98 149 98.1 149.2 98.3C149.4 98.5 149.5 98.7333 149.5 99V100C149.5 100.058 149.494 100.121 149.481 100.188C149.469 100.254 149.45 100.317 149.425 100.375L147.925 103.9C147.85 104.067 147.725 104.208 147.55 104.325C147.375 104.442 147.192 104.5 147 104.5ZM141 98V104.5H139V98H141Z\"\n          fill=\"white\"\n        />\n      </g>\n      <defs>\n        <filter\n          id=\"filter0_d_3855_3117\"\n          x=\"0.5\"\n          y=\"18.5\"\n          width=\"104\"\n          height=\"103\"\n          filterUnits=\"userSpaceOnUse\"\n          colorInterpolationFilters=\"sRGB\"\n        >\n          <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n          <feColorMatrix\n            in=\"SourceAlpha\"\n            type=\"matrix\"\n            values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n            result=\"hardAlpha\"\n          />\n          <feMorphology\n            radius=\"0.5\"\n            operator=\"dilate\"\n            in=\"SourceAlpha\"\n            result=\"effect1_dropShadow_3855_3117\"\n          />\n          <feOffset />\n          <feGaussianBlur stdDeviation=\"2.5\" />\n          <feComposite in2=\"hardAlpha\" operator=\"out\" />\n          <feColorMatrix\n            type=\"matrix\"\n            values=\"0 0 0 0 0.508333 0 0 0 0 0.588229 0 0 0 0 1 0 0 0 1 0\"\n          />\n          <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_3855_3117\" />\n          <feBlend\n            mode=\"normal\"\n            in=\"SourceGraphic\"\n            in2=\"effect1_dropShadow_3855_3117\"\n            result=\"shape\"\n          />\n        </filter>\n        <filter\n          id=\"filter1_d_3855_3117\"\n          x=\"75.5\"\n          y=\"0.5\"\n          width=\"104\"\n          height=\"103\"\n          filterUnits=\"userSpaceOnUse\"\n          colorInterpolationFilters=\"sRGB\"\n        >\n          <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n          <feColorMatrix\n            in=\"SourceAlpha\"\n            type=\"matrix\"\n            values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n            result=\"hardAlpha\"\n          />\n          <feMorphology\n            radius=\"0.5\"\n            operator=\"dilate\"\n            in=\"SourceAlpha\"\n            result=\"effect1_dropShadow_3855_3117\"\n          />\n          <feOffset />\n          <feGaussianBlur stdDeviation=\"2.5\" />\n          <feComposite in2=\"hardAlpha\" operator=\"out\" />\n          <feColorMatrix\n            type=\"matrix\"\n            values=\"0 0 0 0 0.508333 0 0 0 0 0.588229 0 0 0 0 1 0 0 0 1 0\"\n          />\n          <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_3855_3117\" />\n          <feBlend\n            mode=\"normal\"\n            in=\"SourceGraphic\"\n            in2=\"effect1_dropShadow_3855_3117\"\n            result=\"shape\"\n          />\n        </filter>\n      </defs>\n    </svg>\n  );\n};\n\nexport const AdvertisementSVG = () => {\n  return (\n    <svg\n      width=\"90\"\n      height=\"132\"\n      viewBox=\"0 0 90 132\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <g filter=\"url(#filter0_d_3855_3146)\">\n        <rect x=\"6\" y=\"6\" width=\"78\" height=\"120\" rx=\"6\" fill=\"white\" />\n      </g>\n      <rect x=\"14\" y=\"18\" width=\"62\" height=\"21\" fill=\"#7D7DEF\" />\n      <rect x=\"61\" y=\"111\" width=\"15\" height=\"6\" fill=\"#7D7DEF\" />\n      <rect x=\"14\" y=\"47\" width=\"62\" height=\"2\" fill=\"#A4A4FF\" />\n      <rect x=\"14\" y=\"63\" width=\"62\" height=\"2\" fill=\"#A4A4FF\" />\n      <rect x=\"14\" y=\"79\" width=\"62\" height=\"2\" fill=\"#A4A4FF\" />\n      <rect x=\"14\" y=\"55\" width=\"62\" height=\"2\" fill=\"#A4A4FF\" />\n      <rect x=\"14\" y=\"71\" width=\"62\" height=\"2\" fill=\"#A4A4FF\" />\n      <rect x=\"14\" y=\"87\" width=\"62\" height=\"2\" fill=\"#A4A4FF\" />\n      <rect x=\"14\" y=\"95\" width=\"53\" height=\"2\" fill=\"#A4A4FF\" />\n      <defs>\n        <filter\n          id=\"filter0_d_3855_3146\"\n          x=\"0.5\"\n          y=\"0.5\"\n          width=\"89\"\n          height=\"131\"\n          filterUnits=\"userSpaceOnUse\"\n          colorInterpolationFilters=\"sRGB\"\n        >\n          <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n          <feColorMatrix\n            in=\"SourceAlpha\"\n            type=\"matrix\"\n            values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n            result=\"hardAlpha\"\n          />\n          <feMorphology\n            radius=\"0.5\"\n            operator=\"dilate\"\n            in=\"SourceAlpha\"\n            result=\"effect1_dropShadow_3855_3146\"\n          />\n          <feOffset />\n          <feGaussianBlur stdDeviation=\"2.5\" />\n          <feComposite in2=\"hardAlpha\" operator=\"out\" />\n          <feColorMatrix\n            type=\"matrix\"\n            values=\"0 0 0 0 0.337255 0 0 0 0 0.337255 0 0 0 0 0.858824 0 0 0 1 0\"\n          />\n          <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_3855_3146\" />\n          <feBlend\n            mode=\"normal\"\n            in=\"SourceGraphic\"\n            in2=\"effect1_dropShadow_3855_3146\"\n            result=\"shape\"\n          />\n        </filter>\n      </defs>\n    </svg>\n  );\n};\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { OutlinedInput } from '@mui/material';\nimport { classes } from '../styles';\n\nconst JobDescriptionInput = ({\n  generationJobDescription,\n  placeholder,\n  onChange\n}: {\n  generationJobDescription: string;\n  placeholder: string;\n  onChange: Dispatch<SetStateAction<string>>;\n}) => {\n  return (\n    <OutlinedInput\n      id=\"job-description\"\n      sx={{ ...classes.fieldInput, height: '144px' }}\n      placeholder={placeholder}\n      value={generationJobDescription}\n      multiline\n      rows={5}\n      onChange={(e) => onChange(e.target.value)}\n    />\n  );\n};\n\nexport default JobDescriptionInput;\n","import React, { useReducer, useCallback, useRef } from 'react';\nimport { Box, Button, Modal } from '@mui/material';\nimport { FelixButtonSVG } from '../SharedComponents/Graphics/FelixSVG';\nimport LoadingResponse from '../SharedComponents/Steps/LoadingResponse';\nimport { WelcomePage } from './Steps/WelcomePage';\nimport JobBoardInput from './Steps/JobBoardInput';\nimport ResponseStep from './Steps/ResponseStep';\nimport SocialInputStep from './Steps/SocialInputStep';\nimport CloseIcon from '@mui/icons-material/Close';\nimport GenericDialog from '../../NewUI/Components/Modals/GenericDialog';\nimport { displayFelixMessage, disableNextButton } from './config';\nimport DynamicFooter from '../SharedComponents/Footers/DynamicFooter';\nimport he from 'he';\nimport { classes } from './styles';\nimport ResponseFooter from './Footers/ResponseFooter';\nimport WelcomeFooter from './Footers/WelcomeFooter';\nimport ErrorScreen from '../SharedComponents/Steps/ErrorScreen';\nimport { initialSmartShareState, smartShareReducer } from './reducer';\nimport { fetchSummary, fetchKeyPoints, fetchSocial } from './API';\nimport { convertToLocalEnglish } from '../../NewUI/Components/Utilities/convertToLocalEnglish';\nimport { LIST_ITEMS_REGEX } from '../SharedComponents/sharedConfig';\n\nfunction SmartShare({\n  apiKey,\n  jobTitle,\n  jobDescription,\n  jobUrl\n}: {\n  apiKey: string;\n  jobTitle: string;\n  jobDescription: string;\n  jobUrl: string;\n}) {\n  const [smartShareState, dispatch] = useReducer(smartShareReducer, initialSmartShareState);\n  const generatedResponseRef = useRef<HTMLDivElement>(null);\n  const requestController = useRef<AbortController | null>(null);\n\n  const handleRichCopy = () => {\n    if (!generatedResponseRef.current) return;\n    dispatch({ type: 'SET_COPIED', payload: true });\n    setTimeout(() => dispatch({ type: 'SET_COPIED', payload: false }), 3000);\n    window?.getSelection()?.removeAllRanges();\n    const range = document.createRange();\n    range.selectNode(generatedResponseRef.current);\n    window?.getSelection()?.addRange(range);\n    document.execCommand('copy');\n    window?.getSelection()?.removeAllRanges();\n  };\n\n  const generatePost = useCallback(async () => {\n    requestController.current = new AbortController();\n    dispatch({ type: 'SET_CURRENT_STEP', payload: 2 });\n    try {\n      const response = await fetchSocial(\n        smartShareState.useCustomDescription === 'description'\n          ? jobDescription\n          : smartShareState.generationJobDescription,\n        smartShareState.generationJobTitle,\n        smartShareState.useCustomDescription,\n        smartShareState.includeHashtags,\n        smartShareState.generationTone,\n        smartShareState.summaryLength,\n        requestController.current.signal\n      );\n      if (response && response.result && response.result.length > 30) {\n        let responseText = smartShareState.includeHashtags\n          ? response.result\n          : response.result.replace(/#[a-zA-Z0-9]+/g, '');\n        responseText = he.decode(responseText);\n        const localEnglishResponse = convertToLocalEnglish(responseText);\n        dispatch({ type: 'SET_GENERATED_RESPONSE', payload: localEnglishResponse });\n      } else {\n        throw new Error('No response from AI API');\n      }\n    } catch (error) {\n      if (error.name === 'AbortError') return;\n      dispatch({ type: 'SET_GENERATION_ERROR', payload: true });\n      console.error(error);\n    } finally {\n      if (!requestController.current.signal.aborted) {\n        dispatch({ type: 'SET_CURRENT_STEP', payload: 3 });\n      }\n    }\n  }, [\n    jobDescription,\n    smartShareState.generationJobDescription,\n    smartShareState.generationJobTitle,\n    smartShareState.generationTone,\n    smartShareState.includeHashtags,\n    smartShareState.summaryLength,\n    smartShareState.useCustomDescription\n  ]);\n\n  const generateSummary = useCallback(async () => {\n    requestController.current = new AbortController();\n    dispatch({ type: 'SET_CURRENT_STEP', payload: 2 });\n    const sendableJobDescription =\n      smartShareState.useCustomDescription === 'description'\n        ? jobDescription\n        : smartShareState.generationJobDescription;\n    const summaryParams: Parameters<typeof fetchSummary> = [\n      sendableJobDescription,\n      smartShareState.adType,\n      smartShareState.generationJobTitle,\n      smartShareState.useCustomDescription,\n      smartShareState.generationTone,\n      requestController.current.signal\n    ];\n    try {\n      let summaryResponse: { result: string } | undefined;\n      let keyPointsResponse: { result: string } | undefined;\n\n      if (smartShareState.includeKeyPoints) {\n        [summaryResponse, keyPointsResponse] = await Promise.all([\n          fetchSummary(...summaryParams),\n          fetchKeyPoints(sendableJobDescription, smartShareState.generationJobTitle)\n        ]);\n      } else {\n        summaryResponse = await fetchSummary(...summaryParams);\n      }\n\n      if (summaryResponse && summaryResponse.result && summaryResponse.result.length > 30) {\n        const localEnglishResponse = convertToLocalEnglish(summaryResponse.result);\n        dispatch({ type: 'SET_GENERATED_RESPONSE', payload: localEnglishResponse });\n      }\n      if (keyPointsResponse && keyPointsResponse.result && keyPointsResponse.result.length > 30) {\n        const ksp = convertToLocalEnglish(keyPointsResponse.result)\n          .replace(LIST_ITEMS_REGEX, '')\n          .split('**')\n          .slice(0, -1);\n        dispatch({ type: 'SET_GENERATED_KEY_POINTS', payload: ksp });\n      }\n    } catch (error) {\n      if (error.name === 'AbortError') {\n        console.log('Description generation aborted');\n      }\n      console.error(error);\n      dispatch({ type: 'SET_GENERATION_ERROR', payload: true });\n    } finally {\n      if (!requestController.current.signal.aborted) {\n        dispatch({ type: 'SET_CURRENT_STEP', payload: 3 });\n      }\n    }\n  }, [\n    jobDescription,\n    smartShareState.adType,\n    smartShareState.generationJobDescription,\n    smartShareState.generationJobTitle,\n    smartShareState.generationTone,\n    smartShareState.includeKeyPoints,\n    smartShareState.useCustomDescription\n  ]);\n\n  const stepSelect = () => {\n    if (smartShareState.generationError) {\n      return (\n        <ErrorScreen\n          regenerateCallback={\n            smartShareState.generationType === 'social' ? generatePost : generateSummary\n          }\n          setGenerationError={(value) => dispatch({ type: 'SET_GENERATION_ERROR', payload: value })}\n          backToHome={() => dispatch({ type: 'SET_CURRENT_STEP', payload: 0 })}\n        />\n      );\n    }\n    switch (smartShareState.currentStep) {\n      case 0:\n        return (\n          <>\n            <WelcomePage dispatch={dispatch} />\n            <WelcomeFooter />\n          </>\n        );\n      case 1:\n        return (\n          <>\n            <SocialInputStep\n              jobDescription={jobDescription}\n              dispatch={dispatch}\n              smartShareState={smartShareState}\n            />\n            <DynamicFooter\n              handleSecondaryButtonClick={() => dispatch({ type: 'SET_CURRENT_STEP', payload: 0 })}\n              handlePrimaryButtonClick={generatePost}\n              secondaryButtonText=\"Back\"\n              primaryButtonText=\"Generate\"\n              primaryButtonID={`generate-social-post-${smartShareState.useCustomDescription}`}\n              disablePrimaryButton={disableNextButton(\n                smartShareState.useCustomDescription,\n                jobDescription,\n                smartShareState.generationJobDescription,\n                smartShareState.generationJobTitle,\n                12000\n              )}\n              felixMessage={displayFelixMessage(\n                smartShareState.useCustomDescription,\n                smartShareState.currentStep\n              )}\n              felixMessageMaxWidth=\"351px\"\n              footerWidth=\"90%\"\n            />\n          </>\n        );\n      case 2:\n        return <LoadingResponse generationType={smartShareState.generationType} />;\n      case 3:\n        return (\n          <>\n            <ResponseStep\n              apiKey={apiKey}\n              generatedResponse={smartShareState.generatedResponse}\n              generatedKeyPoints={smartShareState.generatedKeyPoints}\n              generatedResponseRef={generatedResponseRef}\n              generationType={smartShareState.generationType}\n              jobUrl={jobUrl}\n              generatePost={generatePost}\n              generateSummary={generateSummary}\n            />\n            <ResponseFooter\n              dispatch={dispatch}\n              smartShareState={smartShareState}\n              handleRichCopy={handleRichCopy}\n              handleCopy={handleCopy}\n              jobUrl={jobUrl}\n            />\n          </>\n        );\n      case 4:\n        return (\n          <>\n            <JobBoardInput\n              jobDescription={jobDescription}\n              dispatch={dispatch}\n              smartShareState={smartShareState}\n            />\n            <DynamicFooter\n              handleSecondaryButtonClick={() => dispatch({ type: 'SET_CURRENT_STEP', payload: 0 })}\n              handlePrimaryButtonClick={generateSummary}\n              secondaryButtonText=\"Back\"\n              primaryButtonText=\"Generate\"\n              primaryButtonID={`generate-job-ad-${smartShareState.useCustomDescription}`}\n              disablePrimaryButton={disableNextButton(\n                smartShareState.useCustomDescription,\n                jobDescription,\n                smartShareState.generationJobDescription,\n                smartShareState.generationJobTitle,\n                10000\n              )}\n              felixMessage={displayFelixMessage(\n                smartShareState.useCustomDescription,\n                smartShareState.currentStep\n              )}\n              felixMessageMaxWidth=\"351px\"\n              footerWidth=\"90%\"\n            />\n          </>\n        );\n      case 9:\n        return <Box>Something went wrong, please refresh and try again</Box>;\n      default:\n        return <Box>Something went wrong, please refresh and try again</Box>;\n    }\n  };\n\n  const handleCopy = () => {\n    dispatch({ type: 'SET_COPIED', payload: true });\n    setTimeout(() => dispatch({ type: 'SET_COPIED', payload: false }), 3000);\n  };\n\n  const handleClose = () => {\n    dispatch({ type: 'CLOSE_MODAL' });\n\n    // abort any pending requests\n    requestController?.current?.abort();\n  };\n\n  const handleCloseAction = () => {\n    if (smartShareState.currentStep === 0) {\n      handleClose();\n    } else {\n      dispatch({ type: 'SET_CONFIRM_CANCEL_IS_OPEN', payload: true });\n    }\n  };\n\n  return (\n    <Box sx={{ marginLeft: '-16px' }}>\n      <Box\n        sx={{\n          ...classes.buttonContainer,\n          ...(smartShareState.buttonHovered ? classes.hoverAnimation : classes.unhoverAnimation)\n        }}\n        onMouseEnter={() => dispatch({ type: 'SET_BUTTON_HOVERED', payload: true })}\n        onMouseLeave={() => dispatch({ type: 'SET_BUTTON_HOVERED', payload: false })}\n        onClick={() => dispatch({ type: 'OPEN_MODAL', payload: jobTitle })}\n        id=\"smart-share-button\"\n      >\n        <Box sx={classes.avatarContainer}>\n          <FelixButtonSVG />\n        </Box>\n        <Button sx={classes.button}>{!smartShareState.open ? 'Smart Share' : 'Close'}</Button>\n        {!smartShareState.open && <Box sx={classes.betaPill}>Beta</Box>}\n      </Box>\n      <Modal\n        open={smartShareState.open}\n        onClose={handleCloseAction}\n        aria-labelledby=\"smart-share-modal\"\n        aria-describedby=\"use-ai-to-generate-social-media-content-for-your-job-posting\"\n      >\n        <Box sx={classes.modal}>\n          <CloseIcon onClick={handleCloseAction} sx={classes.closeIcon} />\n          {stepSelect()}\n        </Box>\n      </Modal>\n      <GenericDialog\n        isDialogOpen={smartShareState.confirmCancelIsOpen}\n        setDialogOpen={(value: boolean) =>\n          dispatch({ type: 'SET_CONFIRM_CANCEL_IS_OPEN', payload: value })\n        }\n        title=\"Close Smart Share window?\"\n        description=\"All unsaved changes will be lost.\"\n        buttonCallback={handleClose}\n        callbackLoading={false}\n        buttonText=\"Close Smart Share\"\n        url=\"\"\n      />\n    </Box>\n  );\n}\n\nexport default SmartShare;\n","import React from 'react';\nimport { Box, Collapse } from '@mui/material';\nimport JobDescriptionInput from '../Inputs/JobDescription';\nimport dompurify from 'dompurify';\nimport { classes } from '../styles';\nimport DisplayHTMLCollapsible from '../../SharedComponents/DisplayHTMLCollapsible';\n\nconst DisplayDescription = ({\n  useCustomDescription,\n  jobDescription,\n  generationJobDescription,\n  setGenerationJobDescription,\n  collapsed,\n  setCollapsed,\n  maxCharacters\n}: {\n  useCustomDescription: string;\n  jobDescription: string;\n  generationJobDescription: string;\n  setGenerationJobDescription: (value: string) => void;\n  collapsed: boolean;\n  setCollapsed: (value: boolean) => void;\n  maxCharacters: number;\n}) => {\n  const showDescription = () => {\n    if (jobDescription.length > maxCharacters) {\n      return (\n        <Box>\n          Your current job description is too long. Please shorten it to {maxCharacters} characters\n          or less. Alternatively, you can input a custom description or job summary that adheres to\n          the character limit.\n        </Box>\n      );\n    } else if (jobDescription.length > 100) {\n      return (\n        <DisplayHTMLCollapsible\n          content={jobDescription}\n          collapsed={collapsed}\n          setCollapsed={setCollapsed}\n        />\n      );\n    } else {\n      return (\n        <Box>\n          This job doesn&apos;t have a description yet. Please add one to continue or input a custom\n          description.\n        </Box>\n      );\n    }\n  };\n\n  switch (useCustomDescription) {\n    case 'description':\n      return (\n        <Box sx={classes.genericContainer}>\n          <Box sx={classes.fieldSubHeader}>Job description</Box>\n          {showDescription()}\n        </Box>\n      );\n    case 'custom':\n      return (\n        <Box sx={{ ...classes.genericContainer, position: 'relative' }}>\n          <Box sx={classes.fieldSubHeader}>Job description</Box>\n          <JobDescriptionInput\n            generationJobDescription={generationJobDescription}\n            placeholder={`Paste your job description here (${maxCharacters} character limit)`}\n            onChange={setGenerationJobDescription}\n          />\n          <Box\n            sx={{\n              ...classes.characterCounter,\n              ...(generationJobDescription.length > maxCharacters && { color: '#E37D7A' })\n            }}\n          >\n            {generationJobDescription.length}/{maxCharacters}\n          </Box>\n        </Box>\n      );\n    case 'summary':\n      return (\n        <Box sx={{ ...classes.genericContainer, position: 'relative' }}>\n          <Box sx={classes.fieldSubHeader}>Job summary</Box>\n          <JobDescriptionInput\n            generationJobDescription={generationJobDescription}\n            placeholder={`Summarise the job in a few paragraphs or dot points (${maxCharacters} character limit)`}\n            onChange={setGenerationJobDescription}\n          />\n          <Box\n            sx={{\n              ...classes.characterCounter,\n              ...(generationJobDescription.length > maxCharacters && { color: '#E37D7A' })\n            }}\n          >\n            {generationJobDescription.length}/{maxCharacters}\n          </Box>\n        </Box>\n      );\n    default:\n      return <>Something went wrong, please refresh the page and try again</>;\n  }\n};\n\nexport default DisplayDescription;\n","import React, { useState, Dispatch } from 'react';\nimport { Box, FormControl, Checkbox } from '@mui/material';\nimport DisplayDescription from './DisplayDescription';\nimport ToggleButtons from '../../SharedComponents/Buttons/ToggleButtons';\nimport PositionTitleInput from '../../SharedComponents/Inputs/PositionTitle';\nimport StyledDropdown from '../../SharedComponents/Inputs/StyledDropdown';\nimport { aiToneTypes } from '../../SharedComponents/sharedConfig';\nimport { adTypes, toggleButtonOptions } from '../config';\nimport { classes } from '../styles';\nimport { SmartShareAction, SmartShareState } from '../reducer';\n\nconst JobBoardInput = ({\n  jobDescription,\n  dispatch,\n  smartShareState\n}: {\n  jobDescription: string;\n  dispatch: Dispatch<SmartShareAction>;\n  smartShareState: SmartShareState;\n}) => {\n  const [collapsed, setCollapsed] = useState(true);\n\n  return (\n    <Box sx={{ ...classes.inputStepContainer, rowGap: '42px' }}>\n      <Box sx={classes.genericContainer}>\n        <Box sx={classes.fieldHeader}>Position title</Box>\n        <PositionTitleInput\n          positionTitle={smartShareState.generationJobTitle}\n          onChange={(value: string) =>\n            dispatch({ type: 'SET_GENERATION_JOB_TITLE', payload: value })\n          }\n        />\n      </Box>\n      <Box sx={classes.genericContainer}>\n        <ToggleButtons\n          value={smartShareState.useCustomDescription}\n          setValue={(value: string) =>\n            dispatch({ type: 'SET_USE_CUSTOM_DESCRIPTION', payload: value })\n          }\n          options={toggleButtonOptions}\n        />\n      </Box>\n      <DisplayDescription\n        useCustomDescription={smartShareState.useCustomDescription}\n        jobDescription={jobDescription}\n        generationJobDescription={smartShareState.generationJobDescription}\n        setGenerationJobDescription={(value: string) =>\n          dispatch({ type: 'SET_GENERATION_JOB_DESCRIPTION', payload: value })\n        }\n        collapsed={collapsed}\n        setCollapsed={setCollapsed}\n        maxCharacters={10000}\n      />\n      <Box sx={classes.sideBySideContainer}>\n        <FormControl fullWidth>\n          <Box sx={classes.fieldSubHeader}>Ad type</Box>\n          <StyledDropdown\n            id=\"ad-type\"\n            value={smartShareState.adType}\n            onChange={(value: string) => dispatch({ type: 'SET_AD_TYPE', payload: value })}\n            options={adTypes}\n          />\n        </FormControl>\n        <FormControl fullWidth>\n          <Box sx={classes.fieldSubHeader}>Generated tone</Box>\n          <StyledDropdown\n            id=\"generated-tone\"\n            value={smartShareState.generationTone}\n            onChange={(value: string) => dispatch({ type: 'SET_GENERATION_TONE', payload: value })}\n            options={aiToneTypes}\n          />\n        </FormControl>\n        <FormControl fullWidth>\n          <Box sx={classes.checkboxContainer}>\n            <Checkbox\n              sx={classes.checkbox}\n              checked={smartShareState.includeKeyPoints}\n              onChange={(e) =>\n                dispatch({ type: 'SET_INCLUDE_KEY_POINTS', payload: e.target.checked })\n              }\n            />\n            <Box sx={classes.checkboxLabel}>Generate key selling points</Box>\n          </Box>\n        </FormControl>\n      </Box>\n    </Box>\n  );\n};\n\nexport default JobBoardInput;\n","import React from 'react';\nimport { Box, Button, IconButton } from '@mui/material';\nimport CachedIcon from '@mui/icons-material/Cached';\nimport { classes } from '../styles';\nimport { headerText } from '../config';\nimport dompurify from 'dompurify';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\nimport SocialMediaPreview from './SocialMediaPreview';\nimport ContentCopyIcon from '@mui/icons-material/ContentCopy';\n\nfunction ResponseStep({\n  apiKey,\n  generatedResponse,\n  generatedKeyPoints,\n  generatedResponseRef,\n  generationType,\n  jobUrl,\n  generatePost,\n  generateSummary\n}: {\n  apiKey: string;\n  generatedResponse: string;\n  generatedKeyPoints: string[];\n  generatedResponseRef: React.RefObject<HTMLDivElement>;\n  generationType: string;\n  jobUrl: string;\n  generatePost: () => void;\n  generateSummary: () => void;\n}) {\n  return (\n    <>\n      <Box sx={classes.responseHeader}>\n        <Box sx={classes.responseHeaderText}>{`Your draft ${\n          headerText[generationType as keyof typeof headerText]\n        }`}</Box>\n        <Button\n          id={`regenerate-${generationType}`}\n          sx={classes.pill}\n          endIcon={<CachedIcon />}\n          onClick={generationType === 'advertisement' ? generateSummary : generatePost}\n        >\n          Regenerate\n        </Button>\n      </Box>\n      {generationType === 'advertisement' ? (\n        <>\n          <Box\n            sx={classes.generatedResponseContainer}\n            ref={generatedResponseRef}\n            dangerouslySetInnerHTML={{\n              __html: dompurify.sanitize(generatedResponse)\n            }}\n          />\n          {generatedKeyPoints?.length > 0 && (\n            <Box sx={{ width: '90%' }}>\n              <Box sx={classes.fieldSubHeader}>Key selling points</Box>\n              <Box>\n                {generatedKeyPoints.map((point, index) => (\n                  <Box key={index} sx={classes.keyPoint}>\n                    {point}\n                    <CopyToClipboard text={point}>\n                      <IconButton sx={classes.copyIcon}>\n                        <ContentCopyIcon />\n                      </IconButton>\n                    </CopyToClipboard>\n                  </Box>\n                ))}\n              </Box>\n            </Box>\n          )}\n        </>\n      ) : (\n        <Box sx={classes.socialResponseContainer}>\n          <Box sx={classes.socialCard}>\n            <Box sx={classes.socialCardHeader}>\n              <span>{generatedResponse}</span>\n              <a href={jobUrl}>{jobUrl}</a>\n            </Box>\n            <SocialMediaPreview apiKey={apiKey} jobUrl={jobUrl} />\n          </Box>\n        </Box>\n      )}\n    </>\n  );\n}\n\nexport default ResponseStep;\n","import React, { useState, Dispatch } from 'react';\nimport { Box, FormControl, Checkbox } from '@mui/material';\nimport StyledDropdown from '../../SharedComponents/Inputs/StyledDropdown';\nimport DisplayDescription from './DisplayDescription';\nimport ToggleButtons from '../../SharedComponents/Buttons/ToggleButtons';\nimport PositionTitleInput from '../../SharedComponents/Inputs/PositionTitle';\nimport { postTones, responseLength, toggleButtonOptions } from '../config';\nimport { classes } from '../styles';\nimport { SmartShareAction, SmartShareState } from '../reducer';\n\nfunction SocialInputStep({\n  jobDescription,\n  dispatch,\n  smartShareState\n}: {\n  jobDescription: string;\n  dispatch: Dispatch<SmartShareAction>;\n  smartShareState: SmartShareState;\n}) {\n  const [collapsed, setCollapsed] = useState(true);\n\n  return (\n    <Box sx={{ ...classes.inputStepContainer, rowGap: '42px' }}>\n      <Box sx={classes.genericContainer}>\n        <Box sx={classes.fieldHeader}>Position title</Box>\n        <PositionTitleInput\n          positionTitle={smartShareState.generationJobTitle}\n          onChange={(value: string) =>\n            dispatch({ type: 'SET_GENERATION_JOB_TITLE', payload: value })\n          }\n        />\n      </Box>\n      <Box sx={classes.genericContainer}>\n        <ToggleButtons\n          value={smartShareState.useCustomDescription}\n          setValue={(value: string) =>\n            dispatch({ type: 'SET_USE_CUSTOM_DESCRIPTION', payload: value })\n          }\n          options={toggleButtonOptions}\n        />\n      </Box>\n      <DisplayDescription\n        useCustomDescription={smartShareState.useCustomDescription}\n        jobDescription={jobDescription}\n        generationJobDescription={smartShareState.generationJobDescription}\n        setGenerationJobDescription={(value: string) =>\n          dispatch({ type: 'SET_GENERATION_JOB_DESCRIPTION', payload: value })\n        }\n        collapsed={collapsed}\n        setCollapsed={setCollapsed}\n        maxCharacters={12000}\n      />\n      <Box sx={classes.sideBySideContainer}>\n        <FormControl fullWidth>\n          <Box sx={classes.fieldSubHeader}>Tone selection</Box>\n          <StyledDropdown\n            id=\"generated-tone\"\n            value={smartShareState.generationTone}\n            onChange={(value: string) => dispatch({ type: 'SET_GENERATION_TONE', payload: value })}\n            options={postTones}\n          />\n        </FormControl>\n        <FormControl fullWidth>\n          <Box sx={classes.fieldSubHeader}>Post length</Box>\n          <StyledDropdown\n            id=\"post-length\"\n            value={smartShareState.summaryLength}\n            onChange={(value: string) => dispatch({ type: 'SET_SUMMARY_LENGTH', payload: value })}\n            options={responseLength}\n          />\n        </FormControl>\n        <FormControl fullWidth>\n          <Box sx={classes.checkboxContainer}>\n            <Checkbox\n              sx={classes.checkbox}\n              checked={smartShareState.includeHashtags}\n              onChange={(e) =>\n                dispatch({ type: 'SET_INCLUDE_HASHTAGS', payload: e.target.checked })\n              }\n            />\n            <Box sx={classes.checkboxLabel}>Include hashtags</Box>\n          </Box>\n        </FormControl>\n      </Box>\n    </Box>\n  );\n}\n\nexport default SocialInputStep;\n","import React, { useState, useEffect } from 'react';\nimport { Box, Skeleton } from '@mui/material';\nimport ImageNotSupportedIcon from '@mui/icons-material/ImageNotSupported';\nimport { classes } from '../styles';\n\nexport interface IMetaData {\n  title?: string;\n  description?: string;\n  image?: string;\n}\n\nconst SocialMediaPreview = ({ apiKey, jobUrl }: { apiKey: string; jobUrl: string }) => {\n  const [metaData, setMetaData] = useState<IMetaData | null>(null);\n\n  const matches = jobUrl.match(/^https?\\:\\/\\/([^\\/?#]+)(?:[\\/?#]|$)/i);\n  const domain = matches && matches[1];\n\n  useEffect(() => {\n    const fetchMetaData = async () => {\n      const { metadata } = await fetch(`/api/v4/meta_scraper?url=${jobUrl}`, {\n        method: 'GET',\n        headers: {\n          'Content-Type': 'application/json',\n          'X-api-authenticate': apiKey\n        }\n      }).then((res) => res.json());\n      setMetaData(metadata);\n    };\n    fetchMetaData();\n  }, [apiKey, jobUrl]);\n\n  if (metaData) {\n    return (\n      <Box sx={classes.socialCardPreview}>\n        {metaData.image ? (\n          <Box sx={{ ...classes.previewImage, backgroundImage: `url(${metaData.image})` }} />\n        ) : (\n          <Box sx={classes.previewImage}>\n            <ImageNotSupportedIcon style={classes.noImageIcon} />\n          </Box>\n        )}\n        <Box sx={classes.socialCardPreviewFooter}>\n          <Box sx={classes.previewTitle}>\n            {metaData?.title && metaData?.title.length > 58\n              ? metaData?.title.slice(0, 58) + '...'\n              : metaData?.title}\n          </Box>\n          <Box sx={classes.previewDescription}>\n            {metaData?.description && metaData?.description.length > 130\n              ? metaData?.description.slice(0, 130) + '...'\n              : metaData?.description}\n          </Box>\n          <Box sx={classes.previewLink}>{domain}</Box>\n        </Box>\n      </Box>\n    );\n  } else {\n    return <Skeleton sx={classes.skeleton} />;\n  }\n};\n\nexport default SocialMediaPreview;\n","import React, { Dispatch } from 'react';\nimport { Box } from '@mui/material';\nimport { classes } from '../styles';\nimport { SocialSVG, AdvertisementSVG } from '../Graphics/buttonSVGs';\nimport { SmartShareAction } from '../reducer';\n\nexport const WelcomePage = ({ dispatch }: { dispatch: Dispatch<SmartShareAction> }) => {\n  const handleSelectSocial = () => {\n    dispatch({ type: 'SELECT_SOCIAL' });\n  };\n\n  const handleSelectJobBoard = () => {\n    dispatch({ type: 'SELECT_JOB_AD' });\n  };\n\n  return (\n    <Box sx={classes.welcomePageSelections}>\n      <Box\n        sx={classes.advertisementSelection}\n        onClick={handleSelectJobBoard}\n        id=\"write-job-board-advertisement\"\n      >\n        <AdvertisementSVG />\n        <Box sx={classes.welcomePageSelectionHeader}>Write me a job board advertisement</Box>\n        <span>\n          Write a job board advertisement to post on sites such as Seek, Indeed and LinkedIn.\n        </span>\n      </Box>\n      <Box sx={classes.socialSelection} onClick={handleSelectSocial} id=\"write-social-media-post\">\n        <SocialSVG />\n        <Box sx={classes.welcomePageSelectionHeader}>Write me a social media post</Box>\n        <span>Write a social media post to attract the right talent to your job</span>\n      </Box>\n    </Box>\n  );\n};\n","import React from 'react';\n\n// SmartShare.tsx variables & functions\n\nexport const displayFelixMessage = (useCustomDescription: string, currentStep: number) => {\n  const felixMessageContext =\n    currentStep === 1 ? ' social media post ' : ' job board advertisment ';\n  switch (useCustomDescription) {\n    case 'description':\n      return (\n        <>\n          I&apos;ll write you an engaging\n          <span>{felixMessageContext}</span>\n          using your job description!\n        </>\n      );\n    case 'custom':\n      return (\n        <>\n          Paste your position description or talent landing page here and I&apos;ll use it to write\n          a <span>{felixMessageContext}</span>\n        </>\n      );\n    case 'summary':\n      return (\n        <>\n          Input the key points of the position and I&apos;ll use it to write a\n          <span>{felixMessageContext}</span>\n        </>\n      );\n    default:\n      return <>Something went wrong. Please refresh the page and try again.</>;\n  }\n};\n\nexport const disableNextButton = (\n  useCustomDescription: string,\n  jobDescription: string,\n  generationJobDescription: string,\n  generationJobTitle: string,\n  maxCharacters: number\n) => {\n  if (generationJobTitle.length === 0) {\n    return true;\n  } else if (useCustomDescription === 'custom' || useCustomDescription === 'summary') {\n    return generationJobDescription.length === 0 || generationJobDescription.length > maxCharacters;\n  } else if (useCustomDescription === 'description') {\n    return jobDescription.length < 100 || jobDescription.length > maxCharacters;\n  } else {\n    return false;\n  }\n};\n\n// Social media post\n\nexport const postTones = [\n  'excited',\n  'professional',\n  'casual',\n  'creative',\n  'persuasive',\n  'informative',\n  'funny'\n];\n\nexport const responseLength = ['short', 'medium', 'long'];\n\n// Job board advertisement\n\nexport const adTypes = ['dot points', 'paragraphs', 'free form'];\n\n// Response step variables\n\nexport const headerText = {\n  social: 'social media post',\n  advertisement: 'job board advertisement'\n};\n\nexport const toggleButtonOptions = [\n  {\n    value: 'description',\n    label: 'Use existing description'\n  },\n  {\n    value: 'custom',\n    label: 'Use custom description'\n  },\n  {\n    value: 'summary',\n    label: 'Use job summary'\n  }\n];\n","import React, { useState } from 'react';\nimport { Box, Modal, CircularProgress } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { classes } from './styles';\nimport DynamicFooter from '../SharedComponents/Footers/DynamicFooter';\nimport DisplayHTMLViewOnly from '../SharedComponents/DisplayHTMLViewOnly';\nimport { handleRichCopy } from '../../NewUI/Components/Utilities/handleRichCopy';\nimport { IApplicationInfo } from '../SharedComponents/types';\nimport { StyledSnackbarProps } from '../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport { handleAPIRequest } from '../../NewUI/Components/Utilities/handleAPIRequest';\n\nconst ExpandedSummaryModal = ({\n  jobId,\n  expanded,\n  handleCloseModal,\n  lastHoveredApplicant,\n  summaryRef,\n  copied,\n  setCopied,\n  loadingSummary,\n  generateSummary,\n  setSnackbarState\n}: {\n  jobId: number;\n  expanded: boolean;\n  handleCloseModal: () => void;\n  lastHoveredApplicant: IApplicationInfo;\n  summaryRef: React.RefObject<HTMLDivElement>;\n  copied: boolean;\n  setCopied: React.Dispatch<React.SetStateAction<boolean>>;\n  loadingSummary: boolean;\n  generateSummary: () => void;\n  setSnackbarState: StyledSnackbarProps['setSnackbarState'];\n}) => {\n  const [emails, setEmails] = useState<string[]>([]);\n  const [emailInputOpen, setEmailInputOpen] = useState<boolean>(false);\n  const [sendingEmails, setSendingEmails] = useState(false);\n\n  const downloadPDF = () => {\n    const url = `/api/v4/jobs/${jobId}/applications/${lastHoveredApplicant.id}/application_summary.pdf`;\n    window.open(url, '_blank');\n  };\n\n  const handleSendEmailClick = () => {\n    handleAPIRequest({\n      url: `/api/v4/jobs/${jobId}/applications/${lastHoveredApplicant.id}/send_individual_summary`,\n      method: 'POST',\n      body: { emails },\n      onSuccess: () => {\n        setEmailInputOpen(false);\n        setEmails([]);\n      },\n      setLoaderState: setSendingEmails,\n      setSnackbarState\n    });\n  };\n\n  return (\n    <Modal\n      open={expanded}\n      onClose={handleCloseModal}\n      aria-labelledby=\"application-summary-expanded\"\n    >\n      <Box sx={classes.modal}>\n        <Box sx={{ ...classes.aiModalContent, rowGap: '36px' }}>\n          <CloseIcon onClick={handleCloseModal} sx={classes.closeIcon} />\n          <Box sx={classes.header}>{lastHoveredApplicant.name}</Box>\n          <DisplayHTMLViewOnly\n            content={lastHoveredApplicant.summary}\n            viewerRef={summaryRef}\n            onExportClick={downloadPDF}\n            setEmails={setEmails}\n            emails={emails}\n            onSendEmailClick={handleSendEmailClick}\n            emailInputOpen={emailInputOpen}\n            setEmailInputOpen={setEmailInputOpen}\n            sendingEmails={sendingEmails}\n          />\n          <DynamicFooter\n            primaryButtonText={copied ? 'Copied!' : 'Copy'}\n            secondaryButtonText={\n              loadingSummary ? <CircularProgress size={20} color=\"inherit\" /> : 'Regenerate'\n            }\n            primaryButtonID=\"copy-summary-text\"\n            secondaryButtonID=\"regenerate-summary\"\n            primaryButtonMinWidth=\"110px\"\n            secondaryButtonMinWidth=\"130px\"\n            handlePrimaryButtonClick={() => handleRichCopy(summaryRef.current, setCopied)}\n            handleSecondaryButtonClick={generateSummary}\n            felixMessage={\n              <>\n                I’ve created your <span>candidate summary</span>! This summary compares your\n                application against the job requirements.\n              </>\n            }\n            felixMessageMaxWidth=\"400px\"\n            alternateSecondaryButton={true}\n          />\n        </Box>\n      </Box>\n    </Modal>\n  );\n};\n\nexport default ExpandedSummaryModal;\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { Box, Checkbox } from '@mui/material';\nimport { classes } from '../styles';\nimport { defaultInclusions } from '../config';\n\nconst Inclusions = ({\n  inclusions,\n  setInclusions\n}: {\n  inclusions: typeof defaultInclusions;\n  setInclusions: Dispatch<SetStateAction<typeof defaultInclusions>>;\n}) => {\n  return (\n    <Box sx={classes.inclusionsContainer}>\n      {Object.keys(inclusions).map((inclusion) => (\n        <Box sx={classes.checkboxGroup} key={inclusion}>\n          <Checkbox\n            sx={classes.inclusionsCheckbox}\n            checked={inclusions[inclusion].value}\n            onChange={(e, checked) =>\n              setInclusions((prev) => ({\n                ...prev,\n                [inclusion]: { ...prev[inclusion], value: checked }\n              }))\n            }\n          />\n          <Box sx={classes.inclusionsLabel}>{inclusions[inclusion].label}</Box>\n        </Box>\n      ))}\n    </Box>\n  );\n};\n\nexport default Inclusions;\n","import React, { useState, Dispatch, SetStateAction } from 'react';\nimport DynamicFooter from '../../SharedComponents/Footers/DynamicFooter';\nimport StyledDropdown from '../../SharedComponents/Inputs/StyledDropdown';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { defaultFormats, defaultInclusions } from '../config';\nimport { Box } from '@mui/material';\nimport { classes } from '../styles';\nimport { IJobApplication } from '../../../NewUI/Job/types';\nimport Inclusions from '../Inputs/Inclusions';\n\nconst InputStep = ({\n  selectedFormat,\n  setSelectedFormat,\n  inclusions,\n  setInclusions,\n  selectedApplicants,\n  handleDeselectApplicant,\n  requestInsights\n}: {\n  selectedFormat: string;\n  setSelectedFormat: Dispatch<SetStateAction<string>>;\n  inclusions: typeof defaultInclusions;\n  setInclusions: Dispatch<SetStateAction<typeof defaultInclusions>>;\n  selectedApplicants: IJobApplication[];\n  handleDeselectApplicant: (applicantId: number) => void;\n  requestInsights: () => void;\n}) => {\n  const [applicantHovered, setApplicantHovered] = useState<number>(-1);\n\n  const inclusionsArray = Object.keys(inclusions).filter(\n    (key) => inclusions[key as keyof typeof inclusions].value\n  );\n\n  const areAllSuitabilityComments = inclusionsArray.every((i) => i === 'suitability_comment');\n\n  return (\n    <>\n      <Box sx={classes.header}>AI candidate insights</Box>\n      <Box sx={classes.aiRow}>\n        <Box sx={classes.fieldSubHeader}>Format</Box>\n        <StyledDropdown\n          id=\"insights-format-dropdown\"\n          value={selectedFormat}\n          onChange={setSelectedFormat}\n          options={defaultFormats}\n        />\n      </Box>\n      <Box sx={classes.aiRow}>\n        <Box sx={classes.fieldSubHeader}>Choose information to use for summary</Box>\n        <Inclusions inclusions={inclusions} setInclusions={setInclusions} />\n        {inclusionsArray.length !== 0 && areAllSuitabilityComments && (\n          <Box sx={classes.suitabilityCommentWarning}>\n            Suitability comments can only be used if at least one other information option is also\n            selected\n          </Box>\n        )}\n      </Box>\n      <Box sx={classes.aiRow}>\n        <Box sx={classes.fieldSubHeader}>Applications</Box>\n        <Box sx={classes.applicantsContainer}>\n          {selectedApplicants.map((applicant: IJobApplication, index: number) => (\n            <Box\n              sx={classes.applicant}\n              key={applicant.id}\n              onMouseEnter={() => setApplicantHovered(index)}\n              onMouseLeave={() => setApplicantHovered(-1)}\n            >\n              <Box sx={classes.applicantInitials}>\n                {applicant.candidate.firstname[0] + applicant.candidate.lastname[0]}\n              </Box>\n              {applicantHovered === index && (\n                <>\n                  <Box\n                    sx={classes.removeApplicant}\n                    onClick={() => handleDeselectApplicant(applicant.id)}\n                  >\n                    <CloseIcon />\n                  </Box>\n                  <Box sx={classes.applicantName}>\n                    {applicant.candidate.firstname.split(' ') +\n                      ' ' +\n                      applicant.candidate.lastname.split(' ')}\n                  </Box>\n                </>\n              )}\n            </Box>\n          ))}\n        </Box>\n      </Box>\n      <DynamicFooter\n        primaryButtonText=\"Generate\"\n        primaryButtonID=\"generate-custom-summary-button\"\n        disablePrimaryButton={areAllSuitabilityComments}\n        handlePrimaryButtonClick={requestInsights}\n        felixMessage={\n          <>\n            Let me know what format and information to use for your <span>candidate insights</span>.\n            You can also email the insights!\n          </>\n        }\n        felixMessageMaxWidth=\"400px\"\n      />\n    </>\n  );\n};\n\nexport default InputStep;\n","import React, { useState } from 'react';\nimport { Box, Modal } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { defaultInclusions } from '../config';\nimport { classes } from '../styles';\nimport LoadingResponse from '../../SharedComponents/Steps/LoadingResponse';\nimport InputStep from './InputStep';\nimport { IJobApplication } from '../../../NewUI/Job/types';\nimport ResponseStep from './ResponseStep';\nimport ErrorScreen from '../../SharedComponents/Steps/ErrorScreen';\nimport { modalSteps } from '../types';\nimport { IWebsocketData } from '../../SharedComponents/types';\nimport { useWebSockets } from '../../../NewUI/Components/Utilities/useWebSockets';\nimport { dismissNotification } from '../../SharedComponents/Utility/dismissNotification';\nimport { StyledSnackbarProps } from '../../../NewUI/Components/CustomUIElements/StyledSnackbar';\n\nconst InsightsModal = ({\n  jobId,\n  open,\n  handleClose,\n  selectedApplicants,\n  handleDeselectApplicant,\n  setSnackbar\n}: {\n  jobId: number;\n  open: boolean;\n  handleClose: () => void;\n  selectedApplicants: IJobApplication[];\n  handleDeselectApplicant: (applicantId: number) => void;\n  setSnackbar: StyledSnackbarProps['setSnackbarState'];\n}) => {\n  const [step, setStep] = useState<modalSteps>('input');\n  const [selectedFormat, setSelectedFormat] = useState('Paragraphs');\n  const [inclusions, setInclusions] = useState(defaultInclusions);\n  const [emails, setEmails] = useState<string[]>([]);\n  const [summaryData, setSummaryData] = useState<IWebsocketData | null>(null);\n\n  const { subscribeToChannel, unsubscribeFromChannel, socketConnected } = useWebSockets(\n    'AiStudioChannel',\n    (data: IWebsocketData, UID?: number) => {\n      if (data.UID !== UID) return;\n      if (data.kind === 'error') {\n        setStep('error');\n      } else {\n        setSummaryData(data);\n        setStep('response');\n      }\n      unsubscribeFromChannel();\n    }\n  );\n\n  const requestInsights = async () => {\n    setStep('loading');\n    const UID = Date.now();\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/application_summaries`, {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json' },\n        body: JSON.stringify({\n          application_summary: {\n            format: selectedFormat,\n            information_include: Object.keys(inclusions).filter(\n              (key) => inclusions[key as keyof typeof inclusions].value\n            ),\n            emails,\n            application_ids: selectedApplicants.map((applicant) => applicant.id),\n            UID: UID\n          }\n        })\n      });\n      await response.json();\n      if (response.ok) {\n        subscribeToChannel(UID);\n      } else {\n        throw new Error(`API Request failed with status ${response.status}`);\n      }\n    } catch (error) {\n      setStep('error');\n    }\n  };\n\n  const handleDeselect = (applicantId: number) => {\n    if (selectedApplicants.length === 1) {\n      handleDeselectApplicant(applicantId);\n      onClose();\n    } else {\n      handleDeselectApplicant(applicantId);\n    }\n  };\n\n  const onClose = () => {\n    if (step === 'response' && summaryData) {\n      dismissNotification(summaryData.id);\n    }\n    setStep('input');\n    setSelectedFormat('Paragraphs');\n    setInclusions(defaultInclusions);\n    setEmails([]);\n    setSummaryData(null);\n    unsubscribeFromChannel();\n    handleClose();\n  };\n\n  const renderStep = (step: modalSteps) => {\n    switch (step) {\n      case 'input':\n        return (\n          <InputStep\n            selectedFormat={selectedFormat}\n            setSelectedFormat={setSelectedFormat}\n            inclusions={inclusions}\n            setInclusions={setInclusions}\n            selectedApplicants={selectedApplicants}\n            handleDeselectApplicant={handleDeselect}\n            requestInsights={requestInsights}\n          />\n        );\n      case 'loading':\n        return <LoadingResponse generationType=\"summary\" showSocketMessage={socketConnected} />;\n      case 'response':\n        return (\n          <ResponseStep\n            jobId={jobId}\n            summaryData={summaryData}\n            setStep={setStep}\n            requestInsights={requestInsights}\n            emails={emails}\n            setEmails={setEmails}\n            selectedApplicants={selectedApplicants}\n            setSnackbar={setSnackbar}\n          />\n        );\n      case 'error':\n        return (\n          <ErrorScreen regenerateCallback={requestInsights} backToHome={() => setStep('input')} />\n        );\n      default:\n        return <div>Something went wrong</div>;\n    }\n  };\n\n  return (\n    <Modal open={open} onClose={onClose} aria-labelledby=\"ai-insights-modal\">\n      <Box sx={classes.modal}>\n        <Box sx={{ ...classes.aiModalContent, ...(step === 'loading' && { marginTop: '0px' }) }}>\n          <CloseIcon onClick={onClose} sx={classes.closeIcon} />\n          {renderStep(step)}\n        </Box>\n      </Box>\n    </Modal>\n  );\n};\n\nexport default InsightsModal;\n","import React, { useState, useRef, Dispatch, SetStateAction, useMemo } from 'react';\nimport { Box, Button } from '@mui/material';\nimport DynamicFooter from '../../SharedComponents/Footers/DynamicFooter';\nimport { classes } from '../styles';\nimport { handleRichCopy } from '../../../NewUI/Components/Utilities/handleRichCopy';\nimport DisplayHTMLViewOnly from '../../SharedComponents/DisplayHTMLViewOnly';\nimport { modalSteps } from '../types';\nimport { IWebsocketData } from '../../SharedComponents/types';\nimport { convertToLocalEnglish } from '../../../NewUI/Components/Utilities/convertToLocalEnglish';\nimport { handleAPIRequest } from '../../../NewUI/Components/Utilities/handleAPIRequest';\nimport { IJobApplication } from '../../../NewUI/Job/types';\nimport { StyledSnackbarProps } from '../../../NewUI/Components/CustomUIElements/StyledSnackbar';\n\ninterface IProps {\n  jobId?: number;\n  setStep?: Dispatch<SetStateAction<modalSteps>>;\n  summaryData: IWebsocketData | null;\n  requestInsights?: () => void;\n  handleDismissNotification?: () => void;\n  isNotification?: boolean;\n  emails: string[];\n  setEmails: Dispatch<SetStateAction<string[]>>;\n  selectedApplicants: IJobApplication[];\n  setSnackbar: StyledSnackbarProps['setSnackbarState'];\n}\n\nconst ResponseStep = ({\n  jobId,\n  setStep,\n  summaryData,\n  requestInsights,\n  handleDismissNotification,\n  isNotification,\n  emails,\n  setEmails,\n  selectedApplicants,\n  setSnackbar\n}: IProps) => {\n  const [copied, setCopied] = useState(false);\n  const summaryRef = useRef(null);\n  const [emailInputOpen, setEmailInputOpen] = useState<boolean>(false);\n  const [sendingEmails, setSendingEmails] = useState(false);\n  const currentJobId = jobId || summaryData?.job_id;\n\n  const downloadPDF = () => {\n    const url = `/api/v4/jobs/${currentJobId}/bulk_application_summaries/${summaryData?.id}.pdf`;\n    window.open(url, '_blank');\n  };\n\n  const handleSendEmailClick = () => {\n    handleAPIRequest({\n      url: `/api/v4/jobs/${currentJobId}/applications/send_ai_insights`,\n      method: 'POST',\n      body: {\n        application_ids: selectedApplicants\n          ? selectedApplicants.map((applicant) => applicant.id)\n          : summaryData?.additional_information?.application_ids,\n        summary_data: summaryData?.array_data,\n        emails: emails.join(',')\n      },\n      onSuccess: () => {\n        setEmailInputOpen(false);\n        setEmails([]);\n      },\n      setLoaderState: setSendingEmails,\n      setSnackbarState: setSnackbar\n    });\n  };\n\n  const convertedSummaryData = useMemo(\n    () =>\n      convertToLocalEnglish(\n        summaryData?.content || '<p>There was an error generating your summary</p>'\n      ),\n    [summaryData?.content]\n  );\n\n  return (\n    <>\n      <Box sx={classes.responseHeader}>\n        <Box sx={classes.header}>AI candidate insights</Box>\n        {!isNotification && setStep && (\n          <Button sx={classes.pillButton} onClick={() => setStep('input')}>\n            Back to settings\n          </Button>\n        )}\n      </Box>\n      <DisplayHTMLViewOnly\n        content={convertedSummaryData}\n        viewerRef={summaryRef}\n        onExportClick={downloadPDF}\n        setEmails={setEmails}\n        emails={emails}\n        onSendEmailClick={handleSendEmailClick}\n        emailInputOpen={emailInputOpen}\n        setEmailInputOpen={setEmailInputOpen}\n        sendingEmails={sendingEmails}\n      />\n      <DynamicFooter\n        primaryButtonText={copied ? 'Copied!' : 'Copy'}\n        secondaryButtonText={isNotification ? 'Close' : 'Regenerate'}\n        primaryButtonID=\"copy-summary-text\"\n        secondaryButtonID={`${isNotification ? 'regenerate' : 'close'}-summary`}\n        primaryButtonMinWidth=\"110px\"\n        handlePrimaryButtonClick={() => handleRichCopy(summaryRef.current, setCopied)}\n        handleSecondaryButtonClick={isNotification ? handleDismissNotification : requestInsights}\n        felixMessage={\n          <>\n            Here are your <span>candidate insights</span>. Now let’s go fill this role!\n          </>\n        }\n        felixMessageMaxWidth=\"400px\"\n        alternateSecondaryButton={true}\n      />\n    </>\n  );\n};\n\nexport default ResponseStep;\n","import React, { useState } from 'react';\nimport { serialize } from 'object-to-formdata';\nimport { Box, OutlinedInput, CircularProgress } from '@mui/material';\nimport { IWebsocketData } from '../../../SharedComponents/types';\nimport { StyledSnackbarProps } from '../../../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport { handleAPIRequest } from '../../../../NewUI/Components/Utilities/handleAPIRequest';\nimport HtmlEditor from '../../../../NewUI/Components/Utilities/HtmlEditor';\nimport DynamicFooter from '../../../SharedComponents/Footers/DynamicFooter';\nimport { classes } from '../../styles';\nimport { dismissNotification } from '../../../SharedComponents/Utility/dismissNotification';\n\nconst EditStep = ({\n  emailData,\n  handleClose,\n  goBack,\n  jobId,\n  applicationId,\n  setSnackbarState\n}: {\n  emailData: IWebsocketData | null;\n  handleClose: () => void;\n  goBack: () => void;\n  jobId: number;\n  applicationId: number;\n  setSnackbarState: StyledSnackbarProps['setSnackbarState'];\n}) => {\n  const initialEmailText = emailData?.content\n    .split('\\n\\n')\n    .map((s) => `<p>${s}</p>`)\n    .slice(1)\n    .join('');\n  const [emailText, setEmailText] = useState(initialEmailText);\n  const [subjectLine, setSubjectLine] = useState(\n    emailData?.content.split('\\n\\n')[0].replace('Subject: ', '')\n  );\n  const [isSending, setIsSending] = useState(false);\n\n  const sendEmail = () => {\n    if (isSending) return;\n    const data = {\n      email_batch: {\n        applications_ids: applicationId,\n        subject: subjectLine,\n        body: emailText,\n        delay: 0\n      }\n    };\n    const serializedData = serialize(data);\n    handleAPIRequest({\n      url: `/api/v4/jobs/${jobId}/applications/bulk_email`,\n      method: 'POST',\n      body: serializedData,\n      onSuccess: () => {\n        handleClose();\n        emailData && dismissNotification(emailData.id);\n      },\n      setSnackbarState,\n      formData: true,\n      setLoaderState: setIsSending\n    });\n  };\n  return (\n    <>\n      <Box sx={classes.emailQuestionsContainer}>\n        <Box sx={classes.aiRow}>\n          <Box sx={classes.fieldSubHeader}>Email subject line</Box>\n          <OutlinedInput\n            id=\"email-subject-line\"\n            sx={classes.fieldInput}\n            placeholder=\"Subject line, eg. 'Application follow up'\"\n            value={subjectLine}\n            onChange={(e) => setSubjectLine(e.target.value)}\n          />\n        </Box>\n        <Box sx={classes.aiRow}>\n          <HtmlEditor body={initialEmailText} onChange={setEmailText} maxHeight={380} />\n        </Box>\n      </Box>\n      <DynamicFooter\n        primaryButtonText={\n          isSending ? <CircularProgress size={20} color=\"inherit\" /> : 'Send email'\n        }\n        handlePrimaryButtonClick={sendEmail}\n        primaryButtonID=\"send-follow-up-email-button\"\n        primaryButtonMinWidth=\"130px\"\n        secondaryButtonText=\"Back\"\n        handleSecondaryButtonClick={goBack}\n        felixMessage={\n          <>\n            Here's your <span>follow up email</span>! You can edit it here or send it as is.\n          </>\n        }\n      />\n    </>\n  );\n};\n\nexport default EditStep;\n","import React, { Dispatch, useState } from 'react';\nimport { Box, Modal } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { classes } from '../../styles';\nimport LoadingResponse from '../../../SharedComponents/Steps/LoadingResponse';\nimport InputStep from './InputStep';\nimport EditStep from './EditStep';\nimport ErrorScreen from '../../../SharedComponents/Steps/ErrorScreen';\nimport { StyledSnackbarProps } from '../../../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport { useWebSockets } from '../../../../NewUI/Components/Utilities/useWebSockets';\nimport { IWebsocketData } from '../../../SharedComponents/types';\nimport { emailTones } from '../../config';\n\ntype TStep = 'input' | 'loading' | 'edit' | 'error';\n\nconst FollowUpEmailModal = ({\n  questions,\n  jobId,\n  applicationId,\n  modalOpen,\n  setModalOpen,\n  setSnackbarState\n}: {\n  questions: string[];\n  jobId: number;\n  applicationId: number;\n  modalOpen: boolean;\n  setModalOpen: Dispatch<React.SetStateAction<boolean>>;\n  setSnackbarState: StyledSnackbarProps['setSnackbarState'];\n}) => {\n  const [currentStep, setCurrentStep] = useState<TStep>('input');\n  const [emailTone, setEmailTone] = useState<typeof emailTones[number]>('Professional');\n  const [emailData, setEmailData] = useState<IWebsocketData | null>(null);\n\n  const handleClose = () => {\n    setCurrentStep('input');\n    setEmailTone('Professional');\n    setEmailData(null);\n    setModalOpen(false);\n  };\n\n  const { subscribeToChannel, unsubscribeFromChannel, socketConnected } = useWebSockets(\n    'AiStudioChannel',\n    (data: IWebsocketData, UID?: number) => {\n      if (data.UID !== UID) return;\n      if (data.kind === 'error') {\n        setCurrentStep('error');\n      } else {\n        setEmailData(data);\n        setCurrentStep('edit');\n      }\n      unsubscribeFromChannel();\n    }\n  );\n\n  const generateFollowUpEmail = async () => {\n    setCurrentStep('loading');\n    const UID = Date.now();\n    try {\n      const response = await fetch(\n        `/api/v4/jobs/${jobId}/applications/${applicationId}/follow_up_email`,\n        {\n          method: 'POST',\n          headers: { 'Content-Type': 'application/json' },\n          body: JSON.stringify({\n            follow_up_email: {\n              UID,\n              email_tone: emailTone.toLowerCase(),\n              follow_up_questions: questions\n            }\n          })\n        }\n      );\n      if (response.ok) {\n        subscribeToChannel(UID);\n      } else {\n        throw new Error(`API Request failed with status ${response.status}`);\n      }\n    } catch (error) {\n      setCurrentStep('error');\n    }\n  };\n\n  const renderStep = (step: TStep) => {\n    switch (step) {\n      case 'input':\n        return (\n          <>\n            <Box sx={classes.header}>Send follow up email</Box>\n            <InputStep\n              questions={questions}\n              emailTone={emailTone}\n              setEmailTone={setEmailTone}\n              generateFollowUpEmail={generateFollowUpEmail}\n              handleClose={handleClose}\n            />\n          </>\n        );\n      case 'loading':\n        return (\n          <LoadingResponse generationType=\"follow up email\" showSocketMessage={socketConnected} />\n        );\n      case 'edit':\n        return (\n          <>\n            <Box sx={classes.header}>Edit your follow up email</Box>\n            <EditStep\n              emailData={emailData}\n              goBack={() => setCurrentStep('input')}\n              handleClose={handleClose}\n              jobId={jobId}\n              applicationId={applicationId}\n              setSnackbarState={setSnackbarState}\n            />\n          </>\n        );\n      case 'error':\n        return (\n          <ErrorScreen\n            backToHome={() => setCurrentStep('input')}\n            regenerateCallback={generateFollowUpEmail}\n          />\n        );\n      default:\n        return <Box>An error has occurred, please refresh the page</Box>;\n    }\n  };\n\n  return (\n    <Modal\n      open={modalOpen}\n      onClose={handleClose}\n      aria-labelledby=\"suggested-interview-questions-modal\"\n    >\n      <Box sx={classes.modal}>\n        <Box sx={classes.aiModalContent}>\n          <CloseIcon onClick={handleClose} sx={classes.closeIcon} />\n          {renderStep(currentStep)}\n        </Box>\n      </Box>\n    </Modal>\n  );\n};\n\nexport default FollowUpEmailModal;\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { Box } from '@mui/material';\nimport { classes } from '../../styles';\nimport StyledDropdown from '../../../SharedComponents/Inputs/StyledDropdown';\nimport { emailTones } from '../../config';\nimport StaticQuestionsPreview from '../../../SharedComponents/StaticQuestionsPreview';\nimport DynamicFooter from '../../../SharedComponents/Footers/DynamicFooter';\n\nconst InputStep = ({\n  questions,\n  emailTone,\n  setEmailTone,\n  generateFollowUpEmail,\n  handleClose\n}: {\n  questions: string[];\n  emailTone: string;\n  setEmailTone: Dispatch<SetStateAction<string>>;\n  generateFollowUpEmail: () => void;\n  handleClose: () => void;\n}) => {\n  return (\n    <>\n      <Box sx={classes.emailQuestionsContainer}>\n        <Box sx={classes.aiRow}>\n          <Box sx={classes.fieldSubHeader}>Select email tone</Box>\n          <StyledDropdown\n            id=\"question-type-dropdown\"\n            value={emailTone}\n            onChange={setEmailTone}\n            options={emailTones}\n          />\n        </Box>\n        <Box sx={classes.aiRow}>\n          <Box sx={classes.fieldSubHeader}>Questions to include in email</Box>\n          <StaticQuestionsPreview questions={questions} />\n        </Box>\n      </Box>\n      <DynamicFooter\n        primaryButtonText=\"Generate email\"\n        handlePrimaryButtonClick={generateFollowUpEmail}\n        primaryButtonID=\"generate-follow-up-email-button\"\n        secondaryButtonText=\"Cancel\"\n        handleSecondaryButtonClick={handleClose}\n        felixMessage={\n          <>\n            Select a tone and I'll write a <span>follow up email</span> to ask this candidate for\n            further information.\n          </>\n        }\n      />\n    </>\n  );\n};\n\nexport default InputStep;\n","import React, { useState, Dispatch, SetStateAction } from 'react';\nimport { defaultInclusions } from '../../config';\nimport { Box } from '@mui/material';\nimport { classes } from '../../styles';\nimport { StyledSnackbarProps } from '../../../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport ToggleButtons from '../../../SharedComponents/Buttons/ToggleButtons';\nimport SavedQuestionsTab from './SavedQuestionsTab';\nimport InputTab from './InputTab';\n\nconst toggleButtonOptions = [\n  {\n    value: 'input',\n    label: 'Create new questions'\n  },\n  {\n    value: 'savedQuestions',\n    label: 'Saved questions'\n  }\n];\n\nconst HomeStep = ({\n  positionTitle,\n  questionType,\n  setQuestionType,\n  inclusions,\n  setInclusions,\n  requestQuestions,\n  jobId,\n  applicationId,\n  setSnackbarState\n}: {\n  positionTitle: string;\n  questionType: string;\n  setQuestionType: Dispatch<SetStateAction<string>>;\n  inclusions: typeof defaultInclusions;\n  setInclusions: Dispatch<SetStateAction<typeof defaultInclusions>>;\n  requestQuestions: () => void;\n  jobId: number;\n  applicationId: number | null;\n  setSnackbarState: StyledSnackbarProps['setSnackbarState'];\n}) => {\n  const [editablePositionTitle, setEditablePositionTitle] = useState<string>(positionTitle);\n  const [selectedTab, setSelectedTab] =\n    useState<typeof toggleButtonOptions[number]['value']>('input');\n\n  return (\n    <>\n      <Box sx={classes.header}>Suggested interview questions</Box>\n      <Box sx={classes.aiRow}>\n        <ToggleButtons\n          value={selectedTab}\n          setValue={setSelectedTab}\n          options={toggleButtonOptions}\n        />\n      </Box>\n      {selectedTab === 'input' ? (\n        <InputTab\n          editablePositionTitle={editablePositionTitle}\n          setEditablePositionTitle={setEditablePositionTitle}\n          questionType={questionType}\n          setQuestionType={setQuestionType}\n          inclusions={inclusions}\n          setInclusions={setInclusions}\n          requestQuestions={requestQuestions}\n        />\n      ) : (\n        <SavedQuestionsTab\n          jobId={jobId}\n          applicationId={applicationId}\n          setSnackbarState={setSnackbarState}\n        />\n      )}\n    </>\n  );\n};\n\nexport default HomeStep;\n","import React from 'react';\nimport { Box } from '@mui/material';\nimport { classes } from '../../styles';\nimport StyledDropdown from '../../../SharedComponents/Inputs/StyledDropdown';\nimport PositionTitleInput from '../../../SharedComponents/Inputs/PositionTitle';\nimport Inclusions from '../../Inputs/Inclusions';\nimport DynamicFooter from '../../../SharedComponents/Footers/DynamicFooter';\nimport { questionTypes } from '../../../SharedComponents/sharedConfig';\nimport { defaultInclusions } from '../../config';\n\nconst InputTab = ({\n  editablePositionTitle,\n  setEditablePositionTitle,\n  questionType,\n  setQuestionType,\n  inclusions,\n  setInclusions,\n  requestQuestions\n}: {\n  editablePositionTitle: string;\n  setEditablePositionTitle: React.Dispatch<React.SetStateAction<string>>;\n  questionType: string;\n  setQuestionType: React.Dispatch<React.SetStateAction<string>>;\n  inclusions: typeof defaultInclusions;\n  setInclusions: React.Dispatch<React.SetStateAction<typeof defaultInclusions>>;\n  requestQuestions: () => void;\n}) => {\n  return (\n    <>\n      <Box sx={classes.aiRow}>\n        <Box sx={classes.fieldSubHeader}>Job title</Box>\n        <PositionTitleInput\n          positionTitle={editablePositionTitle}\n          onChange={setEditablePositionTitle}\n        />\n      </Box>\n      <Box sx={classes.aiRow}>\n        <Box sx={classes.fieldSubHeader}>Question type</Box>\n        <StyledDropdown\n          id=\"question-type-dropdown\"\n          value={questionType}\n          onChange={setQuestionType}\n          options={questionTypes}\n        />\n      </Box>\n      <Box sx={classes.aiRow}>\n        <Box sx={classes.fieldSubHeader}>Base questions on the following information:</Box>\n        <Inclusions inclusions={inclusions} setInclusions={setInclusions} />\n      </Box>\n      <DynamicFooter\n        primaryButtonText=\"Generate\"\n        primaryButtonID=\"generate-questions-button\"\n        disablePrimaryButton={\n          !Object.keys(inclusions)\n            .map((key) => inclusions[key as keyof typeof inclusions].value)\n            .includes(true)\n        }\n        handlePrimaryButtonClick={requestQuestions}\n        felixMessage={\n          <>\n            I can help write some <span>interview questions</span> based on the candidate’s\n            application!\n          </>\n        }\n        felixMessageMaxWidth=\"400px\"\n      />\n    </>\n  );\n};\n\nexport default InputTab;\n","import React, { useEffect, useState } from 'react';\nimport SelectableCopyableQuestions from '../../../SharedComponents/SelectableCopyableQuestions';\nimport { handleAPIRequest } from '../../../../NewUI/Components/Utilities/handleAPIRequest';\nimport {\n  arrayQuestion,\n  formatQuestionArray\n} from '../../../SharedComponents/Utility/questionStringToArray';\nimport DynamicFooter from '../../../SharedComponents/Footers/DynamicFooter';\nimport { StyledSnackbarProps } from '../../../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport { copyToClipboard } from '../../../../NewUI/Components/Utilities/copyToClipboard';\nimport { Box, Skeleton } from '@mui/material';\nimport { FelixConfused } from '../../../SharedComponents/Graphics/FelixSVG';\nimport { classes } from '../../styles';\nimport FollowUpEmailModal from '../FollowUpEmail/FollowUpEmail';\n\nconst SavedQuestionsTab = ({\n  jobId,\n  applicationId,\n  setSnackbarState\n}: {\n  jobId: number;\n  applicationId: number;\n  setSnackbarState: StyledSnackbarProps['setSnackbarState'];\n}) => {\n  const [questions, setQuestions] = useState<arrayQuestion[]>([]);\n  const [questionsLoading, setQuestionsLoading] = useState<boolean>(true);\n  const [copiedQuestions, setCopiedQuestions] = useState<boolean>(false);\n  const [modalOpen, setModalOpen] = useState<boolean>(false);\n\n  useEffect(() => {\n    handleAPIRequest({\n      url: `/api/v4/jobs/${jobId}/applications/${applicationId}/saved_interview_questions`,\n      method: 'GET',\n      onSuccess: (response) => {\n        setQuestions(formatQuestionArray(response?.questions || ''));\n        setQuestionsLoading(false);\n      }\n    });\n  }, [applicationId, jobId]);\n\n  const handleDeleteQuestion = async (index: number) => {\n    const newQuestions = [...questions];\n    newQuestions[index].status = 'deleting';\n    setQuestions(newQuestions);\n    await handleAPIRequest({\n      url: `/api/v4/jobs/${jobId}/applications/${applicationId}/saved_interview_questions/remove_question`,\n      method: 'PATCH',\n      body: {\n        saved_interview_questions: {\n          index: index\n        }\n      },\n      onSuccess: () => {\n        setQuestions((prev) => prev.filter((_, i) => i !== index));\n      }\n    });\n  };\n\n  const handleCopyQuestions = () => {\n    const questionCopyText = questions\n      .filter((item) => item.selected)\n      .map((item, index) => `${index + 1}. ${item.text}`)\n      .join('\\n\\n');\n    copyToClipboard(questionCopyText);\n    setQuestions((prev) => prev.map((item) => ({ ...item, selected: false })));\n    setCopiedQuestions(true);\n    setTimeout(() => setCopiedQuestions(false), 3000);\n  };\n\n  return (\n    <>\n      {questionsLoading ? (\n        [...Array(3)].map((_, index) => (\n          <Skeleton key={index} sx={classes.questionSkeleton} animation=\"wave\" />\n        ))\n      ) : (\n        <>\n          <SelectableCopyableQuestions\n            questions={questions}\n            setQuestions={setQuestions}\n            maxHeight=\"450px\"\n            deleteQuestion={handleDeleteQuestion}\n          />\n          {!questions.length && (\n            <Box sx={classes.noSavedQuestions}>\n              <Box sx={{ width: '140px', marginBottom: '40px' }}>\n                <FelixConfused />\n              </Box>\n              <Box sx={{ marginBottom: '10px' }}>\n                No saved questions for the selected application\n              </Box>\n              <Box>Go to the create new questions tab to generate and save some!</Box>\n            </Box>\n          )}\n        </>\n      )}\n      <DynamicFooter\n        primaryButtonText=\"Email to Candidate\"\n        primaryButtonID=\"generate-email-button\"\n        disablePrimaryButton={!questions.some((item) => item.selected)}\n        handlePrimaryButtonClick={() => setModalOpen(true)}\n        secondaryButtonText={copiedQuestions ? 'Copied!' : 'Copy Questions'}\n        secondaryButtonID=\"copy-questions-button\"\n        secondaryButtonMinWidth=\"167px\"\n        disableSecondaryButton={!questions.some((item) => item.selected)}\n        handleSecondaryButtonClick={handleCopyQuestions}\n        felixMessage={\n          <>\n            View, manage and copy all of your saved <span>questions</span> here. Select questions to\n            copy multiple at a time!\n          </>\n        }\n        felixMessageMaxWidth=\"450px\"\n      />\n      {modalOpen && (\n        <FollowUpEmailModal\n          questions={questions.filter((item) => item.selected).map((item) => item.text)}\n          modalOpen={modalOpen}\n          setModalOpen={setModalOpen}\n          jobId={jobId}\n          applicationId={applicationId}\n          setSnackbarState={setSnackbarState}\n        />\n      )}\n    </>\n  );\n};\n\nexport default SavedQuestionsTab;\n","import React, { useState } from 'react';\nimport { Box, Modal } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport HomeStep from './HomeStep/HomeStep';\nimport LoadingResponse from '../../SharedComponents/Steps/LoadingResponse';\nimport ResponseStep from './ResponseStep';\nimport ErrorScreen from '../../SharedComponents/Steps/ErrorScreen';\nimport { StyledSnackbarProps } from '../../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport { defaultInclusions } from '../config';\nimport { classes } from '../styles';\nimport { modalSteps } from '../types';\nimport { IWebsocketData } from '../../SharedComponents/types';\nimport { useWebSockets } from '../../../NewUI/Components/Utilities/useWebSockets';\nimport { dismissNotification } from '../../SharedComponents/Utility/dismissNotification';\nimport { IJobApplication } from '../../../NewUI/Job/types';\n\nconst InterviewQuestions = ({\n  jobId,\n  open,\n  handleClose,\n  selectedApplicantId,\n  positionTitle,\n  setSnackbarState\n}: {\n  jobId: number;\n  open: boolean;\n  handleClose: () => void;\n  selectedApplicantId: IJobApplication['id'];\n  positionTitle: string;\n  setSnackbarState: StyledSnackbarProps['setSnackbarState'];\n}) => {\n  const [step, setStep] = useState<modalSteps>('input');\n  const [questionType, setQuestionType] = useState('general');\n  const [inclusions, setInclusions] = useState(defaultInclusions);\n  const [questionData, setQuestionData] = useState<IWebsocketData | null>(null);\n\n  const { subscribeToChannel, unsubscribeFromChannel, socketConnected } = useWebSockets(\n    'AiStudioChannel',\n    (data: IWebsocketData, UID?: number) => {\n      if (data.UID !== UID) return;\n      if (data.kind === 'error') {\n        setStep('error');\n      } else {\n        setQuestionData(data);\n        setStep('response');\n      }\n      unsubscribeFromChannel();\n    }\n  );\n\n  const requestQuestions = async () => {\n    setStep('loading');\n    const UID = Date.now();\n    try {\n      const response = await fetch(\n        `/api/v4/jobs/${jobId}/applications/${selectedApplicantId}/interview_question`,\n        {\n          method: 'POST',\n          headers: { 'Content-Type': 'application/json' },\n          body: JSON.stringify({\n            interview_question: {\n              position_title: positionTitle,\n              question_type: questionType,\n              information_include: Object.keys(inclusions).filter(\n                (key) => inclusions[key as keyof typeof inclusions].value\n              ),\n              UID: UID\n            }\n          })\n        }\n      );\n      await response.json();\n      if (response.ok) {\n        subscribeToChannel(UID);\n      } else {\n        throw new Error(`API Request failed with status ${response.status}`);\n      }\n    } catch (error) {\n      setStep('error');\n    }\n  };\n\n  const onClose = () => {\n    if (step === 'response' && questionData) {\n      dismissNotification(questionData.id);\n    }\n    setStep('input');\n    setQuestionType('general');\n    setInclusions(defaultInclusions);\n    setQuestionData(null);\n    unsubscribeFromChannel();\n    handleClose();\n  };\n\n  const renderStep = (step: modalSteps) => {\n    switch (step) {\n      case 'input':\n        return (\n          <HomeStep\n            positionTitle={positionTitle}\n            questionType={questionType}\n            setQuestionType={setQuestionType}\n            inclusions={inclusions}\n            setInclusions={setInclusions}\n            requestQuestions={requestQuestions}\n            jobId={jobId}\n            applicationId={selectedApplicantId}\n            setSnackbarState={setSnackbarState}\n          />\n        );\n      case 'loading':\n        return <LoadingResponse generationType=\"interview\" showSocketMessage={socketConnected} />;\n      case 'response':\n        return (\n          <ResponseStep\n            setStep={setStep}\n            requestQuestions={requestQuestions}\n            questionData={questionData}\n            jobId={jobId}\n            selectedApplicantId={selectedApplicantId}\n            setSnackbarState={setSnackbarState}\n          />\n        );\n      case 'error':\n        return (\n          <ErrorScreen regenerateCallback={requestQuestions} backToHome={() => setStep('input')} />\n        );\n      default:\n        return <div>Something went wrong</div>;\n    }\n  };\n\n  return (\n    <Modal open={open} onClose={onClose} aria-labelledby=\"suggested-interview-questions-modal\">\n      <Box sx={classes.modal}>\n        <Box sx={classes.aiModalContent}>\n          <CloseIcon onClick={onClose} sx={classes.closeIcon} />\n          {renderStep(step)}\n        </Box>\n      </Box>\n    </Modal>\n  );\n};\n\nexport default InterviewQuestions;\n","import React, { useState, useCallback, Dispatch, SetStateAction } from 'react';\nimport { Box, Button } from '@mui/material';\nimport CachedIcon from '@mui/icons-material/Cached';\nimport HomeIcon from '@mui/icons-material/Home';\nimport DynamicFooter from '../../SharedComponents/Footers/DynamicFooter';\nimport { classes } from '../styles';\nimport { modalSteps } from '../types';\nimport { StyledSnackbarProps } from '../../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport { IWebsocketData } from '../../SharedComponents/types';\nimport { convertToLocalEnglish } from '../../../NewUI/Components/Utilities/convertToLocalEnglish';\nimport {\n  arrayQuestion,\n  questionStringToArray\n} from '../../SharedComponents/Utility/questionStringToArray';\nimport SelectableCopyableQuestions from '../../SharedComponents/SelectableCopyableQuestions';\nimport { handleAPIRequest } from '../../../NewUI/Components/Utilities/handleAPIRequest';\nimport FollowUpEmailModal from './FollowUpEmail/FollowUpEmail';\n\nconst convertedQuestionData = (questions: string) => {\n  const convertedQUestions = convertToLocalEnglish(questions || '');\n  return questionStringToArray(convertedQUestions);\n};\n\nconst ResponseStep = ({\n  setStep,\n  requestQuestions,\n  questionData,\n  isNotification,\n  jobId,\n  selectedApplicantId,\n  setSnackbarState\n}: {\n  setStep?: Dispatch<SetStateAction<modalSteps>>;\n  requestQuestions?: () => void;\n  questionData: IWebsocketData | null;\n  isNotification?: boolean;\n  jobId?: number;\n  selectedApplicantId?: number | null;\n  setSnackbarState: StyledSnackbarProps['setSnackbarState'];\n}) => {\n  const [questions, setQuestions] = useState<arrayQuestion[]>(\n    convertedQuestionData(questionData?.content || '')\n  );\n  const [emailModalOpen, setEmailModalOpen] = useState<boolean>(false);\n  const saveSelectedQuestions = useCallback(async () => {\n    const sendableQuestions = questions.filter((item) => item.selected).map((item) => item.text);\n    setQuestions((prev) =>\n      prev.map((item) => (item.selected ? { ...item, status: 'loading' } : item))\n    );\n    handleAPIRequest({\n      url: `/api/v4/jobs/${jobId || questionData?.job_id}/applications/${\n        selectedApplicantId || questionData?.application_id\n      }/saved_interview_questions/add_questions`,\n      method: 'PATCH',\n      body: {\n        saved_interview_questions: {\n          questions: sendableQuestions\n        }\n      },\n      onSuccess: () => {\n        setQuestions((prev) =>\n          prev.map((item) => (item.selected ? { ...item, status: 'sent', selected: false } : item))\n        );\n      },\n      onFailure: () => {\n        setQuestions((prev) =>\n          prev.map((item) => (item.selected ? { ...item, status: 'error', selected: false } : item))\n        );\n      }\n    });\n  }, [jobId, questionData?.application_id, questionData?.job_id, questions, selectedApplicantId]);\n\n  return (\n    <>\n      <Box sx={classes.responseHeader}>\n        <Box sx={classes.header}>Suggested interview questions</Box>\n        {!isNotification && requestQuestions && (\n          <Box sx={{ display: 'flex', columnGap: '32px' }}>\n            <Button\n              sx={{ ...classes.pillButton, width: '154px' }}\n              endIcon={<HomeIcon />}\n              onClick={() => setStep && setStep('input')}\n            >\n              Start again\n            </Button>\n            <Button\n              sx={{ ...classes.pillButton, width: '154px' }}\n              endIcon={<CachedIcon />}\n              onClick={requestQuestions}\n            >\n              Regenerate\n            </Button>\n          </Box>\n        )}\n      </Box>\n      <Box sx={classes.applicantNameHeader}>\n        <a\n          href={`/admin/jobs/${jobId || questionData?.job_id}/applications/${\n            selectedApplicantId || questionData?.application_id\n          }`}\n          target=\"_blank\"\n          rel=\"noreferrer\"\n        >\n          {questionData?.candidate_name}\n        </a>\n      </Box>\n      <SelectableCopyableQuestions\n        questions={questions}\n        setQuestions={setQuestions}\n        maxHeight=\"450px\"\n      />\n      <DynamicFooter\n        primaryButtonText=\"Save questions\"\n        primaryButtonID=\"save-questions-button\"\n        handlePrimaryButtonClick={saveSelectedQuestions}\n        disablePrimaryButton={!questions.some((item) => item.selected)}\n        secondaryButtonText=\"Generate email\"\n        secondaryButtonID=\"generate-email-button\"\n        handleSecondaryButtonClick={() => setEmailModalOpen(true)}\n        disableSecondaryButton={!questions.some((item) => item.selected)}\n        felixMessage={\n          <>\n            Here are some follow up questions, you can use them during an <span>interview</span>,{' '}\n            <span>email</span> them to your candidate or save them to view later.\n          </>\n        }\n        felixMessageMaxWidth=\"420px\"\n        alternateSecondaryButton={true}\n      />\n      {emailModalOpen && (\n        <FollowUpEmailModal\n          questions={questions.filter((item) => item.selected).map((item) => item.text)}\n          modalOpen={emailModalOpen}\n          setModalOpen={setEmailModalOpen}\n          jobId={jobId || questionData?.job_id}\n          applicationId={selectedApplicantId || questionData?.application_id}\n          setSnackbarState={setSnackbarState}\n        />\n      )}\n    </>\n  );\n};\n\nexport default ResponseStep;\n","import React, { Dispatch, SetStateAction, useMemo, useRef, useState } from 'react';\nimport { Box, Button, CircularProgress, Fade, Popper } from '@mui/material';\nimport OpenInFullIcon from '@mui/icons-material/OpenInFull';\nimport ExpandedSummaryModal from './ExpandedSummaryModal';\nimport dompurify from 'dompurify';\nimport { classes } from './styles';\nimport { StyledSnackbarProps } from '../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport { FelixConfused, FelixMessageSVG } from '../SharedComponents/Graphics/FelixSVG';\nimport { IApplicationInfo } from '../SharedComponents/types';\nimport { convertToLocalEnglish } from '../../NewUI/Components/Utilities/convertToLocalEnglish';\n\nconst SummaryPopover = ({\n  applicantHovered,\n  handleHoverApplicant,\n  handleUnhoverApplicant,\n  lastHoveredApplicant,\n  anchorEl,\n  jobId,\n  setSnackbarState,\n  summaryGeneratingIds,\n  setSummaryGeneratingIds\n}: {\n  applicantHovered: boolean;\n  handleHoverApplicant: (target: HTMLElement | null, application?: IApplicationInfo) => void;\n  handleUnhoverApplicant: () => void;\n  lastHoveredApplicant: IApplicationInfo;\n  anchorEl: HTMLElement | null;\n  jobId: number;\n  setSnackbarState: StyledSnackbarProps['setSnackbarState'];\n  summaryGeneratingIds: number[];\n  setSummaryGeneratingIds: Dispatch<SetStateAction<number[]>>;\n}) => {\n  const [expanded, setExpanded] = useState(false);\n  const [copied, setCopied] = useState(false);\n  const [loadingSummary, setLoadingSummary] = useState(false);\n  const summaryRef = useRef<HTMLDivElement | null>(null);\n\n  const [dotPoints, summary] = useMemo(() => {\n    if (!lastHoveredApplicant?.summary) return [null, null];\n    const summary = convertToLocalEnglish(lastHoveredApplicant.summary);\n    const ulIndex = summary.indexOf('<ul>');\n\n    if (ulIndex !== -1) {\n      const listItems = summary\n        ?.replace('\\n', '')\n        .split('<ul>')[1]\n        .split('</li>')\n        .slice(0, 3)\n        .join('</li>');\n      return ['<ul>' + listItems + '</li></ul>', summary];\n    } else {\n      // Handle the case where <ul> is not found in the summary\n      return [summary, summary];\n    }\n  }, [lastHoveredApplicant.summary]);\n\n  const handleCloseModal = () => {\n    setExpanded(false);\n  };\n\n  const generateSummary = async () => {\n    setLoadingSummary(true);\n    try {\n      const request = await fetch(\n        `/api/v4/jobs/${jobId}/applications/${lastHoveredApplicant.id}/application_summary`,\n        {\n          method: 'POST',\n          headers: {\n            'Content-Type': 'application/json'\n          }\n        }\n      );\n      if (request.ok) {\n        setSnackbarState({\n          message: 'Summary is being generated, this may take a few minutes',\n          state: 'success'\n        });\n        setSummaryGeneratingIds((prev) => [...prev, lastHoveredApplicant.id]);\n      } else {\n        const response = await request.json();\n        setSnackbarState({\n          message: response.errors || 'Error requesting a generated summary',\n          state: 'error'\n        });\n      }\n    } catch (e) {\n      setSnackbarState({\n        message: 'Something went wrong, please refresh and try again',\n        state: 'error'\n      });\n    } finally {\n      setLoadingSummary(false);\n      setExpanded(false);\n    }\n  };\n\n  const isGeneratingSummary = useMemo(\n    () => summaryGeneratingIds.includes(lastHoveredApplicant.id || -1),\n    [summaryGeneratingIds, lastHoveredApplicant.id]\n  );\n\n  return (\n    <>\n      <Popper\n        id={'application-summary-popper'}\n        open={applicantHovered}\n        anchorEl={anchorEl}\n        placement=\"right\"\n        transition\n        sx={classes.summaryPopper}\n        onMouseEnter={() => handleHoverApplicant(anchorEl)}\n        onMouseLeave={handleUnhoverApplicant}\n      >\n        {({ TransitionProps }) => (\n          <Fade {...TransitionProps} timeout={300}>\n            <Box sx={classes.summaryPopover}>\n              {summary ? (\n                <>\n                  <OpenInFullIcon id='expand-AI-summary-button' sx={classes.expandIcon} onClick={() => setExpanded(true)} />\n                  <div dangerouslySetInnerHTML={{ __html: dompurify.sanitize(dotPoints) }} />\n                </>\n              ) : (\n                <>\n                  <Box sx={classes.noSummaryFelix}>\n                    {isGeneratingSummary ? <FelixMessageSVG /> : <FelixConfused />}\n                  </Box>\n                  <Box sx={classes.noSummary}>\n                    {isGeneratingSummary ? 'Summary being generated' : 'No summary available'}\n                  </Box>\n                  <Box sx={classes.noSummaryGenerate}>\n                    {!isGeneratingSummary ? (\n                      <Button sx={classes.pillButton} onClick={generateSummary}>\n                        {loadingSummary ? (\n                          <CircularProgress size={20} color=\"inherit\" />\n                        ) : (\n                          'Request summary'\n                        )}\n                      </Button>\n                    ) : (\n                      <Box sx={classes.noSummary}>Please check back in a few minutes</Box>\n                    )}\n                  </Box>\n                </>\n              )}\n            </Box>\n          </Fade>\n        )}\n      </Popper>\n      {summary && (\n        <ExpandedSummaryModal\n          jobId={jobId}\n          expanded={expanded}\n          handleCloseModal={handleCloseModal}\n          lastHoveredApplicant={lastHoveredApplicant}\n          summaryRef={summaryRef}\n          setCopied={setCopied}\n          copied={copied}\n          loadingSummary={loadingSummary}\n          generateSummary={generateSummary}\n          setSnackbarState={setSnackbarState}\n        />\n      )}\n    </>\n  );\n};\n\nexport default SummaryPopover;\n","import React, { useState, Dispatch, SetStateAction } from 'react';\nimport { Box, Button } from '@mui/material';\nimport AddIcon from '@mui/icons-material/Add';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport DoneIcon from '@mui/icons-material/Done';\nimport { classes } from './styles';\nimport AIStudioModal from '../AIStudioModal/AIStudioModal';\nimport AIStudioField from '../AIStudioQuestions/AIStudioQuestions';\nimport GenericDialog from '../../NewUI/Components/Modals/GenericDialog';\nimport { QuestionsPreview } from './QuestionsPreview';\nimport DisplayHTMLCollapsible from '../SharedComponents/DisplayHTMLCollapsible';\n\nexport interface IGeneratedContent {\n  talentLandingPage: string;\n  screeningQuestions: {\n    title: string;\n    enabled: boolean;\n    required: boolean;\n    rateable: boolean;\n    confidential: boolean;\n  }[];\n}\n\nfunction AIStudioNewJob({\n  generatedContent,\n  setGeneratedContent,\n  prefillData\n}: {\n  generatedContent: IGeneratedContent;\n  setGeneratedContent: Dispatch<SetStateAction<IGeneratedContent>>;\n  prefillData: {\n    title: string;\n    country: string;\n  };\n}) {\n  const [tlpModalOpen, setTlpModalOpen] = useState(false);\n  const [questionsModalOpen, setQuestionsModalOpen] = useState(false);\n  const [tlpButtonIsHovered, setTlpButtonIsHovered] = useState(false);\n  const [questionsButtonIsHovered, setQuestionsButtonIsHovered] = useState(false);\n  const [deleteConfirmOpen, setDeleteConfirmOpen] = useState(false);\n  const [collapsed, setCollapsed] = useState(true);\n\n  const tlpButtonEndIcon = () => {\n    if (tlpButtonIsHovered && generatedContent.talentLandingPage) {\n      return <DeleteIcon sx={{ color: '#E37D7A' }} />;\n    } else {\n      return generatedContent.talentLandingPage ? <DoneIcon /> : <AddIcon />;\n    }\n  };\n\n  const questionButtonEndIcon = () => {\n    if (generatedContent.screeningQuestions.length > 0) {\n      return questionsButtonIsHovered ? <AddIcon sx={{ color: '#76D18F' }} /> : <DoneIcon />;\n    } else {\n      return <AddIcon />;\n    }\n  };\n\n  const handleTlpButtonClick = () => {\n    if (generatedContent.talentLandingPage) {\n      setDeleteConfirmOpen(true);\n    } else {\n      setTlpModalOpen(true);\n    }\n  };\n\n  const handleQuestionsButtonClick = () => {\n    setQuestionsModalOpen(true);\n  };\n\n  const confirmTlpDelete = () => {\n    setGeneratedContent((prev) => ({ ...prev, talentLandingPage: '' }));\n    setDeleteConfirmOpen(false);\n  };\n\n  const handleSwitchChange = (index: number, type: string) => {\n    const newQuestions = [...generatedContent.screeningQuestions];\n    newQuestions[index][type as keyof (typeof newQuestions)[index]] = !newQuestions[index][type];\n    setGeneratedContent((prev) => ({ ...prev, screeningQuestions: newQuestions }));\n  };\n\n  const handleRemoveQuestion = (index: number) => {\n    const newQuestions = [...generatedContent.screeningQuestions];\n    newQuestions.splice(index, 1);\n    setGeneratedContent((prev) => ({ ...prev, screeningQuestions: newQuestions }));\n  };\n\n  return (\n    <>\n      <Box sx={classes.rootContainer}>\n        <Box sx={classes.aiHeader}>Add generated content with AI Studio</Box>\n        <Box sx={classes.buttonsContainer}>\n          <Button\n            sx={generatedContent.talentLandingPage ? classes.aiButtonFilled : classes.aiButton}\n            onClick={handleTlpButtonClick}\n            endIcon={tlpButtonEndIcon()}\n            onMouseEnter={() => setTlpButtonIsHovered(true)}\n            onMouseLeave={() => setTlpButtonIsHovered(false)}\n          >\n            Generate talent landing page\n          </Button>\n          <Button\n            sx={\n              generatedContent.screeningQuestions.length > 0\n                ? classes.aiButtonFilled\n                : classes.aiButton\n            }\n            endIcon={questionButtonEndIcon()}\n            onClick={handleQuestionsButtonClick}\n            onMouseEnter={() => setQuestionsButtonIsHovered(true)}\n            onMouseLeave={() => setQuestionsButtonIsHovered(false)}\n          >\n            Generate screening questions\n          </Button>\n        </Box>\n        {generatedContent.talentLandingPage && (\n          <Box sx={classes.previewContainer}>\n            <h3>Talent landing page preview</h3>\n            <DisplayHTMLCollapsible\n              content={generatedContent.talentLandingPage}\n              collapsed={collapsed}\n              setCollapsed={setCollapsed}\n            />\n          </Box>\n        )}\n        {generatedContent.screeningQuestions.length > 0 && (\n          <QuestionsPreview\n            questions={generatedContent.screeningQuestions}\n            handleSwitchChange={handleSwitchChange}\n            handleRemoveQuestion={handleRemoveQuestion}\n          />\n        )}\n      </Box>\n      {tlpModalOpen && (\n        <AIStudioModal\n          aiStudioEnabled={true}\n          showPreview={false}\n          setTlpModalOpen={setTlpModalOpen}\n          jobFlow={true}\n          prefillData={prefillData}\n          setGeneratedContent={(content) =>\n            setGeneratedContent((prev) => ({\n              ...prev,\n              talentLandingPage: content\n            }))\n          }\n        />\n      )}\n      {questionsModalOpen && (\n        <AIStudioField\n          jobTitle={prefillData.title}\n          modalsOpen={questionsModalOpen}\n          setModalsOpen={(open: boolean) => setQuestionsModalOpen(open)}\n          setGeneratedContent={setGeneratedContent}\n        />\n      )}\n      <GenericDialog\n        isDialogOpen={deleteConfirmOpen}\n        setDialogOpen={setDeleteConfirmOpen}\n        title=\"Remove talent landing page?\"\n        description=\"Are you sure you want to remove the talent landing page? This action cannot be undone.\"\n        buttonCallback={confirmTlpDelete}\n        callbackLoading={false}\n        buttonText=\"Remove TLP\"\n        url=\"\"\n      />\n    </>\n  );\n}\n\nexport default AIStudioNewJob;\n","import React from 'react';\nimport { Box, Button } from '@mui/material';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport { classes } from './styles';\nimport QuestionSwitch from '../SharedComponents/Inputs/Switch';\nimport { IGeneratedContent } from './AIStudioNewJob';\n\nexport const QuestionsPreview = ({\n  questions,\n  previewOnly,\n  handleSwitchChange,\n  handleRemoveQuestion\n}: {\n  questions: IGeneratedContent['screeningQuestions'];\n  previewOnly?: boolean;\n  handleSwitchChange?: (index: number, type: string) => void;\n  handleRemoveQuestion?: (index: number) => void;\n}) => {\n  const onSwitchChange = (index: number, type: string) => {\n    if (handleSwitchChange) {\n      handleSwitchChange(index, type);\n    }\n  };\n\n  return (\n    <Box sx={classes.previewContainer}>\n      <h3>Screening Questions</h3>\n      <Box sx={{ ...classes.questionsContainer, ...(previewOnly && { filter: 'contrast(0.5)' }) }}>\n        {questions.map((item, index) => (\n          <Box sx={classes.question} key={index}>\n            <Box sx={{ display: 'flex', flexDirection: 'column', rowGap: '16px' }}>\n              <Box sx={{ marginTop: '7px' }}>{item.title}</Box>\n              <Box>\n                <Box sx={{ display: 'flex', alignItems: 'center' }}>\n                  <QuestionSwitch\n                    item={item}\n                    index={index}\n                    type=\"enabled\"\n                    label=\"Enabled\"\n                    onChange={onSwitchChange}\n                  />\n                  <QuestionSwitch\n                    item={item}\n                    index={index}\n                    type=\"required\"\n                    label=\"Required\"\n                    onChange={onSwitchChange}\n                  />\n                  <QuestionSwitch\n                    item={item}\n                    index={index}\n                    type=\"rateable\"\n                    label=\"Rateable\"\n                    onChange={onSwitchChange}\n                  />\n                  {handleRemoveQuestion && (\n                    <Button\n                      sx={classes.deleteQuestionButton}\n                      endIcon={<DeleteIcon />}\n                      onClick={() => handleRemoveQuestion(index)}\n                    >\n                      Remove\n                    </Button>\n                  )}\n                </Box>\n              </Box>\n            </Box>\n          </Box>\n        ))}\n      </Box>\n    </Box>\n  );\n};\n","import React, { forwardRef } from 'react';\nimport { Box } from '@mui/material';\nimport EmailIcon from '@mui/icons-material/Email';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { classes } from '../styles';\n\nconst EmailButton = forwardRef<\n  HTMLElement,\n  {\n    onClick: () => void;\n    inputOpen: boolean;\n    buttonId?: string;\n  }\n>(({ onClick, inputOpen, buttonId, ...props }, ref) => {\n  return (\n    <Box\n      id={buttonId}\n      sx={{\n        ...classes.floatingActionButton,\n        ...classes.emailInputButton,\n        ...(inputOpen && classes.inputOpen)\n      }}\n      onClick={() => onClick()}\n      ref={ref}\n      {...props}\n    >\n      {inputOpen ? <CloseIcon /> : <EmailIcon />}\n    </Box>\n  );\n});\nEmailButton.displayName = 'EmailButton';\nexport default EmailButton;\n","import React, { forwardRef } from 'react';\nimport { Box } from '@mui/material';\nimport IosShareIcon from '@mui/icons-material/IosShare';\nimport { classes } from '../styles';\n\nconst ExportButton = forwardRef<HTMLElement, { onClick: () => void; buttonId?: string }>(\n  ({ onClick, buttonId, ...props }, ref) => {\n    return (\n      <Box\n        id={buttonId}\n        sx={classes.floatingActionButton}\n        onClick={() => onClick()}\n        ref={ref}\n        {...props}\n      >\n        <IosShareIcon />\n      </Box>\n    );\n  }\n);\nExportButton.displayName = 'ExportButton';\nexport default ExportButton;\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { ToggleButton, ToggleButtonGroup } from '@mui/material';\nimport { classes } from '../styles';\n\nconst ToggleButtons = ({\n  value,\n  setValue,\n  options\n}: {\n  value: string;\n  setValue: (value: string) => void | Dispatch<SetStateAction<string>>;\n  options: {\n    value: string;\n    label: string;\n  }[];\n}) => {\n  return (\n    <ToggleButtonGroup\n      value={value}\n      exclusive\n      onChange={(e, value) => {\n        if (value === null) return;\n        setValue(value);\n      }}\n    >\n      {options.map((button, index) => (\n        <ToggleButton value={button.value} sx={classes.toggleButton} key={index}>\n          {button.label}\n        </ToggleButton>\n      ))}\n    </ToggleButtonGroup>\n  );\n};\n\nexport default ToggleButtons;\n","import React, { useState } from 'react';\nimport { Box, Button } from '@mui/material';\nimport CodeIcon from '@mui/icons-material/Code';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\nimport { classes } from './styles';\nimport { LIST_ITEMS_REGEX } from './sharedConfig';\n\nconst CopyableQuestions = ({\n  questions,\n  numberOfQuestions,\n  maxHeight\n}: {\n  questions: string | undefined;\n  numberOfQuestions?: number;\n  maxHeight?: string;\n}) => {\n  // create an array of booleans to track which questions have been copied\n  const arrayOfBooleans = Array.from(Array(numberOfQuestions || 5), () => false);\n  const [copiedQuestion, setCopiedQuestion] = useState(arrayOfBooleans);\n\n  const handleCopyQuestion = (index: number) => {\n    setCopiedQuestion((prev) => prev.map((item, i) => (i === index ? true : item)));\n    setTimeout(\n      () => setCopiedQuestion((prev) => prev.map((item, i) => (i === index ? false : item))),\n      3000\n    );\n  };\n\n  return (\n    <Box sx={{ ...classes.questionsContainer, ...(maxHeight && { maxHeight }) }}>\n      {questions &&\n        questions\n          .replace(LIST_ITEMS_REGEX, '')\n          .split('**')\n          .slice(0, -1)\n          .map((item, index) => (\n            <Box sx={classes.question} key={index}>\n              <Box sx={{ maxWidth: '700px' }}>{item}</Box>\n              <CopyToClipboard text={item} onCopy={() => handleCopyQuestion(index)}>\n                <Button\n                  className=\"copy-question-button\"\n                  sx={classes.copyButton}\n                  endIcon={<CodeIcon />}\n                >\n                  {copiedQuestion[Number(index)] ? 'Copied!' : 'Copy'}\n                </Button>\n              </CopyToClipboard>\n            </Box>\n          ))}\n    </Box>\n  );\n};\n\nexport default CopyableQuestions;\n","import React from 'react';\nimport { Box, Collapse } from '@mui/material';\nimport dompurify from 'dompurify';\nimport { classes } from './styles';\n\nconst DisplayHTMLCollapsible = ({\n  content,\n  collapsed,\n  setCollapsed\n}: {\n  content: string;\n  collapsed: boolean;\n  setCollapsed: (collapsed: boolean) => void;\n}) => {\n  return (\n    <>\n      <Collapse in={!collapsed} collapsedSize={120}>\n        <Box\n          sx={classes.descriptionPreview}\n          dangerouslySetInnerHTML={{\n            __html: dompurify.sanitize(content)\n          }}\n        />\n      </Collapse>\n      <Box sx={classes.toggleDescriptionPreview} onClick={() => setCollapsed(!collapsed)}>\n        {collapsed ? 'Show more' : 'Show less' }\n      </Box>\n    </>\n  );\n};\n\nexport default DisplayHTMLCollapsible;\n","import React, { useState, Dispatch, SetStateAction } from 'react';\nimport { Box, Button, CircularProgress, Skeleton, Tooltip } from '@mui/material';\nimport ExportButton from './Buttons/ExportButton';\nimport EmailButton from './Buttons/EmailButton';\nimport { classes } from './styles';\nimport dompurify from 'dompurify';\nimport MultiTagInput from '../../NewUI/Components/CustomUIElements/MultiTagInput';\nimport { emailIsValid } from '../../NewUI/Components/Utilities/emailIsValid';\n\nconst DisplayHTMLViewOnly = ({\n  content,\n  viewerRef,\n  onExportClick,\n  setEmails,\n  emails,\n  onSendEmailClick,\n  emailInputOpen,\n  setEmailInputOpen,\n  sendingEmails,\n  loadingHTML,\n  maxHeight,\n  sendEmailButtonId,\n  emailButtonId,\n  exportButtonId\n}: {\n  content: string;\n  viewerRef?: React.RefObject<HTMLDivElement>;\n  onExportClick?: () => void;\n  setEmails?: Dispatch<SetStateAction<string[]>>;\n  emails?: string[];\n  onSendEmailClick?: () => void;\n  emailInputOpen?: boolean;\n  setEmailInputOpen?: Dispatch<SetStateAction<boolean>>;\n  sendingEmails?: boolean;\n  loadingHTML?: boolean;\n  maxHeight?: string;\n  sendEmailButtonId?: string;\n  emailButtonId?: string;\n  exportButtonId?: string;\n}) => {\n  const [emailTooltipOpen, setEmailTooltipOpen] = useState(false);\n  const [emailTooltipHidden, setEmailTooltipHidden] = useState(false);\n  return (\n    <Box sx={classes.viewOnlyHTMLParent}>\n      {emailInputOpen && setEmails && (\n        <Box sx={classes.emailInputContainer}>\n          <Box sx={classes.emailInput}>\n            <MultiTagInput\n              tags={emails || []}\n              setTags={setEmails}\n              validation={emailIsValid}\n              validationMessage=\"Must input valid email\"\n              label=\"Email address/s\"\n              width=\"100%\"\n              tagType=\"emails\"\n              helperText=\"To copy and paste bulk emails, email addresses must be separated with a comma\"\n              styles={classes.inputStyles}\n              labelStylesOverride={classes.labelStyles}\n              helperTextStylesOverride={classes.helperTextStyles}\n              autoFocus\n            />\n          </Box>\n          <Button\n            id={sendEmailButtonId}\n            sx={classes.sendEmailButton}\n            onClick={onSendEmailClick}\n            disabled={emails?.length === 0}\n          >\n            {!sendingEmails ? 'Send' : <CircularProgress size={12} color=\"inherit\" />}\n          </Button>\n        </Box>\n      )}\n      {loadingHTML ? (\n        <Skeleton width=\"100%\" height={maxHeight || '100%'} sx={{ transform: 'scale(1)' }} />\n      ) : (\n        <Box\n          sx={{ ...classes.viewOnlyHTML, ...(maxHeight && { maxHeight }) }}\n          ref={viewerRef}\n          dangerouslySetInnerHTML={{\n            __html: dompurify.sanitize(content)\n          }}\n        />\n      )}\n      {setEmails && (\n        <Tooltip\n          open={emailTooltipOpen}\n          onClose={() => setEmailTooltipOpen(false)}\n          onOpen={() => setEmailTooltipOpen(emailTooltipHidden ? false : true)}\n          title=\"Email\"\n          placement=\"top\"\n        >\n          <EmailButton\n            onClick={() => {\n              setEmailInputOpen && setEmailInputOpen((prev) => !prev);\n              setEmailTooltipOpen(false);\n              emailInputOpen\n                ? setTimeout(() => setEmailTooltipHidden(false), 300)\n                : setEmailTooltipHidden(true);\n            }}\n            inputOpen={emailInputOpen || false}\n            buttonId={emailButtonId}\n          />\n        </Tooltip>\n      )}\n      {onExportClick && !emailInputOpen && (\n        <Tooltip title=\"Download as PDF\" placement=\"top\">\n          <ExportButton onClick={onExportClick} buttonId={exportButtonId} />\n        </Tooltip>\n      )}\n    </Box>\n  );\n};\n\nexport default DisplayHTMLViewOnly;\n","import React from 'react';\nimport { Box, Button } from '@mui/material';\nimport { FelixMessageSVG } from '../Graphics/FelixSVG';\nimport { classes } from '../styles';\n\nconst DynamicFooter = ({\n  handleSecondaryButtonClick,\n  handlePrimaryButtonClick,\n  secondaryButtonText,\n  primaryButtonText,\n  secondaryButtonID,\n  primaryButtonID,\n  primaryButtonMinWidth,\n  secondaryButtonMinWidth,\n  felixMessage,\n  felixMessageMaxWidth,\n  disablePrimaryButton,\n  disableSecondaryButton,\n  footerWidth,\n  primaryEndIcon,\n  alternateSecondaryButton\n}: {\n  handleSecondaryButtonClick?: () => void;\n  handlePrimaryButtonClick: () => void;\n  secondaryButtonText?: string | JSX.Element;\n  primaryButtonText: string | JSX.Element;\n  secondaryButtonID?: string;\n  primaryButtonID?: string;\n  primaryButtonMinWidth?: string;\n  secondaryButtonMinWidth?: string;\n  felixMessage: JSX.Element;\n  disablePrimaryButton?: boolean;\n  disableSecondaryButton?: boolean;\n  felixMessageMaxWidth?: string;\n  footerWidth?: string;\n  primaryEndIcon?: JSX.Element;\n  alternateSecondaryButton?: boolean;\n}) => {\n  return (\n    <Box sx={{ ...classes.footerContainer, ...(footerWidth && { width: footerWidth }) }}>\n      <Box sx={classes.felixMessageContainer}>\n        <FelixMessageSVG />\n        <Box\n          sx={{\n            ...classes.felixMessage,\n            ...(felixMessageMaxWidth && { maxWidth: felixMessageMaxWidth })\n          }}\n        >\n          {felixMessage}\n        </Box>\n      </Box>\n      <Box sx={classes.footerButtonsContainer}>\n        {handleSecondaryButtonClick && (\n          <Button\n            id={secondaryButtonID}\n            sx={{\n              ...(alternateSecondaryButton\n                ? classes.altFooterSecondaryButton\n                : classes.footerBackButton),\n              ...(secondaryButtonMinWidth && { minWidth: secondaryButtonMinWidth })\n            }}\n            onClick={handleSecondaryButtonClick}\n            disabled={disableSecondaryButton || false}\n          >\n            {secondaryButtonText}\n          </Button>\n        )}\n        <Button\n          id={primaryButtonID}\n          sx={{\n            ...classes.footerContinueButton,\n            ...(primaryButtonMinWidth && { minWidth: primaryButtonMinWidth })\n          }}\n          onClick={handlePrimaryButtonClick}\n          disabled={disablePrimaryButton || false}\n          endIcon={primaryEndIcon}\n        >\n          {primaryButtonText}\n        </Button>\n      </Box>\n    </Box>\n  );\n};\n\nexport default DynamicFooter;\n","import { SvgIcon } from '@mui/material';\nimport React from 'react';\n\nexport const FelixSVG = () => {\n  return (\n    <svg\n      width=\"290\"\n      height=\"390\"\n      viewBox=\"0 0 290 390\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <g clipPath=\"url(#clip0_2634_2987)\">\n        <path\n          d=\"M230.123 87.643C232.069 127.437 186.353 141.552 129.245 144.324C72.1369 147.096 25.2531 137.468 23.3071 97.6885C21.3611 57.9089 65.0864 3.00152 122.194 0.229325C179.302 -2.54287 228.177 47.8485 230.123 87.6281V87.643Z\"\n          fill=\"url(#paint0_linear_2634_2987)\"\n        />\n        <path\n          d=\"M206.052 80.2653C208.926 110.789 174.257 123.205 130.442 127.288C86.6273 131.372 50.2519 125.574 47.3778 95.0504C44.5037 64.5264 76.2386 20.8271 120.054 16.7433C163.869 12.6595 203.178 49.7414 206.052 80.2653Z\"\n          fill=\"url(#paint1_linear_2634_2987)\"\n        />\n        <path\n          d=\"M89.2169 79.0134C92.8628 79.0134 95.8184 76.0707 95.8184 72.4406C95.8184 68.8106 92.8628 65.8678 89.2169 65.8678C85.5711 65.8678 82.6155 68.8106 82.6155 72.4406C82.6155 76.0707 85.5711 79.0134 89.2169 79.0134Z\"\n          fill=\"white\"\n        />\n        <path\n          d=\"M160.336 72.4406C163.982 72.4406 166.938 69.4979 166.938 65.8678C166.938 62.2378 163.982 59.295 160.336 59.295C156.69 59.295 153.735 62.2378 153.735 65.8678C153.735 69.4979 156.69 72.4406 160.336 72.4406Z\"\n          fill=\"white\"\n        />\n        <path\n          d=\"M105.025 83.8722C106.881 85.5117 126.071 102.026 141.804 90.8623C144.214 89.1483 147.283 86.2718 150.157 81.2341\"\n          stroke=\"white\"\n          strokeMiterlimit=\"10\"\n        />\n        <path\n          d=\"M24.5796 232.885C29.5793 168.603 74.4722 152.775 128.017 156.903C181.562 161.032 223.476 183.552 218.477 247.834C213.477 312.116 163.465 393.792 109.919 389.663C56.3743 385.535 19.5798 297.153 24.5796 232.885Z\"\n          fill=\"url(#paint2_linear_2634_2987)\"\n        />\n        <path\n          d=\"M239.539 204.418C209.615 233.869 190.933 232.826 178.898 220.694C166.863 208.576 166.039 189.961 195.978 160.51C225.902 131.059 275.255 101.936 287.276 114.068C299.311 126.185 269.462 174.967 239.539 204.418Z\"\n          fill=\"url(#paint3_linear_2634_2987)\"\n        />\n        <path\n          d=\"M19.3253 220.366C36.4801 182.121 54.2636 176.338 69.8916 183.284C85.5195 190.229 93.064 207.28 75.9092 245.524C58.7544 283.768 23.4119 328.75 7.76903 321.804C-7.87387 314.859 2.17052 258.625 19.3253 220.366Z\"\n          fill=\"url(#paint4_linear_2634_2987)\"\n        />\n      </g>\n      <defs>\n        <linearGradient\n          id=\"paint0_linear_2634_2987\"\n          x1=\"22.3116\"\n          y1=\"77.298\"\n          x2=\"229.117\"\n          y2=\"67.1758\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop stopColor=\"#92ADF4\" />\n          <stop offset=\"0.35\" stopColor=\"#8EA8F3\" />\n          <stop offset=\"0.72\" stopColor=\"#849BF1\" />\n          <stop offset=\"1\" stopColor=\"#798DF0\" />\n        </linearGradient>\n        <linearGradient\n          id=\"paint1_linear_2634_2987\"\n          x1=\"126.708\"\n          y1=\"16.4333\"\n          x2=\"126.708\"\n          y2=\"128.447\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop stopColor=\"#5656DB\" />\n          <stop offset=\"1\" stopColor=\"#4949BB\" />\n        </linearGradient>\n        <linearGradient\n          id=\"paint2_linear_2634_2987\"\n          x1=\"215.877\"\n          y1=\"280.276\"\n          x2=\"21.8367\"\n          y2=\"265.178\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop stopColor=\"#CDD7F2\" />\n          <stop offset=\"0.35\" stopColor=\"#AABFFB\" />\n          <stop offset=\"0.72\" stopColor=\"#849BF1\" />\n          <stop offset=\"1\" stopColor=\"#798DF0\" />\n        </linearGradient>\n        <linearGradient\n          id=\"paint3_linear_2634_2987\"\n          x1=\"300.574\"\n          y1=\"98.5488\"\n          x2=\"184.563\"\n          y2=\"258.479\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop offset=\"0.19\" stopColor=\"#92ADF4\" />\n          <stop offset=\"0.46\" stopColor=\"#88A1F2\" />\n          <stop offset=\"0.78\" stopColor=\"#798DF0\" />\n        </linearGradient>\n        <linearGradient\n          id=\"paint4_linear_2634_2987\"\n          x1=\"1.49528\"\n          y1=\"341.293\"\n          x2=\"51.6834\"\n          y2=\"150.448\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop offset=\"0.19\" stopColor=\"#92ADF4\" />\n          <stop offset=\"0.46\" stopColor=\"#88A1F2\" />\n          <stop offset=\"0.78\" stopColor=\"#798DF0\" />\n        </linearGradient>\n        <clipPath id=\"clip0_2634_2987\">\n          <rect width=\"290\" height=\"389.687\" fill=\"white\" transform=\"translate(0 0.125)\" />\n        </clipPath>\n      </defs>\n    </svg>\n  );\n};\n\nexport const FelixButtonSVG = () => {\n  return (\n    <svg\n      width=\"44\"\n      height=\"50\"\n      viewBox=\"0 0 44 50\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      style={{ transform: 'scale(1) translate(2px, -3px)' }}\n    >\n      <path\n        d=\"M35.3605 11.1668C35.6088 16.244 29.776 18.0448 22.4899 18.3985C15.2037 18.7522 9.22196 17.5237 8.97367 12.4484C8.72539 7.3731 14.3041 0.367674 21.5903 0.0139802C28.8765 -0.339714 35.1122 6.08953 35.3605 11.1649V11.1668Z\"\n        fill=\"url(#paint0_linear_2639_4522)\"\n      />\n      <path\n        d=\"M32.2894 10.2255C32.6561 14.1199 28.2329 15.7039 22.6427 16.225C17.0525 16.746 12.4115 16.0063 12.0448 12.1118C11.6781 8.2174 15.727 2.64197 21.3172 2.12093C26.9074 1.5999 31.9228 6.33104 32.2894 10.2255Z\"\n        fill=\"url(#paint1_linear_2639_4522)\"\n      />\n      <path\n        d=\"M17.3828 10.0657C17.848 10.0657 18.2251 9.69029 18.2251 9.22715C18.2251 8.764 17.848 8.38855 17.3828 8.38855C16.9177 8.38855 16.5406 8.764 16.5406 9.22715C16.5406 9.69029 16.9177 10.0657 17.3828 10.0657Z\"\n        fill=\"white\"\n      />\n      <path\n        d=\"M26.4567 9.22715C26.9219 9.22715 27.299 8.8517 27.299 8.38855C27.299 7.92541 26.9219 7.54996 26.4567 7.54996C25.9915 7.54996 25.6144 7.92541 25.6144 8.38855C25.6144 8.8517 25.9915 9.22715 26.4567 9.22715Z\"\n        fill=\"white\"\n      />\n      <path\n        d=\"M19.3997 10.6857C19.6365 10.8948 22.0849 13.0018 24.0922 11.5775C24.3997 11.3588 24.7912 10.9918 25.1579 10.3491\"\n        stroke=\"white\"\n        strokeMiterlimit=\"10\"\n      />\n      <mask\n        id=\"mask0_2639_4522\"\n        style={{ maskType: 'alpha' }}\n        maskUnits=\"userSpaceOnUse\"\n        x=\"0\"\n        y=\"6\"\n        width=\"41\"\n        height=\"42\"\n      >\n        <circle cx=\"20.5\" cy=\"26.5007\" r=\"20.5\" fill=\"url(#paint2_linear_2639_4522)\" />\n      </mask>\n      <g mask=\"url(#mask0_2639_4522)\">\n        <path\n          d=\"M9.136 29.6977C9.7739 21.4962 15.5016 19.4767 22.3332 20.0034C29.1649 20.5302 34.5125 23.4034 33.8746 31.605C33.2367 39.8065 26.8558 50.2271 20.0242 49.7004C13.1926 49.1737 8.4981 37.8973 9.136 29.6977Z\"\n          fill=\"url(#paint3_linear_2639_4522)\"\n        />\n      </g>\n      <path\n        d=\"M36.5618 26.0657C32.7439 29.8232 30.3604 29.6901 28.8249 28.1422C27.2893 26.5962 27.1843 24.2211 31.0041 20.4636C34.8219 16.7061 41.1187 12.9904 42.6524 14.5383C44.1879 16.0842 40.3796 22.3081 36.5618 26.0657Z\"\n        fill=\"url(#paint4_linear_2639_4522)\"\n      />\n      <path\n        d=\"M8.46566 28.1003C10.6544 23.2209 12.9233 22.4831 14.9172 23.3692C16.9111 24.2553 17.8737 26.4308 15.685 31.3102C13.4963 36.1897 8.98706 41.9286 6.99124 41.0425C4.99542 40.1564 6.27695 32.9817 8.46566 28.1003Z\"\n        fill=\"url(#paint5_linear_2639_4522)\"\n      />\n      <defs>\n        <linearGradient\n          id=\"paint0_linear_2639_4522\"\n          x1=\"8.84665\"\n          y1=\"9.84688\"\n          x2=\"35.2322\"\n          y2=\"8.55542\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop stopColor=\"#92ADF4\" />\n          <stop offset=\"0.35\" stopColor=\"#8EA8F3\" />\n          <stop offset=\"0.72\" stopColor=\"#849BF1\" />\n          <stop offset=\"1\" stopColor=\"#798DF0\" />\n        </linearGradient>\n        <linearGradient\n          id=\"paint1_linear_2639_4522\"\n          x1=\"22.1662\"\n          y1=\"2.08139\"\n          x2=\"22.1662\"\n          y2=\"16.3727\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop stopColor=\"#5656DB\" />\n          <stop offset=\"1\" stopColor=\"#4949BB\" />\n        </linearGradient>\n        <linearGradient\n          id=\"paint2_linear_2639_4522\"\n          x1=\"60\"\n          y1=\"6.00067\"\n          x2=\"-8\"\n          y2=\"72.5007\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop stopColor=\"white\" />\n          <stop offset=\"0.9997\" stopColor=\"#084D6D\" />\n          <stop offset=\"0.9998\" stopColor=\"#084D6D\" />\n          <stop offset=\"0.9999\" stopColor=\"#5BC4C0\" />\n        </linearGradient>\n        <linearGradient\n          id=\"paint3_linear_2639_4522\"\n          x1=\"33.5429\"\n          y1=\"35.7441\"\n          x2=\"8.78605\"\n          y2=\"33.8177\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop stopColor=\"#CDD7F2\" />\n          <stop offset=\"0.35\" stopColor=\"#AABFFB\" />\n          <stop offset=\"0.72\" stopColor=\"#849BF1\" />\n          <stop offset=\"1\" stopColor=\"#798DF0\" />\n        </linearGradient>\n        <linearGradient\n          id=\"paint4_linear_2639_4522\"\n          x1=\"44.3491\"\n          y1=\"12.5582\"\n          x2=\"29.5476\"\n          y2=\"32.963\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop offset=\"0.19\" stopColor=\"#92ADF4\" />\n          <stop offset=\"0.46\" stopColor=\"#88A1F2\" />\n          <stop offset=\"0.78\" stopColor=\"#798DF0\" />\n        </linearGradient>\n        <linearGradient\n          id=\"paint5_linear_2639_4522\"\n          x1=\"6.19079\"\n          y1=\"43.529\"\n          x2=\"12.5941\"\n          y2=\"19.1798\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop offset=\"0.19\" stopColor=\"#92ADF4\" />\n          <stop offset=\"0.46\" stopColor=\"#88A1F2\" />\n          <stop offset=\"0.78\" stopColor=\"#798DF0\" />\n        </linearGradient>\n      </defs>\n    </svg>\n  );\n};\n\nexport const FelixMessageSVG = () => {\n  return (\n    <svg width=\"56\" height=\"76\" viewBox=\"0 0 56 76\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g clipPath=\"url(#clip0_2661_2386)\">\n        <path\n          d=\"M44.4374 16.9C44.8132 24.5845 35.9852 27.31 24.9575 27.8453C13.9298 28.3806 4.87638 26.5214 4.5006 18.8398C4.12481 11.1583 12.5683 0.555473 23.596 0.0201521C34.6238 -0.515169 44.0616 9.21558 44.4374 16.8972V16.9Z\"\n          fill=\"url(#paint0_linear_2661_2386)\"\n        />\n        <path\n          d=\"M39.7895 15.4754C40.3445 21.3697 33.6498 23.7671 25.189 24.5557C16.7281 25.3443 9.7039 24.2247 9.1489 18.3304C8.5939 12.4361 14.722 3.99764 23.1829 3.20905C31.6437 2.42046 39.2345 9.5811 39.7895 15.4754Z\"\n          fill=\"url(#paint1_linear_2661_2386)\"\n        />\n        <path\n          d=\"M17.2281 15.2336C17.9322 15.2336 18.5029 14.6654 18.5029 13.9644C18.5029 13.2634 17.9322 12.6952 17.2281 12.6952C16.5241 12.6952 15.9534 13.2634 15.9534 13.9644C15.9534 14.6654 16.5241 15.2336 17.2281 15.2336Z\"\n          fill=\"white\"\n        />\n        <path\n          d=\"M30.9615 13.9644C31.6656 13.9644 32.2363 13.3961 32.2363 12.6952C32.2363 11.9942 31.6656 11.4259 30.9615 11.4259C30.2575 11.4259 29.6868 11.9942 29.6868 12.6952C29.6868 13.3961 30.2575 13.9644 30.9615 13.9644Z\"\n          fill=\"white\"\n        />\n        <path\n          d=\"M20.2805 16.1719C20.639 16.4885 24.3447 19.6774 27.3828 17.5217C27.8482 17.1907 28.4407 16.6352 28.9957 15.6624\"\n          stroke=\"white\"\n          strokeMiterlimit=\"10\"\n        />\n        <path\n          d=\"M4.74638 44.9468C5.71184 32.5337 14.3808 29.4772 24.7206 30.2744C35.0603 31.0716 43.1541 35.4204 42.1886 47.8335C41.2231 60.2466 31.5656 76.0184 21.2258 75.2212C10.8861 74.424 3.78091 57.357 4.74638 44.9468Z\"\n          fill=\"url(#paint2_linear_2661_2386)\"\n        />\n        <path\n          d=\"M46.2558 39.4497C40.4775 45.1368 36.87 44.9353 34.5459 42.5926C32.2218 40.2527 32.0629 36.658 37.8441 30.9709C43.6224 25.2838 53.1528 19.6601 55.474 22.0028C57.7981 24.3427 52.0342 33.7626 46.2558 39.4497Z\"\n          fill=\"url(#paint3_linear_2661_2386)\"\n        />\n        <path\n          d=\"M3.73177 42.5292C7.04442 35.1441 10.4785 34.0274 13.4963 35.3686C16.5141 36.7098 17.971 40.0023 14.6583 47.3874C11.3457 54.7725 4.52091 63.4586 1.50021 62.1174C-1.52049 60.7762 0.419121 49.9172 3.73177 42.5292Z\"\n          fill=\"url(#paint4_linear_2661_2386)\"\n        />\n      </g>\n      <defs>\n        <linearGradient\n          id=\"paint0_linear_2661_2386\"\n          x1=\"4.30835\"\n          y1=\"14.9024\"\n          x2=\"44.2432\"\n          y2=\"12.9477\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop stopColor=\"#92ADF4\" />\n          <stop offset=\"0.35\" stopColor=\"#8EA8F3\" />\n          <stop offset=\"0.72\" stopColor=\"#849BF1\" />\n          <stop offset=\"1\" stopColor=\"#798DF0\" />\n        </linearGradient>\n        <linearGradient\n          id=\"paint1_linear_2661_2386\"\n          x1=\"24.4678\"\n          y1=\"3.1492\"\n          x2=\"24.4678\"\n          y2=\"24.7794\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop stopColor=\"#5656DB\" />\n          <stop offset=\"1\" stopColor=\"#4949BB\" />\n        </linearGradient>\n        <linearGradient\n          id=\"paint2_linear_2661_2386\"\n          x1=\"41.6866\"\n          y1=\"54.0981\"\n          x2=\"4.21672\"\n          y2=\"51.1826\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop stopColor=\"#CDD7F2\" />\n          <stop offset=\"0.35\" stopColor=\"#AABFFB\" />\n          <stop offset=\"0.72\" stopColor=\"#849BF1\" />\n          <stop offset=\"1\" stopColor=\"#798DF0\" />\n        </linearGradient>\n        <linearGradient\n          id=\"paint3_linear_2661_2386\"\n          x1=\"58.042\"\n          y1=\"19.006\"\n          x2=\"35.6398\"\n          y2=\"49.889\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop offset=\"0.19\" stopColor=\"#92ADF4\" />\n          <stop offset=\"0.46\" stopColor=\"#88A1F2\" />\n          <stop offset=\"0.78\" stopColor=\"#798DF0\" />\n        </linearGradient>\n        <linearGradient\n          id=\"paint4_linear_2661_2386\"\n          x1=\"0.28873\"\n          y1=\"65.8808\"\n          x2=\"9.98023\"\n          y2=\"29.0278\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop offset=\"0.19\" stopColor=\"#92ADF4\" />\n          <stop offset=\"0.46\" stopColor=\"#88A1F2\" />\n          <stop offset=\"0.78\" stopColor=\"#798DF0\" />\n        </linearGradient>\n        <clipPath id=\"clip0_2661_2386\">\n          <rect width=\"56\" height=\"75.25\" fill=\"white\" />\n        </clipPath>\n      </defs>\n    </svg>\n  );\n};\n\nexport const FelixConfused = () => {\n  return (\n    <svg\n      id=\"Layer_2\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n      viewBox=\"0 0 157.85 261.46\"\n    >\n      <defs>\n        <style>\n          {\n            '.cls-1{fill:url(#New_Gradient_Swatch_copy);}.cls-2{fill:url(#New_Gradient_Swatch);}.cls-3{fill:url(#linear-gradient);}.cls-4{fill:#fff;}.cls-5{fill:url(#linear-gradient-3);}.cls-6{fill:url(#linear-gradient-2);}'\n          }\n        </style>\n        <linearGradient\n          id=\"New_Gradient_Swatch\"\n          x1={24.04}\n          y1={15.7}\n          x2={162.36}\n          y2={15.7}\n          gradientTransform=\"translate(-20.14 37.27) rotate(-2.79)\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop offset={0} stopColor=\"#92adf4\" />\n          <stop offset={0.35} stopColor=\"#8ea8f3\" />\n          <stop offset={0.72} stopColor=\"#849bf1\" />\n          <stop offset={1} stopColor=\"#798df0\" />\n        </linearGradient>\n        <linearGradient\n          id=\"New_Gradient_Swatch_copy\"\n          x1={74.39}\n          y1={10.94}\n          x2={74.39}\n          y2={86.1}\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop offset={0} stopColor=\"#5656db\" />\n          <stop offset={0.46} stopColor=\"#5151cf\" />\n          <stop offset={1} stopColor=\"#4949bb\" />\n        </linearGradient>\n        <linearGradient\n          id=\"linear-gradient\"\n          x1={922.54}\n          y1={938.23}\n          x2={1060.86}\n          y2={938.23}\n          gradientTransform=\"translate(880.62 1769.09) rotate(-175.57) scale(.94 1.62)\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop offset={0.02} stopColor=\"#cdd7f2\" />\n          <stop offset={0.42} stopColor=\"#aabffb\" />\n          <stop offset={0.76} stopColor=\"#92adf4\" />\n          <stop offset={0.84} stopColor=\"#8ea8f3\" />\n          <stop offset={0.93} stopColor=\"#849bf1\" />\n          <stop offset={1} stopColor=\"#798df0\" />\n        </linearGradient>\n        <linearGradient\n          id=\"linear-gradient-2\"\n          x1={-1748.61}\n          y1={932.15}\n          x2={-1742.67}\n          y2={1059.6}\n          gradientTransform=\"translate(7.84 -1050.16) rotate(-32.2) scale(.3 1.05)\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop offset={0.19} stopColor=\"#92adf4\" />\n          <stop offset={0.46} stopColor=\"#88a1f2\" />\n          <stop offset={0.78} stopColor=\"#798df0\" />\n        </linearGradient>\n        <linearGradient\n          id=\"linear-gradient-3\"\n          x1={1132.98}\n          y1={962.86}\n          x2={1138.93}\n          y2={1090.31}\n          gradientTransform=\"translate(246.98 1277.75) rotate(-174.07) scale(.3 1.05)\"\n          xlinkHref=\"#linear-gradient-2\"\n        />\n      </defs>\n      <g id=\"Layer_1-2\">\n        <path\n          className=\"cls-2\"\n          d=\"m143.46,58.72c1.3,26.7-29.24,36.17-67.39,38.03-38.15,1.86-69.47-4.6-70.77-31.29S33.21,1.93,71.36.07c38.15-1.86,70.8,31.95,72.1,58.64Z\"\n        />\n        <path\n          className=\"cls-1\"\n          d=\"m127.39,53.77c1.92,20.48-21.24,28.81-50.51,31.55-29.27,2.74-53.57-1.15-55.49-21.63-1.92-20.48,19.28-49.8,48.55-52.54,29.27-2.74,55.53,22.14,57.45,42.62Z\"\n        />\n        <ellipse className=\"cls-4\" cx={51.4} cy={48.52} rx={6.48} ry={4.41} />\n        <ellipse\n          className=\"cls-4\"\n          cx={95.95}\n          cy={44.02}\n          rx={6.08}\n          ry={4.41}\n          transform=\"translate(-7.54 23.17) rotate(-13.25)\"\n        />\n        <path\n          className=\"cls-3\"\n          d=\"m6.15,156.17c3.34-43.13,33.33-53.75,69.1-50.98,35.77,2.77,63.77,17.88,60.43,61.01-3.34,43.13-36.75,97.93-72.52,95.16S2.81,199.3,6.15,156.17Z\"\n        />\n        <path\n          className=\"cls-6\"\n          d=\"m147.63,113.38c14.98,23.78,11.6,35.82,1.93,41.91-9.68,6.09-21.99,3.93-36.97-19.85-14.98-23.78-26.95-60.19-17.27-66.28,9.68-6.09,37.33,20.43,52.31,44.22Z\"\n        />\n        <path\n          className=\"cls-5\"\n          d=\"m.78,154.91c2.9-27.96,12.99-35.34,24.36-34.16,11.37,1.18,19.73,10.48,16.82,38.44s-15.97,63.98-27.34,62.8c-11.37-1.18-16.75-39.12-13.85-67.08Z\"\n        />\n      </g>\n    </svg>\n  );\n};\n\nexport const FelixStarsSVG = () => {\n  return (\n    <svg\n      width=\"227\"\n      height=\"216\"\n      viewBox=\"0 0 227 216\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <g filter=\"url(#filter0_d_4940_3890)\">\n        <path\n          d=\"M47.3004 85.449C33.168 87.8309 31.1455 89.7618 28.6502 103.251C26.1549 89.7618 24.1325 87.8309 10 85.449C24.1325 83.0677 26.1549 81.1368 28.6502 67.6465C31.1455 81.1368 33.168 83.0677 47.3004 85.449Z\"\n          fill=\"#2D388D\"\n        />\n      </g>\n      <g filter=\"url(#filter1_d_4940_3890)\">\n        <path\n          d=\"M221.934 108.338C215.832 109.358 214.958 110.186 213.881 115.967C212.803 110.186 211.93 109.358 205.827 108.338C211.93 107.317 212.803 106.49 213.881 100.708C214.958 106.49 215.832 107.317 221.934 108.338Z\"\n          fill=\"#2D388D\"\n        />\n      </g>\n      <g clipPath=\"url(#clip0_4940_3890)\">\n        <path\n          d=\"M167.325 81.9013C168.182 99.5615 148.045 105.825 122.89 107.056C97.7354 108.286 77.0842 104.013 76.227 86.3593C75.3698 68.7057 94.6298 44.3385 119.784 43.1082C144.939 41.8779 166.467 64.241 167.325 81.8946V81.9013Z\"\n          fill=\"url(#paint0_linear_4940_3890)\"\n        />\n        <path\n          d=\"M156.729 78.6267C157.995 92.1728 142.724 97.6826 123.424 99.4949C104.125 101.307 88.1021 98.7342 86.8362 85.1881C85.5702 71.6419 99.5487 52.2487 118.848 50.4364C138.148 48.624 155.463 65.0805 156.729 78.6267Z\"\n          fill=\"url(#paint1_linear_4940_3890)\"\n        />\n        <path\n          d=\"M105.265 78.0711C106.871 78.0711 108.173 76.7652 108.173 75.1542C108.173 73.5433 106.871 72.2373 105.265 72.2373C103.659 72.2373 102.358 73.5433 102.358 75.1542C102.358 76.7652 103.659 78.0711 105.265 78.0711Z\"\n          fill=\"white\"\n        />\n        <path\n          d=\"M136.585 75.1542C138.191 75.1542 139.493 73.8482 139.493 72.2372C139.493 70.6263 138.191 69.3203 136.585 69.3203C134.979 69.3203 133.677 70.6263 133.677 72.2372C133.677 73.8482 134.979 75.1542 136.585 75.1542Z\"\n          fill=\"white\"\n        />\n        <path\n          d=\"M76.7875 146.358C78.9898 117.83 98.7641 110.806 122.349 112.638C145.935 114.47 164.397 124.464 162.195 152.992C159.992 181.52 137.963 217.766 114.378 215.934C90.7924 214.102 74.5853 174.885 76.7875 146.358Z\"\n          fill=\"url(#paint2_linear_4940_3890)\"\n        />\n        <path\n          d=\"M177.255 119.715C186.176 136.013 183.479 143.824 176.866 147.462C170.259 151.1 162.241 149.189 153.32 132.891C144.399 116.593 137.963 92.087 144.57 88.4425C151.177 84.798 168.333 103.411 177.255 119.708V119.715Z\"\n          fill=\"url(#paint3_linear_4940_3890)\"\n        />\n        <path\n          d=\"M73.2467 145.524C75.1588 127.031 81.8118 122.149 89.3087 122.93C96.8057 123.71 102.318 129.862 100.399 148.355C98.4805 166.849 89.8692 190.674 82.3722 189.893C74.8753 189.113 71.3279 164.018 73.2401 145.524H73.2467Z\"\n          fill=\"url(#paint4_linear_4940_3890)\"\n        />\n        <path\n          d=\"M123.674 89.0146C125.879 88.8052 127.543 87.3353 127.391 85.7316C127.24 84.1278 125.33 82.9974 123.126 83.2068C120.922 83.4162 119.258 84.8861 119.409 86.4899C119.561 88.0937 121.47 89.224 123.674 89.0146Z\"\n          fill=\"white\"\n        />\n      </g>\n      <g filter=\"url(#filter2_d_4940_3890)\">\n        <path\n          d=\"M196.502 23.9877C184.069 24.8458 183.373 25.5418 182.515 37.9753C181.656 25.5418 180.96 24.8458 168.527 23.9877C180.96 23.1295 181.656 22.4335 182.515 10C183.373 22.4335 184.069 23.1295 196.502 23.9877Z\"\n          fill=\"url(#paint5_linear_4940_3890)\"\n        />\n      </g>\n      <defs>\n        <filter\n          id=\"filter0_d_4940_3890\"\n          x=\"0\"\n          y=\"57.6465\"\n          width=\"57.3004\"\n          height=\"55.6045\"\n          filterUnits=\"userSpaceOnUse\"\n          colorInterpolationFilters=\"sRGB\"\n        >\n          <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n          <feColorMatrix\n            in=\"SourceAlpha\"\n            type=\"matrix\"\n            values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n            result=\"hardAlpha\"\n          />\n          <feOffset />\n          <feGaussianBlur stdDeviation=\"5\" />\n          <feComposite in2=\"hardAlpha\" operator=\"out\" />\n          <feColorMatrix\n            type=\"matrix\"\n            values=\"0 0 0 0 0.47451 0 0 0 0 0.552941 0 0 0 0 0.941176 0 0 0 0.32 0\"\n          />\n          <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_4940_3890\" />\n          <feBlend\n            mode=\"normal\"\n            in=\"SourceGraphic\"\n            in2=\"effect1_dropShadow_4940_3890\"\n            result=\"shape\"\n          />\n        </filter>\n        <filter\n          id=\"filter1_d_4940_3890\"\n          x=\"200.827\"\n          y=\"95.708\"\n          width=\"26.1071\"\n          height=\"25.2588\"\n          filterUnits=\"userSpaceOnUse\"\n          colorInterpolationFilters=\"sRGB\"\n        >\n          <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n          <feColorMatrix\n            in=\"SourceAlpha\"\n            type=\"matrix\"\n            values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n            result=\"hardAlpha\"\n          />\n          <feOffset />\n          <feGaussianBlur stdDeviation=\"2.5\" />\n          <feComposite in2=\"hardAlpha\" operator=\"out\" />\n          <feColorMatrix\n            type=\"matrix\"\n            values=\"0 0 0 0 0.47451 0 0 0 0 0.552941 0 0 0 0 0.941176 0 0 0 0.54 0\"\n          />\n          <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_4940_3890\" />\n          <feBlend\n            mode=\"normal\"\n            in=\"SourceGraphic\"\n            in2=\"effect1_dropShadow_4940_3890\"\n            result=\"shape\"\n          />\n        </filter>\n        <filter\n          id=\"filter2_d_4940_3890\"\n          x=\"158.527\"\n          y=\"0\"\n          width=\"47.9753\"\n          height=\"47.9756\"\n          filterUnits=\"userSpaceOnUse\"\n          colorInterpolationFilters=\"sRGB\"\n        >\n          <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n          <feColorMatrix\n            in=\"SourceAlpha\"\n            type=\"matrix\"\n            values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n            result=\"hardAlpha\"\n          />\n          <feOffset />\n          <feGaussianBlur stdDeviation=\"5\" />\n          <feComposite in2=\"hardAlpha\" operator=\"out\" />\n          <feColorMatrix\n            type=\"matrix\"\n            values=\"0 0 0 0 0.572549 0 0 0 0 0.678431 0 0 0 0 0.956863 0 0 0 0.3 0\"\n          />\n          <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_4940_3890\" />\n          <feBlend\n            mode=\"normal\"\n            in=\"SourceGraphic\"\n            in2=\"effect1_dropShadow_4940_3890\"\n            result=\"shape\"\n          />\n        </filter>\n        <linearGradient\n          id=\"paint0_linear_4940_3890\"\n          x1=\"75.7881\"\n          y1=\"77.309\"\n          x2=\"166.884\"\n          y2=\"72.8835\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop stopColor=\"#92ADF4\" />\n          <stop offset=\"0.35\" stopColor=\"#8EA8F3\" />\n          <stop offset=\"0.72\" stopColor=\"#849BF1\" />\n          <stop offset=\"1\" stopColor=\"#798DF0\" />\n        </linearGradient>\n        <linearGradient\n          id=\"paint1_linear_4940_3890\"\n          x1=\"121.782\"\n          y1=\"50.2975\"\n          x2=\"121.782\"\n          y2=\"100.011\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop stopColor=\"#5656DB\" />\n          <stop offset=\"0.46\" stopColor=\"#5151CF\" />\n          <stop offset=\"1\" stopColor=\"#4949BB\" />\n        </linearGradient>\n        <linearGradient\n          id=\"paint2_linear_4940_3890\"\n          x1=\"160.313\"\n          y1=\"166.546\"\n          x2=\"74.8346\"\n          y2=\"159.944\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop offset=\"0.02\" stopColor=\"#CDD7F2\" />\n          <stop offset=\"0.42\" stopColor=\"#AABFFB\" />\n          <stop offset=\"0.76\" stopColor=\"#92ADF4\" />\n          <stop offset=\"0.84\" stopColor=\"#8EA8F3\" />\n          <stop offset=\"0.93\" stopColor=\"#849BF1\" />\n          <stop offset=\"1\" stopColor=\"#798DF0\" />\n        </linearGradient>\n        <linearGradient\n          id=\"paint3_linear_4940_3890\"\n          x1=\"138.431\"\n          y1=\"80.7395\"\n          x2=\"192.431\"\n          y2=\"149.516\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop offset=\"0.19\" stopColor=\"#92ADF4\" />\n          <stop offset=\"0.46\" stopColor=\"#88A1F2\" />\n          <stop offset=\"0.78\" stopColor=\"#798DF0\" />\n        </linearGradient>\n        <linearGradient\n          id=\"paint4_linear_4940_3890\"\n          x1=\"80.8497\"\n          y1=\"199.732\"\n          x2=\"75.718\"\n          y2=\"112.337\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop offset=\"0.19\" stopColor=\"#92ADF4\" />\n          <stop offset=\"0.46\" stopColor=\"#88A1F2\" />\n          <stop offset=\"0.78\" stopColor=\"#798DF0\" />\n        </linearGradient>\n        <linearGradient\n          id=\"paint5_linear_4940_3890\"\n          x1=\"174.461\"\n          y1=\"17.6296\"\n          x2=\"192.687\"\n          y2=\"35.856\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop offset=\"0.2756\" stopColor=\"#2D378D\" />\n          <stop offset=\"1\" stopColor=\"#4E64D0\" />\n        </linearGradient>\n        <clipPath id=\"clip0_4940_3890\">\n          <rect\n            width=\"110.206\"\n            height=\"172.938\"\n            fill=\"white\"\n            transform=\"translate(72.7324 43.0615)\"\n          />\n        </clipPath>\n      </defs>\n    </svg>\n  );\n};\n\nexport const RobotIcon = (props) => {\n  return (\n    <SvgIcon {...props}>\n      <path d=\"M 3.16666 16.625 V 12.6667 C 3.16666 12.2312 3.32169 11.8585 3.63176 11.5484 C 3.94183 11.2384 4.31457 11.0833 4.74999 11.0833 H 14.25 C 14.6854 11.0833 15.0582 11.2384 15.3682 11.5484 C 15.6783 11.8585 15.8333 12.2312 15.8333 12.6667 V 16.625 H 3.16666 Z M 7.12499 10.2917 C 6.02985 10.2917 5.09634 9.90573 4.32447 9.13385 C 3.55259 8.36198 3.16666 7.42847 3.16666 6.33333 C 3.16666 5.23819 3.55259 4.30469 4.32447 3.53281 C 5.09634 2.76094 6.02985 2.375 7.12499 2.375 H 11.875 C 12.9701 2.375 13.9036 2.76094 14.6755 3.53281 C 15.4474 4.30469 15.8333 5.23819 15.8333 6.33333 C 15.8333 7.42847 15.4474 8.36198 14.6755 9.13385 C 13.9036 9.90573 12.9701 10.2917 11.875 10.2917 H 7.12499 Z M 4.74999 15.0417 H 14.25 V 12.6667 H 4.74999 V 15.0417 Z M 7.12499 8.70833 H 11.875 C 12.5347 8.70833 13.0955 8.47743 13.5573 8.01562 C 14.0191 7.55382 14.25 6.99306 14.25 6.33333 C 14.25 5.67361 14.0191 5.11285 13.5573 4.65104 C 13.0955 4.18924 12.5347 3.95833 11.875 3.95833 H 7.12499 C 6.46527 3.95833 5.9045 4.18924 5.4427 4.65104 C 4.98089 5.11285 4.74999 5.67361 4.74999 6.33333 C 4.74999 6.99306 4.98089 7.55382 5.4427 8.01562 C 5.9045 8.47743 6.46527 8.70833 7.12499 8.70833 Z M 7.12499 7.125 C 7.3493 7.125 7.53732 7.04913 7.68905 6.8974 C 7.84079 6.74566 7.91666 6.55764 7.91666 6.33333 C 7.91666 6.10903 7.84079 5.92101 7.68905 5.76927 C 7.53732 5.61753 7.3493 5.54167 7.12499 5.54167 C 6.90068 5.54167 6.71266 5.61753 6.56093 5.76927 C 6.40919 5.92101 6.33332 6.10903 6.33332 6.33333 C 6.33332 6.55764 6.40919 6.74566 6.56093 6.8974 C 6.71266 7.04913 6.90068 7.125 7.12499 7.125 Z M 11.875 7.125 C 12.0993 7.125 12.2873 7.04913 12.4391 6.8974 C 12.5908 6.74566 12.6667 6.55764 12.6667 6.33333 C 12.6667 6.10903 12.5908 5.92101 12.4391 5.76927 C 12.2873 5.61753 12.0993 5.54167 11.875 5.54167 C 11.6507 5.54167 11.4627 5.61753 11.3109 5.76927 C 11.1592 5.92101 11.0833 6.10903 11.0833 6.33333 C 11.0833 6.55764 11.1592 6.74566 11.3109 6.8974 C 11.4627 7.04913 11.6507 7.125 11.875 7.125 Z\" />\n    </SvgIcon>\n  );\n};\n\nexport const FelixGPTIcon = () => {\n  return (\n    <svg width=\"50\" height=\"49\" viewBox=\"0 0 50 49\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g filter=\"url(#filter0_d_18404_9220)\">\n        <circle cx=\"25\" cy=\"20\" r=\"20\" fill=\"url(#paint0_linear_18404_9220)\" />\n      </g>\n      <mask\n        id=\"mask0_18404_9220\"\n        style={{ maskType: 'alpha' }}\n        maskUnits=\"userSpaceOnUse\"\n        x=\"5\"\n        y=\"0\"\n        width=\"40\"\n        height=\"40\"\n      >\n        <circle cx=\"25\" cy=\"20\" r=\"20\" fill=\"url(#paint1_linear_18404_9220)\" />\n      </mask>\n      <g mask=\"url(#mask0_18404_9220)\">\n        <path\n          d=\"M40.7577 17.6294C41.04 23.6242 34.4086 25.7505 26.1248 26.1681C17.841 26.5857 11.0402 25.1353 10.758 19.1427C10.4757 13.15 16.8183 4.87846 25.1021 4.46084C33.3859 4.04322 40.4754 11.6345 40.7577 17.6271V17.6294Z\"\n          fill=\"url(#paint2_linear_18404_9220)\"\n        />\n        <path\n          d=\"M37.2661 16.5179C37.683 21.1162 32.6541 22.9865 26.2984 23.6017C19.9428 24.2169 14.6664 23.3435 14.2495 18.7452C13.8326 14.1469 18.4359 7.56375 24.7915 6.94855C31.1471 6.33334 36.8492 11.9196 37.2661 16.5179Z\"\n          fill=\"url(#paint3_linear_18404_9220)\"\n        />\n        <path\n          d=\"M20.3184 16.3295C20.8473 16.3295 21.276 15.8861 21.276 15.3393C21.276 14.7924 20.8473 14.3491 20.3184 14.3491C19.7896 14.3491 19.3608 14.7924 19.3608 15.3393C19.3608 15.8861 19.7896 16.3295 20.3184 16.3295Z\"\n          fill=\"white\"\n        />\n        <path\n          d=\"M30.6346 15.3392C31.1634 15.3392 31.5922 14.8959 31.5922 14.3491C31.5922 13.8022 31.1634 13.3589 30.6346 13.3589C30.1057 13.3589 29.677 13.8022 29.677 14.3491C29.677 14.8959 30.1057 15.3392 30.6346 15.3392Z\"\n          fill=\"white\"\n        />\n        <path\n          d=\"M22.6113 17.0615C22.8806 17.3085 25.6643 19.7962 27.9464 18.1145C28.296 17.8563 28.7411 17.423 29.158 16.6641\"\n          stroke=\"white\"\n          strokeWidth=\"0.625\"\n          strokeMiterlimit=\"10\"\n        />\n        <mask\n          id=\"mask1_18404_9220\"\n          style={{ maskType: 'alpha' }}\n          maskUnits=\"userSpaceOnUse\"\n          x=\"0\"\n          y=\"11\"\n          width=\"48\"\n          height=\"49\"\n        >\n          <ellipse\n            cx=\"23.8624\"\n            cy=\"35.7349\"\n            rx=\"23.3069\"\n            ry=\"24.2051\"\n            fill=\"url(#paint4_linear_18404_9220)\"\n          />\n        </mask>\n        <g mask=\"url(#mask1_18404_9220)\">\n          <path\n            d=\"M10.9425 39.5098C11.6677 29.8259 18.1797 27.4415 25.9467 28.0634C33.7137 28.6853 39.7935 32.0779 39.0683 41.7618C38.343 51.4456 31.0885 63.7497 23.3215 63.1278C15.5545 62.5058 10.2172 49.1914 10.9425 39.5098Z\"\n            fill=\"url(#paint5_linear_18404_9220)\"\n          />\n        </g>\n      </g>\n      <defs>\n        <filter\n          id=\"filter0_d_18404_9220\"\n          x=\"0.555555\"\n          y=\"0\"\n          width=\"48.8889\"\n          height=\"48.8889\"\n          filterUnits=\"userSpaceOnUse\"\n          colorInterpolationFilters=\"sRGB\"\n        >\n          <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n          <feColorMatrix\n            in=\"SourceAlpha\"\n            type=\"matrix\"\n            values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n            result=\"hardAlpha\"\n          />\n          <feOffset dy=\"4.44444\" />\n          <feGaussianBlur stdDeviation=\"2.22222\" />\n          <feComposite in2=\"hardAlpha\" operator=\"out\" />\n          <feColorMatrix\n            type=\"matrix\"\n            values=\"0 0 0 0 0.141832 0 0 0 0 0.141832 0 0 0 0 0.141832 0 0 0 0.09 0\"\n          />\n          <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_18404_9220\" />\n          <feBlend\n            mode=\"normal\"\n            in=\"SourceGraphic\"\n            in2=\"effect1_dropShadow_18404_9220\"\n            result=\"shape\"\n          />\n        </filter>\n        <linearGradient\n          id=\"paint0_linear_18404_9220\"\n          x1=\"63.5366\"\n          y1=\"5.27613e-07\"\n          x2=\"-2.80488\"\n          y2=\"64.878\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop stopColor=\"#E548FF\" />\n          <stop offset=\"0.9997\" stopColor=\"#084D6D\" />\n          <stop offset=\"0.9998\" stopColor=\"#084D6D\" />\n          <stop offset=\"0.9999\" stopColor=\"#5BC4C0\" />\n        </linearGradient>\n        <linearGradient\n          id=\"paint1_linear_18404_9220\"\n          x1=\"63.5366\"\n          y1=\"5.27613e-07\"\n          x2=\"-2.80488\"\n          y2=\"64.878\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop stopColor=\"#E548FF\" />\n          <stop offset=\"0.9997\" stopColor=\"#084D6D\" />\n          <stop offset=\"0.9998\" stopColor=\"#084D6D\" />\n          <stop offset=\"0.9999\" stopColor=\"#5BC4C0\" />\n        </linearGradient>\n        <linearGradient\n          id=\"paint2_linear_18404_9220\"\n          x1=\"10.6136\"\n          y1=\"16.0709\"\n          x2=\"40.617\"\n          y2=\"14.6569\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop stopColor=\"#92ADF4\" />\n          <stop offset=\"0.35\" stopColor=\"#8EA8F3\" />\n          <stop offset=\"0.72\" stopColor=\"#849BF1\" />\n          <stop offset=\"1\" stopColor=\"#798DF0\" />\n        </linearGradient>\n        <linearGradient\n          id=\"paint3_linear_18404_9220\"\n          x1=\"25.7567\"\n          y1=\"6.90186\"\n          x2=\"25.7567\"\n          y2=\"23.7762\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop stopColor=\"#5656DB\" />\n          <stop offset=\"1\" stopColor=\"#4949BB\" />\n        </linearGradient>\n        <linearGradient\n          id=\"paint4_linear_18404_9220\"\n          x1=\"68.7708\"\n          y1=\"11.5298\"\n          x2=\"-11.3945\"\n          y2=\"87.0173\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop stopColor=\"white\" />\n          <stop offset=\"0.9997\" stopColor=\"#084D6D\" />\n          <stop offset=\"0.9998\" stopColor=\"#084D6D\" />\n          <stop offset=\"0.9999\" stopColor=\"#5BC4C0\" />\n        </linearGradient>\n        <linearGradient\n          id=\"paint5_linear_18404_9220\"\n          x1=\"38.6912\"\n          y1=\"46.649\"\n          x2=\"10.5322\"\n          y2=\"44.5393\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop stopColor=\"#CDD7F2\" />\n          <stop offset=\"0.35\" stopColor=\"#AABFFB\" />\n          <stop offset=\"0.72\" stopColor=\"#849BF1\" />\n          <stop offset=\"1\" stopColor=\"#798DF0\" />\n        </linearGradient>\n      </defs>\n    </svg>\n  );\n};\n","import React from 'react';\nimport { OutlinedInput } from '@mui/material';\nimport { classes } from '../styles';\n\nconst PositionTitleInput = ({\n  positionTitle,\n  aiStudioFrenchEnabled,\n  onChange,\n  onBlur\n}: {\n  positionTitle: string;\n  aiStudioFrenchEnabled: boolean;\n  onChange: (value: string) => void;\n  onBlur?: (value: string) => void;\n}) => {\n  return (\n    <OutlinedInput\n      id=\"position-title\"\n      sx={classes.fieldInput}\n      placeholder={aiStudioFrenchEnabled ? 'ex. Designer UX' : 'eg. UX Designer'}\n      value={positionTitle}\n      onChange={(e) => onChange(e.target.value)}\n      onBlur={() => {\n        onBlur ? onBlur(positionTitle) : null;\n      }}\n    />\n  );\n};\n\nexport default PositionTitleInput;\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { OutlinedInput } from '@mui/material';\nimport { classes } from '../../AIStudioModal/styles';\n\nconst PreferredSkillsInput = ({\n  preferredSkills,\n  onChange,\n  onBlur\n}: {\n  preferredSkills: string;\n  onChange: Dispatch<SetStateAction<string>>;\n  onBlur?: (value: string) => void;\n}) => {\n  return (\n    <OutlinedInput\n      id=\"preferred-skills\"\n      sx={classes.fieldInput}\n      placeholder=\"eg. 'Adobe Illustrator, Figma, attention to detail'\"\n      value={preferredSkills}\n      onChange={(e) => onChange(e.target.value)}\n      onBlur={() => {\n        onBlur ? onBlur(preferredSkills) : null;\n      }}\n    />\n  );\n};\n\nexport default PreferredSkillsInput;\n","import React from 'react';\nimport { styled, InputBase, Select, MenuItem } from '@mui/material';\n\nconst SelectInput = styled(InputBase)(() => ({\n  'label + &': {\n    marginTop: '24px'\n  },\n  '& .MuiInputBase-input': {\n    borderRadius: '6px',\n    backgroundColor: '#FFFFFF',\n    color: '#333333',\n    border: '1px solid #DDDDDD',\n    fontSize: '18px',\n    padding: '11px 20px 8px 20px',\n    height: '42px',\n    width: '100%',\n    fontFamily: 'Source Sans Pro, sans-serif',\n    textTransform: 'capitalize',\n    '&:focus': {\n      borderColor: '#2D388D'\n    }\n  },\n  '& .MuiInputBase-input:focus': {\n    backgroundColor: '#ffffff',\n    borderRadius: '6px'\n  },\n  '& .MuiSvgIcon-root': {\n    color: '#AAAAAA',\n    marginRight: '10px',\n    transition: 'all 0.16s ease-in-out'\n  }\n}));\n\nconst menuItemStyle = {\n  fontFamily: 'Source Sans Pro, sans-serif',\n  fontSize: '18px',\n  padding: '8px 20px',\n  color: '#333333',\n  textTransform: 'capitalize'\n};\n\nconst StyledDropdown = ({\n  id,\n  value,\n  onChange,\n  options\n}: {\n  id: string;\n  value: string;\n  onChange: (value: string) => void;\n  options: string[];\n}) => {\n  return (\n    <Select\n      id={id}\n      value={value}\n      onChange={(e) => onChange(e.target.value)}\n      input={<SelectInput />}\n    >\n      {options.map((option) => (\n        <MenuItem sx={menuItemStyle} value={option} key={option}>\n          {option}\n        </MenuItem>\n      ))}\n    </Select>\n  );\n};\n\nexport default StyledDropdown;\n","import React from 'react';\nimport { FormControlLabel, Switch } from '@mui/material';\nimport { IQuestion } from '../../AIStudioQuestions/AIStudioQuestions';\nimport { classes } from '../styles';\n\nconst QuestionSwitch = ({\n  item,\n  index,\n  type,\n  label,\n  onChange\n}: {\n  item: IQuestion;\n  index: number;\n  type: 'enabled' | 'required' | 'rateable' | 'confidential';\n  label: string;\n  onChange: (index: number, type: string) => void;\n}) => {\n  return (\n    <FormControlLabel\n      sx={\n        !item[type as keyof typeof item]\n          ? { ...classes.switchLabels, ...classes.labelActive }\n          : classes.switchLabels\n      }\n      control={\n        <Switch\n          sx={item[type as keyof typeof item] ? classes.aiSwitchActive : classes.switch}\n          checked={item[type as keyof typeof item] as boolean}\n          onChange={() => onChange(index, type)}\n        />\n      }\n      label={label}\n      labelPlacement=\"end\"\n    />\n  );\n};\n\nexport default QuestionSwitch;\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { Box, Button, Checkbox, CircularProgress, IconButton } from '@mui/material';\nimport WarningIcon from '@mui/icons-material/Warning';\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport ContentCopyIcon from '@mui/icons-material/ContentCopy';\nimport CodeIcon from '@mui/icons-material/Code';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport LibraryAddCheckIcon from '@mui/icons-material/LibraryAddCheck';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\nimport { classes } from './styles';\nimport { arrayQuestion } from './Utility/questionStringToArray';\n\nconst SelectableCopyableQuestions = ({\n  questions,\n  setQuestions,\n  maxHeight,\n  deleteQuestion\n}: {\n  questions: arrayQuestion[];\n  setQuestions: Dispatch<SetStateAction<arrayQuestion[]>>;\n  maxHeight?: string;\n  deleteQuestion?: (index: number) => void;\n}) => {\n  const handleCopyQuestion = (index: number) => {\n    const newQuestions = [...questions];\n    newQuestions[index].copied = true;\n    setQuestions(newQuestions);\n    setTimeout(() => {\n      const newQuestions = [...questions];\n      newQuestions[index].copied = false;\n      setQuestions(newQuestions);\n    }, 3000);\n  };\n\n  const handleSelectQuestion = (index: number) => {\n    const newQuestions = [...questions];\n    newQuestions[index].selected = !newQuestions[index].selected;\n    setQuestions(newQuestions);\n  };\n\n  const renderQuestionStatus = (item: arrayQuestion, index: number) => {\n    switch (item.status) {\n      case 'loading':\n        return <CircularProgress size={18} color=\"inherit\" />;\n      case 'error':\n        return <WarningIcon color=\"inherit\" />;\n      case 'sent':\n        return <CheckCircleIcon sx={{ color: '#8CCF95' }} />;\n      default:\n        return (\n          <Checkbox\n            sx={classes.checkbox}\n            checked={item.selected}\n            onChange={() => handleSelectQuestion(index)}\n          />\n        );\n    }\n  };\n\n  return (\n    <Box sx={{ ...classes.questionsContainer, ...(maxHeight && { maxHeight }) }}>\n      {questions &&\n        questions.map((item, index) => (\n          <Box sx={{ ...classes.question, justifyContent: 'space-around' }} key={item.id}>\n            <Box sx={classes.checkboxContainer}>{renderQuestionStatus(item, index)}</Box>\n            <Box sx={{ maxWidth: '700px' }}>{item.text}</Box>\n            {deleteQuestion ? (\n              <Box>\n                <CopyToClipboard text={item.text} onCopy={() => handleCopyQuestion(index)}>\n                  <IconButton sx={{ color: '#2D388D' }}>\n                    {item.copied ? <LibraryAddCheckIcon /> : <ContentCopyIcon />}\n                  </IconButton>\n                </CopyToClipboard>\n                <IconButton sx={{ color: '#D6827D' }} onClick={() => deleteQuestion(index)}>\n                  {item.status === 'deleting' ? <CircularProgress size={24} /> : <DeleteIcon />}\n                </IconButton>\n              </Box>\n            ) : (\n              <CopyToClipboard text={item.text} onCopy={() => handleCopyQuestion(index)}>\n                <Button\n                  className=\"copy-question-button\"\n                  sx={classes.copyButton}\n                  endIcon={<CodeIcon />}\n                >\n                  {item.copied ? 'Copied!' : 'Copy'}\n                </Button>\n              </CopyToClipboard>\n            )}\n          </Box>\n        ))}\n    </Box>\n  );\n};\n\nexport default SelectableCopyableQuestions;\n","import React from 'react';\nimport { Box } from '@mui/material';\nimport { classes } from './styles';\n\nconst StaticQuestionsPreview = ({ questions }: { questions: string[] }) => {\n  return (\n    <Box sx={classes.questionsContainer}>\n      {questions &&\n        questions.map((item, index) => (\n          <Box sx={classes.question} key={index}>\n            <Box sx={{ maxWidth: '700px' }}>{item}</Box>\n          </Box>\n        ))}\n    </Box>\n  );\n};\n\nexport default StaticQuestionsPreview;\n","import React from 'react';\nimport { Box, Button } from '@mui/material';\nimport CachedIcon from '@mui/icons-material/Cached';\nimport HomeIcon from '@mui/icons-material/Home';\nimport { FelixConfused } from '../Graphics/FelixSVG';\nimport { classes } from '../styles';\n\nconst ErrorScreen = ({\n  regenerateCallback,\n  setGenerationError,\n  backToHome\n}: {\n  regenerateCallback: () => void;\n  setGenerationError?: (value: boolean) => void;\n  backToHome: () => void;\n}) => {\n  const onRegenerate = () => {\n    setGenerationError && setGenerationError(false);\n    regenerateCallback();\n  };\n\n  const onBackToHome = () => {\n    setGenerationError && setGenerationError(false);\n    backToHome();\n  };\n\n  return (\n    <Box sx={classes.errorContainer}>\n      <Box sx={classes.felixErrorContainer}>\n        <FelixConfused />\n      </Box>\n      <Box sx={classes.errorMessageContainer}>\n        <h1>Oops! Something went wrong.</h1>\n        <p>You can try regenerating your request, or refreshing the page.</p>\n        <p>\n          If the problem persists please contact our Client Success team{' '}\n          <a href=\"mailto:support@scouttalent.com.au\">support@scouttalent.com.au</a>\n        </p>\n      </Box>\n      <Box sx={classes.errorButtons}>\n        <Button sx={classes.pill} endIcon={<HomeIcon />} onClick={onBackToHome}>\n          Back to home\n        </Button>\n        <Button sx={classes.pill} endIcon={<CachedIcon />} onClick={onRegenerate}>\n          Regenerate\n        </Button>\n      </Box>\n    </Box>\n  );\n};\n\nexport default ErrorScreen;\n","import React, { useState, useEffect, useRef, useMemo } from 'react';\nimport { Box } from '@mui/material';\nimport { classes } from '../styles';\nimport InfoIcon from '@mui/icons-material/Info';\nimport Lottie from 'react-lottie';\nimport felixLoading from '../Graphics/felix-loading.json';\nimport { generateLoadingText } from '../../AIStudioModal/config';\n\nconst LoadingResponse = ({\n  generationType,\n  showSocketMessage,\n  customMessages\n}: {\n  generationType: string;\n  showSocketMessage?: boolean;\n  customMessages?: string[];\n}) => {\n  const [loadingTextIndex, setLoadingTextIndex] = useState(0);\n  const changeTextIndex = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n  const loadingAnimation = {\n    loop: true,\n    autoplay: true,\n    animationData: felixLoading,\n    rendererSettings: {\n      preserveAspectRatio: 'xMidYMid slice'\n    }\n  };\n\n  const loadingText = useMemo(() => {\n    if (generationType === 'custom' && customMessages) {\n      return customMessages;\n    }\n    return generateLoadingText(generationType);\n  }, [customMessages, generationType]);\n\n  useEffect(() => {\n    changeTextIndex.current = setTimeout(() => {\n      if (loadingTextIndex < loadingText.length - 1) {\n        setLoadingTextIndex((prev) => prev + 1);\n      } else {\n        setLoadingTextIndex(0);\n      }\n    }, 5000);\n    return () => {\n      if (changeTextIndex.current) {\n        clearTimeout(changeTextIndex.current);\n      }\n    };\n  }, [loadingText.length, loadingTextIndex]);\n\n  return (\n    <Box sx={classes.loadingContainer}>\n      <Lottie options={loadingAnimation} height={500} width={220} />\n      <Box sx={classes.loadingMessage}>\n        {loadingText[loadingTextIndex as keyof typeof loadingText]}\n      </Box>\n      <Box sx={{ ...classes.socketsMessage, ...(showSocketMessage && { opacity: '1px' }) }}>\n        <InfoIcon sx={classes.socketsInfoIcon} />\n        <span>\n          You can close this at anytime and Felix will let you know when your content has been\n          generated.\n        </span>\n      </Box>\n    </Box>\n  );\n};\n\nexport default LoadingResponse;\n","export const LIST_ITEMS_REGEX = /\\b([0-9]+\\. )|([0-9]+\\) )/g;\nexport const questionTypes = [\n  'general',\n  'technical',\n  'behavioural',\n  'motivational',\n  'case',\n  'situational',\n  'brainteasers'\n];\n\nexport const aiToneTypes = [\n  'neutral',\n  'professional',\n  'casual',\n  'creative',\n  'excited',\n  'urgent',\n  'persuasive'\n];\n","import React, { useState, useEffect } from 'react';\nimport useStyles from './useStyles';\nimport { ICalendlyEvent, ICalendlyScoutProps, IJobPosition } from '../../../../types';\nimport { withScoutTheme } from '../../ThemeContext/ThemeContext';\nimport { Dialog, Button, Box } from '@material-ui/core';\nimport { useTheme } from '@material-ui/core';\nimport ChevronRightRoundedIcon from '@material-ui/icons/ChevronRightRounded';\nimport ChevronLeftIcon from '@mui/icons-material/ChevronLeft';\nimport PeopleAltRoundedIcon from '@material-ui/icons/PeopleAltRounded';\nimport ReactLoading from 'react-loading';\nimport axios from 'axios';\nimport Api from '../API';\nimport EventType from '../Modal/components/Steps/Step2/EventType';\n\ninterface IProps {\n  calendlyAccount: ICalendlyScoutProps,\n  job: IJobPosition,\n  applicationId: number,\n  candidateName: string,\n  apiKey: string,\n}\n\nfunction AddToCalendlyEventModal({ job, applicationId, candidateName, calendlyAccount, apiKey }: IProps) {\n  const [isLoading, setIsLoading] = useState<boolean>(true);\n  const [events, setEvents] = useState<ICalendlyEvent[]>([]);\n  const [selectedEvent, setSelectedEvent] = useState<ICalendlyEvent[]>([]);\n \n  const classes = useStyles();\n  const theme = useTheme();\n\n  const handleSubmit = async () => {\n    await Api.addToEvent(job.id, {\n      application_id: applicationId,\n      event_type_url: selectedEvent.scheduling_url,\n    });\n    location.reload();\n  }\n\n  useEffect(() => {\n    async function getData() {\n      setIsLoading(true);\n      try {\n        const events = await axios.get(`https://api.calendly.com/event_types?user=${calendlyAccount.user}`, {\n          headers: {\n            'Content-Type': 'application/json',\n            'Authorization': `Bearer ${calendlyAccount.access_token}`\n          }\n        });\n        setEvents(events.data.collection.filter((event: ICalendlyEvent) => event.active))\n      } catch (e) {\n        console.log(e)\n      } finally {\n        setIsLoading(false)\n      }\n    }\n    if (!events?.length) getData()\n    else setIsLoading(false)\n  }, [])\n\n  return (\n    <>\n      <div className={classes.root}>\n        {!isLoading\n          ? <>\n            <h4>Add to event {job.title} - {candidateName}</h4>\n              <div className={classes.recContainer}>\n                <div className={classes.recImage}>{ calendlyAccount.user_name.split(' ').map(name => name[0]) }</div>\n                <div className={classes.recDetails}>\n                  <h4>{ calendlyAccount.user_name }</h4>\n                  <a id=\"calendly-scheduling-url\" target=\"_blank\" rel=\"noreferrer\" href={calendlyAccount.scheduling_url}>{ calendlyAccount.scheduling_url }</a>\n                </div>\n              </div>\n              <div className={`${classes.meetingContainer} ${events.length > 3 ? classes.shadow : ''}`}>\n                { events.length\n                  ? events.map(event =>\n                      <EventType\n                        key={event.uri}\n                        event={event}\n                        setSelectedEvent={setSelectedEvent}\n                        selected={selectedEvent?.uri === event.uri}\n                      />\n                    )\n                  : <span className={classes.noEvents}>No available events</span>\n                }\n              </div>\n            </>\n          : <div className={classes.loading}>\n              <ReactLoading type=\"spin\" color={theme.palette.primary.main} width={45} height={45} />\n            </div>\n        }\n        <Box className={classes.buttonContainer}>\n          <Button\n            id=\"back-button\"\n            disableElevation\n            variant=\"outlined\"\n            color=\"secondary\"\n            onClick={() => {window.history.back()}}\n            startIcon={<ChevronLeftIcon />}\n          >\n          </Button>\n          <Button\n            id=\"next-button\"\n            disableElevation\n            variant=\"contained\"\n            color=\"secondary\"\n            onClick={handleSubmit}\n            endIcon={<ChevronRightRoundedIcon />}\n            disabled={!selectedEvent?.uri}\n          >\n            Book event\n          </Button>\n        </Box>\n      </div>\n    </>\n  )\n}\n\nexport default withScoutTheme(AddToCalendlyEventModal)\n","import React, { useEffect, useState } from 'react';\nimport { withScoutTheme } from '../../ThemeContext/ThemeContext';\nimport { Button, CircularProgress } from '@material-ui/core';\nimport useStyles from './useStyles';\nimport {\n  ICalendlyEvent,\n  ICandidate,\n  IJobPosition,\n  IStatus,\n  ITemplate,\n  ICalendlyScoutProps\n} from '../types';\nimport { withStyles } from '@material-ui/core/styles';\nimport Step1 from './components/Steps/Step1/Step1';\nimport Step2 from './components/Steps/Step2/Step2';\nimport Step3 from './components/Steps/Step3/Step3';\nimport Step4 from './components/Steps/Step4/Step4';\nimport CompleteModal from './components/CompleteModal';\nimport Api from '../API';\nimport ChevronRightRoundedIcon from '@material-ui/icons/ChevronRightRounded';\nimport KeyboardArrowLeftIcon from '@mui/icons-material/KeyboardArrowLeft';\n\ninterface IProps {\n  calendlyAccount: ICalendlyScoutProps;\n  job: any;\n  apiKey: string;\n  candidateList: ICandidate[];\n  application: any;\n}\n\nfunction Modal({ calendlyAccount, job, apiKey, candidateList, application }: IProps) {\n  const [isOpen, setIsOpen] = useState<boolean>(true);\n  const [isSending, setIsSending] = useState<boolean>(false);\n  const [step, setStep] = useState<number>(1);\n  const [nextDisabled, setNextDisabled] = useState<boolean>(false);\n  const [jobPositions, setJobPositions] = useState<IJobPosition[]>([]);\n  const [selectedJobPosition, setSelectedJobPosition] = useState<IJobPosition | null>(job);\n  const [candidates, setCandidates] = useState<ICandidate[]>([]);\n  const [selectedCandidates, setSelectedCandidates] = useState<ICandidate[]>([application]);\n  const [statuses, setStatuses] = useState<IStatus[]>([]);\n  const [selectedStatuses, setSelectedStatuses] = useState<IStatus[]>([]);\n  const [events, setEvents] = useState<ICalendlyEvent[]>([]);\n  const [selectedEvent, setSelectedEvent] = useState<ICalendlyEvent | null>();\n  const [templates, setTemplates] = useState<ITemplate[]>([]);\n  const [selectedTemplate, setSelectedTemplate] = useState<ITemplate | null>(null);\n  const [defaultJob, setDefaultJob] = useState<boolean>(false);\n  const [editedSubject, setEditedSubject] = useState<string>('');\n  const [editedBody, setEditedBody] = useState<string>('');\n  const TOTAL_STEPS = 5;\n\n  const classes = useStyles();\n\n  const ColorButton = withStyles(() => ({\n    root: {\n      '&#cancel-button': {\n        color: '#E37D7A',\n        textDecoration: 'underline',\n        backgroundColor: '#ffffff',\n        '&:hover': {\n          color: '#d74742',\n          backgroundColor: '#ffffff',\n        },\n      },\n    },\n  }))(Button);\n\n  const closeModal = () => {\n    if (selectedJobPosition && application) {\n      location.href = `/admin/jobs/${selectedJobPosition.id}/applications/${application.id}`;\n    } else if (selectedJobPosition) {\n      location.href = `/admin/jobs/${selectedJobPosition.id}/applications`;\n    } else {\n      location.href = `/admin/calendar/events`;\n    }\n  };\n\n  useEffect(() => {\n    if (candidateList) {\n      setSelectedCandidates([...candidateList]);\n    }\n    localStorage.setItem('userKey', apiKey);\n    localStorage.setItem('editedSubject', editedSubject);\n    localStorage.setItem('editedBody', editedBody);\n  }, [isOpen]);\n\n  useEffect(() => {\n    if (\n      (step === 1 && !selectedCandidates.length) ||\n      (step === 2 && !selectedEvent) ||\n      (step === 3 && !selectedTemplate) ||\n      (step === 4 && !selectedCandidates.length && !selectedEvent && !selectedTemplate)\n    )\n      setNextDisabled(true);\n    else setNextDisabled(false);\n  }, [step, selectedCandidates, selectedEvent, selectedTemplate]);\n\n  function handleStep(increment: boolean) {\n    setStep(increment ? Math.min(step + 1, TOTAL_STEPS) : Math.max(step - 1, 1));\n  }\n\n  async function handleSubmit() {\n    setIsSending(true);\n    try {\n      await Api.sendInvitations(selectedJobPosition.id, {\n        subject: editedSubject || selectedTemplate.subject,\n        body: editedBody || selectedTemplate.body,\n        application_ids: selectedCandidates.map((application) => application.id),\n        event_type_url: selectedEvent.scheduling_url\n      });\n    } catch (err) {\n      console.log(err);\n    } finally {\n      setIsSending(false);\n      setStep(TOTAL_STEPS);\n    }\n  }\n\n  return (\n    <>\n      {step === TOTAL_STEPS ? (\n        <CompleteModal closeModal={closeModal} />\n      ) : (\n        <>\n          <div className={classes.root}>\n            {step === 1 && (\n              <Step1\n                apiKey={calendlyAccount.access_token}\n                candidateList={candidateList}\n                defaultJob={defaultJob}\n                jobPositions={jobPositions}\n                setJobPositions={setJobPositions}\n                selectedJobPosition={selectedJobPosition}\n                setSelectedJobPosition={setSelectedJobPosition}\n                statuses={statuses}\n                setStatuses={setStatuses}\n                selectedStatuses={selectedStatuses}\n                setSelectedStatuses={setSelectedStatuses}\n                candidates={candidates}\n                setCandidates={setCandidates}\n                selectedCandidates={selectedCandidates}\n                setSelectedCandidates={setSelectedCandidates}\n              />\n            )}\n            {step === 2 && (\n              <Step2\n                calendlyAccount={calendlyAccount}\n                events={events}\n                setEvents={setEvents}\n                selectedEvent={selectedEvent}\n                setSelectedEvent={setSelectedEvent}\n              />\n            )}\n            {step === 3 && (\n              <Step3\n                templates={templates}\n                setTemplates={setTemplates}\n                selectedTemplate={selectedTemplate}\n                setSelectedTemplate={setSelectedTemplate}\n                editedSubject={editedSubject}\n                setEditedSubject={setEditedSubject}\n                editedBody={editedBody}\n                setEditedBody={setEditedBody}\n              />\n            )}\n            {step === 4 && (\n              <Step4\n                setStep={setStep}\n                calendlyAccount={calendlyAccount}\n                selectedEvent={selectedEvent}\n                selectedCandidates={selectedCandidates}\n                selectedTemplate={selectedTemplate}\n                selectedJobPosition={selectedJobPosition}\n              />\n            )}\n            <div className={`${classes.buttonContainer} ${step === 3 ? 'move-z' : ''}`}>\n              <ColorButton\n                id=\"cancel-button\"\n                disableElevation\n                variant=\"text\"\n                onClick={() => {\n                  window.location.pathname === '/admin/calendar/events'\n                    ? setIsOpen(false)\n                    : window.history.back();\n                }}\n              >\n                Cancel\n              </ColorButton>\n              {step !== 1 && (\n                <Button\n                  disableElevation\n                  variant=\"outlined\"\n                  color=\"secondary\"\n                  onClick={() => handleStep(false)}\n                >\n                  <KeyboardArrowLeftIcon />\n                </Button>\n              )}\n              <Button\n                id=\"next-button\"\n                disabled={nextDisabled}\n                disableElevation\n                variant=\"contained\"\n                color=\"secondary\"\n                onClick={() => {\n                  step === TOTAL_STEPS - 1 ? handleSubmit() : handleStep(true);\n                }}\n                endIcon={\n                  isSending ? (\n                    <CircularProgress size={14} color=\"inherit\" />\n                  ) : (\n                    <ChevronRightRoundedIcon />\n                  )\n                }\n              >\n                {step === TOTAL_STEPS - 1 ? 'Send invites' : 'Next'}\n              </Button>\n            </div>\n          </div>\n          <div\n            className={classes.progressBar}\n            style={{ width: `${step * (100 / (TOTAL_STEPS - 1))}%` }}\n          />\n        </>\n      )}\n    </>\n  );\n}\n\nexport default withScoutTheme(Modal);\n","import React from 'react';\nimport { withScoutTheme } from '../../../../ThemeContext/ThemeContext';\nimport { Button } from '@material-ui/core';\nimport useStyles from './useStyles';\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\n\ninterface IProps {\n  closeModal: () => void,\n}\n\nfunction CompleteModal({ closeModal }: IProps) {\n\n  const classes = useStyles();\n\n  return (\n    <div className={classes.root} id=\"complete-modal\">\n      <CheckCircleIcon color=\"secondary\" />\n      <h4>Complete</h4>\n      <div className={classes.text}>Your Calendly invite has been sent</div>\n      <Button\n        id=\"complete-modal-button\"\n        disableElevation\n        color=\"secondary\"\n        variant=\"contained\"\n        onClick={closeModal}\n      >\n        Back\n      </Button>\n    </div>\n  )\n}\n\nexport default withScoutTheme(CompleteModal);\n","import React, { useState, useEffect, useRef } from 'react';\nimport {\n  TextField,\n  InputAdornment,\n  Select,\n  MenuItem,\n  Chip,\n  IconButton,\n  useTheme,\n  CircularProgress\n} from '@material-ui/core';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport useStyles from './useStyles';\nimport { withScoutTheme } from '../../../../../ThemeContext/ThemeContext';\nimport Api from '../../../../API';\nimport ReactLoading from 'react-loading';\nimport HighlightOffIcon from '@material-ui/icons/HighlightOff';\nimport SearchOutlinedIcon from '@material-ui/icons/SearchOutlined';\nimport WorkIcon from '@material-ui/icons/Work';\nimport { IStatus, ICandidate, IJobPosition } from '../../../../types';\n\ninterface IProps {\n  apiKey: string;\n  defaultJob: boolean;\n  jobPositions: IJobPosition[];\n  setJobPositions: (jobs: IJobPosition[]) => void;\n  selectedJobPosition: IJobPosition;\n  setSelectedJobPosition: (job: IJobPosition) => void;\n  statuses: IStatus[];\n  setStatuses: (statuses: IStatus[]) => void;\n  selectedStatuses: IStatus[];\n  setSelectedStatuses: (statuses: IStatus[] | ((statuses: IStatus[]) => IStatus[])) => void;\n  candidates: ICandidate[];\n  setCandidates: (candidates: ICandidate[]) => void;\n  selectedCandidates: ICandidate[];\n  candidateList: ICandidate[];\n  setSelectedCandidates: (candidate: ICandidate[]) => void;\n}\n\nfunction Step1({\n  apiKey,\n  defaultJob,\n  jobPositions,\n  setJobPositions,\n  selectedJobPosition,\n  setSelectedJobPosition,\n  statuses,\n  setStatuses,\n  selectedStatuses,\n  setSelectedStatuses,\n  candidates,\n  candidateList,\n  setCandidates,\n  selectedCandidates,\n  setSelectedCandidates\n}: IProps) {\n  const [isLoading, setIsLoading] = useState(true);\n  const [statusIsLoading, setStatusIsLoading] = useState(false);\n  const initialRender = useRef(true);\n\n  const classes = useStyles();\n  const theme = useTheme();\n  useEffect(() => {\n    async function getData() {\n      setIsLoading(true);\n      try {\n        const { job_positions } = await Api.getEventOptions();\n        setJobPositions(job_positions);\n      } catch (e) {\n        throw new Error(e);\n      } finally {\n        setIsLoading(false);\n      }\n    }\n    if (!selectedJobPosition) getData();\n    else setIsLoading(false);\n  }, [selectedJobPosition, setJobPositions]);\n\n  async function refreshApplications() {\n    setStatuses([]);\n    setCandidates([]);\n    setSelectedCandidates([]);\n    setSelectedStatuses([]);\n    const applications: ICandidate[] = await Api.getJobApplications(\n      selectedJobPosition.id,\n      apiKey\n    ).then((data) => replaceNullStatuses(data.applications));\n    const statuses = applications.map((application) => application.status);\n    const uniqueStatuses = statuses\n      .filter(\n        (status: IStatus, index: number) =>\n          statuses.findIndex((inner) => inner.id === status.id) === index\n      )\n      .sort((a, b) => a.position - b.position);\n    const candidateList = replaceNullStatuses(applications);\n    const selectedList = candidateList.filter((candidate) =>\n      selectedCandidates.some((selected) => candidate.id == selected?.id)\n    );\n    setCandidates(candidateList);\n    setSelectedCandidates(selectedList);\n    setStatuses(uniqueStatuses);\n  }\n\n  useEffect(() => {\n    setStatusIsLoading(true);\n    if (initialRender.current) {\n      initialRender.current = false;\n      if (selectedJobPosition && (!candidates.length || !statuses.length)) {\n        refreshApplications().then(() => setStatusIsLoading(false));\n      }\n    } else {\n      if (selectedJobPosition) {\n        refreshApplications().then(() => setStatusIsLoading(false));\n      }\n    }\n  }, [selectedJobPosition]);\n\n  useEffect(() => {\n    setSelectedStatuses((selectedStatuses: IStatus[]) =>\n      selectedStatuses.filter((status) =>\n        selectedCandidates.map((app) => app.status.id).includes(status.id)\n      )\n    );\n  }, [selectedCandidates, setSelectedStatuses]);\n\n  function handleStatusRemove(id: number) {\n    setSelectedStatuses(selectedStatuses.filter((selected) => selected.id !== id));\n    setSelectedCandidates(selectedCandidates.filter((candidate) => candidate.status.id !== id));\n  }\n\n  function handleStatusAdd(status: IStatus) {\n    const newApplicants = candidates\n      .filter((candidate) => candidate.status.id === status.id)\n      .filter(\n        (candidate) => !selectedCandidates.map((selected) => selected.id).includes(candidate.id)\n      );\n    setSelectedStatuses([...selectedStatuses, status]);\n    setSelectedCandidates([...selectedCandidates, ...newApplicants]);\n  }\n\n  function loaderOrEmpty(loading: boolean) {\n    if (loading) {\n      return (\n        <div className={classes.loading}>\n          <CircularProgress size={20} color=\"inherit\" />\n        </div>\n      );\n    } else {\n      return <div className={classes.noData}>No Candidates Found</div>;\n    }\n  }\n\n  function replaceNullStatuses(applications: ICandidate[]): ICandidate[] {\n    return applications.map((application) =>\n      application.status\n        ? application\n        : {\n            ...application,\n            status: {\n              id: 1,\n              name: 'New',\n              position: 1\n            }\n          }\n    );\n  }\n\n  return !isLoading ? (\n    <>\n      <h4>Select candidates</h4>\n      {\n        <div className={classes.searchContainer}>\n          <Autocomplete\n            classes={{\n              root: classes.autocompleteField,\n              inputRoot: classes.autoCompleteInput,\n              endAdornment: classes.endAdornment\n            }}\n            style={{ marginBottom: 14 }}\n            options={jobPositions}\n            getOptionLabel={(option) => `${option.reference} - ${option.title}`}\n            value={selectedJobPosition}\n            filterSelectedOptions={true}\n            disableClearable={true}\n            onChange={(_, newValue: IJobPosition) => setSelectedJobPosition(newValue)}\n            renderTags={() => null}\n            renderInput={(params) => (\n              <TextField\n                {...params}\n                placeholder=\"Select Job\"\n                InputProps={{\n                  ...params.InputProps,\n                  disableUnderline: true,\n                  startAdornment: (\n                    <InputAdornment position=\"start\">\n                      <WorkIcon />\n                    </InputAdornment>\n                  )\n                }}\n              />\n            )}\n          />\n        </div>\n      }\n      <div className={classes.searchContainer}>\n        <Autocomplete\n          id=\"candidate-autocomplete\"\n          classes={{\n            root: classes.autocompleteField,\n            inputRoot: classes.autoCompleteInput,\n            endAdornment: classes.endAdornment\n          }}\n          disabled={!selectedJobPosition}\n          multiple\n          options={candidates}\n          noOptionsText={\n            statusIsLoading ? (\n              <div className={classes.loading}>\n                <CircularProgress size={20} color=\"inherit\" />\n              </div>\n            ) : (\n              'No Candidates Found for Selected Job'\n            )\n          }\n          getOptionLabel={(option) => option.name}\n          value={selectedCandidates}\n          filterSelectedOptions={true}\n          onChange={(_, newValue: ICandidate[]) => setSelectedCandidates(newValue)}\n          renderTags={() => null}\n          disableClearable={true}\n          renderInput={(params) => (\n            <TextField\n              {...params}\n              placeholder=\"Search Candidates\"\n              InputProps={{\n                ...params.InputProps,\n                disableUnderline: true,\n                startAdornment: (\n                  <InputAdornment position=\"start\">\n                    <SearchOutlinedIcon />\n                  </InputAdornment>\n                )\n              }}\n            />\n          )}\n        />\n        <Select\n          id=\"candidate-filter\"\n          disabled={!selectedJobPosition || !candidates.length}\n          className={classes.inputBase}\n          displayEmpty={true}\n          renderValue={() => 'Filter candidates'}\n          variant=\"outlined\"\n          value=\"\"\n          MenuProps={{\n            classes: { paper: classes.dialogPaper },\n            PaperProps: {\n              id: 'candidate-filter-list'\n            }\n          }}\n        >\n          {!statuses.length ? (\n            loaderOrEmpty(statusIsLoading)\n          ) : statuses.length === selectedStatuses?.length ? (\n            <MenuItem value=\"\" disabled>\n              No Remaining Statuses\n            </MenuItem>\n          ) : (\n            statuses\n              .filter((status) =>\n                candidates.map((candidate) => candidate.status.id).includes(status.id)\n              )\n              .filter(\n                (status) => !selectedStatuses.map((selected) => selected.id).includes(status.id)\n              )\n              .map((status) => (\n                <MenuItem key={status.id} onClick={() => handleStatusAdd(status)}>\n                  {status.name}\n                </MenuItem>\n              ))\n          )}\n        </Select>\n      </div>\n      {!!selectedStatuses.length && (\n        <div className={classes.chipContainer} id=\"candidate-filter-chips\">\n          {selectedStatuses.map((status) => (\n            <Chip\n              key={status.id}\n              className={classes.chipItem}\n              label={status.name}\n              onDelete={() => handleStatusRemove(status.id)}\n              variant=\"outlined\"\n            />\n          ))}\n        </div>\n      )}\n      <div\n        className={`${classes.table} ${selectedCandidates.length > 6 ? classes.shadow : ''}`}\n        id=\"candidate-list\"\n      >\n        <div className={classes.row}>\n          <div className={`${classes.tableHeader} ${classes.tableLg}`}>Name</div>\n          <div className={`${classes.tableHeader} ${classes.tableLg}`}>Email</div>\n          <div className={`${classes.tableHeader} ${classes.tableMd}`}>Status</div>\n          <div />\n        </div>\n        {!selectedCandidates.length ? (\n          <div className={classes.row}>\n            <span className={classes.noApplicants}>No applicants selected</span>\n          </div>\n        ) : (\n          selectedCandidates?.map((candidate) => (\n            <div key={candidate?.id} className={classes.row}>\n              <div className={classes.tableLg}>{candidate?.name}</div>\n              <div className={classes.tableLg}>{candidate?.email}</div>\n              <div className={classes.tableMd}>{candidate?.status && candidate?.status?.name}</div>\n              <IconButton\n                onClick={() =>\n                  setSelectedCandidates(\n                    selectedCandidates.filter((selected) => selected.id !== candidate?.id)\n                  )\n                }\n              >\n                <HighlightOffIcon color=\"error\" />\n              </IconButton>\n            </div>\n          ))\n        )}\n      </div>\n    </>\n  ) : (\n    <div className={classes.loading}>\n      <ReactLoading type=\"spin\" color={theme.palette.primary.main} width={45} height={45} />\n    </div>\n  );\n}\n\nexport default withScoutTheme(Step1);\n","import React, { memo, useState, useCallback } from 'react';\nimport { Button } from '@material-ui/core';\nimport useStyles from './useStyles';\nimport { withScoutTheme } from '../../../../../ThemeContext/ThemeContext';\nimport { ICalendlyEvent } from '../../../../types';\nimport FileCopyOutlinedIcon from '@material-ui/icons/FileCopyOutlined';\n\ninterface IProps {\n  event: ICalendlyEvent,\n  setSelectedEvent: (event: ICalendlyEvent) => void,\n  selected: boolean,\n}\n\nfunction EventType({ event, setSelectedEvent, selected }: IProps) {\n  const [buttonText, setButtonText] = useState('Copy link');\n \n  const classes = useStyles();\n\n  const handleClick = useCallback(() => {\n    setSelectedEvent(event)\n  }, [event])\n\n  const handleCopy = useCallback(() => {\n    setButtonText('Copied!');\n    setTimeout(() => setButtonText('Copy link'), 1800);\n    navigator.clipboard.writeText(event.scheduling_url)\n  }, [event])\n\n  const handleEdit = useCallback(() => {\n    window.open('https://calendly.com/event_types/user/me')\n  }, [])\n\n  return (\n    <div className={classes.container} onClick={handleClick} id=\"calendly-event-item\">\n      <div className={classes.content} style={{ borderColor: selected ? event.color : '' }} >\n        <div className={classes.name}>{ event.name }</div>\n        <div className={classes.details}>{`${event.duration} mins, ${event.kind === 'solo' ? 'One-on-One' : 'Group'}`}</div>\n        <a\n          className={classes.booking}\n          target=\"_blank\"\n          rel=\"noreferrer\"\n          href={event.scheduling_url}\n        >\n          View booking page\n        </a>\n      </div>\n      <div className={classes.footer}>\n        <Button\n          className={classes.copyButton}\n          variant=\"text\"\n          color=\"secondary\"\n          startIcon={<FileCopyOutlinedIcon fontSize=\"small\" />}\n          onClick={handleCopy}\n        >\n          { buttonText }\n        </Button>\n        <Button\n          className={classes.editButton}\n          variant=\"text\"\n          color=\"secondary\"\n          onClick={handleEdit}\n        >\n          Edit\n        </Button>\n      </div>\n    </div>\n  )\n}\n\nexport default withScoutTheme(memo(EventType))\n","import React, { useState, useEffect } from 'react';\nimport useStyles from './useStyles';\nimport { ICalendlyEvent, ICalendlyScoutProps } from '../../../../types';\nimport { withScoutTheme } from '../../../../../ThemeContext/ThemeContext';\nimport { useTheme } from '@material-ui/core';\nimport ReactLoading from 'react-loading';\nimport axios from 'axios';\nimport EventType from './EventType';\n\ninterface IProps {\n  calendlyAccount: ICalendlyScoutProps,\n  events: ICalendlyEvent[],\n  setEvents: (event: ICalendlyEvent[]) => void,\n  selectedEvent: ICalendlyEvent,\n  setSelectedEvent: (event: ICalendlyEvent | null) => void,\n}\n\nfunction Step2({ calendlyAccount, events, setEvents, selectedEvent, setSelectedEvent }: IProps) {\n  const [isLoading, setIsLoading] = useState<boolean>(true);\n \n  const classes = useStyles();\n  const theme = useTheme();\n\n  useEffect(() => {\n    async function getData() {\n      setIsLoading(true);\n      try {\n        const events = await axios.get(`https://api.calendly.com/event_types?user=${calendlyAccount.user}`, {\n          headers: {\n            'Content-Type': 'application/json',\n            'Authorization': `Bearer ${calendlyAccount.access_token}`\n          }\n        });\n        setEvents(events.data.collection.filter((event: ICalendlyEvent) => event.active))\n      } catch (e) {\n        console.log(e)\n      } finally {\n        setIsLoading(false)\n      }\n    }\n    if (!events?.length) getData()\n    else setIsLoading(false)\n  }, [])\n\n  return (\n    !isLoading\n      ? <>\n        <h4 id=\"step-2-header\">Meeting details</h4>\n          <div className={classes.recContainer}>\n            <div className={classes.recImage}>{ calendlyAccount.user_name.split(' ').map(name => name[0]) }</div>\n            <div className={classes.recDetails}>\n              <h4>{ calendlyAccount.user_name }</h4>\n              <a id=\"calendly-scheduling-url\" target=\"_blank\" rel=\"noreferrer\" href={calendlyAccount.scheduling_url}>{ calendlyAccount.scheduling_url }</a>\n            </div>\n          </div>\n          <div className={`${classes.meetingContainer} ${events.length > 3 ? classes.shadow : ''}`}>\n            { events.length\n              ? events.map(event =>\n                  <EventType\n                    key={event.uri}\n                    event={event}\n                    setSelectedEvent={setSelectedEvent}\n                    selected={selectedEvent?.uri === event.uri}\n                  />\n                )\n              : <span className={classes.noEvents}>No available events</span>\n            }\n          </div>\n        </>\n      : <div className={classes.loading}>\n          <ReactLoading type=\"spin\" color={theme.palette.primary.main} width={45} height={45} />\n        </div>\n  )\n}\n\nexport default withScoutTheme(Step2)\n","import React, { useState, useEffect } from 'react';\nimport useStyles from './useStyles';\nimport { withScoutTheme } from '../../../../../ThemeContext/ThemeContext';\nimport { ITemplate } from '../../../../types';\nimport { useTheme } from '@material-ui/core';\nimport TextField from '@mui/material/TextField';\nimport draftToHtml from 'draftjs-to-html';\nimport htmlToDraft from 'html-to-draftjs';\nimport { EditorState, convertToRaw, ContentState } from 'draft-js';\nimport { Editor } from 'react-draft-wysiwyg';\nimport ReactLoading from 'react-loading';\nimport Api from '../../../../API';\n\ninterface IProps {\n  templates: ITemplate[],\n  setTemplates: (template: ITemplate[]) => void,\n  selectedTemplate: ITemplate,\n  setSelectedTemplate: (template: ITemplate) => void,\n  editedSubject: string,\n  setEditedSubject: (subject: string) => void,\n  editedBody: string,\n  setEditedBody: (body: string) => void,\n}\n\nfunction Step3({ templates, setTemplates, selectedTemplate, setSelectedTemplate, editedSubject, setEditedSubject, editedBody, setEditedBody }: IProps) {\n  const [isLoading, setIsLoading] = useState<boolean>(true);\n  const [editorReadyState, setEditorReadyState] = useState(null);\n\n  const classes = useStyles();\n  const theme = useTheme();\n\n  const handleDraftValue = (e) => {\n    const contentBlock = htmlToDraft(e);\n    if (contentBlock) {\n      const contentState = ContentState.createFromBlockArray(contentBlock.contentBlocks);\n      const editorState = EditorState.createWithContent(contentState);\n      setEditorReadyState(editorState);\n    }\n  }\n\n  const handleTemplateChange = (template: ITemplate) => {\n    setSelectedTemplate(template);\n  \n    setEditedBody(template.body);\n    setEditedSubject(template.subject);\n\n    handleDraftValue(template.body);\n  }\n\n  useEffect(() => {\n    async function getData() {\n      setIsLoading(true);\n      try {\n        const { email_templates } = await Api.getCalendlyEmailTemplates();\n        setTemplates(email_templates);\n        setSelectedTemplate(email_templates[0]);\n        setEditedSubject(email_templates[0].subject);\n        setEditedBody(email_templates[0].body);\n        handleDraftValue(editedBody || email_templates[0].body);\n      } catch(e) {\n        console.log(e)\n      } finally {\n        setIsLoading(false);\n      }\n    }\n    if (!templates.length) {\n      getData();\n    } else {\n      !selectedTemplate && setSelectedTemplate(templates[0]);\n      handleDraftValue(editedBody);\n      setIsLoading(false)\n    }\n  }, [])\n\n  return (\n    !isLoading\n    ? <div className={classes.container}>\n        <div>\n          <h4 id=\"step-3-header\">Select template</h4>\n          { !templates.length\n              ? <div className={classes.noTemplates}>\n                  Could not find any templates with the <span>{`{CALENDLY_URL}`}</span> placeholder in the body.\n                  Please go to your entity settings and create a template with this placeholder in order for it to appear here.\n                </div>\n              : <div className={classes.templateContainer} id=\"template-container\">\n                  { templates.map(template =>\n                      <div\n                        key={template.id}\n                        className={selectedTemplate?.id === template.id ? classes.selected : ''}\n                        onClick={() => handleTemplateChange(template)}\n                      >\n                        { template.name }\n                      </div>\n                    )}\n                </div>\n              \n            }\n        </div>\n        <div className={classes.templateView}>\n          { selectedTemplate\n            ? <>\n                <TextField\n                  label='Subject'\n                  variant=\"outlined\"\n                  size=\"small\"\n                  value={editedSubject}\n                  onChange={e => setEditedSubject(e.target.value)}\n                />\n                <label className={classes.formLabelWrapper}>Body</label>\n                <Editor\n                  editorState={editorReadyState}\n                  wrapperClassName={classes.textEditor}\n                  toolbarClassName={classes.textEditorToolbar}\n                  editorClassName={classes.textEditorBody}\n                  onEditorStateChange={(e) => { \n                    const value = convertToRaw(e.getCurrentContent());\n                    if (value.blocks && value.blocks.length === 1 && value.blocks[0].text === '') {\n                      setEditedBody('');\n                    } else {\n                      setEditedBody(draftToHtml((value)));\n                    }\n                    setEditorReadyState(e);\n                  }}\n                  toolbar={{\n                    options: ['inline', 'list', 'textAlign'],\n                    inline: {\n                      inDropdown: false,\n                      options: ['bold', 'italic', 'underline'],\n                    },\n                  }}\n                />\n              </>\n            : <div className={classes.noPreview}>No preview available</div>\n          }\n        </div>\n      </div>\n    : <div className={classes.loading}>\n        <ReactLoading type=\"spin\" color={theme.palette.primary.main} width={45} height={45} />\n      </div>\n  )\n}\n\nexport default withScoutTheme(Step3)\n","import React, { ReactElement } from 'react';\nimport useStyles from './useStyles';\nimport { withScoutTheme } from '../../../../../ThemeContext/ThemeContext';\nimport { SvgIconProps } from '@material-ui/core';\n\ninterface IProps {\n  icon: ReactElement<SvgIconProps>,\n  title: string,\n  description: string,\n  step: number,\n  setStep: (step: number) => void,\n}\n\nfunction Step2({ icon, title, description, step, setStep }: IProps) {\n \n  const classes = useStyles();\n\n  return (\n    <div className={classes.overviewItem}>\n      { icon }\n      <div className={classes.overviewTitle}>{ title }</div>\n      <div className={classes.overviewDescription}>{ description }</div>\n      <div\n        className={classes.overviewLink}\n        onClick={() => setStep(step)}\n      >\n        Edit selection\n      </div>\n    </div>\n  )\n}\n\nexport default withScoutTheme(Step2)\n","import React from 'react';\nimport useStyles from './useStyles';\nimport { withScoutTheme } from '../../../../../ThemeContext/ThemeContext';\nimport { ICalendlyEvent, ICalendlyScoutProps, ICandidate, IJobPosition, ITemplate } from '../../../../types';\nimport OverviewItem from './OverviewItem';\nimport TodayRoundedIcon from '@material-ui/icons/TodayRounded';\nimport PeopleAltRoundedIcon from '@material-ui/icons/PeopleAltRounded';\nimport EmailRoundedIcon from '@material-ui/icons/EmailRounded';\n\ninterface IProps {\n  setStep: (step: number) => void,\n  calendlyAccount: ICalendlyScoutProps,\n  selectedEvent: ICalendlyEvent,\n  selectedCandidates: ICandidate[],\n  selectedTemplate: ITemplate,\n  selectedJobPosition: IJobPosition,\n}\n\nfunction Step2({ setStep, calendlyAccount, selectedEvent, selectedCandidates, selectedTemplate, selectedJobPosition }: IProps) {\n \n  const classes = useStyles();\n\n  return (\n    <>\n      <h4 id=\"step-4-header\">Overview</h4>\n      <div className={classes.recContainer}>\n        <div className={classes.recImage}>{ calendlyAccount.user_name.split(' ').map(name => name[0]) }</div>\n        <div className={classes.recDetails}>\n          <h4>{ calendlyAccount.user_name }</h4>\n          <a target=\"_blank\" rel=\"noreferrer\" href={calendlyAccount.scheduling_url}>{ calendlyAccount.scheduling_url }</a>\n        </div>\n      </div>\n      <div className={classes.overviewContainer}>\n        { selectedCandidates.length &&\n          <OverviewItem\n            icon={<PeopleAltRoundedIcon />}\n            title={`${selectedCandidates.length} Candidate${selectedCandidates.length ? 's' : ''}`}\n            description={selectedJobPosition.title}\n            step={1}\n            setStep={setStep}\n          />\n        }\n        { selectedEvent &&\n          <OverviewItem\n            icon={<TodayRoundedIcon />}\n            title={selectedEvent.name}\n            description={`${selectedEvent.duration} mins, ${selectedEvent.kind === 'solo' ? 'One-on-One' : 'Group'}`}\n            step={2}\n            setStep={setStep}\n          />\n        }\n        { selectedTemplate &&\n          <OverviewItem\n            icon={<EmailRoundedIcon />}\n            title=\"Template\"\n            description={selectedTemplate.name}\n            step={3}\n            setStep={setStep}\n          />\n        }\n      </div>\n    </>\n  )\n}\n\nexport default withScoutTheme(Step2)\n","import React from 'react'\nimport { Button, Modal, Box } from '@material-ui/core'\nimport ErrorIcon from '@mui/icons-material/Error';\nimport { withScoutTheme } from '../../ThemeContext/ThemeContext';\nimport useStyles from './useStyles'\n\nfunction BadAPIModal({invalidAPIKey, hasAPIKey}: {invalidAPIKey: boolean, hasAPIKey: boolean}) {\n\n  const classes = useStyles()\n  const BASE_URL = document.location.origin\n\n  return (\n    <Modal\n      open={invalidAPIKey}\n      aria-labelledby=\"no api modal\"\n      aria-describedby=\"this modal appears when the API key is invalid or missing\"\n    >\n      <Box className={classes.badAPIModalInner}>\n        <ErrorIcon \n          sx={{\n            fontSize: 70,\n            color: 'rgb(208, 119, 114)',\n            filter: 'drop-shadow(2px 2px 1px rgb(0 0 0 / 0.2))'\n          }} \n        />\n        <h1>Error</h1>\n        <p>\n          {hasAPIKey\n            ? \"The Calendly API token attached to your account is invalid.\"\n            : \"You need an API token to access Calendly.\"\n          }\n        </p>\n        <p>To find your token, go to</p>\n        <a href=\"https://calendly.com/integrations/api_webhooks\" target=\"_blank\" rel=\"noopener noreferrer\">\n          https://calendly.com/integrations/api_webhooks\n        </a>\n        <Box \n          sx={{\n            display: 'flex',\n            justifyContent: 'space-between',\n            marginTop: '30px',\n            width: '65%'\n          }}\n        >\n        <Button\n          variant=\"outlined\"\n          color=\"secondary\"\n          onClick={() => {window.location.href = `${BASE_URL}/admin/`}}\n        >\n          Back to home\n        </Button>\n        <Button\n          variant=\"contained\"\n          color=\"secondary\"\n          onClick={() => {window.location.href = `${BASE_URL}/admin/settings/`}}\n        >\n          {hasAPIKey\n            ? \"Edit API token\"\n            : \"I have a token\"\n          }\n        </Button>\n        </Box>\n      </Box>\n    </Modal>\n  )\n}\n\nexport default withScoutTheme(BadAPIModal);","import React, { useState, useRef, useEffect, useCallback, useMemo } from 'react';\nimport {\n  Button,\n  useTheme,\n  Box,\n  MenuItem,\n  FormControl,\n  Select,\n  Popover,\n  Modal,\n  Typography,\n} from '@material-ui/core';\nimport queryString from 'query-string';\nimport useStyles from './useStyles';\nimport { withScoutTheme } from '../../ThemeContext/ThemeContext';\nimport EventItem from './components/EventItem';\nimport BadAPIModal from './BadAPIModal';\nimport ReactLoading from 'react-loading';\nimport { ICalendlyScoutProps, ICalendlyEventListItem } from '../types';\nimport moment from 'moment';\nimport DayPicker, { DateUtils } from 'react-day-picker';\nimport { TYPES, FILTERS } from './constants';\nimport SortIcon from '@material-ui/icons/Sort';\nimport OpenInBrowserIcon from '@material-ui/icons/OpenInBrowser';\nimport AddIcon from '@material-ui/icons/Add';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport ArrowDropUpIcon from '@material-ui/icons/ArrowDropUp';\nimport ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos';\nimport ArrowForwardIosIcon from '@material-ui/icons/ArrowForwardIos';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport axios from 'axios';\n\ninterface IProps {\n  calendlyAccount: ICalendlyScoutProps,\n  apiKey: string,\n}\n\ninterface IDateRange {\n  min: Date | null,\n  max: Date | null,\n}\n\ninterface IEventApiParams {\n  min: string,\n  max: string,\n  page: number,\n}\n\nfunction ScheduledEvents ({ calendlyAccount, apiKey }: IProps) {\n  const [isLoading, setIsLoading] = useState(true);\n  const [isNextPage, setIsNextPage] = useState(false);\n  const [events, setEvents] = useState<ICalendlyEventListItem[]>([]);\n  const [selectedType, setSelectedType] = useState<string>(TYPES[0]);\n  const [pages, setPages] = useState<string[]>([null]);\n  const [refOffset, setRefOffset] = useState<number>(0.5);\n  const [refWidth, setRefWidth] = useState<number>(72);\n  const [firstTabSwitch, setFirstTabSwitch] = useState<boolean>(false);\n  const [savedDateRange, setSavedDateRange] = useState<IDateRange>({ min: new Date(moment().subtract(1, 'week').format()), max: new Date() })\n  const [isDateSelectOpen, setIsDateSelectOpen] = useState(false);\n  const [enteredTo, setEnteredTo] = useState(null);\n  const [activeFilter, setActiveFilter] = useState<string>(null);\n  const [isFilterOpen, setIsFilterOpen] = useState(false);\n  const [filterStatus, setFilterStatus] = React.useState('active');\n  const [invalidAPIKey, setinvalidAPIKey] = useState(false);\n  const [apiParams, setApiParams] = useState<IEventApiParams>({\n    min: moment().format(),\n    max: null,\n    page: 0\n  });\n\n  const headerRefs = useRef([]);\n  const filterRefs = useRef([]);\n  const dateSelectAnchor = useRef(null);\n\n  const classes = useStyles();\n  const theme = useTheme();\n\n  // Fetch events\n  const headers = useMemo(() => ({\n    'Content-Type': 'application/json',\n    'Authorization': `Bearer ${calendlyAccount.access_token}`\n  }), [calendlyAccount.access_token])\n\n  useEffect(() => {\n    getEvents() \n  }, [filterStatus])\n\n  const getEvents = useCallback(async () => {\n    setIsLoading(true);\n    setEvents([])\n    const inviteeParams = {\n      count: 100,\n      sort: 'created_at:asc',\n      status: filterStatus\n    }\n    const eventParams = {\n      ...(apiParams.max && { max_start_time: apiParams.max }),\n      ...(apiParams.min && { min_start_time: apiParams.min }),\n      user: calendlyAccount.user,\n      count: 10,\n      sort: 'start_time:asc',\n      status: filterStatus\n    }\n    try {\n      const { data } = await axios.get(pages[apiParams.page]\n        ? pages[apiParams.page]\n        : `https://api.calendly.com/scheduled_events?${queryString.stringify(eventParams)}`, { headers });\n      const invitees = await Promise.all(data.collection.map((event: ICalendlyEventListItem) =>\n        axios.get(`${event.uri}/invitees?${queryString.stringify(inviteeParams)}`, { headers })\n          .then(invitee => ({\n            ...event,\n            invitees: invitee.data.collection\n          }))\n        )\n      )\n      setEvents(invitees);\n      setIsNextPage(!!data.pagination.next_page);\n      apiParams.page + 1 >= pages.length && setPages([...pages, data.pagination.next_page])\n    } catch (err) {\n      console.log(err)\n      err.response.status === 401 && setinvalidAPIKey(true)\n    } finally {\n      setIsLoading(false)\n    }\n  }, [apiParams, pages, filterStatus])\n\n  useEffect(() => {\n    getEvents()\n  }, [apiParams])\n\n  // Handle calendly data when User has switched back to the tab\n  const onFocus = () => getEvents();\n\n  useEffect(() => {\n    if (!calendlyAccount.access_token) setinvalidAPIKey(true)\n    window.addEventListener(\"focus\", onFocus);\n    onFocus();\n    return () => {\n        window.removeEventListener(\"focus\", onFocus);\n    };\n  }, []);\n\n  // Handle categories\n  const handleSelectedType = useCallback((type: string) => {\n    const range = (() => {\n      switch (type) {\n        case 'Upcoming': return { min: moment().format(), max: null };\n        case 'Past': return { min: null, max: moment().format() };\n        case 'Date Range': return { min: moment(savedDateRange.min).format(), max: moment(savedDateRange.max).format() };\n      }\n    })();\n    setApiParams(params => ({\n      ...params,\n      page: 0,\n      min: range.min,\n      max: range.max,\n    }))\n    setPages([])\n    setSelectedType(type)\n  }, [selectedType])\n\n  useEffect(() => {\n    const index = TYPES.indexOf(selectedType);\n    if (!firstTabSwitch) return;\n    if (index !== -1) {\n      setRefOffset(headerRefs.current[index].offsetLeft + 0.5);\n      setRefWidth(headerRefs.current[index].getBoundingClientRect().width);\n    }\n  }, [headerRefs, selectedType])\n\n  useEffect(() => {\n    setFirstTabSwitch(true);\n    handleSelectedType(selectedType)\n  }, [selectedType])\n\n\n  // Pagination\n  const handlePageUp = useCallback(() => {\n    setApiParams(params => ({\n      ...params,\n      page: apiParams.page + 1\n    }))\n  }, [apiParams])\n\n  const handlePageDown = useCallback(() => {\n    setApiParams(params => ({\n      ...params,\n      page: apiParams.page - 1\n    }))\n  }, [apiParams])\n\n  // Date selection\n  const selectedDays = [savedDateRange.min, { from: savedDateRange.min, to: enteredTo }];\n  const disabledDays = { before: new Date() };\n  const modifiers = { start: savedDateRange.min, end: enteredTo };\n\n  function isSelectingFirstDay(from: Date, to: Date, day: Date) {\n    const isBeforeFirstDay = from && DateUtils.isDayBefore(day, from);\n    const isRangeSelected = from && to;\n    return !from || isBeforeFirstDay || isRangeSelected;\n  }\n\n  function handleDayClick(day: Date) {\n    if (savedDateRange.min && savedDateRange.max && day >= savedDateRange.min && day <= savedDateRange.max) return\n    if (isSelectingFirstDay(savedDateRange.min, savedDateRange.max, day)) {\n      setSavedDateRange({\n        min: day,\n        max: null\n      })\n      setEnteredTo(null)\n    } else {\n      setSavedDateRange(params => ({\n        ...params,\n        max: day\n      }))\n      setEnteredTo(day)\n    }\n  }\n\n  function handleDayMouseEnter(day: Date) {\n    if (!isSelectingFirstDay(savedDateRange.min, savedDateRange.max, day)) {\n      setEnteredTo(day)\n    }\n  }\n\n  return (\n    <div className={classes.root}>\n      <BadAPIModal invalidAPIKey={invalidAPIKey} hasAPIKey={!!calendlyAccount.access_token}/>\n      <div className={classes.header}>\n        <h4>My Calendly</h4>\n        <Button\n          disableElevation\n          color=\"secondary\"\n          startIcon={<AddIcon />}\n          onClick={() => { location.href = \"/admin/calendly\" }}\n        >\n          Create\n        </Button>\n      </div>\n      <div className={classes.actions}>\n        <div className={classes.type}>\n          {TYPES.map((type: string, i: number) =>\n            type === 'Date Range'\n              ? <>\n                  <span\n                    ref={el => headerRefs.current[i] = el}\n                    onClick={() => setSelectedType(type)}\n                    className={selectedType === type ? classes.activeType : ''}\n                  >\n                    {type}\n                  </span>\n                  <div\n                    className={`${classes.dateSelect} ${selectedType === 'Date Range' ? 'visible' : ''} ${isDateSelectOpen ? 'active' : ''}`}\n                    ref={dateSelectAnchor}\n                    onClick={() => setIsDateSelectOpen(true)}\n                  >\n                    <span>\n                      { `${moment(savedDateRange.min).format('ll')} \\u2014 `}\n                      <em>{ `${moment(savedDateRange.max).format('ll')}` }</em>\n                    </span>\n                  </div>\n                  <Popover\n                    classes={{ paper: classes.datePopover }}\n                    open={isDateSelectOpen}\n                    onClose={() => setIsDateSelectOpen(false)}\n                    anchorEl={dateSelectAnchor.current}\n                    anchorOrigin={{\n                      vertical: \"bottom\",\n                      horizontal: \"left\"\n                    }}\n                    transformOrigin={{\n                      vertical: \"top\",\n                      horizontal: \"left\"\n                    }}\n                  >\n                    <DayPicker\n                      numberOfMonths={2}\n                      fromMonth={new Date(apiParams.min)}\n                      selectedDays={selectedDays}\n                      disabledDays={disabledDays}\n                      modifiers={modifiers}\n                      onDayClick={handleDayClick}\n                      onDayMouseEnter={handleDayMouseEnter}\n                    />\n                    <Button\n                      style={{ marginTop: 10 }}\n                      disableElevation\n                      color=\"secondary\"\n                      onClick={() => {\n                        setIsDateSelectOpen(false)\n                        setApiParams(params => ({\n                          ...params,\n                          min: moment(savedDateRange.min).format(),\n                          max: moment(savedDateRange.max).format()\n                        }))\n                      }}\n                    >\n                      Apply\n                    </Button>\n                  </Popover>\n                </>\n              : <span\n                  ref={el => headerRefs.current[i] = el}\n                  onClick={() => setSelectedType(type)}\n                  className={selectedType === type ? classes.activeType : ''}\n                >\n                  {type}\n                </span>\n          )}\n          <div\n            className={classes.typeUnderline}\n            style={{\n              left: `${refOffset}px`,\n              width: `${refWidth}px`\n            }}\n          />\n        </div>\n        <div className={classes.moreActions}>\n          <Button\n            disableElevation\n            variant=\"text\"\n            startIcon={<SortIcon />}\n            onClick={() => setIsFilterOpen(filter => !filter)}\n          >\n            Filter\n          </Button>\n        </div>\n      </div>\n      { isFilterOpen &&\n        <div className={classes.filters}>\n          <div\n            key={FILTERS[0].key}\n            ref={el => filterRefs.current[0] = el}\n            onClick={() => setActiveFilter(FILTERS[0].key)}\n          >\n            <span>{ FILTERS[0].name }</span>\n            <div>\n              {filterStatus}\n              {activeFilter === FILTERS[0].key\n                ? <ArrowDropUpIcon />\n                : <ArrowDropDownIcon />\n              }\n            </div>\n          </div>\n          <Popover\n            classes={{ paper: classes.datePopover }}\n            open={!!activeFilter}\n            onClose={() => setActiveFilter(null)}\n            anchorEl={filterRefs.current[FILTERS.findIndex(filter => filter.key === activeFilter)]}\n            anchorOrigin={{\n              vertical: \"bottom\",\n              horizontal: \"left\"\n            }}\n            transformOrigin={{\n              vertical: \"top\",\n              horizontal: \"left\"\n            }}\n          >\n            {activeFilter === 'status' &&\n              <Box style={{ \n                width: '250px',\n                height: '100px' \n              }}>\n                <div style={{ paddingBottom: '1rem' }}>Status</div>\n                <FormControl variant=\"outlined\" className={classes.filterWrapper} fullWidth>\n                  <Select\n                    value={filterStatus}\n                    onChange={(e: React.ChangeEvent<HTMLInputElement>) => setFilterStatus(e.target.value)}\n                  >\n                    <MenuItem value={'active'}>Active</MenuItem>\n                    <MenuItem value={'canceled'}>Canceled</MenuItem>\n                  </Select>\n                </FormControl>\n              </Box>\n            }\n          </Popover>\n        </div>\n      }\n      <div className={classes.eventContainer}>\n        { isLoading\n          ? <div className={classes.loading}>\n              <CircularProgress sx={{color: theme.palette.primary.main}} />\n            </div>\n          : <>\n              { events.length\n                ? <div className={classes.eventHeader}>\n                    { moment(events[0].start_time).format('dddd, MMMM Do YYYY') }\n                  </div>\n                : <div className={classes.noEvents}>No events to display</div>\n              }\n              { events.map((event, i) =>\n                <React.Fragment key={event.uri}>\n                  <EventItem event={event} />\n                  { events[i + 1] && moment(events[i + 1].start_time).format('DD/MM/YYYY') !== moment(event.start_time).format('DD/MM/YYYY') && i !== 0 &&\n                    <div className={classes.eventHeader}>{ moment(events[i+1].start_time).format('dddd, MMMM Do YYYY') }</div>\n                  }\n                </React.Fragment>\n              )}\n            </>\n        }\n      </div>\n      { !isLoading &&\n        <div className={classes.eventPagination}>\n          {apiParams.page != 0 && \n            <Button\n              color=\"secondary\"\n              variant=\"contained\"\n              disableElevation\n              onClick={handlePageDown}\n            >\n              <ArrowBackIosIcon fontSize=\"medium\"/>\n            </Button>\n          }\n          {isNextPage &&\n            <Button\n              color=\"secondary\"\n              disableElevation\n              onClick={handlePageUp}\n            >\n              <ArrowForwardIosIcon fontSize=\"medium\"/>\n            </Button>\n          }\n        </div>\n      }\n    </div>\n  )\n}\n\nexport default withScoutTheme(ScheduledEvents);\n","import React, { useEffect, useState } from 'react';\nimport { Button, Box } from '@material-ui/core';\nimport useStyles from './useStyles';\nimport { ICalendlyEventListItem, ICalendlyEventInvitee } from '../../../types';\nimport { withScoutTheme } from '../../../../ThemeContext/ThemeContext';\nimport moment from 'moment';\nimport axios from 'axios';\n\nimport EventIcon from '@material-ui/icons/Event';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport ArrowDropUpIcon from '@material-ui/icons/ArrowDropUp';\n\ninterface IProps {\n  event: ICalendlyEventListItem,\n}\n\nfunction EventItem ({ event }: IProps) {\n  const [isExpanded, setIsExpanded] = useState(false);\n\n  const classes = useStyles();\n\n  function handleReschedule() {\n    window.open(event.invitees[0].reschedule_url, '_blank').focus();\n  }\n\n  function handlEdit() {\n    window.open('https://calendly.com/app/scheduled_events/user/me')\n  }\n\n  function handleCancel() {\n    event.invitees[0].status !== 'canceled' && window.open(event.invitees[0].cancel_url, '_blank').focus();\n  }\n\n  return (\n    <div className={classes.container}>\n      <div className={classes.detailsTop}>\n        <div className={classes.date}>\n          <div className={classes.dateDot} />\n          { `${moment(event.start_time).format('h:mma')} - ${moment(event.end_time).format('h:mma')}` }\n        </div>\n        <div className={classes.details}>\n          <h4>\n            { event.invitees.length === 0 && 'No Invitees' }\n            { event.invitees.length === 1 && event.invitees[0].name }\n            { event.invitees.length > 1 && `${event.invitees.length} of ${event.invitees_counter.limit} Invitees` }\n          </h4>\n          <div>\n            <span>Event Type</span>\n            <span>{ event.name }</span>\n          </div>\n        </div>\n        <div className={classes.detailsButton} onClick={() => setIsExpanded(expanded => !expanded)}>\n          { isExpanded ? <ArrowDropUpIcon fontSize=\"small\" /> : <ArrowDropDownIcon fontSize=\"small\" /> }\n          Details\n        </div>\n      </div>\n      { isExpanded && \n        <div className={classes.detailsBottom}>\n          <div>\n            <Button\n              disableElevation\n              color=\"secondary\"\n              variant=\"outlined\"\n              onClick={handleReschedule}\n              startIcon={<EventIcon />}\n            >\n              Reschedule\n            </Button>\n            <Button\n              disableElevation\n              className={classes.buttonRedLight}\n              onClick={handleCancel}\n              startIcon={<DeleteIcon />}\n            >\n              Cancel\n            </Button>\n            <div className={classes.divider} />\n            <Button\n              disableElevation\n              className={classes.buttonOutline}\n              onClick={handlEdit}\n            >\n              Edit event type\n            </Button>\n            <Button\n              disableElevation\n              className={classes.buttonOutline}\n              onClick={handlEdit}\n            >\n              Filter by event type\n            </Button>\n            <Button\n              disableElevation\n              className={classes.buttonOutline}\n              onClick={handlEdit}\n            >\n              Schedule invitee again\n            </Button>\n          </div>\n          {event.invitees_counter.limit > 1 \n            ? <div>\n                <div className={classes.expandDetailItem}>\n                  <div>Location</div>\n                  <span>{event.location ? event.location.location : 'Custom'}</span>\n                </div>\n                <h3>Invitees <span>({event.invitees_counter.limit - event.invitees_counter.active} spots remaining)</span></h3>\n                {event.invitees.map((evt, i) => \n                  <Box key={i} style={{ padding: '12px'}}>\n                    <div className={classes.expandDetailItem}>\n                      <div>Invitee Name</div>\n                      <span>{evt.name ? evt.name : 'No name'}</span>\n                    </div>\n                    <div className={classes.expandDetailItem}>\n                      <div>Email</div>\n                      <span>{evt.email ? evt.email : 'No email'}</span>\n                    </div>\n                    <div className={classes.expandDetailItem}>\n                      <div>Invitee Time Zone</div>\n                      <span>{evt.timezone ? evt.timezone : 'No timezone'}</span>\n                    </div>\n                  </Box>\n                )}\n                <div className={classes.expandDetailItem}>\n                  <div>Created at</div>\n                  {event.created_at &&< span>{moment(event.created_at).format('DD/MM/YY')}</span>}\n                </div>\n              </div>\n            : <div>\n                <div className={classes.expandDetailItem}>\n                  <div>Email</div>\n                  <span>{event.invitees[0].email}</span>\n                </div>\n                <div className={classes.expandDetailItem}>\n                  <div>Location</div>\n                  <span>{event.location ? event.location.location : 'Custom'}</span>\n                </div>\n                <div className={classes.expandDetailItem}>\n                  <div>Invitee Time Zone</div>\n                  <span>{event.invitees[0].timezone}</span>\n                </div>\n                <div className={classes.expandDetailItem}>\n                  <div>Created at</div>\n                  {event.created_at &&< span>{moment(event.created_at).format('DD/MM/YY')}</span>}\n                </div>\n              </div>\n          }\n        </div>\n      }\n    </div>\n\n\n  )\n}\n\nexport default withScoutTheme(EventItem);\n","import React from 'react';\nimport Box from '@mui/material/Box';\nimport WorkIcon from '@material-ui/icons/Work';\nimport VisibilityIcon from '@material-ui/icons/Visibility';\nimport InsertDriveFileIcon from '@material-ui/icons/InsertDriveFile';\nimport ApplicationsAndViews from '../NewUI/Job/Widgets/ApplicationsAndViews'\nimport { classes } from './styles';\n\nexport default function CareersPortalReport({ jobsCount, applicationsCount, pageViews }: { jobsCount: number; applicationsCount: number, pageViews: number }) {\n  return (\n    <Box sx={classes.subWidget}>\n      <Box sx={classes.widgetBlockContainer}>\n        <Box sx={classes.widgetBlock}>\n          <Box sx={classes.widgetBlockIcon}>\n            <InsertDriveFileIcon />\n          </Box>\n          <Box sx={classes.widgetBlockText}>\n            <Box sx={classes.blockCount}>{applicationsCount}</Box>\n            <Box sx={classes.blockTitle}>Applications last 30 days</Box>\n          </Box>\n        </Box>\n        <Box sx={classes.widgetBlock}>\n          <Box sx={classes.widgetBlockIcon}>\n            <VisibilityIcon />\n          </Box>\n          <Box sx={classes.widgetBlockText}>\n            <Box sx={classes.blockCount}>{pageViews}</Box>\n            <Box sx={classes.blockTitle}>Page views last 30 days</Box>\n          </Box>\n        </Box>\n        <Box sx={classes.widgetBlock}>\n          <Box sx={classes.widgetBlockIcon}>\n            <InsertDriveFileIcon />\n          </Box>\n          <Box sx={classes.widgetBlockText}>\n            <Box sx={classes.blockCount}>{jobsCount}</Box>\n            <Box sx={classes.blockTitle}>Current published jobs</Box>\n          </Box>\n        </Box>\n      </Box>\n    </Box>\n  );\n}\n","import React from 'react';\nimport useStyles from './useStyles';\nimport { withScoutTheme } from '../ThemeContext/ThemeContext';\n\ninterface IProps {\n  portal: {\n    social_preview_title: string,\n    social_preview_description: string,\n    social_preview_image_url: string,\n  }\n}\n\nfunction CareersPortalSocialPreview({ portal }: IProps) {\n  const classes = useStyles();\n\n  return (\n    <div className={classes.root}>\n      <div className=\"modal fade\" id=\"careers-portal-social-preview\" tabIndex=\"-1\" aria-hidden=\"true\" aria-labelledby=\"careersPortalSocialModalLabel\">\n        <div className=\"modal-dialog modal-xl\">\n          <div className=\"modal-content\">\n            <div className=\"modal-header\">\n              <h2 className=\"mt-0\">Careers Portal Social Preview</h2>\n              <button type=\"button\" className=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">\n                <span aria-hidden=\"true\">&times;</span>\n              </button>\n            </div>\n            <div className=\"modal-body\">\n              <img src={portal.social_preview_image_url} />\n              <h3>{portal.social_preview_title}</h3>\n              <p>{portal.social_preview_description}</p>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n}\n\nexport default withScoutTheme(CareersPortalSocialPreview);\n","import React, { Dispatch } from 'react';\nimport { Box } from '@mui/material';\nimport EngageSearchBar from './EngageSearchBar';\nimport { callPaginatedAPI } from '../../NewUI/Components/Utilities/callAPI';\nimport { EngageAction, EngageState } from '../reducer';\nimport { classes } from '../styles';\nimport { useQuery } from '@tanstack/react-query';\nimport EngageSearchTableRows from './EngageSearchTableRows';\nimport TLPMatchModal from './Modals/TLPMatchModal/TLPMatchModal';\nimport GenericTable from '../../NewUI/Components/GenericTable/GenericTable';\nimport ColumnSettings from '../../NewUI/Components/GenericTable/Dropdowns/ColumnSettings';\nimport SearchFilters from './SearchFilters';\nimport Filters from '../../NewUI/Components/GenericTable/Dropdowns/Filters';\nimport { CandidateAPIReturn } from '../types';\nimport EngageTableActionComponents from './EngageTableActionComponents';\nimport ItemActionsDrawer from '../../NewUI/Components/GenericTable/ItemActionsDrawer';\nimport { actionDrawerModals, engageSearchActionsList, headerStyle } from '../config';\nimport ActionDrawerModals from './Modals/ActionDrawer/ActionDrawerModals';\nimport ExportCsvButton from '../../NewUI/Components/GenericTable/ExportCsvButton';\nimport TotalSelectedIndicator from '../../NewUI/Components/GenericTable/TotalSelectedIndicator';\nimport AddCurrentSearchButton from './Modals/AddCurrentSearch';\nimport { getPreferences } from '../../NewUI/Components/GenericTable/utilities';\nimport { GenericTableAction } from '../../NewUI/Components/GenericTable/genericTableReducer';\n\nconst USER_PREFERENCE_SOURCE = 'engage-search';\n\nconst EngageAISearch = ({\n  engageState,\n  dispatch\n}: {\n  engageState: EngageState;\n  dispatch: Dispatch<EngageAction>;\n}) => {\n  const { isFetched: fetchedPreferences } = useQuery({\n    queryKey: ['engageSearchPreferences'],\n    queryFn: () => getPreferences(USER_PREFERENCE_SOURCE, dispatch as Dispatch<GenericTableAction>),\n    onError: () =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting user preference data`,\n          state: 'error'\n        }\n      }),\n    refetchOnMount: false,\n    refetchOnWindowFocus: false,\n    refetchOnReconnect: false,\n    staleTime: 3.6e6 // 1 hour\n  });\n\n  const { data: candidates, isLoading: isLoadingCandidates } = useQuery({\n    queryKey: [\n      'candidates',\n      engageState.booleanQuery,\n      engageState.searchSettings,\n      engageState.searchFilters\n    ],\n    queryFn: () =>\n      callPaginatedAPI(\n        `/api/v4/searches`,\n        {\n          query: engageState.booleanQuery,\n          ...engageState.searchSettings,\n          ...engageState.searchFilters\n        },\n        'POST'\n      ) as Promise<CandidateAPIReturn>,\n    onError() {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error retrieving candidates, please refresh the page and try again.`,\n          state: 'error'\n        }\n      });\n    },\n    enabled: fetchedPreferences,\n    refetchOnWindowFocus: false\n  });\n\n  return (\n    <>\n      <Box sx={classes.searchAndFiltersRow}>\n        <EngageSearchBar dispatch={dispatch} engageState={engageState} />\n        <TLPMatchModal engageState={engageState} dispatch={dispatch} />\n        <Filters\n          dispatch={dispatch}\n          numberOfFilters={Object.values(engageState.searchFilters)?.length}\n          label=\"engage-search\"\n        >\n          <SearchFilters engageState={engageState} dispatch={dispatch} />\n        </Filters>\n        <ColumnSettings\n          tableState={engageState.searchTable}\n          dispatch={dispatch}\n          label=\"engage-search\"\n          userPreferenceSource={USER_PREFERENCE_SOURCE}\n        />\n        <ExportCsvButton\n          isOpen={engageState.searchTable.modalsOpen.exportCsv}\n          onClick={() =>\n            dispatch({\n              type: 'SET_ACTION_MODAL_OPEN',\n              payload: { name: 'exportCsv', isOpen: true }\n            })\n          }\n        />\n        <AddCurrentSearchButton\n          isOpen={engageState.searchTable.modalsOpen.addSearch}\n          onClick={() =>\n            dispatch({\n              type: 'SET_ACTION_MODAL_OPEN',\n              payload: { name: 'addSearch', isOpen: true }\n            })\n          }\n        />\n      </Box>\n      <ItemActionsDrawer\n        drawerOpen={engageState.searchTable.selectedItemIds.length > 0}\n        dispatch={dispatch}\n        actions={actionDrawerModals}\n        label=\"engage-search\"\n      />\n      <GenericTable\n        items={candidates?.data?.ai_search || []}\n        isLoadingItems={isLoadingCandidates}\n        dispatch={dispatch}\n        tableState={engageState.searchTable}\n        paginationState={engageState.searchSettings}\n        pagination={{\n          totalItems: candidates?.totalItems || 0,\n          totalPages: candidates?.totalPages || 0\n        }}\n        headerStyle={headerStyle}\n        TableRows={EngageSearchTableRows}\n        TableActionList={engageSearchActionsList}\n        label=\"candidates\"\n        userPreferenceSource={USER_PREFERENCE_SOURCE}\n      />\n      <TotalSelectedIndicator\n        tableState={engageState.searchTable}\n        tableFilters={engageState.searchFilters}\n        tableSearch={engageState.booleanQuery || undefined}\n        dispatch={dispatch}\n        totalItems={candidates?.totalItems || 0}\n        items={candidates?.data?.ai_search || []}\n        label=\"candidates\"\n        selectAllUrl=\"/api/v4/searches\"\n      />\n      <EngageTableActionComponents\n        actionsState={engageState.searchTable.actions}\n        dispatch={dispatch}\n      />\n      <ActionDrawerModals engageState={engageState} dispatch={dispatch} />\n    </>\n  );\n};\n\nexport default EngageAISearch;\n","import React, { useState, ChangeEvent, Dispatch } from 'react';\nimport {\n  Box,\n  CircularProgress,\n  FormControl,\n  IconButton,\n  InputAdornment,\n  OutlinedInput\n} from '@mui/material';\nimport SettingsIcon from '@mui/icons-material/Settings';\nimport SearchIcon from '@mui/icons-material/Search';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { classes } from '../SharedComponents/styles';\nimport { EngageAction, EngageState } from '../reducer';\nimport { handleAPIRequest } from '../../NewUI/Components/Utilities/handleAPIRequest';\nimport { ISnackbarInput } from '../../NewUI/Components/CustomUIElements/StyledSnackbar';\n\nconst EngageSearchBar = ({\n  engageState,\n  dispatch\n}: {\n  engageState: EngageState;\n  dispatch: Dispatch<EngageAction>;\n}) => {\n  const [showSearchTooltip, setShowSearchTooltip] = useState<boolean>(false);\n  const [tlpMatchText, setTlpMatchText] = useState<string>('Matching TLP');\n  const [isLoading, setIsLoading] = useState<boolean>(false);\n\n  const handleQuerySearch = (query: string) => {\n    handleAPIRequest({\n      url: `/api/v4/searches/generate_boolean_query`,\n      body: { query },\n      method: 'POST',\n      setLoaderState: setIsLoading,\n      setSnackbarState: (snackbarState: ISnackbarInput) =>\n        dispatch({ type: 'SET_SNACKBAR', payload: snackbarState }),\n      successMessage: { show: false },\n      onSuccess: (response: { boolean_query: string }) => {\n        const booleanQuery = response?.boolean_query;\n        dispatch({ type: 'CONFIRM_STRING_MATCH_SEARCH', payload: booleanQuery });\n      }\n    });\n  };\n\n  const handleQueryChange = (event: ChangeEvent<HTMLInputElement>) => {\n    if (isLoading) return;\n    setShowSearchTooltip(!!event.target.value);\n    dispatch({ type: 'SET_SEARCH_QUERY', payload: event.target.value });\n  };\n\n  const handleSearch = () => {\n    if (isLoading || !engageState.searchQuery) return;\n    setShowSearchTooltip(false);\n    handleQuerySearch(engageState.searchQuery);\n  };\n\n  const searchInputAdornment = () => {\n    if (engageState.searchType === 'string_match' && !isLoading) {\n      return (\n        <InputAdornment\n          sx={classes.searchAdornment}\n          position=\"start\"\n          onClick={() => dispatch({ type: 'CLEAR_SEARCH' })}\n          id=\"clear-tlp-search-button\"\n        >\n          <CloseIcon sx={{ marginBottom: '3.5px' }} />\n        </InputAdornment>\n      );\n    } else {\n      return (\n        <InputAdornment\n          sx={classes.searchAdornment}\n          position=\"start\"\n          onClick={handleSearch}\n          id=\"search-candidates-button\"\n        >\n          {isLoading ? (\n            <CircularProgress size={31} color=\"inherit\" />\n          ) : (\n            <SearchIcon id=\"search-candidates-button\" />\n          )}\n        </InputAdornment>\n      );\n    }\n  };\n\n  return (\n    <Box sx={classes.searchContainer} id=\"search-candidates-box\">\n      <FormControl fullWidth>\n        <OutlinedInput\n          id=\"candidate-search-input\"\n          sx={{ ...classes.searchInput, ...(!isLoading && { cursor: 'pointer' }) }}\n          placeholder={'Search all of your candidates'}\n          value={\n            engageState.searchType === 'tlp_match'\n              ? engageState.tlpMatchModalState.selectedTLP.name\n              : engageState.searchQuery\n          }\n          onChange={handleQueryChange}\n          onKeyDown={(event) => {\n            if (event.key === 'Enter') {\n              handleSearch();\n            }\n          }}\n          disabled={engageState.searchType === 'tlp_match'}\n          startAdornment={\n            engageState.searchType === 'tlp_match' ? (\n              <InputAdornment position=\"start\">\n                <Box\n                  sx={classes.tlpMatch}\n                  onMouseEnter={() => setTlpMatchText('Clear TLP Search')}\n                  onMouseLeave={() => setTlpMatchText('Matching TLP')}\n                  onClick={() => dispatch({ type: 'CLEAR_SEARCH' })}\n                  id=\"clear-tlp-search-button\"\n                >\n                  {tlpMatchText}\n                </Box>\n              </InputAdornment>\n            ) : (\n              searchInputAdornment()\n            )\n          }\n          endAdornment={\n            engageState.searchType !== 'none' && (\n              <InputAdornment position=\"end\">\n                <IconButton\n                  sx={classes.editBooleanIcon}\n                  onClick={() => dispatch({ type: 'EDIT_BOOLEAN_QUERY' })}\n                >\n                  <SettingsIcon />\n                </IconButton>\n              </InputAdornment>\n            )\n          }\n        />\n      </FormControl>\n      {showSearchTooltip && (\n        <Box sx={classes.searchTooltip}>\n          Press enter, or click the search icon to find candidates\n        </Box>\n      )}\n    </Box>\n  );\n};\n\nexport default EngageSearchBar;\n","import React, { Dispatch } from 'react';\nimport { IconButton, Tooltip } from '@mui/material';\nimport NoteAddIcon from '@mui/icons-material/NoteAdd';\nimport AttachFileIcon from '@mui/icons-material/AttachFile';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport { TCandidate } from '../types';\nimport { TableActionItemAction } from '../../NewUI/Components/GenericTable/types';\n\nconst EngageSearchTableActionItems = ({\n  item,\n  dispatch\n}: {\n  item: TCandidate;\n  dispatch: Dispatch<TableActionItemAction<TCandidate>>;\n}) => {\n  return (\n    <>\n      <Tooltip placement=\"top\" title=\"Add note\">\n        <IconButton\n          className=\"add-candidate-note-button\"\n          onClick={(event) => {\n            dispatch({\n              type: 'SELECT_ACTION_ITEM',\n              payload: { item: item, anchorEl: event.currentTarget, name: 'addNote' }\n            });\n          }}\n        >\n          <NoteAddIcon />\n        </IconButton>\n      </Tooltip>\n      {item.attachment_url?.length > 0 && (\n        <Tooltip placement=\"top\" title=\"View attachments\">\n          <IconButton\n            className=\"view-attachments-list\"\n            onClick={(event) => {\n              dispatch({\n                type: 'SELECT_ACTION_ITEM',\n                payload: { item: item, anchorEl: event.currentTarget, name: 'viewAttachments' }\n              });\n            }}\n          >\n            <AttachFileIcon />\n          </IconButton>\n        </Tooltip>\n      )}\n      <Tooltip placement=\"top\" title=\"More options\" arrow>\n        <IconButton\n          onClick={(e) => {\n            dispatch({\n              type: 'SELECT_ACTION_ITEM',\n              payload: { item: item, anchorEl: e.currentTarget, name: 'moreOptions' }\n            });\n          }}\n          className=\"engage-action-dropdown-button\"\n        >\n          <MoreVertIcon />\n        </IconButton>\n      </Tooltip>\n    </>\n  );\n};\n\nexport default EngageSearchTableActionItems;\n","import React from 'react';\nimport { EngageState } from '../reducer';\nimport { TCandidate } from '../types';\nimport { TableCell } from '@mui/material';\nimport { classes } from '../../NewUI/Components/GenericTable/styles';\nimport ExpandableLinkedTags from '../../NewUI/Components/GenericTable/TableCells/ExpandableLinkedTags';\nimport { TagList } from '../../NewUI/Components/CustomUIElements/TagList/TagList';\nimport NotesWithSubjectLine from '../../NewUI/Components/GenericTable/TableCells/NotesWithSubjectLine';\nimport FormattedDate from '../../NewUI/Components/GenericTable/TableCells/FormattedDate';\n\nconst EngageSearchTableRows = ({\n  column,\n  item,\n  tableHovered\n}: {\n  column: EngageState['searchTable']['columns'][number];\n  item: TCandidate;\n  tableHovered: boolean;\n}) => {\n  if (!column.enabled) return null;\n  switch (column.id) {\n    case 'id':\n      return (\n        <TableCell\n          key={item.id + column.id}\n          sx={{\n            ...classes.sticky,\n            ...classes.idTableCell\n          }}\n        >\n          <a\n            href={`/admin/candidates/${item.id}`}\n            className=\"candidate-id-link-engage\"\n            id=\"application-id-link\"\n          >\n            {item.id || '-'}\n          </a>\n        </TableCell>\n      );\n    case 'name':\n      return (\n        <TableCell\n          key={item.id + column.id}\n          sx={{\n            ...classes.sticky,\n            ...classes.itemTitleTableCell,\n            ...(tableHovered && classes.scrollShadowVisible)\n          }}\n        >\n          <a\n            href={`/admin/candidates/${item.id}`}\n            className=\"candidate-link\"\n            id=\"candidate-name-link\"\n          >\n            {item.name || '-'}\n          </a>\n        </TableCell>\n      );\n    case 'suburb':\n      return <TableCell key={item.id + column.id}>{item.suburb || '-'}</TableCell>;\n    case 'country':\n      return <TableCell key={item.id + column.id}>{item.country || '-'}</TableCell>;\n    case 'last_applied_on':\n      return (\n        <TableCell key={item.id + column.id}>\n          {item.last_applied_on ? <FormattedDate date={item.last_applied_on} /> : '-'}\n        </TableCell>\n      );\n    case 'jobs_applied_to':\n      return (\n        <TableCell sx={{ maxWidth: '180px' }}>\n          {item?.jobs_applied_to?.length ? (\n            <ExpandableLinkedTags\n              label=\"applications\"\n              titleKeyType=\"title\"\n              items={item.jobs_applied_to}\n              maxItems={10}\n              maxItemsLink={`/admin/candidates/${item.id}`}\n            />\n          ) : (\n            '-'\n          )}\n        </TableCell>\n      );\n    case 'tags':\n      return <TableCell>{item.tags?.length ? <TagList tags={item.tags} /> : '-'}</TableCell>;\n    case 'notes':\n      return (\n        <TableCell sx={{ maxWidth: '280px' }}>\n          {item.notes?.length ? <NotesWithSubjectLine notes={item.notes} /> : '-'}\n        </TableCell>\n      );\n    default:\n      return <TableCell></TableCell>;\n  }\n};\n\nexport default EngageSearchTableRows;\n","import React, { Dispatch } from 'react';\nimport { EngageState } from '../reducer';\nimport { TableActionItemAction } from '../../NewUI/Components/GenericTable/types';\nimport { TCandidate } from '../types';\nimport AttachmentsList from '../../NewUI/Components/GenericTable/TablePopovers/AttachmentsList';\nimport AddNoteWithSubjectLine from '../../NewUI/Components/GenericTable/TablePopovers/AddNoteWithSubjectLine';\nimport MoreOptionsList from '../../NewUI/Components/GenericTable/TablePopovers/MoreOptionsList';\n\nconst EngageTableActionComponents = ({\n  actionsState,\n  dispatch\n}: {\n  actionsState: EngageState['searchTable']['actions'];\n  dispatch: Dispatch<TableActionItemAction<TCandidate>>;\n}) => {\n  return (\n    <>\n      <AttachmentsList\n        attachments={actionsState?.selectedItem?.attachment_url || []}\n        isOpen={actionsState?.isOpen?.viewAttachments}\n        handleClose={() => dispatch({ type: 'CLOSE_ACTION_ITEM', payload: 'viewAttachments' })}\n        anchorEl={actionsState?.anchorEl}\n      />\n      <AddNoteWithSubjectLine\n        dispatch={dispatch}\n        isOpen={actionsState?.isOpen?.addNote}\n        anchorEl={actionsState?.anchorEl}\n        itemId={actionsState?.selectedItem?.id || 0}\n        url=\"/api/v4/searches/add_note\"\n        queryKey=\"candidates\"\n      />\n    </>\n  );\n};\n\nexport default EngageTableActionComponents;\n","import React, { Dispatch } from 'react';\nimport AddToCandidatePool from './AddToCandidatePool';\nimport { EngageAction, EngageState } from '../../../reducer';\nimport DownloadModal from '../../../../NewUI/Components/Modals/DownloadModal';\nimport ExternalEmail from '../../../SharedComponents/Modals/ExternalEmail';\nimport callAPI from '../../../../NewUI/Components/Utilities/callAPI';\n\nconst ActionDrawerModals = ({\n  dispatch,\n  engageState\n}: {\n  dispatch: Dispatch<EngageAction>;\n  engageState: EngageState;\n}) => {\n  const downloadAPICall = async (type: string) => {\n    if (type === 'attachments') {\n      const { zip_file } = await callAPI(\n        '/api/v4/searches/zip_attachments',\n        { candidate_ids: engageState.searchTable.selectedItemIds },\n        'POST'\n      );\n      return zip_file.id;\n    } else if (type === 'pdf') {\n      const response = await callAPI(\n        '/api/v4/searches/export_pdf',\n        { candidate_ids: engageState.searchTable.selectedItemIds },\n        'POST'\n      );\n      return response.success || response.errors || 'Something went wrong';\n    } else if (type === 'attachmentsInPdf') {\n      const response = await callAPI(\n        '/api/v4/searches/export_pdf',\n        { candidate_ids: engageState.searchTable.selectedItemIds, attachments_in_pdf: true },\n        'POST'\n      );\n      return response.success || response.errors || 'Something went wrong';\n    } else if (type === 'csv') {\n      const enabledColumns: Record<string, boolean> = {};\n      engageState.searchTable.columns.forEach((column) => {\n        enabledColumns[column.id as keyof typeof enabledColumns] = column.enabled;\n      });\n      const response = await callAPI(\n        '/api/v4/searches/export_csv',\n        {\n          searches: {\n            candidate_ids: engageState.searchTable.selectedItemIds,\n            activeColumns: enabledColumns\n          }\n        },\n        'POST'\n      );\n      return response.message || response.errors || 'Something went wrong';\n    }\n  };\n\n  return (\n    <>\n      <AddToCandidatePool\n        engageState={engageState}\n        isOpen={\n          engageState.searchTable.modalsOpen.addToPool ||\n          engageState.searchTable.modalsOpen.addSearch\n        }\n        handleClose={() => {\n          engageState.searchTable.modalsOpen.addToPool\n            ? dispatch({\n                type: 'SET_ACTION_MODAL_OPEN',\n                payload: { name: 'addToPool', isOpen: false }\n              })\n            : dispatch({\n                type: 'SET_ACTION_MODAL_OPEN',\n                payload: { name: 'addSearch', isOpen: false }\n              });\n        }}\n        selectedCandidates={engageState.searchTable.selectedItemIds}\n        isSearch={engageState.searchTable.modalsOpen.addSearch}\n        selectAllBody={{\n          override_limit: true,\n          limit: 9999,\n          ...(engageState.searchQuery && { query: engageState.booleanQuery }),\n          ...engageState.searchFilters\n        }}\n        setSnackbarState={({ message, state }) => {\n          dispatch({\n            type: 'SET_SNACKBAR',\n            payload: {\n              message,\n              state\n            }\n          });\n        }}\n      />\n      <ExternalEmail\n        isOpen={engageState.searchTable.modalsOpen.externalEmail}\n        dispatch={dispatch}\n        selectedCandidateIds={engageState.searchTable.selectedItemIds}\n        apiUrl=\"/api/v4/searches/bulk_external_email\"\n      />\n      <DownloadModal\n        type=\"attachments\"\n        isOpen={engageState.searchTable.modalsOpen.downloadAttachments}\n        handleClose={() =>\n          dispatch({\n            type: 'SET_ACTION_MODAL_OPEN',\n            payload: { name: 'downloadAttachments', isOpen: false }\n          })\n        }\n        downloadAPICall={downloadAPICall}\n      />\n      <DownloadModal\n        type=\"attachmentsInPdf\"\n        isOpen={engageState.searchTable.modalsOpen.exportAttachments}\n        handleClose={() =>\n          dispatch({\n            type: 'SET_ACTION_MODAL_OPEN',\n            payload: { name: 'exportAttachments', isOpen: false }\n          })\n        }\n        downloadAPICall={downloadAPICall}\n        emailFallback={true}\n      />\n      <DownloadModal\n        type=\"pdf\"\n        isOpen={engageState.searchTable.modalsOpen.exportAsPdf}\n        handleClose={() =>\n          dispatch({\n            type: 'SET_ACTION_MODAL_OPEN',\n            payload: { name: 'exportAsPdf', isOpen: false }\n          })\n        }\n        downloadAPICall={downloadAPICall}\n        emailFallback={true}\n      />\n      <DownloadModal\n        type=\"csv\"\n        isOpen={engageState.searchTable.modalsOpen.exportCsv}\n        handleClose={() =>\n          dispatch({\n            type: 'SET_ACTION_MODAL_OPEN',\n            payload: { name: 'exportCsv', isOpen: false }\n          })\n        }\n        downloadAPICall={downloadAPICall}\n        emailFallback={true}\n      />\n    </>\n  );\n};\n\nexport default ActionDrawerModals;\n","import React, { useState } from 'react';\nimport StyledModal from '../../../../NewUI/Components/GenericModal/StyledModal';\nimport {\n  Box,\n  LinearProgress,\n  ToggleButton,\n  ToggleButtonGroup,\n  FormHelperText\n} from '@mui/material';\nimport MultiSelectWithCreate from '../../../../NewUI/Components/CustomUIElements/MultiSelectWithCreate';\nimport InfoBox from '../../../../NewUI/Components/CustomUIElements/InfoBox';\nimport { sharedClasses } from '../../../../NewUI/Components/CustomUIElements/sharedClasses';\nimport ModalFooterButtons from '../../../../NewUI/Components/GenericModal/ModalFooterButtons';\nimport callAPI from '../../../../NewUI/Components/Utilities/callAPI';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { handleAPIRequest } from '../../../../NewUI/Components/Utilities/handleAPIRequest';\nimport { ISnackbarInput } from '../../../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport { EngageState } from '../../../reducer';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\n\nconst AddToCandidatePool = ({\n  engageState,\n  isOpen,\n  handleClose,\n  selectedCandidates,\n  isSearch,\n  selectAllBody,\n  setSnackbarState\n}: {\n  engageState: EngageState;\n  isOpen: boolean;\n  handleClose: () => void;\n  selectedCandidates: number[];\n  isSearch: boolean;\n  selectAllBody: any;\n  setSnackbarState: (snackbarState: ISnackbarInput) => void;\n}) => {\n  const [filterTab, setFilterTab] = useState('addCurrentResults');\n  const [selectedPools, setSelectedPools] = useState<\n    {\n      id: number;\n      title: string;\n    }[]\n  >([]);\n  const [addingCandidates, setAddingCandidates] = useState(false);\n  const [poolNameLengthError, setPoolNameLengthError] = useState(false);\n\n  const queryClient = useQueryClient();\n\n  const { data: allCurrentCandidates, isLoading: isLoadingCandidates } = useQuery({\n    queryKey: ['allCurrentCandidates'],\n    queryFn: () => callAPI(`/api/v4/searches`, selectAllBody, 'POST'),\n    enabled: isOpen && isSearch\n  });\n\n  const { data: candidate_pools, isLoading: isLoadingPools } = useQuery({\n    queryKey: ['candidatePoolsList'],\n    queryFn: () => callAPI(`/api/v4/candidate_pools/list_pools`, null, 'GET'),\n    enabled: isOpen\n  });\n\n  const { mutate: addCandidatePool, isLoading: creatingPool } = useMutation({\n    mutationFn: (data) =>\n      callAPI(\n        `/api/v4/candidate_pools`,\n        {\n          title: data,\n          params: {\n            query: engageState.booleanQuery,\n            ...engageState.searchSettings,\n            ...engageState.searchFilters\n          }\n        },\n        'POST'\n      ),\n    onSuccess: (data) => {\n      queryClient.setQueryData(['candidatePoolsList'], (oldData: any) => {\n        return {\n          candidate_pools: [...oldData.candidate_pools, data]\n        };\n      });\n      setSelectedPools([...selectedPools, data]);\n    }\n  });\n\n  const handleMultiSelectValueChange = (value: any) => {\n    setPoolNameLengthError(false);\n    if (typeof value.at(-1) === 'string') {\n      if (value.at(-1).length >= 255) return setPoolNameLengthError(true);\n      addCandidatePool(value.at(-1));\n    } else {\n      setSelectedPools(value);\n    }\n  };\n\n  const addCandidatesToPools = () => {\n    const body = {\n      candidate_ids: isSearch\n        ? allCurrentCandidates?.ai_search?.map((candidate: { id: number }) => candidate.id)\n        : selectedCandidates,\n      candidate_pool_ids: selectedPools.map((pool) => pool.id)\n    };\n    handleAPIRequest({\n      url: '/api/v4/candidate_pools/update_pools',\n      method: 'POST',\n      body,\n      setLoaderState: setAddingCandidates,\n      setSnackbarState,\n      onSuccess: () => {\n        handleClose();\n        setSelectedPools([]);\n        queryClient.invalidateQueries(['candidatePools', 'candidates']);\n      }\n    });\n  };\n\n  return (\n    <StyledModal\n      isOpen={isOpen}\n      handleClose={handleClose}\n      styleOverrides={{\n        maxWidth: '830px',\n        maxHeight: '540px'\n      }}\n      label=\"add-to-candidate-pool\"\n      modalTitle={isSearch ? 'Add search to candidate pool' : 'Add candidates to pool'}\n      subHeaderStyling={false}\n    >\n      <Box sx={{ ...sharedClasses.mainModalContent, height: '100%' }}>\n        <Box\n          sx={{\n            fontFamily: 'Source Sans Pro',\n            fontSize: '16px',\n            color: '#939393',\n            width: '100%',\n            paddingInline: '2px'\n          }}\n        >\n          Select or create candidate pools\n          <MultiSelectWithCreate\n            dropdownOptions={candidate_pools?.candidate_pools || []}\n            onChange={(newValues) => handleMultiSelectValueChange(newValues)}\n            values={selectedPools}\n            loadingOptions={isLoadingPools}\n            creatingOption={creatingPool}\n          />\n          <FormHelperText\n            sx={{\n              marginLeft: '4px',\n              color: poolNameLengthError ? theme.palette.error.main : theme.palette.common.grey\n            }}\n          >\n            Candidate name length must be a maximum of 255 characters\n          </FormHelperText>\n        </Box>\n        <Box sx={{ paddingTop: '46px' }}>\n          {isSearch && isLoadingCandidates ? (\n            <>\n              <Box\n                sx={{\n                  fontFamily: 'Source Sans Pro',\n                  fontSize: '17px',\n                  color: '#939393',\n                  width: '100%'\n                }}\n              >\n                Loading all candidates in the current search, please wait...\n              </Box>\n              <Box sx={{ width: '100%' }}>\n                <LinearProgress color=\"inherit\" />\n              </Box>\n            </>\n          ) : (\n            <>\n              <ToggleButtonGroup\n                value={filterTab}\n                exclusive\n                onChange={(e, value) => {\n                  if (value) setFilterTab(value);\n                }}\n                aria-label=\"subscribe or add current results\"\n              >\n                {/* {selectedCandidates && <ToggleButton value=\"subscribe\" sx={classes.toggleButton}>\n          Subscribe to search\n        </ToggleButton>} */}\n                <ToggleButton value=\"addCurrentResults\" sx={sharedClasses.toggleButton}>\n                  Add current results\n                </ToggleButton>\n              </ToggleButtonGroup>\n              <InfoBox\n                message={\n                  <Box sx={{ marginLeft: 1 }}>\n                    {filterTab === 'subscribe' ? (\n                      <>\n                        Candidate pools subscribed to a search will be automatically updated with\n                        new applicants that fall under that search\n                        <br />\n                        Any ‘newly added’ Nurture Journey actions will be executed for the existing\n                        candidates in this search, and when new applicants are automatically added\n                        to your pools\n                      </>\n                    ) : (\n                      <>\n                        All\n                        {isSearch ? ' candidates in the current search ' : ' selected candidates '}\n                        will be added to the selected candidate pools\n                        <br />\n                        Any ‘newly added’ Nurture Journey actions will be executed for the newly\n                        added candidates\n                      </>\n                    )}\n                  </Box>\n                }\n              />\n            </>\n          )}\n        </Box>\n      </Box>\n      <ModalFooterButtons\n        primaryButtonText={isSearch ? 'Add search' : 'Add candidates'}\n        primaryButtonCallback={addCandidatesToPools}\n        primaryButtonDisabled={selectedPools.length === 0 || (isSearch && isLoadingCandidates)}\n        secondaryButtonText=\"Cancel\"\n        secondaryButtonCallback={handleClose}\n        isLoading={addingCandidates}\n        primaryButtonID=\"add-candidates-button\"\n        secondaryButtonID=\"cancel-add-too-pool\"\n      />\n    </StyledModal>\n  );\n};\n\nexport default AddToCandidatePool;\n","import { IconButton, Tooltip } from '@mui/material';\nimport React from 'react';\nimport PlaylistAddIcon from '@mui/icons-material/PlaylistAdd';\nimport { classes } from '../../../NewUI/Components/GenericTable/Dropdowns/styles';\n\nconst AddCurrentSearchButton = ({ isOpen, onClick }: { isOpen: boolean; onClick: () => void }) => {\n  return (\n    <Tooltip title=\"Add current search\" placement=\"top\" arrow>\n      <IconButton\n        id={`add-current-search-button`}\n        sx={isOpen ? { ...classes.iconButton, ...classes.iconButtonOpen } : classes.iconButton}\n        onClick={onClick}\n      >\n        <PlaylistAddIcon />\n      </IconButton>\n    </Tooltip>\n  );\n};\n\nexport default AddCurrentSearchButton;\n","import React, { useState, Dispatch } from 'react';\nimport { Box } from '@mui/material';\nimport BooleanEditor from '../../../SharedComponents/BooleanEditor';\nimport DynamicFooter from '../../../../AIStudio/SharedComponents/Footers/DynamicFooter';\nimport { EngageAction } from '../../../reducer';\nimport {\n  booleanQueryToEditableArray,\n  editableBooleanArrayToBooleanQuery,\n  IBooleanQueryObject\n} from '../../../SharedComponents/booleanQueryParser';\nimport { classes } from '../../../styles';\n\nconst EditBooleanStep = ({\n  booleanQuery,\n  isEditing,\n  dispatch\n}: {\n  booleanQuery: string;\n  isEditing: boolean;\n  dispatch: Dispatch<EngageAction>;\n}) => {\n  const [editableBooleanArray, setEditableBooleanArray] = useState<IBooleanQueryObject[]>(\n    booleanQueryToEditableArray(booleanQuery)\n  );\n\n  const handleConfirmBooleanQuery = () => {\n    const editedBooleanQuery = editableBooleanArrayToBooleanQuery(editableBooleanArray);\n    dispatch({ type: 'CONFIRM_EDIT_BOOLEAN_QUERY', payload: editedBooleanQuery });\n  };\n\n  return (\n    <>\n      <Box sx={classes.modalHeader}>Refine your search</Box>\n      <Box sx={{ ...classes.modalMainContentContainer, rowGap: '26px', marginBottom: '20px' }}>\n        <Box sx={classes.editBooleanStepHeader}>I'm looking for...</Box>\n        <BooleanEditor\n          editableBooleanArray={editableBooleanArray}\n          setEditableBooleanArray={setEditableBooleanArray}\n        />\n      </Box>\n      <DynamicFooter\n        primaryButtonText=\"Search\"\n        primaryButtonID=\"search-button\"\n        secondaryButtonID=\"back-button\"\n        handlePrimaryButtonClick={handleConfirmBooleanQuery}\n        secondaryButtonText={isEditing ? 'Cancel' : 'Back'}\n        handleSecondaryButtonClick={() => {\n          isEditing\n            ? dispatch({ type: 'CANCEL_EDIT_BOOLEAN_QUERY' })\n            : dispatch({ type: 'SET_TLP_MATCH_MODAL_STEP', payload: 'select' });\n        }}\n        felixMessage={\n          <>\n            Refine your <span>search preferences</span> and I'll find candidates that best match\n            them!\n          </>\n        }\n        felixMessageMaxWidth=\"360px\"\n      />\n    </>\n  );\n};\n\nexport default EditBooleanStep;\n","import React, { Dispatch, useState } from 'react';\nimport { Box } from '@mui/material';\nimport { EngageAction, EngageState } from '../../../reducer';\nimport { classes } from '../../../styles';\nimport { Virtualize } from '../../../../NewUI/Components/CustomUIElements/VirtualizedAutocomplete';\nimport { handleAPIRequest } from '../../../../NewUI/Components/Utilities/handleAPIRequest';\nimport { ISnackbarInput } from '../../../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport DynamicFooter from '../../../../AIStudio/SharedComponents/Footers/DynamicFooter';\nimport { IJob } from '../../../../NewUI/Job/types';\nimport DisplayHTMLViewOnly from '../../../../AIStudio/SharedComponents/DisplayHTMLViewOnly';\nimport SelectJobSVG from '../../../Graphics/SelectJobSVG';\n\nconst SelectTLPStep = ({\n  modalState,\n  dispatch,\n  handleGetBooleanQuery\n}: {\n  modalState: EngageState['tlpMatchModalState'];\n  dispatch: Dispatch<EngageAction>;\n  handleGetBooleanQuery: () => void;\n}) => {\n  const [selectedJob, setSelectedJob] = useState<string>('');\n  const [isLoadingTLP, setIsLoadingTLP] = useState<boolean>(false);\n\n  const handleSelectJob = (value: string) => {\n    if (!value) {\n      setSelectedJob('');\n      dispatch({ type: 'SET_SELECTED_TLP', payload: { id: -1, name: '', html: '' } });\n      return;\n    }\n    const reference = value.split(' -')[0];\n    const i = modalState.jobsList.data.findIndex((option) => option?.reference === reference);\n    setSelectedJob(value);\n    const jobId = modalState.jobsList.data[i]?.id;\n    getSelectedJobTLP(Number(jobId));\n  };\n\n  const getSelectedJobTLP = (id: number) => {\n    handleAPIRequest({\n      url: `/api/v4/jobs/${id}`,\n      method: 'GET',\n      setSnackbarState: (snackbarState: ISnackbarInput) =>\n        dispatch({ type: 'SET_SNACKBAR', payload: snackbarState }),\n      successMessage: { show: false },\n      setLoaderState: setIsLoadingTLP,\n      onSuccess: (response: IJob) => {\n        const [id, name, html] = [response?.id, response?.title, response?.description];\n        dispatch({\n          type: 'SET_SELECTED_TLP',\n          payload: { id, name, html }\n        });\n      }\n    });\n  };\n\n  const options = modalState.jobsList.data.map((job) => `${job.reference} - ${job.title}`);\n\n  return (\n    <>\n      <Box sx={classes.modalHeader}>Search using a Talent Landing Page</Box>\n      <Box sx={classes.modalMainContentContainer}>\n        <Box sx={classes.modalRow}>\n          <Box sx={classes.modalFieldSubHeader}>Select a job</Box>\n          <Virtualize\n            passOptions={options}\n            value={selectedJob}\n            setValue={(value: string) => handleSelectJob(value)}\n            passedStyles={classes.autocomplete}\n            loading={modalState.jobsList.isLoading}\n            loadingText=\"Loading jobs with Talent Landing Pages...\"\n            freeSolo={false}\n          />\n        </Box>\n        {!selectedJob ? (\n          <Box sx={classes.selectJobPlaceholder}>\n            <SelectJobSVG />\n            <span>Select a job to see its Talent Landing Page</span>\n          </Box>\n        ) : (\n          <DisplayHTMLViewOnly\n            content={modalState.selectedTLP.html}\n            loadingHTML={isLoadingTLP}\n            maxHeight=\"420px\"\n          />\n        )}\n      </Box>\n      <DynamicFooter\n        primaryButtonText=\"Confirm\"\n        primaryButtonID=\"confirm-button\"\n        secondaryButtonID=\"close-button\"\n        disablePrimaryButton={modalState.selectedTLP.html === ''}\n        handlePrimaryButtonClick={handleGetBooleanQuery}\n        secondaryButtonText=\"Close\"\n        handleSecondaryButtonClick={() => dispatch({ type: 'CLOSE_TLP_MATCH_MODAL' })}\n        felixMessage={\n          <>\n            Select a job and I'll create a search to find candidates based on its{' '}\n            <span>Talent Landing Page</span>\n          </>\n        }\n        felixMessageMaxWidth=\"360px\"\n      />\n    </>\n  );\n};\n\nexport default SelectTLPStep;\n","import { Box, Button, Modal } from '@mui/material';\nimport React, { Dispatch } from 'react';\nimport { classes } from '../../../styles';\nimport { EngageAction, EngageState } from '../../../reducer';\nimport SelectTLPStep from './SelectTLPStep';\nimport EditBooleanStep from './EditBooleanStep';\nimport { handleAPIRequest } from '../../../../NewUI/Components/Utilities/handleAPIRequest';\nimport { ISnackbarInput } from '../../../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport LoadingResponse from '../../../../AIStudio/SharedComponents/Steps/LoadingResponse';\nimport StyledModal from '../../../../NewUI/Components/GenericModal/StyledModal';\n\nconst TLPMatchModal = ({\n  engageState,\n  dispatch\n}: {\n  engageState: EngageState;\n  dispatch: Dispatch<EngageAction>;\n}) => {\n  const handleOpenModal = () => {\n    dispatch({ type: 'OPEN_TLP_MATCH_MODAL' });\n    dispatch({ type: 'SET_JOBS_LIST_LOADING' });\n    handleAPIRequest({\n      url: `/api/v4/jobs/jobs_for_tlp_match`,\n      method: 'GET',\n      setSnackbarState: (snackbarState: ISnackbarInput) =>\n        dispatch({ type: 'SET_SNACKBAR', payload: snackbarState }),\n      successMessage: { show: false },\n      onSuccess: (response: { jobs: Array<{ id: number; reference: string; title: string }> }) => {\n        const jobsList = response.jobs;\n        dispatch({ type: 'SET_JOBS_LIST', payload: jobsList });\n      }\n    });\n  };\n\n  const handleCloseModal = () => {\n    dispatch({ type: 'CLOSE_TLP_MATCH_MODAL' });\n  };\n\n  const handleGetBooleanQuery = () => {\n    dispatch({ type: 'SET_TLP_MATCH_MODAL_STEP', payload: 'loading' });\n    handleAPIRequest({\n      url: `/api/v4/searches/generate_boolean_query`,\n      method: 'POST',\n      body: {\n        query: engageState.tlpMatchModalState.selectedTLP.name,\n        tlp: engageState.tlpMatchModalState.selectedTLP.html\n      },\n      setSnackbarState: (snackbarState: ISnackbarInput) =>\n        dispatch({ type: 'SET_SNACKBAR', payload: snackbarState }),\n      successMessage: { show: false },\n      onSuccess: (response: { boolean_query: string }) => {\n        const booleanQuery = response?.boolean_query;\n        dispatch({ type: 'SET_EDITABLE_BOOLEAN_QUERY', payload: booleanQuery });\n        dispatch({ type: 'SET_TLP_MATCH_MODAL_STEP', payload: 'edit' });\n      }\n    });\n  };\n\n  const renderStep = () => {\n    switch (engageState.tlpMatchModalState.step) {\n      case 'select':\n        return (\n          <SelectTLPStep\n            modalState={engageState.tlpMatchModalState}\n            dispatch={dispatch}\n            handleGetBooleanQuery={handleGetBooleanQuery}\n          />\n        );\n      case 'loading':\n        return (\n          <LoadingResponse\n            generationType=\"custom\"\n            customMessages={[\n              'Sit tight, boolean brilliance is brewing',\n              'Summing up superb search strings',\n              'Hunting for the best buzzwords... Just a little longer!'\n            ]}\n          />\n        );\n      case 'edit':\n        return (\n          <EditBooleanStep\n            booleanQuery={engageState.tlpMatchModalState.editableBooleanQuery}\n            isEditing={engageState.tlpMatchModalState.isEditing}\n            dispatch={dispatch}\n          />\n        );\n      default:\n        return <Box>Something went wrong</Box>;\n    }\n  };\n\n  return (\n    <>\n      <Button sx={classes.tlpMatchButton} onClick={handleOpenModal} id=\"match-tlp-button\">\n        Match TLP\n      </Button>\n      <StyledModal\n        isOpen={engageState.tlpMatchModalState.open}\n        handleClose={handleCloseModal}\n        label=\"talent-landing-page-match\"\n      >\n        {renderStep()}\n      </StyledModal>\n    </>\n  );\n};\n\nexport default TLPMatchModal;\n","import { Box, ToggleButton, ToggleButtonGroup } from '@mui/material';\nimport React, { Dispatch, useState } from 'react';\nimport MultiSelectFilter from '../../NewUI/Components/GenericTable/Filters/MultiSelectFilter';\nimport { classes } from '../styles';\nimport RadiusSearchFilter from '../../NewUI/Components/GenericTable/Filters/RadiusSearchFilter';\nimport { EngageAction, EngageState } from '../reducer';\nimport { ISnackbarInput } from '../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport { ICountries, IStates } from '../../NewUI/Components/sharedTypes';\nimport DateRangeFilter from '../../NewUI/Components/GenericTable/Filters/DateRangeFilter';\nimport { useQuery } from '@tanstack/react-query';\nimport callAPI from '../../NewUI/Components/Utilities/callAPI';\nimport { parseCountryData } from '../../NewUI/Components/Utilities/countryParser';\n\nexport interface ISearchFilters {\n  entity_ids: Array<number>;\n  postal_codes: Array<string>;\n  include_status: Array<string>;\n  exclude_status: Array<string>;\n  tag: Array<string>;\n  date1: string;\n  date2: string;\n  country: Array<string>;\n  state: Array<string>;\n  employment_type: Array<string>;\n}\n\nexport const initialSearchFilters = {\n  entity_ids: [],\n  postal_codes: [],\n  include_status: [],\n  exclude_status: [],\n  tag: [],\n  date1: null,\n  date2: null,\n  country: [],\n  state: [],\n  employment_type: []\n};\n\nexport interface ITempFilters {\n  entity_ids: FilterType[];\n  postal_codes: Array<string>;\n  include_status: Array<string>;\n  exclude_status: Array<string>;\n  tag: Array<string>;\n  date1: Date | null;\n  date2: Date | null;\n  country: ICountries[];\n  state: IStates[];\n  employment_type: FilterType[];\n}\n\nexport type FilterType = {\n  name: string;\n  id?: number;\n};\n\nconst SearchFilters = ({\n  engageState,\n  dispatch\n}: {\n  engageState: EngageState;\n  dispatch: Dispatch<EngageAction>;\n}) => {\n  const [filterTab, setFilterTab] = useState<'radius' | 'manual'>('radius');\n  const handleFilterChange = (name: string, value: FilterType[]) => {\n    dispatch({ type: 'SET_PAGE', payload: 1 });\n    dispatch({ type: 'SET_TEMP_FILTERS', payload: { [name]: value } });\n  };\n  const { data: countriesData } = useQuery({\n    queryKey: ['countries'],\n    queryFn: () =>\n      callAPI('/api/system/v1/countries_states.json').then((response: ICountries[]) =>\n        parseCountryData(response)\n      )\n  });\n\n  const { data: entities } = useQuery({\n    queryKey: ['entities'],\n    queryFn: () => callAPI('/api/v4/searches/entities').then((response) => response.entities)\n  });\n\n  const { data: statuses } = useQuery({\n    queryKey: ['statuses'],\n    queryFn: () =>\n      callAPI('/api/v4/searches/statuses_and_tags').then((response) => response.statuses)\n  });\n\n  return (\n    <Box sx={classes.filtersContainer}>\n      <ToggleButtonGroup\n        value={filterTab}\n        exclusive\n        onChange={(e, value) => setFilterTab(value)}\n        aria-label=\"enabled or disabled questions\"\n      >\n        <ToggleButton id=\"radius-tab-filter-tab\" value=\"radius\" sx={classes.toggleButton}>\n          Radius\n        </ToggleButton>\n        <ToggleButton\n          id=\"location-tab-filter-tab\"\n          value=\"disabledQuestions\"\n          sx={classes.toggleButton}\n        >\n          Location\n        </ToggleButton>\n      </ToggleButtonGroup>\n      {filterTab === 'radius' ? (\n        <RadiusSearchFilter\n          setPostcodes={(postalCodes: string[]) =>\n            dispatch({ type: 'SET_TEMP_FILTERS', payload: { postal_codes: postalCodes } })\n          }\n          setSnackbarState={(snackbarState: ISnackbarInput) =>\n            dispatch({ type: 'SET_SNACKBAR', payload: snackbarState })\n          }\n        />\n      ) : (\n        <>\n          <MultiSelectFilter\n            handleFilterChange={handleFilterChange}\n            selectOptions={countriesData || []}\n            name=\"country\"\n            label=\"Countries\"\n            value={engageState.tempSearchFilters.country}\n            displayLabel={true}\n          />\n          <MultiSelectFilter\n            handleFilterChange={handleFilterChange}\n            selectOptions={engageState.tempSearchFilters.country\n              .map((country) => country.states)\n              .flat()}\n            name=\"state\"\n            label=\"States/Provinces\"\n            value={engageState.tempSearchFilters.state}\n            disabled={engageState.tempSearchFilters.country.length === 0}\n            displayLabel={true}\n          />\n        </>\n      )}\n      <MultiSelectFilter\n        handleFilterChange={handleFilterChange}\n        selectOptions={[]}\n        name=\"postal_codes\"\n        label=\"Post/ZIP Codes\"\n        freeInput={true}\n        value={engageState.tempSearchFilters.postal_codes}\n      />\n      <MultiSelectFilter\n        handleFilterChange={handleFilterChange}\n        selectOptions={entities || []}\n        name=\"entity_ids\"\n        label=\"Entity\"\n        value={engageState.tempSearchFilters.entity_ids}\n      />\n      <MultiSelectFilter\n        handleFilterChange={handleFilterChange}\n        selectOptions={[]}\n        name=\"tag\"\n        label=\"Tags\"\n        freeInput={true}\n        value={engageState.tempSearchFilters.tag}\n      />\n      <MultiSelectFilter\n        handleFilterChange={handleFilterChange}\n        selectOptions={statuses || []}\n        name=\"include_status\"\n        label=\"Application Status\"\n        subLabel=\"Include\"\n        value={engageState.tempSearchFilters.include_status}\n      />\n      <MultiSelectFilter\n        handleFilterChange={handleFilterChange}\n        selectOptions={statuses || []}\n        name=\"exclude_status\"\n        label=\"\"\n        subLabel=\"Exclude\"\n        value={engageState.tempSearchFilters.exclude_status}\n      />\n      <DateRangeFilter\n        dispatch={dispatch}\n        dateRange={{\n          from: engageState.tempSearchFilters.date1,\n          to: engageState.tempSearchFilters.date2\n        }}\n        dateRangeTemp={engageState.dateFieldRange}\n        label=\"engage-search\"\n      />\n    </Box>\n  );\n};\n\nexport default SearchFilters;\n","import React from 'react';\nimport { Box, Grid } from '@mui/material';\nimport { TEmail, TDetailedEmail } from '../../types';\nimport { classes } from '../../styles';\nimport InsertDriveFileIcon from '@mui/icons-material/InsertDriveFile';\nimport InsertInvitationIcon from '@mui/icons-material/InsertInvitation';\nimport FormattedDate from '../../../NewUI/Components/GenericTable/TableCells/FormattedDate';\nimport StatusStatistics from './StatusStatistics';\nimport OpenEmailStatistics from './OpenEmailStatistics';\n\nconst Analytics = ({\n  selectedEmail,\n  emailAnalytics,\n  isLoading\n}: {\n  emailAnalytics: TDetailedEmail;\n  selectedEmail: TEmail;\n  isLoading: boolean;\n}) => {\n  return (\n    <Box>\n      <Grid sx={{ display: 'flex', marginLeft: '0', width: '100%' }} container spacing={2}>\n        <Grid xs={6} sx={{ paddingRight: '25px' }}>\n          <Box sx={{ ...classes.rowWidget, height: '6.5rem' }}>\n            <Box sx={classes.widgetBlockIcon}>\n              <InsertDriveFileIcon />\n            </Box>\n            <Box sx={{ marginLeft: '1.75rem' }}>\n              <Box sx={classes.blockCount}>{selectedEmail.item?.applications}</Box>\n              <Box\n                sx={{\n                  fontSize: '16px',\n                  fontWeight: '600',\n                  color: '#333333'\n                }}\n              >\n                Applications\n              </Box>\n            </Box>\n          </Box>\n          <Box sx={{ ...classes.rowWidget, marginTop: '50px', height: '6.5rem' }}>\n            <Box sx={classes.widgetBlockIcon}>\n              <InsertInvitationIcon />\n            </Box>\n            <Box sx={{ marginLeft: '15%', width: '100%' }}>\n              <Grid sx={{ display: 'inline-flex' }} container spacing={2}>\n                <Grid xs={6}>\n                  <Box sx={classes.widgetTextSubTitle}>Created At</Box>\n                  <Box>\n                    {selectedEmail.item?.created_at ? (\n                      <FormattedDate date={selectedEmail.item.created_at} />\n                    ) : (\n                      '-'\n                    )}\n                  </Box>\n                </Grid>\n                <Grid xs={6}>\n                  <Box sx={classes.widgetTextSubTitle}>Scheduled At</Box>\n                  <Box>{selectedEmail.item.delayed_to}</Box>\n                </Grid>\n              </Grid>\n            </Box>\n          </Box>\n        </Grid>\n        <Grid xs={6} sx={{ paddingLeft: '25px' }}>\n          <Box sx={{ ...classes.rowWidget, height: '100%' }}>\n            <Box sx={{ width: '100%' }}>\n              <Grid sx={{ display: 'inline-flex', marginBottom: '3rem' }} container spacing={2}>\n                <Grid xs={6} sx={classes.widgetContentGridWrapper}>\n                  <Box sx={classes.widgetTextSubTitle}>User</Box>\n                  <Box>{selectedEmail.item.user?.name ? selectedEmail.item.user?.name : '-'}</Box>\n                </Grid>\n                <Grid xs={6} sx={classes.widgetContentGridWrapper}>\n                  <Box sx={classes.widgetTextSubTitle}>Sent from</Box>\n                  <Box sx={{ overflowWrap: 'break-word', paddingRight: '15px' }}>\n                    {emailAnalytics?.from ? emailAnalytics?.from : '-'}\n                  </Box>\n                </Grid>\n              </Grid>\n              <Grid sx={{ display: 'inline-flex' }} container spacing={2}>\n                <Grid xs={6} sx={classes.widgetContentGridWrapper}>\n                  <Box sx={classes.widgetTextSubTitle}>Recently Added Candidates</Box>\n                  <Box>{selectedEmail.item.only_new ? 'Yes' : 'No'}</Box>\n                </Grid>\n                <Grid xs={6} sx={classes.widgetContentGridWrapper}>\n                  <Box sx={classes.widgetTextSubTitle}>Include Trashed Applications</Box>\n                  <Box>{selectedEmail.item.include_deleted ? 'Yes' : 'No'}</Box>\n                </Grid>\n              </Grid>\n            </Box>\n          </Box>\n        </Grid>\n        <Grid xs={12}>\n          <StatusStatistics isLoading={isLoading} emailAnalytics={emailAnalytics} />\n        </Grid>\n        <Grid xs={12}>\n          <OpenEmailStatistics isLoading={isLoading} emailAnalytics={emailAnalytics} />\n        </Grid>\n      </Grid>\n    </Box>\n  );\n};\n\nexport default Analytics;\n","import React from 'react';\nimport { Box } from '@mui/material';\nimport { TDetailedEmail } from '../../types';\nimport { Pie } from 'react-chartjs-2';\nimport { Chart as ChartJS, ArcElement, Tooltip, Legend } from 'chart.js';\nimport { classes } from '../../styles';\nimport ReactLoading from 'react-loading';\nimport { theme } from '../../../ThemeContext/ThemeObject';\n\nconst StatusStatistics = ({\n  isLoading,\n  emailAnalytics\n}: {\n  isLoading: boolean;\n  emailAnalytics: TDetailedEmail;\n}) => {\n  ChartJS.register(ArcElement, Tooltip, Legend);\n\n  const data = {\n    labels: ['Red', 'Blue', 'Yellow'],\n    datasets: [\n      {\n        label: 'My First Dataset',\n        data: [300, 50, 100],\n        backgroundColor: ['rgb(255, 99, 132)', 'rgb(54, 162, 235)', 'rgb(255, 205, 86)'],\n        hoverOffset: 4\n      }\n    ]\n  };\n\n  return (\n    <Box\n      sx={{\n        ...classes.rowWidget,\n        marginTop: '100px',\n        padding: '4%',\n        justifyContent: 'center'\n      }}\n    >\n      {isLoading ? (\n        <Box\n          sx={{\n            height: '300px',\n            margin: 'auto',\n            alignItems: 'center',\n            justifyContent: 'center',\n            display: 'flex'\n          }}\n        >\n          <ReactLoading type=\"spin\" color={theme.palette.primary.main} width={100} height={100} />\n        </Box>\n      ) : (\n        <Box sx={{ position: 'relative', minHeight: '300px', maxHeight: '500px' }}>\n          <Pie\n            options={{\n              responsive: true,\n              maintainAspectRatio: false\n            }}\n            data={emailAnalytics?.statistics?.opened_email_statistics}\n          />\n          <div id=\"legend-container-analytics\" />\n        </Box>\n      )}\n    </Box>\n  );\n};\n\nexport default StatusStatistics;\n","import React from 'react';\nimport { Box, Grid } from '@mui/material';\nimport { TDetailedEmail } from '../../types';\nimport { Bar } from 'react-chartjs-2';\nimport {\n  Chart as ChartJS,\n  CategoryScale,\n  LinearScale,\n  BarElement,\n  Title,\n  Tooltip,\n  Legend\n} from 'chart.js';\nimport ReactLoading from 'react-loading';\nimport { classes } from '../../styles';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport DoneIcon from '@mui/icons-material/Done';\nimport DraftsIcon from '@mui/icons-material/Drafts';\nimport AdsClickIcon from '@mui/icons-material/AdsClick';\nimport CloseIcon from '@mui/icons-material/Close';\nimport UnsubscribeIcon from '@mui/icons-material/Unsubscribe';\n\nconst StatusStatistics = ({\n  isLoading,\n  emailAnalytics\n}: {\n  isLoading: boolean;\n  emailAnalytics: TDetailedEmail;\n}) => {\n  ChartJS.register(CategoryScale, LinearScale, BarElement, Title, Tooltip, Legend);\n\n  const stats = emailAnalytics?.statistics?.percentages;\n\n  return (\n    <Box sx={{ ...classes.rowWidget, height: '100%', marginTop: '50px', paddingRight: '4%' }}>\n      {isLoading ? (\n        <Box\n          sx={{\n            height: '300px',\n            margin: 'auto',\n            alignItems: 'center',\n            justifyContent: 'center',\n            display: 'flex'\n          }}\n        >\n          <ReactLoading type=\"spin\" color={theme.palette.primary.main} width={100} height={100} />\n        </Box>\n      ) : (\n        <Grid container spacing={2}>\n          <Grid xs={6} sx={{ paddingRight: '25px', display: 'flex', justifyContent: 'center' }}>\n            <Grid\n              container\n              spacing={2}\n              sx={{ display: 'inline-flex', padding: '40px 0 15px 0', width: '24rem' }}\n            >\n              <Grid xs={12}>\n                <Box\n                  sx={{\n                    ...classes.statusStatsWrapper,\n                    backgroundColor: stats.delivered\n                      ? 'rgba(109, 190, 191, 0.2)'\n                      : 'rgba(229, 229, 229, 0.5)'\n                  }}\n                >\n                  <Box\n                    sx={{\n                      ...classes.statusStatsWrapperMetrics,\n                      color: stats.delivered ? theme.palette.secondary.medium : '#666666'\n                    }}\n                  >\n                    <Box sx={{ width: '5.5rem', margin: 'auto' }}>\n                      <DoneIcon\n                        sx={{\n                          color: stats.delivered ? theme.palette.secondary.medium : '#666666',\n                          fontSize: '23px'\n                        }}\n                      />\n                      <Box>{stats.delivered_pcent}%</Box>\n                      <Box sx={{ fontSize: '15px', fontWeight: '400', display: 'flex' }}>\n                        {stats.delivered}\n                        <Box sx={{ color: 'black', marginLeft: '3px' }}> Delivered</Box>\n                      </Box>\n                    </Box>\n                  </Box>\n                </Box>\n              </Grid>\n              <Grid xs={6}>\n                <Box\n                  sx={{\n                    ...classes.statusStatsWrapper,\n                    backgroundColor: stats.opened\n                      ? 'rgba(146, 104, 247, 0.2)'\n                      : 'rgba(229, 229, 229, 0.5)'\n                  }}\n                >\n                  <Box\n                    sx={{\n                      ...classes.statusStatsWrapperMetrics,\n                      color: stats.opened ? theme.palette.secondary.purple : '#666666'\n                    }}\n                  >\n                    <DraftsIcon\n                      sx={{\n                        color: stats.opened ? theme.palette.secondary.purple : '#666666',\n                        fontSize: '23px'\n                      }}\n                    />\n                    <Box>{stats.opened_pcent}%</Box>\n                    <Box sx={{ fontSize: '15px', fontWeight: '400', display: 'flex' }}>\n                      {stats.opened}\n                      <Box sx={{ color: 'black', marginLeft: '3px' }}> Opened</Box>\n                    </Box>\n                  </Box>\n                </Box>\n              </Grid>\n              <Grid xs={6}>\n                <Box\n                  sx={{\n                    ...classes.statusStatsWrapper,\n                    backgroundColor: stats.clicks\n                      ? 'rgba(247, 161, 255, 0.2)'\n                      : 'rgba(229, 229, 229, 0.5)'\n                  }}\n                >\n                  <Box\n                    sx={{\n                      ...classes.statusStatsWrapperMetrics,\n                      color: stats.clicks ? theme.palette.secondary.pink : '#666666'\n                    }}\n                  >\n                    <AdsClickIcon\n                      sx={{\n                        color: stats.clicks ? theme.palette.secondary.pink : '#666666',\n                        fontSize: '23px'\n                      }}\n                    />\n                    <Box>{stats.clicks_pcent}%</Box>\n                    <Box sx={{ fontSize: '15px', fontWeight: '400', display: 'flex' }}>\n                      {stats.clicks}\n                      <Box sx={{ color: 'black', marginLeft: '3px' }}>Clicks</Box>\n                    </Box>\n                  </Box>\n                </Box>\n              </Grid>\n              <Grid xs={6}>\n                <Box\n                  sx={{\n                    ...classes.statusStatsWrapper,\n                    backgroundColor: stats.bounced\n                      ? 'rgba(236, 110, 133, 0.2)'\n                      : 'rgba(229, 229, 229, 0.5)'\n                  }}\n                >\n                  <Box\n                    sx={{\n                      ...classes.statusStatsWrapperMetrics,\n                      color: stats.bounced ? theme.palette.secondary.mediumRed : '#666666'\n                    }}\n                  >\n                    <CloseIcon\n                      sx={{\n                        color: stats.bounced ? theme.palette.secondary.mediumRed : '#666666',\n                        fontSize: '23px'\n                      }}\n                    />\n                    <Box>{stats.bounced}</Box>\n                    <Box sx={{ fontSize: '15px', fontWeight: '400', display: 'flex' }}>\n                      {emailAnalytics.statistics.percentages.bounced}\n                      <Box sx={{ color: 'black', marginLeft: '3px' }}>Bounced</Box>\n                    </Box>\n                  </Box>\n                </Box>\n              </Grid>\n              <Grid xs={6}>\n                <Box\n                  sx={{\n                    ...classes.statusStatsWrapper,\n                    backgroundColor: emailAnalytics.statistics.percentages.unsubscribed\n                      ? 'rgba(126, 167, 228, 0.2)'\n                      : 'rgba(229, 229, 229, 0.5)'\n                  }}\n                >\n                  <Box\n                    sx={{\n                      ...classes.statusStatsWrapperMetrics,\n                      color: emailAnalytics.statistics.percentages.unsubscribed\n                        ? theme.palette.secondary.darkBlue\n                        : '#666666'\n                    }}\n                  >\n                    <UnsubscribeIcon\n                      sx={{\n                        color: emailAnalytics.statistics.percentages.unsubscribed\n                          ? theme.palette.secondary.darkBlue\n                          : '#666666',\n                        fontSize: '23px'\n                      }}\n                    />\n                    <Box>{emailAnalytics.statistics.percentages.unsubscribed_pcent}%</Box>\n                    <Box sx={{ fontSize: '15px', fontWeight: '400', display: 'flex' }}>\n                      {emailAnalytics.statistics.percentages.unsubscribed}\n                      <Box sx={{ color: 'black', marginLeft: '3px' }}>Unsubscribed</Box>\n                    </Box>\n                  </Box>\n                </Box>\n              </Grid>\n            </Grid>\n          </Grid>\n          <Grid xs={6} sx={{ paddingLeft: '25px', margin: 'auto' }}>\n            <Box sx={{ position: 'relative', minHeight: '300px', maxHeight: '500px' }}>\n              <Bar\n                options={{\n                  responsive: true,\n                  maintainAspectRatio: false,\n                  scales: {\n                    y: {\n                      beginAtZero: true,\n                      ticks: {\n                        stepSize: 1\n                      }\n                    }\n                  },\n                  plugins: {\n                    legend: {\n                      display: false\n                    }\n                  }\n                }}\n                data={emailAnalytics?.statistics?.status_statistics}\n              />\n            </Box>\n          </Grid>\n        </Grid>\n      )}\n    </Box>\n  );\n};\n\nexport default StatusStatistics;\n","import React, { Dispatch } from 'react';\nimport {\n  GenericTableState,\n  GenericTableAction\n} from '../../../NewUI/Components/GenericTable/genericTableReducer';\nimport { TApplication } from '../../types';\nimport { TableCell, Box } from '@mui/material';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport { getStatusColor } from '../../helper';\nimport { classes } from '../../../NewUI/Components/GenericTable/styles';\n\nconst ApplicationsTableRows = ({\n  column,\n  item,\n  tableHovered,\n  dispatch\n}: {\n  column: GenericTableState['tableState']['columns'][number];\n  item: TApplication;\n  tableHovered: boolean;\n  dispatch?: Dispatch<GenericTableAction>;\n}) => {\n  if (!column.enabled) return null;\n  switch (column.id) {\n    case 'id': {\n      return (\n        <TableCell\n          sx={{\n            ...classes.sticky,\n            ...classes.idTableCell,\n            left: '0px',\n            minWidth: '100px'\n          }}\n          key={`${(item.id, column.id)}`}\n        >\n          {item.id || '-'}\n        </TableCell>\n      );\n    }\n    case 'candidate': {\n      return (\n        <TableCell\n          sx={{\n            ...classes.sticky,\n            ...classes.itemTitleTableCell,\n            ...(tableHovered && classes.scrollShadowVisible),\n            left: '100px',\n            minWidth: '200px'\n          }}\n          key={`${(item.id, column.id)}`}\n        >\n          {item.candidate || '-'}\n        </TableCell>\n      );\n    }\n    case 'application_deleted': {\n      return (\n        <TableCell\n          sx={{\n            textAlign: 'center'\n          }}\n          key={`${(item.id, column.id)}`}\n        >\n          {item.application_deleted ? (\n            <CheckCircleIcon sx={{ color: theme.palette.success.main }} fontSize=\"small\" />\n          ) : (\n            <CancelIcon sx={{ color: theme.palette.error.main }} fontSize=\"small\" />\n          )}\n        </TableCell>\n      );\n    }\n    case 'status': {\n      return (\n        <TableCell\n          sx={{\n            display: 'flex',\n            justifyContent: 'center'\n          }}\n          key={`${(item.id, column.id)}`}\n        >\n          {item.status ? (\n            <Box\n              sx={{\n                borderRadius: '6px',\n                padding: '6px',\n                backgroundColor: `${getStatusColor(item.status)[0]}33`,\n                width: 'fit-content',\n                display: 'flex',\n                justifyContent: 'center'\n              }}\n            >\n              <Box\n                sx={{\n                  color: getStatusColor(item.status)[0],\n                  fontWeight: 'bold',\n                  fontSize: '15px',\n                  padding: '0rem 1.5rem',\n                  textTransform: 'uppercase'\n                }}\n              >\n                {item.status}\n              </Box>\n            </Box>\n          ) : (\n            '-'\n          )}\n        </TableCell>\n      );\n    }\n    default:\n      return <TableCell></TableCell>;\n  }\n};\n\nexport default ApplicationsTableRows;\n","import React, { Dispatch } from 'react';\nimport { Box } from '@mui/material';\nimport { ApplicationsAPIReturn } from '../../types';\nimport GenericTable from '../../../NewUI/Components/GenericTable/GenericTable';\nimport SearchInput from '../../../NewUI/Components/GenericTable/SearchInput';\nimport { headerStyles } from './config';\nimport {\n  GenericTableAction,\n  GenericTableState\n} from '../../../NewUI/Components/GenericTable/genericTableReducer';\nimport { IStyle } from '../../../ThemeContext/ThemeObject';\nimport ApplicationTableRows from './ApplicationTableRows';\n\nconst Applications = ({\n  isFetching,\n  applications,\n  applicationsState,\n  applicationsDispatch\n}: {\n  isFetching: boolean;\n  applications?: ApplicationsAPIReturn;\n  applicationsState: GenericTableState;\n  applicationsDispatch: Dispatch<GenericTableAction>;\n}) => {\n  return (\n    <Box>\n      <Box>\n        <SearchInput dispatch={applicationsDispatch} id=\"search-box-applications-tab\" />\n        <GenericTable\n          items={applications?.data?.applications || []}\n          isLoadingItems={isFetching}\n          dispatch={applicationsDispatch}\n          tableState={applicationsState.tableState}\n          paginationState={applicationsState.searchSettings}\n          pagination={{\n            totalItems: applications?.totalItems || 0,\n            totalPages: applications?.totalPages || 0\n          }}\n          headerStyle={headerStyles as (id: string, tableHovered: boolean) => IStyle}\n          TableRows={ApplicationTableRows}\n          label=\"applications analytics\"\n          titleCellId=\"candidate\"\n          allowMultipleSelection={false}\n        />\n      </Box>\n    </Box>\n  );\n};\n\nexport default Applications;\n","import { SxProps } from '@mui/material';\nimport { classes } from '../../../NewUI/Components/GenericTable/styles';\n\nexport const applicationColumns = [\n  {\n    id: 'id',\n    label: 'ID',\n    sortable: false,\n    canToggle: false,\n    enabled: true\n  },\n  {\n    id: 'candidate',\n    label: 'Candidate',\n    sortable: false,\n    canToggle: false,\n    enabled: true\n  },\n  {\n    id: 'application_deleted',\n    label: 'Application Deleted',\n    sortable: false,\n    canToggle: false,\n    enabled: true\n  },\n  {\n    id: 'status',\n    label: 'Status',\n    sortable: false,\n    canToggle: false,\n    enabled: true\n  }\n];\n\nexport const headerStyles = (\n  name: typeof applicationColumns[number]['id'] | 'checkbox' | 'actions',\n  tableHovered: boolean\n): SxProps => {\n  switch (name) {\n    case 'id':\n      return {\n        ...classes.sticky,\n        width: '100px',\n        minWidth: '100px'\n      };\n    case 'candidate':\n      return {\n        ...classes.sticky,\n        ...classes.itemTitleTableCell,\n        ...(tableHovered && classes.scrollShadowVisible),\n        left: '100px',\n        minWidth: '200px'\n      };\n    case 'application_deleted':\n      return {\n        minWidth: '120px',\n        textAlign: 'center'\n      };\n    case 'status':\n      return {\n        minWidth: '70px',\n        textAlign: 'center'\n      };\n    default:\n      return { minWidth: '90px' };\n  }\n};\n","import React, { useReducer, useState, Dispatch } from 'react';\nimport { Box, Tabs, Tab, Stack, IconButton } from '@mui/material';\nimport { classes } from '../styles';\nimport StyledSnackbar from '../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport { sharedClasses } from '../../NewUI/Components/CustomUIElements/sharedClasses';\nimport Analytics from './Analytics/Analytics';\nimport Applications from './Applications/Applications';\nimport EmailTemplates from './EmailTemplates/EmailTemplates';\nimport { GenericTableAction } from '../../NewUI/Components/GenericTable/genericTableReducer';\nimport { TEmail, ApplicationsAPIReturn } from '../types';\nimport { ArrowCircleLeft as ArrowCircleLeftIcon } from '@mui/icons-material';\nimport { useQuery } from '@tanstack/react-query';\nimport callAPI from '../../NewUI/Components/Utilities/callAPI';\nimport { getStatusColor } from '../helper';\nimport {\n  genericTableReducer,\n  initialTableState\n} from '../../NewUI/Components/GenericTable/genericTableReducer';\nimport { applicationColumns } from './Applications/config';\nimport { callPaginatedAPI } from '../../NewUI/Components/Utilities/callAPI';\nimport queryString from 'query-string';\n\nconst CandidatePoolAnalytics = ({\n  selectedEmail,\n  emailsDispatch,\n  selectedCandidatePoolId\n}: {\n  selectedEmail: TEmail;\n  emailsDispatch: Dispatch<GenericTableAction>;\n  selectedCandidatePoolId: number;\n}) => {\n  const [modalTabValue, setModalTabValue] = useState<number>(0);\n  const [snackbarState, setSnackbarState] = useState({\n    message: '',\n    state: 'success' as 'success' | 'error' | 'warning'\n  });\n  const [analyticsState, analyticsDispatch] = useReducer(\n    genericTableReducer,\n    initialTableState(applicationColumns, { sortBy: 'created_at', sortOrder: 'desc' })\n  );\n\n  const { data: emailAnalytics, isLoading: analyticsLoading } = useQuery({\n    queryKey: ['candidateEmailAnalytics', selectedEmail.item.id],\n    queryFn: () =>\n      callAPI(\n        `/api/v4/candidate_pools/${selectedCandidatePoolId}/email_batches/${selectedEmail.item.id}`,\n        null,\n        'GET'\n      ),\n    onError: () =>\n      setSnackbarState({\n        message: `There was an error getting user analytics data`,\n        state: 'error'\n      }),\n    refetchOnWindowFocus: false\n  });\n\n  const { data: emailTemplates, isLoading: emailTemplatesLoading } = useQuery({\n    queryKey: ['emailTemplatesAnalytics'],\n    queryFn: () =>\n      callAPI(\n        `/api/v4/candidate_pools/${selectedCandidatePoolId}/email_batches/${selectedEmail.item.id}/email_template`,\n        null,\n        'GET'\n      ),\n    onError: () =>\n      setSnackbarState({\n        message: `There was an error getting user email template data`,\n        state: 'error'\n      }),\n    refetchOnWindowFocus: false\n  });\n\n  const { data: applications, isLoading: fetchingApplications } = useQuery({\n    queryKey: ['applicationsAnalytics', analyticsState.searchQuery, analyticsState.searchSettings],\n    queryFn: () => {\n      return callPaginatedAPI(\n        `/api/v4/candidate_pools/${selectedCandidatePoolId}/email_batches/${\n          selectedEmail.item.id\n        }/applications?${queryString.stringify(\n          {\n            ...analyticsState.searchSettings,\n            'q[search]': analyticsState.searchQuery\n          },\n          {\n            skipEmptyString: true,\n            skipNull: true,\n            arrayFormat: 'bracket',\n            encode: false\n          }\n        )}`,\n        null,\n        'GET'\n      ) as Promise<ApplicationsAPIReturn>;\n    },\n    onError() {\n      setSnackbarState({\n        message: `There was an error retrieving applications`,\n        state: 'error'\n      });\n    },\n    refetchOnWindowFocus: false\n  });\n\n  return (\n    <>\n      <Box>\n        <Box sx={{ ...classes.pageHeader, paddingLeft: '0' }}>\n          <h1>{selectedEmail.item.email_template}</h1>\n        </Box>\n        <Box\n          sx={{\n            backgroundColor: getStatusColor(selectedEmail.item.status)[1],\n            padding: '0.4rem 2.5rem',\n            width: 'fit-content'\n          }}\n        >\n          <Box\n            sx={{\n              color: getStatusColor(selectedEmail.item.status)[0],\n              fontWeight: 'bold',\n              fontSize: '18px'\n            }}\n          >\n            {selectedEmail.item.status.toUpperCase()}\n          </Box>\n        </Box>\n        <Tabs\n          value={modalTabValue}\n          onChange={(e, value) => setModalTabValue(value)}\n          TabIndicatorProps={{\n            sx: { maxWidth: modalTabValue === 2 ? '8.5em' : modalTabValue ? '7em' : '5em' }\n          }}\n          sx={{\n            ...classes.tabs,\n            '& .MuiTabs-indicator': {\n              ...classes.tabIndicator\n            },\n            margin: '1rem 0 1.5rem 0',\n            borderBottom: '1px solid #EEEEEE'\n          }}\n        >\n          <Tab label=\"Analytics\" id=\"analytics-tab\" />\n          <Tab label=\"Applications\" id=\"applications-tab\" />\n          <Tab label=\"Email template\" id=\"email-template-tab\" />\n        </Tabs>\n        <Box\n          sx={{ ...sharedClasses.navigateBackButton, marginBottom: '40px', marginLeft: '-10px' }}\n        >\n          <Stack\n            flexDirection=\"row\"\n            alignItems=\"center\"\n            onClick={() => emailsDispatch({ type: 'REMOVE_SELECTED_ROW_DATA' })}\n          >\n            <IconButton sx={{ color: '#666666', fontSize: '28px' }}>\n              <ArrowCircleLeftIcon />\n            </IconButton>\n            <Box id=\"back-to-pool-button\">Back to candidate pools</Box>\n          </Stack>\n        </Box>\n        <Box>\n          {modalTabValue === 0 && (\n            <Analytics\n              selectedEmail={selectedEmail}\n              emailAnalytics={emailAnalytics}\n              isLoading={analyticsLoading}\n            />\n          )}\n        </Box>\n        {modalTabValue === 1 && (\n          <Applications\n            isFetching={fetchingApplications}\n            applications={applications}\n            applicationsState={analyticsState}\n            applicationsDispatch={analyticsDispatch}\n          />\n        )}\n        {modalTabValue === 2 && (\n          <EmailTemplates isLoading={emailTemplatesLoading} emailTemplate={emailTemplates} />\n        )}\n      </Box>\n      <StyledSnackbar\n        message={snackbarState.message}\n        state={snackbarState.state}\n        setSnackbarState={setSnackbarState}\n      />\n    </>\n  );\n};\n\nexport default CandidatePoolAnalytics;\n","import React from 'react';\nimport { Box } from '@mui/material';\nimport { TEmailTemplate } from '../../types';\nimport ReactLoading from 'react-loading';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport HtmlEditor from '../../../NewUI/Components/Utilities/HtmlEditor';\nimport AttachmentPreview from '../../../NewUI/Components/CustomUIElements/AttachmentsPreview';\n\nconst EmailTemplates = ({\n  isLoading,\n  emailTemplate\n}: {\n  isLoading: boolean;\n  emailTemplate: TEmailTemplate;\n}) => {\n  return (\n    <Box sx={{ marginTop: '-10px' }}>\n      {isLoading ? (\n        <Box\n          sx={{\n            height: '300px',\n            margin: 'auto',\n            alignItems: 'center',\n            justifyContent: 'center',\n            display: 'flex'\n          }}\n        >\n          <ReactLoading type=\"spin\" color={theme.palette.primary.main} width={100} height={100} />\n        </Box>\n      ) : (\n        <Box>\n          <HtmlEditor\n            readonlyEditor={{\n              body: emailTemplate.body,\n              styling: {\n                '& .tox-editor-header, .tox-statusbar': { display: 'none !important' },\n                '& .tox-tinymce': { height: '600px !important' }\n              }\n            }}\n          />\n          {emailTemplate.email_attachments && (\n            <AttachmentPreview templateAttachments={emailTemplate.email_attachments} />\n          )}\n        </Box>\n      )}\n    </Box>\n  );\n};\n\nexport default EmailTemplates;\n","import React, { Dispatch, useRef } from 'react';\nimport queryString from 'query-string';\nimport {\n  GenericTableAction,\n  GenericTableState\n} from '../../NewUI/Components/GenericTable/genericTableReducer';\nimport { classes } from '../styles';\nimport { CandidatePoolAPIReturn } from '../types';\nimport { candidatePoolActionsList, headerStyles, poolActionDrawerModals } from './config';\nimport { Box } from '@mui/material';\nimport GenericTable from '../../NewUI/Components/GenericTable/GenericTable';\nimport { IStyle } from '../../ThemeContext/ThemeObject';\nimport CandidatePoolsTableRows from './CandidatePoolsTableRows';\nimport SearchInput from '../../NewUI/Components/GenericTable/SearchInput';\nimport { getPreferences } from '../../NewUI/Components/GenericTable/utilities';\nimport { useQuery } from '@tanstack/react-query';\nimport { ISnackbarInput } from '../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport { callPaginatedAPI } from '../../NewUI/Components/Utilities/callAPI';\nimport ColumnSettings from '../../NewUI/Components/GenericTable/Dropdowns/ColumnSettings';\nimport TotalSelectedIndicatorWithActions from '../../NewUI/Components/GenericTable/TotalSelectedIndicatorWithActions';\nimport CreateNewPoolButton from './Modals/CreateNewPoolButton';\nimport ActionDrawerModals from './Modals/ActionDrawerModals';\nimport EmailIcon from '@mui/icons-material/Email';\nimport CandidatePoolsActionComponents from './CandidatePoolsActionComponents';\nimport ItemActionsDrawer from '../../NewUI/Components/GenericTable/ItemActionsDrawer';\nimport IndividualCandidatePoolModal from './Modals/CandidatePool/IndividualCandidatePoolModal';\n\nconst USER_PREFERENCE_SOURCE = 'candidate-pools';\n\nconst CandidatePools = ({\n  individualCandidatePoolsState,\n  individualCandidatePoolsDispatch,\n  emailsState,\n  emailsDispatch,\n  candidatePoolsState,\n  dispatch,\n  setSnackbarState,\n  modalTabValue,\n  setModalTabValue\n}: {\n  individualCandidatePoolsState: GenericTableState;\n  individualCandidatePoolsDispatch: Dispatch<GenericTableAction>;\n  emailsState: GenericTableState;\n  emailsDispatch: Dispatch<GenericTableAction>;\n  candidatePoolsState: GenericTableState;\n  dispatch: Dispatch<GenericTableAction>;\n  setSnackbarState: (snackbarState: ISnackbarInput) => void;\n  modalTabValue: number;\n  setModalTabValue: (i: number) => void;\n}) => {\n  const containerRef = useRef<HTMLDivElement>(null);\n  const { isFetched: fetchedPreferences } = useQuery({\n    queryKey: ['candidatePoolPreferences'],\n    queryFn: () => getPreferences(USER_PREFERENCE_SOURCE, dispatch),\n    onError: () =>\n      setSnackbarState({\n        message: `There was an error getting user preference data`,\n        state: 'error'\n      }),\n    refetchOnMount: false,\n    refetchOnWindowFocus: false,\n    refetchOnReconnect: false,\n    staleTime: 3.6e6 // 1 hour\n  });\n\n  const {\n    data: candidate_pools,\n    isLoading: isLoadingPools,\n    refetch\n  } = useQuery({\n    queryKey: [\n      'candidatePools',\n      candidatePoolsState.searchQuery,\n      candidatePoolsState.searchSettings\n    ],\n    queryFn: () =>\n      callPaginatedAPI(\n        `/api/v4/candidate_pools?${queryString.stringify(\n          { ...candidatePoolsState.searchSettings, 'q[search]': candidatePoolsState.searchQuery },\n          {\n            skipEmptyString: true,\n            skipNull: true,\n            arrayFormat: 'bracket',\n            encode: false\n          }\n        )}`,\n        null,\n        'GET'\n      ) as Promise<CandidatePoolAPIReturn>,\n    onError() {\n      setSnackbarState({\n        message: `There was an error retrieving candidate pools, please refresh the page and try again.`,\n        state: 'error'\n      });\n    },\n    enabled: fetchedPreferences\n  });\n\n  return (\n    <>\n      <Box sx={classes.searchAndFiltersRow} ref={containerRef}>\n        <SearchInput dispatch={dispatch} />\n        <ColumnSettings\n          tableState={candidatePoolsState.tableState}\n          dispatch={dispatch}\n          label=\"candidate-pools\"\n          userPreferenceSource={USER_PREFERENCE_SOURCE}\n        />\n        <CreateNewPoolButton\n          isOpen={candidatePoolsState.tableState.modalsOpen.newPool}\n          onClick={() =>\n            dispatch({\n              type: 'SET_ACTION_MODAL_OPEN',\n              payload: { name: 'newPool', isOpen: true }\n            })\n          }\n        />\n      </Box>\n      <ItemActionsDrawer\n        drawerOpen={candidatePoolsState.tableState.selectedItemIds.length > 0}\n        dispatch={dispatch}\n        actions={poolActionDrawerModals}\n        label=\"candidate-pools\"\n      />\n\n      {(candidatePoolsState.tableState.actions.isOpen.candidatePool ||\n        candidatePoolsState.tableState.actions.isOpen.emailAnalytics) && (\n        <IndividualCandidatePoolModal\n          isOpen={\n            candidatePoolsState.tableState.actions.isOpen.candidatePool ||\n            candidatePoolsState.tableState.actions.isOpen.emailAnalytics\n          }\n          selectedPool={candidatePoolsState.tableState.actions.selectedItem}\n          handleClose={() => {\n            dispatch({\n              type: 'CLOSE_ACTION_ITEM',\n              payload: 'emailAnalytics'\n            });\n            dispatch({\n              type: 'CLOSE_ACTION_ITEM',\n              payload: 'candidatePool'\n            });\n            setModalTabValue(0);\n          }}\n          setSnackbarState={setSnackbarState}\n          refetch={refetch}\n          individualCandidatePoolsState={individualCandidatePoolsState}\n          individualCandidatePoolsDispatch={individualCandidatePoolsDispatch}\n          emailsState={emailsState}\n          emailsDispatch={emailsDispatch}\n          modalTabValue={modalTabValue}\n          setModalTabValue={setModalTabValue}\n        />\n      )}\n      <GenericTable\n        items={candidate_pools?.data.candidate_pools || []}\n        isLoadingItems={isLoadingPools}\n        dispatch={dispatch}\n        tableState={candidatePoolsState.tableState}\n        paginationState={candidatePoolsState.searchSettings}\n        pagination={{\n          totalItems: candidate_pools?.totalItems || 0,\n          totalPages: candidate_pools?.totalPages || 0\n        }}\n        headerStyle={headerStyles as (id: string, tableHovered: boolean) => IStyle}\n        TableRows={CandidatePoolsTableRows}\n        TableActionList={candidatePoolActionsList}\n        label=\"candidate pools\"\n        titleCellId=\"title\"\n        userPreferenceSource={USER_PREFERENCE_SOURCE}\n      />\n      <TotalSelectedIndicatorWithActions\n        totalSelected={candidatePoolsState.tableState.selectedItemIds.length}\n        parentDiv={containerRef.current}\n        dispatch={dispatch}\n        actionButtonsList={[\n          {\n            id: 'email',\n            label: 'Email',\n            icon: <EmailIcon />\n          }\n        ]}\n        actionButtonId=\"email-pool-button\"\n      />\n      <CandidatePoolsActionComponents\n        actionsState={candidatePoolsState.tableState.actions}\n        dispatch={dispatch}\n        setSnackbarState={setSnackbarState}\n      />\n      <ActionDrawerModals\n        tableState={candidatePoolsState.tableState}\n        dispatch={dispatch}\n        setSnackbarState={setSnackbarState}\n      />\n    </>\n  );\n};\n\nexport default CandidatePools;\n","import React, { Dispatch } from 'react';\nimport {\n  GenericTableAction,\n  GenericTableState\n} from '../../NewUI/Components/GenericTable/genericTableReducer';\nimport AddNoteWithSubjectLine from '../../NewUI/Components/GenericTable/TablePopovers/AddNoteWithSubjectLine';\nimport MoreOptionsList from '../../NewUI/Components/GenericTable/TablePopovers/MoreOptionsList';\nimport GenericDialog from '../../NewUI/Components/Modals/GenericDialog';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport callAPI from '../../NewUI/Components/Utilities/callAPI';\nimport { ISnackbarInput } from '../../NewUI/Components/CustomUIElements/StyledSnackbar';\n\nconst CandidatePoolsActionComponents = ({\n  actionsState,\n  dispatch,\n  setSnackbarState\n}: {\n  actionsState: GenericTableState['tableState']['actions'];\n  dispatch: Dispatch<GenericTableAction>;\n  setSnackbarState: (snackbarState: ISnackbarInput) => void;\n}) => {\n  const queryClient = useQueryClient();\n  const { mutate: handleDeletePool, isLoading: deletingPool } = useMutation({\n    mutationFn: () =>\n      callAPI(`/api/v4/candidate_pools/${actionsState?.selectedItem?.id}`, null, 'DELETE'),\n    onSuccess: () => {\n      queryClient.invalidateQueries({ queryKey: ['candidatePools'] });\n      dispatch({ type: 'CLOSE_ACTION_ITEM', payload: 'deletePool' });\n    },\n    onError: () =>\n      setSnackbarState({\n        message: `There was an error deleting the candidate pool`,\n        state: 'error'\n      })\n  });\n  return (\n    <>\n      <AddNoteWithSubjectLine\n        dispatch={dispatch}\n        isOpen={actionsState?.isOpen?.addNote}\n        anchorEl={actionsState?.anchorEl}\n        itemId={actionsState?.selectedItem?.id || 0}\n        url=\"/api/v4/candidate_pools/add_note\"\n        queryKey=\"candidatePools\"\n      />\n      <MoreOptionsList\n        options={[\n          {\n            id: 'deletePool',\n            label: 'Delete',\n            action: () => {\n              dispatch({\n                type: 'SELECT_ACTION_ITEM',\n                payload: {\n                  item: actionsState?.selectedItem,\n                  name: 'deletePool',\n                  anchorEl: null\n                }\n              });\n            }\n          }\n        ]}\n        actionsState={actionsState}\n        dispatch={dispatch}\n        label=\"candidate-pools\"\n      />\n      <GenericDialog\n        isDialogOpen={actionsState?.isOpen?.deletePool}\n        setDialogOpen={() => dispatch({ type: 'CLOSE_ACTION_ITEM', payload: 'deletePool' })}\n        title=\"Delete Candidate Pool\"\n        description={`Are you sure you want to delete the ${actionsState?.selectedItem?.title} candidate pool?`}\n        buttonCallback={() => handleDeletePool()}\n        callbackLoading={deletingPool}\n        url=\"\"\n        buttonText=\"Delete\"\n      />\n    </>\n  );\n};\n\nexport default CandidatePoolsActionComponents;\n","import React, { Dispatch } from 'react';\nimport {\n  GenericTableState,\n  GenericTableAction\n} from '../../NewUI/Components/GenericTable/genericTableReducer';\nimport { TCandidatePool } from '../types';\nimport { TableCell } from '@mui/material';\nimport { classes } from '../../NewUI/Components/GenericTable/styles';\nimport { TagList } from '../../NewUI/Components/CustomUIElements/TagList/TagList';\nimport FormattedDate from '../../NewUI/Components/GenericTable/TableCells/FormattedDate';\nimport NotesWithSubjectLine from '../../NewUI/Components/GenericTable/TableCells/NotesWithSubjectLine';\n\nconst CandidatePoolsTableRows = ({\n  column,\n  item,\n  tableHovered,\n  dispatch\n}: {\n  column: GenericTableState['tableState']['columns'][number];\n  item: TCandidatePool;\n  tableHovered: boolean;\n  dispatch?: Dispatch<GenericTableAction>;\n}) => {\n  const candidateCountCell = (item: TCandidatePool) => {\n    if (typeof item.candidates_count === 'number') {\n      if (typeof item.new_candidates === 'number') {\n        return `${item.candidates_count} (${item.new_candidates})`;\n      } else {\n        return item.candidates_count;\n      }\n    }\n    return '-';\n  };\n  if (!column.enabled) return null;\n  switch (column.id) {\n    case 'title': {\n      return (\n        <TableCell\n          key={item.id + column.id}\n          sx={{\n            ...classes.sticky,\n            ...classes.itemTitleTableCell,\n            left: '58px',\n            ...(tableHovered && classes.scrollShadowVisible),\n            cursor: 'pointer'\n          }}\n          onClick={() => {\n            dispatch &&\n              dispatch({\n                type: 'SELECT_ACTION_ITEM',\n                payload: { name: 'candidatePool', item: item, anchorEl: null }\n              });\n          }}\n        >\n          {item.title || '-'}\n        </TableCell>\n      );\n    }\n    case 'candidates_count':\n      return (\n        <TableCell\n          sx={{ textAlign: 'right', paddingRight: '37px !important' }}\n          key={item.id + column.id}\n        >\n          {candidateCountCell(item)}\n        </TableCell>\n      );\n    case 'pool_tags':\n      return (\n        <TableCell>{item.pool_tags?.length ? <TagList tags={item.pool_tags} /> : '-'}</TableCell>\n      );\n    case 'created_at':\n      return (\n        <TableCell key={item.id + column.id}>\n          {item.created_at ? <FormattedDate date={item.created_at} /> : '-'}\n        </TableCell>\n      );\n    case 'last_email_date':\n      return (\n        <TableCell key={item.id + column.id}>\n          {item.last_email_date ? <FormattedDate date={item.last_email_date} /> : '-'}\n        </TableCell>\n      );\n    case 'notes':\n      return (\n        <TableCell sx={{ maxWidth: '280px' }}>\n          {item.notes?.length ? <NotesWithSubjectLine notes={item.notes} /> : '-'}\n        </TableCell>\n      );\n    default:\n      return <TableCell></TableCell>;\n  }\n};\n\nexport default CandidatePoolsTableRows;\n","import React, { Dispatch } from 'react';\nimport { GenericTableState } from '../../../NewUI/Components/GenericTable/genericTableReducer';\nimport { TableActionDrawerAction } from '../../../NewUI/Components/GenericTable/types';\nimport CreateNewPoolModal from './CreateNewPoolModal';\nimport { ISnackbarInput } from '../../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport EmailCandidate from '../../SharedComponents/Modals/EmailCandidate';\nimport DownloadModal from '../../../NewUI/Components/Modals/DownloadModal';\nimport callAPI from '../../../NewUI/Components/Utilities/callAPI';\nimport ExternalEmail from '../../SharedComponents/Modals/ExternalEmail';\n\nconst ActionDrawerModals = ({\n  tableState,\n  dispatch,\n  setSnackbarState\n}: {\n  tableState: GenericTableState['tableState'];\n  dispatch: Dispatch<TableActionDrawerAction>;\n  setSnackbarState: (snackbarState: ISnackbarInput) => void;\n}) => {\n  const downloadAPICall = async (type: string) => {\n    if (type === 'attachments') {\n      const { zip_file } = await callAPI(\n        '/api/v4/candidate_pools/zip_attachments',\n        { candidate_pool_ids: tableState.selectedItemIds },\n        'POST'\n      );\n      return zip_file.id;\n    } else if (type === 'pdf') {\n      const response = await callAPI(\n        '/api/v4/candidate_pools/export_pdf',\n        { candidate_pool_ids: tableState.selectedItemIds },\n        'POST'\n      );\n      return response.success || response.errors || 'Something went wrong';\n    } else if (type === 'attachmentsInPdf') {\n      const response = await callAPI(\n        '/api/v4/candidate_pools/export_pdf',\n        { candidate_pool_ids: tableState.selectedItemIds, attachments_in_pdf: true },\n        'POST'\n      );\n      return response.success || response.errors || 'Something went wrong';\n    }\n  };\n\n  return (\n    <>\n      <CreateNewPoolModal\n        isOpen={tableState.modalsOpen?.newPool}\n        handleClose={() =>\n          dispatch({ type: 'SET_ACTION_MODAL_OPEN', payload: { name: 'newPool', isOpen: false } })\n        }\n        setSnackbarState={setSnackbarState}\n      />\n      <ExternalEmail\n        isOpen={tableState.modalsOpen.externalEmail}\n        dispatch={dispatch}\n        selectedPoolIds={tableState.selectedItemIds}\n        apiUrl=\"/api/v4/candidate_pools/bulk_external_email\"\n      />     \n      <EmailCandidate\n        isOpen={tableState.modalsOpen?.email || tableState.actions?.isOpen?.email}\n        dispatch={dispatch}\n        selectedPoolIds={\n          !tableState.actions?.isOpen?.email\n            ? tableState.selectedItemIds\n            : [tableState.actions?.selectedItem?.id || -1]\n        }\n        openedFromTableActions={tableState.actions?.isOpen?.email}\n        setSnackbarState={setSnackbarState}\n        showTotalSelectedCandidates={false}\n      />\n      <DownloadModal\n        type=\"attachments\"\n        isOpen={tableState.modalsOpen?.downloadAttachments}\n        handleClose={() =>\n          dispatch({\n            type: 'SET_ACTION_MODAL_OPEN',\n            payload: { name: 'downloadAttachments', isOpen: false }\n          })\n        }\n        downloadAPICall={downloadAPICall}\n      />\n      <DownloadModal\n        type=\"attachmentsInPdf\"\n        isOpen={tableState.modalsOpen?.exportAttachments}\n        handleClose={() =>\n          dispatch({\n            type: 'SET_ACTION_MODAL_OPEN',\n            payload: { name: 'exportAttachments', isOpen: false }\n          })\n        }\n        downloadAPICall={downloadAPICall}\n        emailFallback={true}\n      />\n      <DownloadModal\n        type=\"pdf\"\n        isOpen={tableState.modalsOpen?.exportAsPdf}\n        handleClose={() =>\n          dispatch({\n            type: 'SET_ACTION_MODAL_OPEN',\n            payload: { name: 'exportAsPdf', isOpen: false }\n          })\n        }\n        downloadAPICall={downloadAPICall}\n        emailFallback={true}\n      />\n    </>\n  );\n};\n\nexport default ActionDrawerModals;\n","import React from 'react';\nimport { GenericTableState } from '../../../../NewUI/Components/GenericTable/genericTableReducer';\nimport { TCandidatePool } from '../../../types';\nimport { TableCell } from '@mui/material';\nimport { classes } from '../../../../NewUI/Components/GenericTable/styles';\nimport FormattedDate from '../../../../NewUI/Components/GenericTable/TableCells/FormattedDate';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\n\nconst CandidatePoolsTableRows = ({\n  column,\n  item,\n  tableHovered\n}: {\n  column: GenericTableState['tableState']['columns'][number];\n  item: TCandidatePool;\n  tableHovered: boolean;\n}) => {\n  if (!column.enabled) return null;\n\n  switch (column.id) {\n    case 'candidate_name': {\n      return (\n        <TableCell\n          id=\"individual-candidate-name\"\n          key={item.id + column.id}\n          sx={{\n            ...classes.sticky,\n            ...classes.itemTitleTableCell,\n            left: '58px',\n            ...(tableHovered && classes.scrollShadowVisible),\n            cursor: 'pointer',\n            width: '150px'\n          }}\n        >\n          {item?.candidate_name ? (\n            <a href={item.candidate_link} target=\"_blank\" rel=\"noreferrer\">\n              {item.candidate_name}\n            </a>\n          ) : (\n            '-'\n          )}\n        </TableCell>\n      );\n    }\n    case 'candidate_email': {\n      return <TableCell key={item.id + column.id}>{item.candidate_email || '-'}</TableCell>;\n    }\n    case 'added_date': {\n      return (\n        <TableCell key={item.id + column.id}>\n          {item.added_date ? <FormattedDate date={item.added_date} /> : '-'}\n        </TableCell>\n      );\n    }\n    case 'postcode': {\n      return <TableCell key={item.id + column.id}>{item.postcode || '-'}</TableCell>;\n    }\n    case 'location': {\n      return <TableCell key={item.id + column.id}>{item.location || '-'}</TableCell>;\n    }\n    case 'candidate_phone_number':\n      return <TableCell key={item.id + column.id}>{item.candidate_phone_number || '-'}</TableCell>;\n    case 'unsubscribed': {\n      return (\n        <TableCell\n          sx={{\n            display: 'flex',\n            justifyContent: 'center',\n            alignItems: 'center',\n            marginTop: '10px',\n            color: theme.palette.common.black\n          }}\n          key={item.id + column.id}\n        >\n          {item.unsubscribed ? 'Yes' : 'No'}\n        </TableCell>\n      );\n    }\n    default:\n      return <TableCell></TableCell>;\n  }\n};\n\nexport default CandidatePoolsTableRows;\n","import React, { Dispatch } from 'react';\nimport AttachmentsList from '../../../../NewUI/Components/GenericTable/TablePopovers/AttachmentsList';\nimport {\n  GenericTableAction,\n  GenericTableState\n} from '../../../../NewUI/Components/GenericTable/genericTableReducer';\n\nconst CandidateTabTableActionComponents = ({\n  actionsState,\n  dispatch\n}: {\n  actionsState: GenericTableState;\n  dispatch: Dispatch<GenericTableAction>;\n}) => {\n  return (\n    <AttachmentsList\n      attachments={actionsState?.tableState?.actions?.selectedItem?.attachment_url || []}\n      isOpen={actionsState.tableState.actions.isOpen.viewAttachments}\n      handleClose={() => dispatch({ type: 'CLOSE_ACTION_ITEM', payload: 'viewAttachments' })}\n      anchorEl={actionsState?.tableState.actions.anchorEl}\n    />\n  );\n};\n\nexport default CandidateTabTableActionComponents;\n","import React, { Dispatch } from 'react';\nimport { TCandidate } from '../../../types';\nimport { Box } from '@mui/material';\nimport { ISnackbarInput } from '../../../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { CandidatePoolAPIReturn } from '../../../types';\nimport { callPaginatedAPI } from '../../../../NewUI/Components/Utilities/callAPI';\nimport callAPI from '../../../../NewUI/Components/Utilities/callAPI';\nimport queryString from 'query-string';\nimport {\n  GenericTableAction,\n  GenericTableState\n} from '../../../../NewUI/Components/GenericTable/genericTableReducer';\nimport { headerStyles } from './candidatesConfig';\nimport CandidatePoolsTableRows from './CandidatePoolsTableRows';\nimport { IStyle } from '../../../../ThemeContext/ThemeObject';\nimport GenericTable from '../../../../NewUI/Components/GenericTable/GenericTable';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport TotalSelectedIndicatorWithActions from '../../../../NewUI/Components/GenericTable/TotalSelectedIndicatorWithActions';\nimport SearchInput from '../../../../NewUI/Components/GenericTable/SearchInput';\nimport AttachFileIcon from '@mui/icons-material/AttachFile';\nimport CandidateTabTableActionComponents from './CandidateTabTableActionComponents';\n\nconst IndividualCandidatePoolModal = ({\n  isOpen,\n  setSnackbarState,\n  selectedPool,\n  candidatePoolsState,\n  candidatePoolsDispatch\n}: {\n  isOpen: boolean;\n  setSnackbarState: (snackbarState: ISnackbarInput) => void;\n  selectedPool: {\n    candidates: TCandidate;\n    id: number;\n    title: string;\n  };\n  candidatePoolsState: GenericTableState;\n  candidatePoolsDispatch: Dispatch<GenericTableAction>;\n}) => {\n  const queryClient = useQueryClient();\n  const { data: candidate_pools, isFetching } = useQuery({\n    queryKey: [\n      'individualCandidatePools',\n      candidatePoolsState.searchQuery,\n      candidatePoolsState.searchSettings\n    ],\n    queryFn: () => {\n      return callPaginatedAPI(\n        `/api/v4/candidate_pool_assignments?${queryString.stringify(\n          {\n            ...candidatePoolsState.searchSettings,\n            q: candidatePoolsState.searchQuery,\n            candidate_pool_id: selectedPool.id\n          },\n          {\n            skipEmptyString: true,\n            skipNull: true,\n            arrayFormat: 'bracket',\n            encode: false\n          }\n        )}`,\n        null,\n        'GET'\n      ) as Promise<CandidatePoolAPIReturn>;\n    },\n    onError() {\n      setSnackbarState({\n        message: `There was an error retrieving candidate pools, please refresh the page and try again.`,\n        state: 'error'\n      });\n    },\n    enabled: isOpen\n  });\n\n  const { mutate: deleteCandidate } = useMutation({\n    mutationFn: (id: number[]) =>\n      callAPI(`/api/v4/candidate_pools/bulk_remove_candidates`, { assignment_ids: id }, 'POST'),\n    onSuccess: () => queryClient.invalidateQueries({ queryKey: ['individualCandidatePools'] }),\n    onError() {\n      setSnackbarState({\n        message: `There was an error deleting the candidate pool, please refresh the page and try again.`,\n        state: 'error'\n      });\n    }\n  });\n\n  return (\n    <Box>\n      <SearchInput dispatch={candidatePoolsDispatch} id=\"search-box-candidate-tab\" />\n      <GenericTable\n        items={candidate_pools?.data?.candidate_pool_assignments || []}\n        isLoadingItems={isFetching}\n        dispatch={candidatePoolsDispatch}\n        tableState={candidatePoolsState.tableState}\n        paginationState={candidatePoolsState.searchSettings}\n        pagination={{\n          totalItems: candidate_pools?.totalItems || 0,\n          totalPages: candidate_pools?.totalPages || 0\n        }}\n        headerStyle={headerStyles as (id: string, tableHovered: boolean) => IStyle}\n        TableRows={CandidatePoolsTableRows}\n        TableActionList={[\n          {\n            id: 'delete',\n            tooltipLabel: 'Delete',\n            elementId: 'delete-individual-candidate-button',\n            icon: <DeleteIcon />,\n            actionCall: (item) => item?.id && deleteCandidate([item?.id])\n          },\n          {\n            id: 'viewAttachments',\n            tooltipLabel: 'View Attachments',\n            icon: <AttachFileIcon />\n          }\n        ]}\n        label=\"candidates\"\n        titleCellId=\"candidate_name\"\n        allowMultipleSelection={candidate_pools?.totalItems ? true : false}\n        customEmptyStateMessage=\"available in this pool\"\n      />\n      <TotalSelectedIndicatorWithActions\n        totalSelected={candidatePoolsState.tableState.selectedItemIds.length}\n        parentDiv={null}\n        dispatch={candidatePoolsDispatch}\n        actionButtonId=\"delete-candidate-action-button\"\n        actionButtonsList={[\n          {\n            id: 'delete',\n            label: 'Delete',\n            icon: <DeleteIcon />\n          }\n        ]}\n        actionCall={() => {\n          deleteCandidate(candidatePoolsState.tableState.selectedItemIds);\n          candidatePoolsDispatch({\n            type: 'REMOVE_ALL_PAGE_ITEMS',\n            payload: candidatePoolsState.tableState.selectedItemIds\n          });\n        }}\n      />\n      <CandidateTabTableActionComponents\n        actionsState={candidatePoolsState}\n        dispatch={candidatePoolsDispatch}\n      />\n    </Box>\n  );\n};\n\nexport default IndividualCandidatePoolModal;\n","import React, { Dispatch } from 'react';\nimport { TCandidate } from '../../../types';\nimport { Box } from '@mui/material';\nimport { ISnackbarInput } from '../../../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport { useQuery } from '@tanstack/react-query';\nimport { CandidatePoolAPIReturn } from '../../../types';\nimport { callPaginatedAPI } from '../../../../NewUI/Components/Utilities/callAPI';\nimport queryString from 'query-string';\nimport {\n  GenericTableAction,\n  GenericTableState\n} from '../../../../NewUI/Components/GenericTable/genericTableReducer';\nimport { headerStyles } from './emailConfig';\nimport EmailsTableRows from './EmailsTableRows';\nimport { IStyle } from '../../../../ThemeContext/ThemeObject';\nimport GenericTable from '../../../../NewUI/Components/GenericTable/GenericTable';\nimport SearchInput from '../../../../NewUI/Components/GenericTable/SearchInput';\n\nconst CandidatePoolEmailsModal = ({\n  isOpen,\n  setSnackbarState,\n  selectedPool,\n  emailsState,\n  emailsDispatch\n}: {\n  isOpen: boolean;\n  setSnackbarState: (snackbarState: ISnackbarInput) => void;\n  selectedPool: {\n    candidates: TCandidate;\n    id: number;\n    title: string;\n  };\n  emailsState: GenericTableState;\n  emailsDispatch: Dispatch<GenericTableAction>;\n}) => {\n  const { data: emails, isFetching } = useQuery({\n    queryKey: ['candidatePoolEmails', emailsState.searchQuery, emailsState.searchSettings],\n    queryFn: () => {\n      return callPaginatedAPI(\n        `/api/v4/candidate_pools/${selectedPool.id}/email_batches?${queryString.stringify(\n          {\n            ...emailsState.searchSettings,\n            'q[search]': emailsState.searchQuery\n          },\n          {\n            skipEmptyString: true,\n            skipNull: true,\n            arrayFormat: 'bracket',\n            encode: false\n          }\n        )}`,\n        null,\n        'GET'\n      ) as Promise<CandidatePoolAPIReturn>;\n    },\n    onError() {\n      setSnackbarState({\n        message: `There was an error retrieving candidate pool emails, please refresh the page and try again.`,\n        state: 'error'\n      });\n    },\n    enabled: isOpen,\n    refetchOnMount: true,\n    refetchOnReconnect: false,\n    refetchOnWindowFocus: false\n  });\n\n  return (\n    <Box>\n      <SearchInput dispatch={emailsDispatch} id=\"search-box-emails-tab\" />\n      <GenericTable\n        items={emails?.data?.analytics || []}\n        isLoadingItems={isFetching}\n        dispatch={emailsDispatch}\n        tableState={emailsState.tableState}\n        paginationState={emailsState.searchSettings}\n        pagination={{\n          totalItems: emails?.totalItems || 0,\n          totalPages: emails?.totalPages || 0\n        }}\n        headerStyle={headerStyles as (id: string, tableHovered: boolean) => IStyle}\n        TableRows={EmailsTableRows}\n        label=\"emails\"\n        titleCellId=\"email_template\"\n        allowMultipleSelection={false}\n        customEmptyStateMessage=\"have been sent yet\"\n      />\n    </Box>\n  );\n};\n\nexport default CandidatePoolEmailsModal;\n","import React, { Dispatch } from 'react';\nimport {\n  GenericTableState,\n  GenericTableAction\n} from '../../../../NewUI/Components/GenericTable/genericTableReducer';\nimport { TEmail } from '../../../types';\nimport { TableCell, Box, Tooltip } from '@mui/material';\nimport { classes } from '../../../../NewUI/Components/GenericTable/styles';\nimport FormattedDate from '../../../../NewUI/Components/GenericTable/TableCells/FormattedDate';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\nimport EmailIcon from '@mui/icons-material/Email';\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport { getStatusColor } from '../../../helper';\n\nconst CandidatePoolsTableRows = ({\n  column,\n  item,\n  tableHovered,\n  dispatch\n}: {\n  column: GenericTableState['tableState']['columns'][number];\n  item: TEmail['item'];\n  tableHovered: boolean;\n  dispatch?: Dispatch<GenericTableAction>;\n}) => {\n  if (!column.enabled) return null;\n  switch (column.id) {\n    case 'email_template': {\n      return (\n        <TableCell\n          key={`${(item.id, column.id)}`}\n          sx={{\n            ...classes.sticky,\n            ...classes.itemTitleTableCell,\n            left: '0px',\n            ...(tableHovered && classes.scrollShadowVisible),\n            cursor: 'pointer',\n            width: '150px'\n          }}\n        >\n          <Box sx={{ display: 'flex', alignItems: 'center' }}>\n            <Tooltip title={item.status} placement=\"top\" arrow>\n              <Box\n                id=\"email-status-icon\"\n                sx={{\n                  borderRadius: '6px',\n                  padding: '6px',\n                  backgroundColor: `${getStatusColor(item.status)[0]}33`\n                }}\n              >\n                <EmailIcon sx={{ color: getStatusColor(item.status)[0] }} fontSize=\"small\" />\n              </Box>\n            </Tooltip>\n            <Tooltip title={'Click here to see email Analytics'} placement=\"top\" arrow>\n              <Box\n                id=\"email-template-name-link\"\n                onClick={() => {\n                  dispatch &&\n                    dispatch({\n                      type: 'SET_SELECTED_ROW_DATA',\n                      payload: { name: item.email_template, item: item }\n                    });\n                }}\n                sx={{\n                  paddingLeft: '20px',\n                  fontWeight: 'bold',\n                  color: '#666666',\n                  '&& span:hover': {\n                    textDecoration: 'underline'\n                  }\n                }}\n              >\n                <span>{item.email_template || '-'}</span>\n              </Box>\n            </Tooltip>\n          </Box>\n        </TableCell>\n      );\n    }\n    case 'user': {\n      return (\n        <TableCell id=\"user-name-link\" key={`${(item.id, column.id)}`}>\n          {item?.user?.name ? (\n            <a href={item.user.link} target=\"_blank\" rel=\"noreferrer\">\n              {item.user.name}\n            </a>\n          ) : (\n            '-'\n          )}\n        </TableCell>\n      );\n    }\n    case 'only_new': {\n      return (\n        <TableCell key={`${(item.id, column.id)}`}>\n          <Box sx={classes.centerCellContent}>\n            {item.only_new ? (\n              <CheckCircleIcon sx={{ color: theme.palette.success.main }} fontSize=\"small\" />\n            ) : (\n              <CancelIcon sx={{ color: theme.palette.error.main }} fontSize=\"small\" />\n            )}\n          </Box>\n        </TableCell>\n      );\n    }\n    case 'include_deleted': {\n      return (\n        <TableCell key={`${(item.id, column.id)}`}>\n          <Box sx={classes.centerCellContent}>\n            {item.include_deleted ? (\n              <CheckCircleIcon sx={{ color: theme.palette.success.main }} fontSize=\"small\" />\n            ) : (\n              <CancelIcon sx={{ color: theme.palette.error.main }} fontSize=\"small\" />\n            )}\n          </Box>\n        </TableCell>\n      );\n    }\n    case 'applications': {\n      return (\n        <TableCell sx={{ textAlign: 'right' }} key={`${(item.id, column.id)}`}>\n          {item.applications || '-'}\n        </TableCell>\n      );\n    }\n    case 'delayed_to': {\n      return <TableCell key={`${(item.id, column.id)}`}>{item.delayed_to || '-'}</TableCell>;\n    }\n    case 'created_at': {\n      return (\n        <TableCell key={`${(item.id, column.id)}`}>\n          {item.created_at ? <FormattedDate date={item.created_at} /> : '-'}\n        </TableCell>\n      );\n    }\n    default:\n      return <TableCell></TableCell>;\n  }\n};\n\nexport default CandidatePoolsTableRows;\n","import React, { useState, Dispatch, useRef } from 'react';\nimport { TCandidate } from '../../../types';\nimport StyledModal from '../../../../NewUI/Components/GenericModal/StyledModal';\nimport ModalFooterButtons from '../../../../NewUI/Components/GenericModal/ModalFooterButtons';\nimport { Box, Tabs, Tab } from '@mui/material';\nimport { FormTextField } from '../../../../NewUI/Components/CustomUIElements/FormTextField';\nimport {\n  GenericTableState,\n  GenericTableAction\n} from '../../../../NewUI/Components/GenericTable/genericTableReducer';\nimport { ISnackbarInput } from '../../../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport { sharedClasses } from '../../../../NewUI/Components/CustomUIElements/sharedClasses';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport callAPI from '../../../../NewUI/Components/Utilities/callAPI';\nimport { initialTableState } from '../../../../NewUI/Components/GenericTable/genericTableReducer';\nimport { individualCandidatePoolsColumns } from './candidatesConfig';\nimport { classes } from '../../../styles';\nimport CandidateTab from './CandidatesTab';\nimport EmailTab from './EmailTab';\n\nconst IndividualCandidatePoolModal = ({\n  isOpen,\n  selectedPool,\n  individualCandidatePoolsState,\n  individualCandidatePoolsDispatch,\n  emailsState,\n  emailsDispatch,\n  handleClose,\n  setSnackbarState,\n  refetch,\n  modalTabValue,\n  setModalTabValue\n}: {\n  isOpen: boolean;\n  individualCandidatePoolsState: GenericTableState;\n  individualCandidatePoolsDispatch: Dispatch<GenericTableAction>;\n  emailsState: GenericTableState;\n  emailsDispatch: Dispatch<GenericTableAction>;\n  selectedPool: {\n    candidates: TCandidate;\n    id: number;\n    title: string;\n  };\n  handleClose: () => void;\n  setSnackbarState: (snackbarState: ISnackbarInput) => void;\n  refetch: () => void;\n  modalTabValue: number;\n  setModalTabValue: (i: number) => void;\n}) => {\n  const containerRef = useRef<HTMLDivElement>(null);\n  const [poolName, setPoolName] = useState<string>(selectedPool?.title);\n\n  const queryClient = useQueryClient();\n\n  const { mutate: updatedCandidatePool, isLoading: isLoadingUpdatePool } = useMutation({\n    mutationFn: (data: string) =>\n      callAPI(`/api/v4/candidate_pools/${selectedPool.id}`, { title: data }, 'PUT'),\n    onSuccess: () => {\n      queryClient.invalidateQueries({ queryKey: ['individualCandidatePools'] });\n      handleClose();\n    },\n    onError() {\n      setSnackbarState({\n        message: `There was an error updating the candidate pool, please refresh the page and try again.`,\n        state: 'error'\n      });\n    }\n  });\n\n  return (\n    <StyledModal\n      isOpen={isOpen}\n      handleClose={() => {\n        individualCandidatePoolsDispatch({\n          type: 'SET_DEFAULT_DATA',\n          payload: initialTableState(individualCandidatePoolsColumns, {\n            sortBy: 'created_at',\n            sortOrder: 'desc'\n          })\n        });\n        handleClose();\n        refetch();\n      }}\n      label=\"Create new candidate pool\"\n      modalTitle=\"Candidate Pool\"\n      styleOverrides={{\n        maxWidth: '1100px',\n        maxHeight: '1100px'\n      }}\n      subHeaderStyling={false}\n    >\n      <Box\n        sx={{\n          ...sharedClasses.mainModalContent,\n          height: '100%',\n          paddingInline: '2px',\n          marginTop: '15px'\n        }}\n        ref={containerRef}\n      >\n        <FormTextField\n          id=\"pool-name\"\n          label=\"Candidate pool name\"\n          value={poolName}\n          onChange={(e) => setPoolName(e.target.value)}\n          styles={{ width: '290px' }}\n        />\n        <Tabs\n          value={modalTabValue}\n          onChange={(e, value) => setModalTabValue(value)}\n          TabIndicatorProps={{\n            sx: { maxWidth: modalTabValue ? '4.8em' : '5.75em' }\n          }}\n          sx={{\n            ...classes.tabs,\n            '& .MuiTabs-indicator': {\n              ...classes.tabIndicator\n            },\n            margin: '1rem 0 2.5rem 0',\n            borderBottom: '1px solid #EEEEEE'\n          }}\n        >\n          <Tab label=\"Candidate\" id=\"candidate-tab\" />\n          <Tab label=\"Emails\" id=\"emails-tab\" />\n        </Tabs>\n        {modalTabValue ? (\n          <EmailTab\n            isOpen={isOpen}\n            setSnackbarState={setSnackbarState}\n            selectedPool={selectedPool}\n            emailsState={emailsState}\n            emailsDispatch={emailsDispatch}\n          />\n        ) : (\n          <CandidateTab\n            isOpen={isOpen}\n            setSnackbarState={setSnackbarState}\n            selectedPool={selectedPool}\n            candidatePoolsState={individualCandidatePoolsState}\n            candidatePoolsDispatch={individualCandidatePoolsDispatch}\n          />\n        )}\n      </Box>\n      <ModalFooterButtons\n        primaryButtonText=\"Update\"\n        secondaryButtonText=\"Cancel\"\n        primaryButtonCallback={() => updatedCandidatePool(poolName)}\n        secondaryButtonCallback={handleClose}\n        primaryButtonID=\"update-candidate-pool-button\"\n        secondaryButtonID=\"cancel-candidate-pool-button\"\n        primaryButtonDisabled={!poolName}\n        isLoading={isLoadingUpdatePool}\n      />\n    </StyledModal>\n  );\n};\n\nexport default IndividualCandidatePoolModal;\n","import { SxProps } from '@mui/material';\nimport { classes } from '../../../../NewUI/Components/GenericTable/styles';\n\nexport const individualCandidatePoolsColumns = [\n  {\n    id: 'candidate_name',\n    label: 'Name',\n    sortable: true,\n    canToggle: false,\n    enabled: true\n  },\n  {\n    id: 'candidate_email',\n    label: 'Email',\n    sortable: true,\n    canToggle: false,\n    enabled: true\n  },\n  {\n    id: 'added_date',\n    label: 'Date Added',\n    sortable: true,\n    canToggle: false,\n    enabled: true\n  },\n  {\n    id: 'postcode',\n    label: 'Postcode',\n    sortable: true,\n    canToggle: false,\n    enabled: true\n  },\n  {\n    id: 'candidate_phone_number',\n    label: 'Phone',\n    sortable: false,\n    canToggle: false,\n    enabled: true\n  },\n  {\n    id: 'location',\n    label: 'Location',\n    sortable: true,\n    canToggle: false,\n    enabled: true\n  },\n  {\n    id: 'unsubscribed',\n    label: 'Unsubscribed',\n    sortable: true,\n    canToggle: false,\n    enabled: true\n  }\n];\n\nexport const headerStyles = (\n  name: (typeof individualCandidatePoolsColumns)[number]['id'] | 'checkbox' | 'actions',\n  tableHovered: boolean\n): SxProps => {\n  switch (name) {\n    case 'checkbox':\n      return { ...classes.sticky, width: '58px' };\n    case 'candidate_name':\n      return { ...classes.sticky, ...classes.itemTitleTableCell, left: '58px', minWidth: '150px' };\n    case 'candidate_email':\n      return { minWidth: '150px' };\n    case 'added_date':\n      return { minWidth: '100px' };\n    case 'postcode':\n      return { minWidth: '100px' };\n    case 'location':\n      return { minWidth: '100px' };\n    case 'unsubscribed':\n      return { minWidth: '100px' };\n    case 'actions':\n      return {\n        ...classes.actionsColumnHeader,\n        ...(tableHovered && classes.scrollShadowVisible)\n      };\n    default:\n      return { minWidth: '90px' };\n  }\n};\n","import { SxProps } from '@mui/material';\nimport { classes } from '../../../../NewUI/Components/GenericTable/styles';\n\nexport const emailsColumns = [\n  {\n    id: 'email_template',\n    label: 'Email Template',\n    sortable: true,\n    canToggle: false,\n    enabled: true\n  },\n  {\n    id: 'user',\n    label: 'User',\n    sortable: true,\n    canToggle: false,\n    enabled: true\n  },\n  {\n    id: 'only_new',\n    label: 'Recently Added Candidates',\n    sortable: false,\n    canToggle: false,\n    enabled: true\n  },\n  {\n    id: 'include_deleted',\n    label: 'Include Trashed Applications',\n    sortable: false,\n    canToggle: false,\n    enabled: true\n  },\n  {\n    id: 'applications',\n    label: 'Applications',\n    sortable: false,\n    canToggle: false,\n    enabled: true\n  },\n  {\n    id: 'delayed_to',\n    label: 'Delayed to',\n    sortable: false,\n    canToggle: false,\n    enabled: true\n  },\n  {\n    id: 'created_at',\n    label: 'Created at',\n    sortable: true,\n    canToggle: false,\n    enabled: true\n  }\n];\n\nexport const headerStyles = (\n  name: (typeof emailsColumns)[number]['id'] | 'checkbox' | 'actions',\n  tableHovered: boolean\n): SxProps => {\n  switch (name) {\n    case 'email_template':\n      return {\n        ...classes.sticky,\n        ...classes.itemTitleTableCell,\n        left: '0',\n        minWidth: '180px',\n        paddingLeft: '60px !important',\n        '& span': {\n          width: '130px'\n        }\n      };\n    case 'user':\n      return { minWidth: '150px' };\n    case 'only_new':\n      return { minWidth: '120px' };\n    case 'include_deleted':\n      return { minWidth: '100px' };\n    case 'applications':\n      return { minWidth: '100px' };\n    case 'delayed_to':\n      return { minWidth: '120px' };\n    case 'created_at':\n      return { minWidth: '130px' };\n    case 'actions':\n      return {\n        ...classes.actionsColumnHeader,\n        ...(tableHovered && classes.scrollShadowVisible)\n      };\n    default:\n      return { minWidth: '90px' };\n  }\n};\n","import React from 'react';\nimport { IconButton, SvgIcon, Tooltip } from '@mui/material';\nimport { classes } from '../../../NewUI/Components/GenericTable/Dropdowns/styles';\n\nconst CreateNewPoolButton = ({ isOpen, onClick }: { isOpen: boolean; onClick: () => void }) => {\n  return (\n    <Tooltip title=\"Create new pool\" placement=\"top\" arrow>\n      <IconButton\n        id={`create-new-pool-button`}\n        sx={isOpen ? { ...classes.iconButton, ...classes.iconButtonOpen } : classes.iconButton}\n        onClick={onClick}\n      >\n        <SvgIcon sx={{ fontSize: '37px !important', transform: 'translate(2px, 4px) !important' }}>\n          <svg\n            width=\"27\"\n            height=\"27\"\n            viewBox=\"0 0 27 27\"\n            fill=\"none\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n          >\n            <path\n              d=\"M15.75 10.125H4.5C3.88125 10.125 3.375 10.6312 3.375 11.25C3.375 11.8688 3.88125 12.375 4.5 12.375H15.75C16.3687 12.375 16.875 11.8688 16.875 11.25C16.875 10.6312 16.3687 10.125 15.75 10.125ZM15.75 5.625H4.5C3.88125 5.625 3.375 6.13125 3.375 6.75C3.375 7.36875 3.88125 7.875 4.5 7.875H15.75C16.3687 7.875 16.875 7.36875 16.875 6.75C16.875 6.13125 16.3687 5.625 15.75 5.625ZM4.5 16.875H11.25C11.8687 16.875 12.375 16.3687 12.375 15.75C12.375 15.1313 11.8687 14.625 11.25 14.625H4.5C3.88125 14.625 3.375 15.1313 3.375 15.75C3.375 16.3687 3.88125 16.875 4.5 16.875Z\"\n              fill=\"#084D6D\"\n            />\n            <path\n              d=\"M21.75 13.125H14.25C13.7297 13.125 13.3172 13.5422 13.3172 14.0625L13.3125 19.6875C13.3125 20.2078 13.7297 20.625 14.25 20.625H21.75C22.2703 20.625 22.6875 20.2078 22.6875 19.6875V14.0625C22.6875 13.5422 22.2703 13.125 21.75 13.125ZM16.3594 17.9109C16.3594 18.1125 16.1906 18.2812 15.9891 18.2812C15.8719 18.2812 15.7594 18.225 15.6891 18.1266L14.6016 16.6406V17.9906C14.6016 18.1547 14.4703 18.2812 14.3109 18.2812C14.1516 18.2812 14.0156 18.15 14.0156 17.9906V15.8391C14.0156 15.6375 14.1844 15.4688 14.3859 15.4688H14.4094C14.5313 15.4688 14.6437 15.525 14.7141 15.6234L15.7734 17.1094V15.7594C15.7734 15.6 15.9047 15.4688 16.0688 15.4688C16.2328 15.4688 16.3594 15.6 16.3594 15.7594V17.9109ZM18.7031 15.7688C18.7031 15.9328 18.5719 16.0594 18.4125 16.0594H17.5312V16.5844H18.4125C18.5766 16.5844 18.7031 16.7156 18.7031 16.875V16.8797C18.7031 17.0438 18.5719 17.1703 18.4125 17.1703H17.5312V17.6906H18.4125C18.5766 17.6906 18.7031 17.8219 18.7031 17.9812C18.7031 18.1453 18.5719 18.2719 18.4125 18.2719H17.2266C17.0063 18.2719 16.8281 18.0938 16.8281 17.8734V15.8578C16.8281 15.6469 17.0063 15.4688 17.2266 15.4688H18.4125C18.5766 15.4688 18.7031 15.6 18.7031 15.7594V15.7688ZM21.9844 17.8125C21.9844 18.0703 21.7734 18.2812 21.5156 18.2812H19.6406C19.3828 18.2812 19.1719 18.0703 19.1719 17.8125V15.7594C19.1719 15.6 19.3031 15.4688 19.4625 15.4688C19.6219 15.4688 19.7531 15.6 19.7531 15.7594V17.5828H20.2828V16.2234C20.2828 16.0594 20.4141 15.9328 20.5734 15.9328C20.7328 15.9328 20.8641 16.0641 20.8641 16.2234V17.5781H21.3891V15.7594C21.3891 15.5953 21.5203 15.4688 21.6797 15.4688C21.8391 15.4688 21.9703 15.6 21.9703 15.7594V17.8125H21.9844Z\"\n              fill=\"#084D6D\"\n            />\n          </svg>\n        </SvgIcon>\n      </IconButton>\n    </Tooltip>\n  );\n};\n\nexport default CreateNewPoolButton;\n","import React, { useState } from 'react';\nimport StyledModal from '../../../NewUI/Components/GenericModal/StyledModal';\nimport ModalFooterButtons from '../../../NewUI/Components/GenericModal/ModalFooterButtons';\nimport { Box } from '@mui/material';\nimport { FormTextField } from '../../../NewUI/Components/CustomUIElements/FormTextField';\nimport { ISnackbarInput } from '../../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport { sharedClasses } from '../../../NewUI/Components/CustomUIElements/sharedClasses';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport callAPI from '../../../NewUI/Components/Utilities/callAPI';\n\nconst CreateNewPoolModal = ({\n  isOpen,\n  handleClose,\n  setSnackbarState\n}: {\n  isOpen: boolean;\n  handleClose: () => void;\n  setSnackbarState: (snackbarState: ISnackbarInput) => void;\n}) => {\n  const [poolName, setPoolName] = useState<string>('');\n\n  const queryClient = useQueryClient();\n\n  const { mutate: handleCreatePool, isLoading: savingPool } = useMutation({\n    mutationFn: () =>\n      callAPI(\n        '/api/v4/candidate_pools',\n        {\n          title: poolName,\n          params: {}\n        },\n        'POST'\n      ),\n    onSuccess: () => {\n      queryClient.invalidateQueries({ queryKey: ['candidatePools'] });\n      handleClose();\n      setPoolName('');\n    },\n    onError: () =>\n      setSnackbarState({\n        message: `There was an error creating the candidate pool`,\n        state: 'error'\n      })\n  });\n\n  return (\n    <StyledModal\n      isOpen={isOpen}\n      handleClose={handleClose}\n      label=\"Create new candidate pool\"\n      modalTitle=\"Create new candidate pool\"\n      styleOverrides={{\n        maxWidth: '700px',\n        maxHeight: '350px'\n      }}\n      subHeaderStyling={false}\n    >\n      <Box\n        sx={{\n          ...sharedClasses.mainModalContent,\n          height: '100%',\n          paddingInline: '2px',\n          marginBottom: '0px'\n        }}\n      >\n        <FormTextField\n          label=\"Candidate pool name\"\n          value={poolName}\n          onChange={(e) => e.target.value?.length <= 255 && setPoolName(e.target.value)}\n          fullWidth\n          error={poolName.length >= 255 ? 'Name length must be a maximum of 255 characters' : ''}\n        />\n      </Box>\n      <ModalFooterButtons\n        primaryButtonText=\"Create\"\n        secondaryButtonText=\"Cancel\"\n        primaryButtonCallback={handleCreatePool}\n        secondaryButtonCallback={handleClose}\n        primaryButtonID=\"create-new-pool-action-button\"\n        secondaryButtonID=\"cancel-create-pool-button\"\n        primaryButtonDisabled={!poolName || poolName.length >= 255}\n        isLoading={savingPool}\n      />\n    </StyledModal>\n  );\n};\n\nexport default CreateNewPoolModal;\n","import React from 'react';\nimport { SxProps } from '@mui/material';\nimport { classes } from '../../NewUI/Components/GenericTable/styles';\nimport { ActionListItem } from '../../NewUI/Components/GenericTable/GenericTableActions';\nimport AttachFileIcon from '@mui/icons-material/AttachFile';\nimport PictureAsPdfIcon from '@mui/icons-material/PictureAsPdf';\nimport NoteAddIcon from '@mui/icons-material/NoteAdd';\nimport EmailIcon from '@mui/icons-material/Email';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport AssessmentIcon from '@mui/icons-material/Assessment';\nimport ForwardToInboxIcon from '@mui/icons-material/ForwardToInbox';\n\nexport const candidatePoolsColumns = [\n  {\n    id: 'title',\n    label: 'Title',\n    sortable: true,\n    canToggle: false,\n    enabled: true\n  },\n  {\n    id: 'candidates_count',\n    label: 'Candidates',\n    sortable: true,\n    canToggle: true,\n    enabled: true\n  },\n  {\n    id: 'pool_tags',\n    label: 'Tags',\n    sortable: false,\n    canToggle: true,\n    enabled: true\n  },\n  {\n    id: 'created_at',\n    label: 'Created',\n    sortable: true,\n    canToggle: true,\n    enabled: true\n  },\n  {\n    id: 'last_email_date',\n    label: 'Last Email Date',\n    sortable: true,\n    canToggle: true,\n    enabled: true\n  },\n  {\n    id: 'notes',\n    label: 'Notes',\n    sortable: false,\n    canToggle: true,\n    enabled: true\n  }\n];\n\nexport const headerStyles = (\n  name: (typeof candidatePoolsColumns)[number]['id'] | 'checkbox' | 'actions',\n  tableHovered: boolean\n): SxProps => {\n  switch (name) {\n    case 'checkbox':\n      return { ...classes.sticky, width: '58px' };\n    case 'title':\n      return { ...classes.sticky, ...classes.itemTitleTableCell, left: '58px' };\n    case 'candidates_count':\n      return { width: '120px', textAlign: 'right' };\n    case 'pool_tags':\n      return { minWidth: '150px' };\n    case 'created_at':\n      return { minWidth: '150px' };\n    case 'last_email_date':\n      return { minWidth: '135px' };\n    case 'notes':\n      return { minWidth: '240px' };\n    case 'actions':\n      return {\n        ...classes.actionsColumnHeader,\n        ...(tableHovered && classes.scrollShadowVisible)\n      };\n    default:\n      return { minWidth: '90px' };\n  }\n};\n\nexport const candidatePoolActionsState = {\n  emailAnalytics: false,\n  addNote: false,\n  email: false,\n  moreOptions: false,\n  deletePool: false,\n  candidatePool: false\n};\n\nexport const candidatePoolModalState = {\n  newPool: false,\n  email: false,\n  externalEmail: false,\n  downloadAttachments: false,\n  exportAsPdf: false,\n  candidatePool: false\n};\n\nexport const poolActionDrawerModals = [\n  {\n    id: 'email',\n    label: 'Email',\n    icon: <EmailIcon />\n  },\n  {\n    id: 'externalEmail',\n    label: 'External email',\n    icon: <ForwardToInboxIcon />\n  },\n  {\n    id: 'downloadAttachments',\n    label: 'Download attachments',\n    icon: <AttachFileIcon />\n  },\n  {\n    id: 'exportAttachments',\n    label: 'Export attachments',\n    icon: <PictureAsPdfIcon />\n  },\n  {\n    id: 'exportAsPdf',\n    label: 'Export as PDF',\n    icon: <PictureAsPdfIcon />\n  }\n];\n\nexport const candidatePoolActionsList: ActionListItem[] = [\n  {\n    id: 'emailAnalytics',\n    tooltipLabel: 'Email Analytics',\n    elementId: 'email-analytics-button',\n    icon: <AssessmentIcon />\n  },\n  {\n    id: 'addNote',\n    tooltipLabel: 'Add Note',\n    elementId: 'add-note-candidate-pools-button',\n    icon: <NoteAddIcon />\n  },\n  {\n    id: 'email',\n    tooltipLabel: 'Email',\n    elementId: 'email-candidate-pools-button',\n    icon: <EmailIcon />\n  },\n  {\n    id: 'moreOptions',\n    tooltipLabel: 'More Options',\n    elementId: 'three-dots-candidate-pools-dropdown',\n    icon: <MoreVertIcon />\n  }\n];\n","import React, {\n  useReducer,\n  useCallback,\n  useRef,\n  useEffect,\n  useLayoutEffect,\n  useState\n} from 'react';\nimport { engageReducer, initialEngageState } from './reducer';\nimport { Box } from '@mui/material';\nimport { classes } from './styles';\nimport { getTabNumber, getTabParam } from './config';\nimport StyledSnackbar, {\n  ISnackbarInput\n} from '../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport EngageAISearch from './AISearch/EngageAISearch';\nimport CandidatePools from './CandidatePools/CandidatePools';\nimport TabPanel from './Tabs/TabPanel';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport { ReactQueryDevtools } from '@tanstack/react-query-devtools';\nimport {\n  genericTableReducer,\n  initialTableState\n} from '../NewUI/Components/GenericTable/genericTableReducer';\nimport {\n  candidatePoolActionsState,\n  candidatePoolModalState,\n  candidatePoolsColumns\n} from './CandidatePools/config';\nimport { individualCandidatePoolsColumns } from './CandidatePools/Modals/CandidatePool/candidatesConfig';\nimport { emailsColumns } from './CandidatePools/Modals/CandidatePool/emailConfig';\nimport Analytics from './CandidatePoolAnalytics/CandidatePoolAnalytics';\nimport TabSelector from './Tabs/TabSelector';\n\nconst URL_PARAMS = new URL(window.location.href);\nconst queryClient = new QueryClient();\n\nconst Engage = () => {\n  const [engageState, engageDispatch] = useReducer(engageReducer, initialEngageState);\n  const [candidatePoolsState, candidatePoolsDispatch] = useReducer(\n    genericTableReducer,\n    initialTableState(\n      candidatePoolsColumns,\n      { sortBy: 'created_at', sortOrder: 'desc' },\n      candidatePoolActionsState,\n      candidatePoolModalState\n    )\n  );\n  const tabIndicatorRef = useRef([]);\n  const [individualCandidatePoolsState, individualCandidatePoolsDispatch] = useReducer(\n    genericTableReducer,\n    initialTableState(individualCandidatePoolsColumns, { sortBy: 'created_at', sortOrder: 'desc' })\n  );\n  const handleTabChange = useCallback((event: React.SyntheticEvent, tabValue: number) => {\n    engageDispatch({ type: 'SET_SELECTED_TAB', payload: tabValue });\n    URL_PARAMS.search = getTabParam(tabValue);\n    window.history.pushState(null, null, URL_PARAMS.href);\n  }, []);\n  const [modalTabValue, setModalTabValue] = useState<number>(0);\n  const [emailsState, emailsDispatch] = useReducer(\n    genericTableReducer,\n    initialTableState(emailsColumns, { sortBy: 'created_at', sortOrder: 'desc' })\n  );\n\n  useEffect(() => {\n    if (URL_PARAMS.search) {\n      engageDispatch({ type: 'SET_SELECTED_TAB', payload: getTabNumber(URL_PARAMS.search) });\n    } else {\n      URL_PARAMS.search = getTabParam(0);\n      window.history.pushState(null, null, URL_PARAMS.href);\n    }\n  }, []);\n\n  useEffect(() => {\n    if (candidatePoolsState.tableState.actions.isOpen.emailAnalytics) {\n      setModalTabValue(1);\n    }\n  }, [candidatePoolsState]);\n\n  useLayoutEffect(() => {\n    !individualCandidatePoolsState.selectedRowTitle &&\n      engageDispatch({\n        type: 'SET_INDICATOR_WIDTH',\n        payload: tabIndicatorRef?.current[engageState.selectedTab]?.clientWidth\n      });\n  }, [engageState.selectedTab]);\n\n  return (\n    <QueryClientProvider client={queryClient}>\n      <>\n        <Box sx={classes.pageContainer}>\n          {emailsState.selectedRowTitle ? (\n            <Box>\n              <Analytics\n                selectedEmail={emailsState.selectedRowTitle}\n                emailsDispatch={emailsDispatch}\n                selectedCandidatePoolId={candidatePoolsState?.tableState?.actions?.selectedItem?.id}\n              />\n            </Box>\n          ) : (\n            <Box>\n              <Box sx={classes.pageHeader}>\n                <h1>:Engage</h1>\n              </Box>\n              <TabSelector\n                engageState={engageState}\n                handleTabChange={handleTabChange}\n                tabIndicatorRef={tabIndicatorRef}\n              />\n              <TabPanel tabValue={engageState.selectedTab} index={0}>\n                <EngageAISearch engageState={engageState} dispatch={engageDispatch} />\n              </TabPanel>\n              <TabPanel tabValue={engageState.selectedTab} index={1}>\n                <CandidatePools\n                  candidatePoolsState={candidatePoolsState}\n                  dispatch={candidatePoolsDispatch}\n                  setSnackbarState={(snackbarInput: ISnackbarInput) => {\n                    engageDispatch({ type: 'SET_SNACKBAR', payload: snackbarInput });\n                    candidatePoolsDispatch({ type: 'SET_SNACKBAR', payload: snackbarInput });\n                  }}\n                  individualCandidatePoolsState={individualCandidatePoolsState}\n                  individualCandidatePoolsDispatch={individualCandidatePoolsDispatch}\n                  emailsState={emailsState}\n                  emailsDispatch={emailsDispatch}\n                  modalTabValue={modalTabValue}\n                  setModalTabValue={setModalTabValue}\n                />\n              </TabPanel>\n            </Box>\n          )}\n          <ReactQueryDevtools initialIsOpen={false} />\n        </Box>\n        <StyledSnackbar\n          message={engageState.snackbarState.message || candidatePoolsState.snackbarState.message}\n          state={engageState.snackbarState.state || candidatePoolsState.snackbarState.state}\n          setSnackbarState={(snackbarInput: ISnackbarInput) => {\n            engageDispatch({ type: 'SET_SNACKBAR', payload: snackbarInput });\n            candidatePoolsDispatch({ type: 'SET_SNACKBAR', payload: snackbarInput });\n          }}\n        />\n      </>\n    </QueryClientProvider>\n  );\n};\n\nexport default Engage;\n","import React from 'react';\n\nconst SelectJobSVG = () => {\n  return (\n    <svg\n      width=\"196\"\n      height=\"142\"\n      viewBox=\"0 0 196 142\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <g clipPath=\"url(#clip0_11186_5423)\">\n        <ellipse cx=\"98.5\" cy=\"135.5\" rx=\"54.5\" ry=\"6.5\" fill=\"#E5E5E5\" />\n        <path\n          d=\"M53.4777 62.6239L53.478 62.6236C56.3459 59.7532 60.1077 58.29 65.5892 57.5527C71.0852 56.8136 78.2346 56.8125 87.8333 56.8125H108.167C117.765 56.8125 124.915 56.8136 130.411 57.5527C135.892 58.29 139.654 59.7532 142.522 62.6236L142.522 62.6239C145.393 65.4917 146.856 69.2535 147.593 74.7351C148.332 80.231 148.333 87.3804 148.333 96.9792C148.333 106.578 148.332 113.727 147.593 119.223C146.856 124.705 145.393 128.467 142.522 131.334L142.522 131.335C139.654 134.205 135.892 135.668 130.411 136.406C124.915 137.145 117.765 137.146 108.167 137.146H87.8333C78.2346 137.146 71.0852 137.145 65.5892 136.406C60.1077 135.668 56.3459 134.205 53.478 131.335L53.4777 131.334C50.6074 128.467 49.1442 124.705 48.4069 119.223C47.6677 113.727 47.6667 106.578 47.6667 96.9792C47.6667 87.3804 47.6677 80.231 48.4069 74.7351C49.1442 69.2535 50.6074 65.4917 53.4777 62.6239Z\"\n          fill=\"#EAEAEA\"\n          stroke=\"#CFCFCF\"\n        />\n        <path\n          d=\"M110.852 104.422C108.693 106.421 106.041 107.815 103.166 108.461C98.405 109.596 93.3911 108.926 89.098 106.581C88.119 106.071 87.2066 105.443 86.3812 104.711C85.9724 104.331 86.8813 104.262 87.1451 104.504C90.1919 107.339 94.9917 108.533 99.0312 108.391C103.094 108.308 106.988 106.757 109.991 104.028C110.25 103.768 111.137 104.128 110.854 104.413L110.852 104.422Z\"\n          fill=\"#A2A2A2\"\n        />\n        <path\n          d=\"M88.0606 98.052C88.6241 97.4901 88.6241 96.5792 88.0606 96.0174C87.4972 95.4555 86.5836 95.4555 86.0202 96.0174C85.4568 96.5792 85.4568 97.4901 86.0202 98.052C86.5836 98.6138 87.4972 98.6138 88.0606 98.052Z\"\n          fill=\"#A2A2A2\"\n        />\n        <path\n          d=\"M110.694 98.052C111.258 97.4901 111.258 96.5792 110.694 96.0174C110.131 95.4555 109.217 95.4555 108.654 96.0174C108.09 96.5792 108.09 97.4901 108.654 98.052C109.217 98.6138 110.131 98.6138 110.694 98.052Z\"\n          fill=\"#A2A2A2\"\n        />\n        <path\n          d=\"M118.333 76.6459C119.682 76.6459 120.974 76.1104 121.928 75.157C122.881 74.2037 123.417 72.9108 123.417 71.5626C123.417 70.2144 122.881 68.9214 121.928 67.9681C120.974 67.0148 119.682 66.4792 118.333 66.4792C116.985 66.4792 115.692 67.0148 114.739 67.9681C113.786 68.9214 113.25 70.2144 113.25 71.5626C113.25 72.9108 113.786 74.2037 114.739 75.157C115.692 76.1104 116.985 76.6459 118.333 76.6459ZM82.75 71.5626C82.75 72.9108 82.2144 74.2037 81.2611 75.157C80.3078 76.1104 79.0149 76.6459 77.6667 76.6459C76.3185 76.6459 75.0255 76.1104 74.0722 75.157C73.1189 74.2037 72.5833 72.9108 72.5833 71.5626C72.5833 70.2144 73.1189 68.9214 74.0722 67.9681C75.0255 67.0148 76.3185 66.4792 77.6667 66.4792C79.0149 66.4792 80.3078 67.0148 81.2611 67.9681C82.2144 68.9214 82.75 70.2144 82.75 71.5626ZM98.2643 32.1667H97.7357C93.1658 32.1667 89.3583 32.1667 86.3388 32.5734C83.1465 33.0004 80.2643 33.9459 77.9513 36.2588C75.6333 38.5768 74.6878 41.4591 74.2608 44.6463C73.8542 47.6709 73.8542 51.4834 73.8542 56.0482V56.4447C76.1773 56.3685 78.7088 56.338 81.4792 56.3227V56.3126C81.4792 51.4122 81.4893 48.1182 81.8198 45.663C82.1349 43.3196 82.6788 42.3131 83.3448 41.6522C84.0056 40.9914 85.007 40.4475 87.3504 40.1272C89.8057 39.8019 93.0997 39.7917 98 39.7917C102.9 39.7917 106.194 39.8019 108.65 40.1323C110.993 40.4475 112 40.9914 112.66 41.6573C113.321 42.3182 113.865 43.3196 114.185 45.663C114.511 48.1182 114.521 51.4122 114.521 56.3126V56.3227C117.063 56.3284 119.605 56.3691 122.146 56.4447V56.0482C122.146 51.4834 122.146 47.6709 121.739 44.6514C121.312 41.4591 120.367 38.5768 118.049 36.2639C115.736 33.9459 112.854 33.0004 109.661 32.5734C106.642 32.1667 102.829 32.1667 98.2643 32.1667Z\"\n          fill=\"#D1D1D1\"\n        />\n        <path\n          d=\"M173 56.2517L172.842 56.7261L173 56.2517ZM166.66 85.8853C166.457 86.0732 166.446 86.3896 166.634 86.5919C166.822 86.7943 167.138 86.806 167.34 86.6181L166.66 85.8853ZM168.131 85.8596C168.327 85.6652 168.328 85.3486 168.134 85.1525C167.94 84.9563 167.623 84.9548 167.427 85.1492L168.131 85.8596ZM168.895 83.6057C168.71 83.8111 168.727 84.1273 168.933 84.3118C169.138 84.4964 169.454 84.4795 169.639 84.2741L168.895 83.6057ZM171.056 82.612C171.23 82.3975 171.197 82.0826 170.982 81.9087C170.768 81.7349 170.453 81.7679 170.279 81.9824L171.056 82.612ZM171.586 80.2912C171.422 80.5135 171.469 80.8265 171.691 80.9904C171.913 81.1543 172.226 81.107 172.39 80.8848L171.586 80.2912ZM173.646 79.104C173.801 78.8751 173.74 78.5644 173.511 78.4099C173.282 78.2555 172.972 78.3158 172.817 78.5448L173.646 79.104ZM173.979 76.7463C173.834 76.9812 173.906 77.2893 174.141 77.4346C174.376 77.5798 174.684 77.5071 174.829 77.2722L173.979 76.7463ZM175.939 75.3966C176.075 75.1562 175.99 74.8512 175.749 74.7154C175.509 74.5795 175.204 74.6643 175.068 74.9047L175.939 75.3966ZM176.082 73.0214C175.956 73.2673 176.054 73.5685 176.299 73.6941C176.545 73.8197 176.847 73.7221 176.972 73.4762L176.082 73.0214ZM177.917 71.5085C178.029 71.2564 177.916 70.9607 177.664 70.8481C177.412 70.7355 177.116 70.8487 177.003 71.1008L177.917 71.5085ZM177.784 69.139C177.697 69.4012 177.84 69.6839 178.102 69.7704C178.364 69.8568 178.647 69.7143 178.733 69.4521L177.784 69.139ZM179.155 67.4098C179.222 67.142 179.06 66.8703 178.792 66.8031C178.524 66.7358 178.253 66.8983 178.185 67.1662L179.155 67.4098ZM178.694 65.2622C178.625 65.5294 178.785 65.8024 179.052 65.872C179.319 65.9415 179.592 65.7812 179.662 65.514L178.694 65.2622ZM180.118 63.5737C180.173 63.3032 179.999 63.0388 179.729 62.9832C179.458 62.9276 179.194 63.1018 179.138 63.3723L180.118 63.5737ZM179.464 61.4682C179.427 61.7418 179.619 61.9937 179.893 62.0307C180.166 62.0677 180.418 61.8759 180.455 61.6023L179.464 61.4682ZM180.648 59.6057C180.664 59.33 180.453 59.0938 180.177 59.0781C179.902 59.0624 179.665 59.2732 179.65 59.5488L180.648 59.6057ZM179.679 57.6244C179.687 57.9004 179.917 58.1181 180.193 58.1106C180.469 58.1031 180.686 57.8732 180.679 57.5972L179.679 57.6244ZM180.536 55.5925C180.504 55.3182 180.256 55.1217 179.982 55.1535C179.707 55.1854 179.511 55.4336 179.543 55.7079L180.536 55.5925ZM179.235 53.8134C179.291 54.0836 179.556 54.2568 179.827 54.2001C180.097 54.1434 180.27 53.8784 180.214 53.6081L179.235 53.8134ZM179.699 51.6556C179.611 51.3936 179.328 51.252 179.066 51.3394C178.804 51.4267 178.663 51.7099 178.75 51.9718L179.699 51.6556ZM178.011 50.2877C178.149 50.5269 178.455 50.6089 178.694 50.4709C178.934 50.3329 179.016 50.0272 178.878 49.788L178.011 50.2877ZM177.552 48.1548C177.342 47.9762 177.026 48.0023 176.847 48.213C176.669 48.4236 176.695 48.7391 176.906 48.9177L177.552 48.1548ZM175.403 48.1666C175.673 48.2246 175.939 48.0527 175.997 47.7828C176.055 47.5128 175.883 47.2469 175.613 47.1889L175.403 48.1666ZM173.471 47.2204C173.202 47.2802 173.032 47.5472 173.091 47.8168C173.151 48.0864 173.418 48.2565 173.688 48.1967L173.471 47.2204ZM172.035 48.8562C172.273 48.7157 172.352 48.4091 172.211 48.1714C172.071 47.9336 171.764 47.8548 171.526 47.9952L172.035 48.8562ZM169.933 49.7248C169.814 49.974 169.919 50.2725 170.168 50.3915C170.418 50.5106 170.716 50.4052 170.835 50.156L169.933 49.7248ZM170.328 52.1379C170.34 51.862 170.126 51.6287 169.851 51.6167C169.575 51.6047 169.341 51.8187 169.329 52.0946L170.328 52.1379ZM169.897 54.5396C170.036 54.7781 170.342 54.8588 170.58 54.7197C170.819 54.5806 170.9 54.2744 170.761 54.0359L169.897 54.5396ZM172.198 55.3671C171.956 55.2354 171.652 55.3255 171.521 55.5682C171.389 55.8109 171.479 56.1144 171.722 56.2461L172.198 55.3671ZM173.822 56.9649C174.095 57.0063 174.35 56.8186 174.391 56.5455C174.433 56.2725 174.245 56.0176 173.972 55.9762L173.822 56.9649ZM175.588 55.8815C175.323 55.9583 175.17 56.2355 175.247 56.5008C175.324 56.766 175.601 56.9188 175.866 56.842L175.588 55.8815ZM177.66 55.883C177.874 55.7091 177.907 55.3942 177.733 55.1797C177.559 54.9652 177.245 54.9322 177.03 55.1061L177.66 55.883ZM178.193 53.851C178.031 54.0745 178.081 54.3871 178.304 54.5494C178.528 54.7116 178.84 54.662 179.003 54.4386L178.193 53.851ZM179.994 52.7867C180.117 52.5398 180.017 52.2394 179.77 52.1158C179.523 51.9922 179.223 52.0922 179.099 52.3391L179.994 52.7867ZM179.806 50.6929C179.711 50.9519 179.843 51.2395 180.102 51.3352C180.361 51.4309 180.649 51.2986 180.744 51.0395L179.806 50.6929ZM181.325 49.2418C181.399 48.976 181.245 48.6999 180.979 48.6251C180.713 48.5503 180.437 48.7051 180.362 48.971L181.325 49.2418ZM180.798 47.2099C180.739 47.4798 180.911 47.746 181.181 47.8044C181.45 47.8629 181.717 47.6915 181.775 47.4216L180.798 47.2099ZM182.125 45.5816C182.17 45.3092 181.986 45.0518 181.713 45.0067C181.441 44.9616 181.183 45.1459 181.138 45.4183L182.125 45.5816ZM181.399 43.6086C181.365 43.8826 181.56 44.1323 181.834 44.1662C182.108 44.2001 182.357 44.0054 182.391 43.7313L181.399 43.6086ZM182.573 41.7403C182.584 41.4644 182.369 41.232 182.093 41.2213C181.817 41.2106 181.584 41.4256 181.574 41.7015L182.573 41.7403ZM181.54 39.6872C181.558 39.9627 181.797 40.1709 182.072 40.1523C182.348 40.1337 182.556 39.8952 182.537 39.6197L181.54 39.6872ZM182.306 37.5226C182.265 37.2495 182.011 37.0613 181.738 37.1022C181.464 37.1431 181.276 37.3977 181.317 37.6708L182.306 37.5226ZM180.948 35.6666C181.007 35.9365 181.273 36.1081 181.543 36.0498C181.813 35.9915 181.984 35.7255 181.926 35.4555L180.948 35.6666ZM181.429 33.4194C181.357 33.1529 181.082 32.9953 180.816 33.0675C180.549 33.1397 180.392 33.4143 180.464 33.6808L181.429 33.4194ZM179.885 31.7159C179.968 31.9791 180.249 32.1247 180.512 32.041C180.776 31.9574 180.921 31.6763 180.838 31.4131L179.885 31.7159ZM180.168 29.4349C180.074 29.175 179.788 29.0399 179.528 29.1332C179.268 29.2265 179.133 29.5128 179.226 29.7727L180.168 29.4349ZM178.501 27.8516C178.603 28.1083 178.893 28.2341 179.15 28.1325C179.407 28.0308 179.532 27.7403 179.431 27.4835L178.501 27.8516ZM178.636 25.5593C178.527 25.3056 178.233 25.1884 177.979 25.2974C177.726 25.4065 177.608 25.7005 177.717 25.9542L178.636 25.5593ZM176.878 24.0723C176.994 24.323 177.291 24.4322 177.541 24.3163C177.792 24.2004 177.901 23.9032 177.785 23.6526L176.878 24.0723ZM176.886 21.7738C176.763 21.5264 176.464 21.4251 176.216 21.5476C175.969 21.6701 175.867 21.9701 175.99 22.2176L176.886 21.7738ZM175.053 20.3908C175.183 20.6345 175.485 20.7268 175.729 20.597C175.973 20.4672 176.065 20.1644 175.935 19.9206L175.053 20.3908ZM167.34 86.6181C167.607 86.3699 167.871 86.1169 168.131 85.8596L167.427 85.1492C167.175 85.3992 166.919 85.6447 166.66 85.8853L167.34 86.6181ZM169.639 84.2741C170.127 83.7303 170.6 83.1745 171.056 82.612L170.279 81.9824C169.833 82.5326 169.371 83.0754 168.895 83.6057L169.639 84.2741ZM172.39 80.8848C172.828 80.2911 173.247 79.6956 173.646 79.104L172.817 78.5448C172.425 79.1253 172.015 79.7094 171.586 80.2912L172.39 80.8848ZM174.829 77.2722C175.225 76.6324 175.595 76.0046 175.939 75.3966L175.068 74.9047C174.731 75.5015 174.367 76.118 173.979 76.7463L174.829 77.2722ZM176.972 73.4762C177.333 72.7696 177.649 72.1083 177.917 71.5085L177.003 71.1008C176.743 71.6836 176.435 72.3292 176.082 73.0214L176.972 73.4762ZM178.733 69.4521C178.892 68.9707 179 68.5436 179 68.2517H178C178 68.3651 177.944 68.6536 177.784 69.139L178.733 69.4521ZM179 68.2517C179 68.1012 179.049 67.8341 179.155 67.4098L178.185 67.1662C178.082 67.5773 178 67.9596 178 68.2517H179ZM179.662 65.514C179.813 64.9349 179.971 64.285 180.118 63.5737L179.138 63.3723C178.996 64.0617 178.842 64.6939 178.694 65.2622L179.662 65.514ZM180.455 61.6023C180.541 60.9687 180.608 60.3019 180.648 59.6057L179.65 59.5488C179.612 60.2168 179.547 60.8578 179.464 61.4682L180.455 61.6023ZM180.679 57.5972C180.661 56.9475 180.616 56.2783 180.536 55.5925L179.543 55.7079C179.619 56.3631 179.662 57.0027 179.679 57.6244L180.679 57.5972ZM180.214 53.6081C180.146 53.2838 180.069 52.9566 179.984 52.6268L179.016 52.8766C179.097 53.1915 179.17 53.5038 179.235 53.8134L180.214 53.6081ZM179.984 52.6268C179.896 52.2843 179.8 51.9608 179.699 51.6556L178.75 51.9718C178.844 52.2538 178.933 52.555 179.016 52.8766L179.984 52.6268ZM178.878 49.788C178.482 49.1015 178.035 48.5639 177.552 48.1548L176.906 48.9177C177.29 49.2432 177.665 49.6877 178.011 50.2877L178.878 49.788ZM175.613 47.1889C174.867 47.0286 174.132 47.0738 173.471 47.2204L173.688 48.1967C174.241 48.074 174.827 48.0428 175.403 48.1666L175.613 47.1889ZM171.526 47.9952C171.151 48.2171 170.843 48.4499 170.646 48.6464L171.354 49.3536C171.473 49.2337 171.707 49.0499 172.035 48.8562L171.526 47.9952ZM170.646 48.6464C170.399 48.8936 170.147 49.2772 169.933 49.7248L170.835 50.156C171.02 49.7684 171.214 49.4929 171.354 49.3536L170.646 48.6464ZM169.329 52.0946C169.295 52.894 169.437 53.751 169.897 54.5396L170.761 54.0359C170.418 53.4477 170.3 52.7904 170.328 52.1379L169.329 52.0946ZM171.722 56.2461C172.056 56.4273 172.428 56.5881 172.842 56.7261L173.158 55.7774C172.795 55.6562 172.477 55.5179 172.198 55.3671L171.722 56.2461ZM172.842 56.7261C173.173 56.8363 173.499 56.916 173.822 56.9649L173.972 55.9762C173.71 55.9364 173.439 55.8708 173.158 55.7774L172.842 56.7261ZM175.866 56.842C176.511 56.6554 177.109 56.3292 177.66 55.883L177.03 55.1061C176.571 55.4784 176.09 55.7362 175.588 55.8815L175.866 56.842ZM179.003 54.4386C179.359 53.9484 179.689 53.3958 179.994 52.7867L179.099 52.3391C178.815 52.9069 178.513 53.4115 178.193 53.851L179.003 54.4386ZM180.744 51.0395C180.953 50.4745 181.147 49.8745 181.325 49.2418L180.362 48.971C180.191 49.5806 180.005 50.1551 179.806 50.6929L180.744 51.0395ZM181.775 47.4216C181.903 46.8307 182.02 46.217 182.125 45.5816L181.138 45.4183C181.036 46.0386 180.922 46.6362 180.798 47.2099L181.775 47.4216ZM182.391 43.7313C182.429 43.4264 182.464 43.1173 182.497 42.8041L181.503 42.6994C181.47 43.0067 181.436 43.3098 181.399 43.6086L182.391 43.7313ZM182.497 42.8041C182.534 42.4543 182.559 42.0994 182.573 41.7403L181.574 41.7015C181.561 42.0399 181.537 42.3728 181.503 42.6994L182.497 42.8041ZM182.537 39.6197C182.491 38.9286 182.412 38.2277 182.306 37.5226L181.317 37.6708C181.419 38.3522 181.495 39.026 181.54 39.6872L182.537 39.6197ZM181.926 35.4555C181.779 34.7751 181.612 34.0948 181.429 33.4194L180.464 33.6808C180.643 34.3411 180.806 35.0046 180.948 35.6666L181.926 35.4555ZM180.838 31.4131C180.624 30.7425 180.4 30.0815 180.168 29.4349L179.226 29.7727C179.455 30.4087 179.675 31.058 179.885 31.7159L180.838 31.4131ZM179.431 27.4835C179.167 26.8171 178.9 26.1736 178.636 25.5593L177.717 25.9542C177.978 26.5603 178.241 27.1948 178.501 27.8516L179.431 27.4835ZM177.785 23.6526C177.467 22.9639 177.163 22.3333 176.886 21.7738L175.99 22.2176C176.263 22.7698 176.563 23.3924 176.878 24.0723L177.785 23.6526ZM175.935 19.9206C175.779 19.6276 175.655 19.3993 175.568 19.2438C175.525 19.1661 175.492 19.1065 175.469 19.0661C175.458 19.0459 175.449 19.0306 175.443 19.0201C175.441 19.0149 175.438 19.0109 175.437 19.0081C175.436 19.0068 175.435 19.0057 175.435 19.0049C175.435 19.0046 175.434 19.0043 175.434 19.0041C175.434 19.0039 175.434 19.0039 175.434 19.0038C175.434 19.0038 175.434 19.0037 175.434 19.0037C175.434 19.0037 175.434 19.0037 175.434 19.0037C175.434 19.0037 175.434 19.0036 175 19.2517C174.566 19.4998 174.566 19.4998 174.566 19.4998C174.566 19.4998 174.566 19.4998 174.566 19.4997C174.566 19.4997 174.566 19.4997 174.566 19.4997C174.566 19.4998 174.566 19.4998 174.566 19.4998C174.566 19.4999 174.566 19.5001 174.566 19.5004C174.567 19.5009 174.567 19.5017 174.568 19.5028C174.569 19.5051 174.571 19.5086 174.574 19.5133C174.579 19.5228 174.587 19.5372 174.598 19.5564C174.619 19.5947 174.652 19.6522 174.693 19.7278C174.777 19.879 174.899 20.1027 175.053 20.3908L175.935 19.9206Z\"\n          fill=\"#CFCFCF\"\n        />\n        <path\n          d=\"M178.629 15.5261L171.943 15.2838C171.863 15.2793 171.781 15.2906 171.7 15.3171C171.62 15.3436 171.543 15.3848 171.475 15.4381C171.407 15.4915 171.348 15.556 171.303 15.6276C171.258 15.6993 171.227 15.7766 171.213 15.855L169.835 22.4023\"\n          stroke=\"#CFCFCF\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n        />\n      </g>\n      <defs>\n        <clipPath id=\"clip0_11186_5423\">\n          <rect width=\"196\" height=\"142\" fill=\"white\" />\n        </clipPath>\n      </defs>\n    </svg>\n  );\n};\n\nexport default SelectJobSVG;\n","import React from 'react';\nimport { ToggleButton, ToggleButtonGroup } from '@mui/material';\nimport { classes } from './styles';\nimport { IBooleanQueryObject } from './booleanQueryParser';\n\nconst AndOrToggle = ({\n  index,\n  editableBooleanObject,\n  onChange,\n  changeBase,\n  hasExclude = false\n}: {\n  index: number;\n  editableBooleanObject?: IBooleanQueryObject;\n  onChange: (index: number, value: string) => void;\n  changeBase?: boolean;\n  hasExclude?: boolean;\n}) => {\n  return (\n    <ToggleButtonGroup\n      value={editableBooleanObject?.[changeBase ? 'baseOperator' : 'operator'] || ''}\n      exclusive\n      onChange={(_, value) => onChange(index, value)}\n      sx={classes.booleanEditorOperatorGroup}\n    >\n      <ToggleButton id=\"add-button\" value=\"AND\" sx={classes.booleanEditorOperatorButton}>\n        And\n      </ToggleButton>\n      <ToggleButton id=\"or-button\" value=\"OR\" sx={classes.booleanEditorOperatorButton}>\n        Or\n      </ToggleButton>\n      {hasExclude && (\n        <ToggleButton value=\"NOT\" sx={{ ...classes.booleanEditorOperatorButton, width: '85px' }}>\n          Exclude\n        </ToggleButton>\n      )}\n    </ToggleButtonGroup>\n  );\n};\n\nexport default AndOrToggle;\n","import React, { useState, Dispatch, SetStateAction, Fragment } from 'react';\nimport { Box, IconButton } from '@mui/material';\nimport { IBooleanQueryObject } from './booleanQueryParser';\nimport CloseIcon from '@mui/icons-material/Close';\nimport AddIcon from '@mui/icons-material/Add';\nimport { classes } from './styles';\nimport AndOrToggle from './AndOrToggle';\n\nconst BooleanEditor = ({\n  editableBooleanArray,\n  setEditableBooleanArray\n}: {\n  editableBooleanArray: IBooleanQueryObject[];\n  setEditableBooleanArray: Dispatch<SetStateAction<IBooleanQueryObject[]>>;\n}) => {\n  const [addValue, setAddValue] = useState({\n    rowIndex: -1,\n    value: ''\n  });\n  const [isAddingRow, setIsAddingRow] = useState(false);\n\n  const addValueToRow = (rowIndex: number, value: string) => {\n    setAddValue({\n      rowIndex: -1,\n      value: ''\n    });\n    if (value === '') return;\n    const newEditableBooleanArray = [...editableBooleanArray];\n    newEditableBooleanArray[rowIndex].queryValues.push(value);\n    setEditableBooleanArray(newEditableBooleanArray);\n  };\n\n  const removeValue = (rowIndex: number, valueIndex: number) => {\n    const newEditableBooleanArray = [...editableBooleanArray];\n    newEditableBooleanArray[rowIndex].queryValues.splice(valueIndex, 1);\n    setEditableBooleanArray(newEditableBooleanArray);\n  };\n\n  const addRow = (rowIndex: number, value: string) => {\n    const newEditableBooleanArray = [...editableBooleanArray];\n    newEditableBooleanArray.push({\n      id: rowIndex,\n      baseOperator: value,\n      operator: 'AND',\n      queryValues: []\n    });\n    setEditableBooleanArray(newEditableBooleanArray);\n    setIsAddingRow(false);\n    setAddValue({\n      rowIndex: rowIndex,\n      value: ''\n    });\n  };\n\n  const removeRow = (rowIndex: number) => {\n    const newEditableBooleanArray = [...editableBooleanArray];\n    newEditableBooleanArray.splice(rowIndex, 1);\n    setEditableBooleanArray(newEditableBooleanArray);\n  };\n\n  const changeBaseOperator = (rowIndex: number, value: string) => {\n    if (editableBooleanArray[rowIndex].baseOperator === value || !value) return;\n    const newEditableBooleanArray = [...editableBooleanArray];\n    newEditableBooleanArray[rowIndex].baseOperator = value;\n    setEditableBooleanArray(newEditableBooleanArray);\n  };\n\n  const changeOperator = (rowIndex: number, value: string) => {\n    if (editableBooleanArray[rowIndex].operator === value || !value) return;\n    const newEditableBooleanArray = [...editableBooleanArray];\n    newEditableBooleanArray[rowIndex].operator = value;\n    setEditableBooleanArray(newEditableBooleanArray);\n  };\n\n  return (\n    <Box sx={classes.booleanEditorContainer}>\n      {editableBooleanArray.map((editableBooleanObject, index) => (\n        <Box sx={classes.booleanEditorRow} key={editableBooleanObject.id}>\n          <Box sx={classes.booleanEditorValuesContainer}>\n            {editableBooleanObject.queryValues.map((queryValue, valueIndex) => (\n              <Fragment key={valueIndex}>\n                <Box sx={classes.booleanEditorValue}>\n                  <Box>{queryValue}</Box>\n                  <IconButton\n                    sx={classes.booleanEditorRemoveValueButton}\n                    onClick={() => removeValue(index, valueIndex)}\n                    id=\"close-\"\n                  >\n                    <CloseIcon color=\"inherit\" />\n                  </IconButton>\n                </Box>\n                {valueIndex !== editableBooleanObject.queryValues.length - 1 && (\n                  <AndOrToggle\n                    index={index}\n                    editableBooleanObject={editableBooleanObject}\n                    onChange={changeOperator}\n                  />\n                )}\n              </Fragment>\n            ))}\n            {addValue.rowIndex === index ? (\n              <input\n                type=\"text\"\n                size={1}\n                style={classes.booleanEditorValueInput}\n                value={addValue.value}\n                onKeyDown={(e) => {\n                  if (e.key === 'Enter') {\n                    addValueToRow(index, addValue.value);\n                  }\n                }}\n                onChange={(e) => setAddValue({ rowIndex: index, value: e.target.value })}\n                onBlur={() => addValueToRow(index, addValue.value)}\n                onInput={(e) =>\n                  (e.target as HTMLInputElement).setAttribute(\n                    'size',\n                    `${(e.target as HTMLInputElement).value.length || 1}`\n                  )\n                }\n                autoFocus={true}\n              />\n            ) : (\n              <IconButton\n                sx={classes.booleanEditorAddButton}\n                onClick={() => setAddValue({ rowIndex: index, value: '' })}\n              >\n                <AddIcon color=\"inherit\" />\n              </IconButton>\n            )}\n          </Box>\n          {editableBooleanObject.baseOperator !== 'ROOT' && (\n            <>\n              <Box sx={classes.booleanEditorRemoveRowButtonContainer}>\n                <IconButton\n                  sx={classes.booleanEditorRemoveRowButton}\n                  onClick={() => removeRow(index)}\n                  id=\"delete-preference-button\"\n                >\n                  <CloseIcon color=\"inherit\" />\n                </IconButton>\n              </Box>\n              <Box sx={classes.booleanEditorOperatorContainer}>\n                <AndOrToggle\n                  index={index}\n                  editableBooleanObject={editableBooleanObject}\n                  onChange={changeBaseOperator}\n                  changeBase={true}\n                  hasExclude\n                />\n              </Box>\n            </>\n          )}\n        </Box>\n      ))}\n      <Box sx={{ transform: 'translateY(-16px)' }}>\n        {isAddingRow ? (\n          <AndOrToggle\n            index={editableBooleanArray.length}\n            onChange={addRow}\n            hasExclude\n          />\n        ) : (\n          <IconButton\n            id=\"add-preference-button\"\n            sx={classes.booleanEditorAddButton}\n            onClick={() => setIsAddingRow(true)}\n          >\n            <AddIcon color=\"inherit\" />\n          </IconButton>\n        )}\n      </Box>\n    </Box>\n  );\n};\n\nexport default BooleanEditor;\n","import React, { Dispatch, useRef, useState } from 'react';\nimport StyledModal from '../../../NewUI/Components/GenericModal/StyledModal';\nimport ModalFooterButtons from '../../../NewUI/Components/GenericModal/ModalFooterButtons';\nimport { useQuery } from '@tanstack/react-query';\nimport { sharedClasses } from '../../../NewUI/Components/CustomUIElements/sharedClasses';\nimport VirtualizeGrouped, {\n  formatOptions\n} from '../../../NewUI/Components/CustomUIElements/VirtualizedGroupedAutocomplete';\nimport { Box, Checkbox, FormControlLabel } from '@mui/material';\nimport { FormTextField } from '../../../NewUI/Components/CustomUIElements/FormTextField';\nimport HtmlEditor from '../../../NewUI/Components/Utilities/HtmlEditor';\nimport AttachmentSelectorAndPreview from '../../../NewUI/Components/CustomUIElements/AttachmentSelectorAndPreview';\nimport { EngageAction } from '../../reducer';\nimport { FileWithPath } from 'react-dropzone';\nimport callAPI from '../../../NewUI/Components/Utilities/callAPI';\nimport { handleAPIRequest } from '../../../NewUI/Components/Utilities/handleAPIRequest';\nimport { stringToSeconds } from '../../../NewUI/Components/Utilities/stringToSeconds';\nimport { ISnackbarInput } from '../../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport DelaySelectWrapper from '../../../NewUI/EditJob/Automation/shared/DelaySelectWrapper';\n\nconst EmailCandidate = ({\n  selectedCandidateIds,\n  selectedPoolIds,\n  dispatch,\n  isOpen,\n  setSnackbarState,\n  openedFromTableActions = false,\n  showTotalSelectedCandidates = true\n}: {\n  selectedCandidateIds?: number[];\n  selectedPoolIds?: number[];\n  dispatch: Dispatch<EngageAction>;\n  isOpen: boolean;\n  setSnackbarState: (snackbarState: ISnackbarInput) => void;\n  openedFromTableActions?: boolean;\n  showTotalSelectedCandidates?: boolean;\n}) => {\n  const [isSendingEmails, setIsSendingEmails] = useState(false);\n  const [selectedTemplate, setSelectedTemplate] = useState<string | null>(null);\n  const [excludeApplicants, setExcludeApplicants] = useState(false);\n  const [skipScoutTalentClients, setSkipScoutTalentClients] = useState(true);\n  const [templateError, setTemplateError] = useState(false);\n  const [delay, setDelay] = useState<string>('None');\n  const [subject, setSubject] = useState<string>('');\n  const [body, setBody] = useState<string>('');\n  const [attachments, setAttachments] = useState<FileWithPath[]>([]);\n  const [templateAttachments, setTemplateAttachments] = useState([]);\n  const templateSelectionRef = useRef<HTMLDivElement>(null);\n\n  const emailTemplates = useQuery({\n    queryKey: ['emailTemplates'],\n    queryFn: async () => {\n      const { email_templates, placeholders } = await callAPI(\n        '/api/v4/searches/email_templates?group_templates=true'\n      );\n      return { email_templates: formatOptions(email_templates), placeholders };\n    },\n    onError: (error) => {\n      setSnackbarState({\n        message:\n          error?.errors || error?.message || 'There was an error getting the email templates',\n        state: 'error'\n      });\n    }\n  });\n\n  const handleSendEmails = () => {\n    if (!selectedTemplate) {\n      setTemplateError(true);\n      templateSelectionRef?.current?.scrollIntoView({ behavior: 'smooth' });\n      return;\n    }\n    const data = {\n      email_batch: {\n        ...(selectedCandidateIds && { candidate_ids: selectedCandidateIds }),\n        ...(selectedPoolIds && { candidate_pools_ids: selectedPoolIds }),\n        email_template_id: selectedTemplate.split(' -')[0],\n        exclude_applicants: excludeApplicants,\n        delay: stringToSeconds(delay),\n        only_new: false,\n        subject: subject,\n        body: body,\n        ...(attachments.length > 0 && { new_email_attachments: attachments }),\n        filters: {\n          rating: ['0', '100'],\n          excludeApplicantsWithoutRating: false\n        }\n      }\n    };\n    handleAPIRequest({\n      url: selectedCandidateIds\n        ? '/api/v4/searches/bulk_email'\n        : '/api/v4/candidate_pools/bulk_email',\n      method: 'POST',\n      body: data,\n      isFormData: true,\n      setLoaderState: setIsSendingEmails,\n      onSuccess: () => {\n        setIsSendingEmails(false);\n        handleClose();\n        setSnackbarState({\n          message: 'Emails sent successfully',\n          state: 'success'\n        });\n      },\n      setSnackbarState: setSnackbarState,\n      successMessage: { show: true, message: 'Emails sent successfully' },\n      onFailure: () => {\n        setIsSendingEmails(false);\n      }\n    });\n  };\n\n  const handleClose = () => {\n    openedFromTableActions\n      ? dispatch({ type: 'CLOSE_ACTION_ITEM', payload: 'email' })\n      : dispatch({ type: 'SET_ACTION_MODAL_OPEN', payload: { name: 'email', isOpen: false } });\n  };\n\n  const handleSelectTemplate = (value: string) => {\n    if (!value) {\n      setSelectedTemplate(null);\n      setBody('');\n      setSubject('');\n      setTemplateAttachments([]);\n      return;\n    }\n    setBody(LOADING_TEMPLATE_HTML_STRING);\n    const templateId = value.split(' -')[0];\n    setSelectedTemplate(value);\n    handleAPIRequest({\n      url: `/api/v4/searches/email_templates/${templateId}`,\n      method: 'GET',\n      onSuccess: (response) => {\n        setBody(response?.body);\n        setSubject(response?.subject);\n        setTemplateAttachments(response?.email_attachments);\n        setTemplateError(false);\n      },\n      onFailure: () => {\n        setBody('');\n        setSubject('');\n        setSelectedTemplate(null);\n      },\n      setSnackbarState: setSnackbarState,\n      successMessage: { show: false, message: '' }\n    });\n  };\n\n  return (\n    <StyledModal\n      isOpen={isOpen}\n      disableEnforceFocus\n      handleClose={handleClose}\n      label=\"Email Candidates\"\n      modalTitle=\"Email Candidates\"\n      styleOverrides={{\n        maxWidth: '900px',\n        maxHeight: '1100px'\n      }}\n      subHeaderStyling={false}\n    >\n      <Box sx={sharedClasses.mainModalContent}>\n        <Box role=\"form\" id=\"email-candidates-form\" aria-label=\"Email Candidates form\">\n          <Box sx={sharedClasses.actionModalFormLine} ref={templateSelectionRef}>\n            <VirtualizeGrouped\n              value={selectedTemplate}\n              options={emailTemplates.data?.email_templates || []}\n              onChange={handleSelectTemplate}\n              styles={{\n                ...sharedClasses.formAutocomplete,\n                width: '600px',\n                marginTop: '20px'\n              }}\n              label=\"Template\"\n              loading={emailTemplates.isLoading}\n              loadingText=\"Loading template list...\"\n              error={templateError ? 'Please select a template' : undefined}\n            />\n          </Box>\n          <Box sx={sharedClasses.actionModalFormLine}>\n            <FormControlLabel\n              control={\n                <Checkbox\n                  sx={sharedClasses.formCheckbox}\n                  onChange={(e) => setExcludeApplicants(e.target.checked)}\n                  value={excludeApplicants}\n                />\n              }\n              label=\"Exclude applicants who have received this email template\"\n              sx={sharedClasses.checkboxLabel}\n            />\n          </Box>\n          {selectedPoolIds && (\n            <Box sx={sharedClasses.actionModalFormLine}>\n              <FormControlLabel\n                control={\n                  <Checkbox\n                    sx={sharedClasses.formCheckbox}\n                    onChange={(e) => setSkipScoutTalentClients(e.target.checked)}\n                    value={skipScoutTalentClients}\n                    checked={skipScoutTalentClients}\n                  />\n                }\n                label=\"Skip Scout Talent Clients\"\n                sx={sharedClasses.checkboxLabel}\n              />\n            </Box>\n          )}\n          <DelaySelectWrapper delay={delay} setDelay={setDelay} />\n          <Box sx={sharedClasses.actionModalFormLine}>\n            <FormTextField\n              id=\"email-subject\"\n              label=\"Subject\"\n              value={subject}\n              styles={{ width: '600px' }}\n              onChange={(e) => setSubject(e.target.value)}\n            />\n          </Box>\n          <Box sx={sharedClasses.modalSection}>\n            <Box sx={sharedClasses.formLabel}>Body</Box>\n            <HtmlEditor body={body} onBlur={setBody} />\n            <Box sx={sharedClasses.placeholderText}>\n              Available placeholders are: {emailTemplates.data?.placeholders}\n            </Box>\n          </Box>\n          <AttachmentSelectorAndPreview\n            attachments={attachments}\n            setAttachments={setAttachments}\n            templateAttachments={templateAttachments}\n            selectedPoolIds={selectedPoolIds}\n          />\n          {showTotalSelectedCandidates && (\n            <Box\n              sx={{\n                ...sharedClasses.modalSection,\n                ...sharedClasses.sectionHeader\n              }}\n            >\n              {selectedCandidateIds?.length || selectedPoolIds?.length} candidate\n              {(selectedCandidateIds?.length || selectedPoolIds?.length || 0) > 1 ? 's' : ''}{' '}\n              selected\n            </Box>\n          )}\n        </Box>\n      </Box>\n      <ModalFooterButtons\n        primaryButtonText=\"Send\"\n        primaryButtonCallback={handleSendEmails}\n        primaryButtonID=\"send-candidate-emails\"\n        secondaryButtonText=\"Cancel\"\n        secondaryButtonCallback={handleClose}\n        secondaryButtonID=\"cancel-candidate-emails\"\n        isLoading={isSendingEmails}\n      />\n    </StyledModal>\n  );\n};\n\nconst LOADING_TEMPLATE_HTML_STRING =\n  '<p style=\"text-align: center;\"><span style=\"font-size: 14pt;\"><strong>Loading template...</strong></span></p>';\n\nexport default EmailCandidate;\n","import React, { Dispatch, useRef, useState } from 'react';\nimport { EngageAction } from '../../reducer';\nimport StyledModal from '../../../NewUI/Components/GenericModal/StyledModal';\nimport { emailIsValid } from '../../../NewUI/Components/Utilities/emailIsValid';\nimport { Box } from '@mui/material';\nimport MultiTagInput from '../../../NewUI/Components/CustomUIElements/MultiTagInput';\nimport { sharedClasses } from '../../../NewUI/Components/CustomUIElements/sharedClasses';\nimport ModalFooterButtons from '../../../NewUI/Components/GenericModal/ModalFooterButtons';\nimport { handleAPIRequest } from '../../../NewUI/Components/Utilities/handleAPIRequest';\nimport { ISnackbarInput } from '../../../NewUI/Components/CustomUIElements/StyledSnackbar';\n\nconst ExternalEmail = ({\n  isOpen,\n  dispatch,\n  selectedCandidateIds,\n  selectedPoolIds,\n  apiUrl\n}: {\n  isOpen: boolean;\n  dispatch: Dispatch<EngageAction>;\n  selectedCandidateIds?: number[];\n  selectedPoolIds?: number[];\n  apiUrl: string;\n}) => {\n  const [emails, setEmails] = useState<string[]>([]);\n  const [submissionError, setSubmissionError] = useState<string>('');\n  const [isSendingEmails, setIsSendingEmails] = useState(false);\n  const emailInputRef = useRef<HTMLDivElement>(null);\n  const handleClose = () => {\n    dispatch({ type: 'SET_ACTION_MODAL_OPEN', payload: { name: 'externalEmail', isOpen: false } });\n  };\n  const handleSendEmails = () => {\n    if (!emails.length) {\n      setSubmissionError('Must input at least one valid email');\n      emailInputRef?.current?.scrollIntoView({ behavior: 'smooth' });\n      return;\n    }\n\n    const body = {\n      external_view: {\n        emails: emails.join(','),\n        full_view: true,\n        smart_forms: true,\n        include_summary: true,\n        notes: 'Include notes'\n      }\n    };\n\n    if (selectedCandidateIds && selectedCandidateIds.length > 0) {\n      body['candidate_ids'] = selectedCandidateIds;\n    } else if (selectedPoolIds && selectedPoolIds.length > 0) {\n      body['candidate_pools_ids'] = selectedPoolIds;\n    }\n\n    handleAPIRequest({\n      url: apiUrl,\n      method: 'POST',\n      body: body,\n      setLoaderState: setIsSendingEmails,\n      setSnackbarState: (snackbarState: ISnackbarInput) =>\n        dispatch({\n          type: 'SET_SNACKBAR',\n          payload: snackbarState\n        }),\n      onSuccess: () => {\n        handleClose();\n      }\n    });\n  };\n  return (\n    <StyledModal\n      isOpen={isOpen}\n      handleClose={handleClose}\n      label=\"External Email\"\n      modalTitle=\"External Email\"\n      styleOverrides={{\n        maxWidth: '900px',\n        maxHeight: '900px'\n      }}\n    >\n      <Box sx={{ ...sharedClasses.mainModalContent, height: '100%' }}>\n        <Box sx={sharedClasses.actionModalFormLine} ref={emailInputRef}>\n          <MultiTagInput\n            tags={emails}\n            setTags={setEmails}\n            validation={emailIsValid}\n            validationMessage=\"Must input valid email\"\n            label=\"Email address/s\"\n            width=\"600px\"\n            error={submissionError}\n            tagType=\"emails\"\n            helperText=\"To copy and paste bulk emails, email addresses must be separated with a comma\"\n          />\n        </Box>\n      </Box>\n      <ModalFooterButtons\n        primaryButtonText=\"Send\"\n        primaryButtonCallback={handleSendEmails}\n        primaryButtonID=\"send-candidate-emails\"\n        secondaryButtonText=\"Cancel\"\n        secondaryButtonCallback={handleClose}\n        secondaryButtonID=\"cancel-candidate-emails\"\n        isLoading={isSendingEmails}\n      />\n    </StyledModal>\n  );\n};\n\nexport default ExternalEmail;\n","import React, { memo } from 'react';\nimport { TTabs } from '../types';\n\nconst TabPanel = (props: TTabs) => {\n  const { children, tabValue, index, ...other } = props;\n  return (\n    <div\n      role=\"tabpanel\"\n      hidden={tabValue !== index}\n      id={`engage-tabpanel-${index}`}\n      aria-labelledby={`engage-tab-${index}`}\n      {...other}\n    >\n      {tabValue === index && <>{children}</>}\n    </div>\n  );\n};\n\nexport default memo(TabPanel);\n","import React, { useCallback } from 'react';\nimport { Box, Tabs, Tab } from '@mui/material';\nimport { classes } from '../styles';\nimport { EngageState } from '../reducer';\n\nconst TabSelector = ({\n  engageState,\n  handleTabChange,\n  tabIndicatorRef\n}: {\n  engageState: EngageState;\n  handleTabChange: (event: React.SyntheticEvent, tabValue: number) => void;\n  tabIndicatorRef: React.MutableRefObject<HTMLElement[]>;\n}) => {\n  const TabProps = useCallback((index: number) => {\n    return {\n      id: `engage-tab-${index}`,\n      'aria-controls': `engage-tabpanel-${index}`\n    };\n  }, []);\n\n  return (\n    <Box sx={classes.tabsContainer}>\n      <Tabs\n        value={engageState.selectedTab}\n        onChange={handleTabChange}\n        aria-label=\"engage tabs\"\n        sx={{\n          ...classes.tabs,\n          '& .MuiTabs-indicator': {\n            ...classes.tabIndicator,\n            maxWidth: engageState.indicatorWidth + 'px'\n          }\n        }}\n      >\n        <Tab\n          label=\"AI Search\"\n          {...TabProps(0)}\n          ref={(el) => (tabIndicatorRef.current[0] = el)}\n          id=\"ai-search-tab-button\"\n        />\n        <Tab\n          label=\"Candidate Pools\"\n          {...TabProps(1)}\n          ref={(el) => (tabIndicatorRef.current[1] = el)}\n          id=\"engage-pool-tab\"\n        />\n      </Tabs>\n    </Box>\n  );\n};\n\nexport default TabSelector;\n","import { classes } from '../NewUI/Components/GenericTable/styles';\nimport React from 'react';\nimport PlaylistAddIcon from '@mui/icons-material/PlaylistAdd';\nimport ForwardToInboxIcon from '@mui/icons-material/ForwardToInbox';\nimport AttachFileIcon from '@mui/icons-material/AttachFile';\nimport PictureAsPdfIcon from '@mui/icons-material/PictureAsPdf';\nimport NoteAddIcon from '@mui/icons-material/NoteAdd';\nimport { ActionListItem } from '../NewUI/Components/GenericTable/GenericTableActions';\nimport { SxProps } from '@mui/material';\n\nexport const getTabNumber = (urlParams: string) => {\n  switch (urlParams) {\n    case '?engage-search':\n      return 0;\n    case '?candidate-pools':\n      return 1;\n    default:\n      return 0;\n  }\n};\n\nexport const getTabParam = (tabNumber: number) => {\n  switch (tabNumber) {\n    case 0:\n      return '?engage-search';\n    case 1:\n      return '?candidate-pools';\n    default:\n      return '?engage-search';\n  }\n};\n\nexport const searchTableColumns = [\n  {\n    id: 'id',\n    label: 'ID',\n    sortable: true,\n    canToggle: false,\n    enabled: true\n  },\n  {\n    id: 'name',\n    label: 'Candidate',\n    sortable: true,\n    canToggle: false,\n    enabled: true\n  },\n  {\n    id: 'suburb',\n    label: 'Suburb',\n    sortable: true,\n    canToggle: true,\n    enabled: true\n  },\n  {\n    id: 'country',\n    label: 'Country',\n    sortable: true,\n    canToggle: true,\n    enabled: true\n  },\n  {\n    id: 'last_applied_on',\n    label: 'Last Applied',\n    sortable: true,\n    canToggle: true,\n    enabled: true\n  },\n  {\n    id: 'jobs_applied_to',\n    label: 'Jobs Applied To',\n    sortable: false,\n    canToggle: true,\n    enabled: true\n  },\n  {\n    id: 'tags',\n    label: 'Candidate Tags',\n    sortable: false,\n    canToggle: true,\n    enabled: true\n  },\n  {\n    id: 'notes',\n    label: 'Notes',\n    sortable: false,\n    canToggle: true,\n    enabled: true\n  }\n];\n\nexport const headerStyle = (\n  name: (typeof searchTableColumns)[number]['id'] | 'checkbox' | 'actions',\n  tableHovered: boolean\n): SxProps => {\n  switch (name) {\n    case 'checkbox':\n      return { ...classes.sticky, width: '58px' };\n    case 'id':\n      return { ...classes.sticky, maxWidth: '96px', width: '96px', left: '58px' };\n    case 'name':\n      return {\n        ...classes.sticky,\n        ...classes.itemTitleTableCell,\n        ...(tableHovered && classes.scrollShadowVisible)\n      };\n    case 'notes':\n      return { minWidth: '240px' };\n    case 'last_applied_on':\n      return { minWidth: '150px' };\n    case 'jobs_applied_to':\n      return { minWidth: '180px' };\n    case 'tags':\n      return { minWidth: '150px' };\n    case 'actions':\n      return {\n        ...classes.actionsColumnHeader,\n        ...(tableHovered && classes.scrollShadowVisible)\n      };\n    default:\n      return { minWidth: '90px' };\n  }\n};\n\nexport const actionDrawerModals = [\n  {\n    id: 'addToPool',\n    label: 'Add to pool',\n    icon: <PlaylistAddIcon />\n  },\n  {\n    id: 'externalEmail',\n    label: 'External email',\n    icon: <ForwardToInboxIcon />\n  },\n  {\n    id: 'downloadAttachments',\n    label: 'Download attachments',\n    icon: <AttachFileIcon />\n  },\n  {\n    id: 'exportAttachments',\n    label: 'Export attachments',\n    icon: <PictureAsPdfIcon />\n  },\n  {\n    id: 'exportAsPdf',\n    label: 'Export as PDF',\n    icon: <PictureAsPdfIcon />\n  }\n];\n\nexport const engageSearchActionsList: ActionListItem[] = [\n  {\n    id: 'addNote',\n    tooltipLabel: 'Add Note',\n    icon: <NoteAddIcon />\n  },\n  {\n    id: 'viewAttachments',\n    tooltipLabel: 'View Attachments',\n    icon: <AttachFileIcon />\n  }\n];\n","import React, { useEffect, useState, useRef } from 'react';\nimport { classes } from './styles';\nimport Api from './API';\nimport Box from '@mui/material/Box';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Snackbar from '@mui/material/Snackbar'\nimport TextField from '@mui/material/TextField';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport IconButton from '@mui/material/IconButton';\nimport Button from '@mui/material/Button';\nimport Alert from '@mui/material/Alert';\nimport EmailIcon from '@mui/icons-material/Email';\nimport LockIcon from '@mui/icons-material/Lock';\nimport DomainIcon from '@mui/icons-material/Domain';\nimport Visibility from '@mui/icons-material/Visibility';\nimport VisibilityOff from '@mui/icons-material/VisibilityOff';\nimport HelpIcon from '@mui/icons-material/Help';\nimport VpnKeyIcon from '@mui/icons-material/VpnKey';\nimport InfoIcon from '@mui/icons-material/Info';\nimport FadeChildrenVisibility from './utils/FadeChildrenVisibility';\nimport { clearAllPreferenceCache } from '../NewUI/helpers/uiPreferencesHelpers';\n\nenum STEPS {\n  LOGIN,\n  TWOFACTOR\n}\n\nconst BASE_URL = window.location.origin;\nconst assets = [\n  {\n    url: '/static/login/recruit_login_image_V2.jpg',\n    blurb: '',\n    info: 'Let\\'s connect people to grow companies, careers and communities.',\n  },\n  {\n    url: '/static/login/recruit_login_image_02_V2.jpg',\n    blurb: '',\n    info: 'Empower your organisation\\'s strategic growth with Scout Talent.'\n  }\n]\nconst RNG = () => {\n  return Math.floor(Math.random() * Math.floor(2));\n}\n\nfunction NewLogin(props : {messages: string, intervalToValidateInSeconds: number}) {\n  const [step, setStep] = useState(0);\n  const [code, setCode] = useState('');\n  const [snack, setSnack] = useState('');\n  const [redirectUrl, setRedirectUrl] = useState('');\n  const [sendingCode, setSendingCode] = useState(false);\n  const [email, setEmail] = useState('');\n  const [password, setPassword] = useState('');\n  const [newPassword, setNewPassword] = useState('');\n  const [newPasswordConfirmation, setNewPasswordConfirmation] = useState('');\n  const [domain, setDomain] = useState('');\n  const [showPassword, setShowPassword] = useState(false);\n  const [showNewPassword, setShowNewPassword] = useState(false);\n  const [showNewPasswordConfirmation, setShowNewPasswordConfirmation] = useState(false);\n  const [errors, setErrors] = useState('');\n  const [randomNumber, setRandomNumber] = useState(RNG());\n  const [emailFieldSelected, setEmailFieldSelected] = useState(false);\n  const [passwordFieldSelected, setPasswordFieldSelected] = useState(false);\n  const [newPasswordFieldSelected, setNewPasswordFieldSelected] = useState(false);\n  const [newPasswordConfirmationFieldSelected, setNewPasswordConfirmationFieldSelected] = useState(false);\n  const [domainFieldSelected, setDomainFieldSelected] = useState(false);\n  const [singleSignOn, setSingleSignOn] = useState(false);\n  const [resetPassword, setResetPassword] = useState(false);\n  const [updatePassword, setUpdatePassword] = useState(false);\n  const [token, setToken] = useState('');\n  const [loading, setLoading] = useState(false);\n  const messages = props.messages ? props.messages.match(/<\\s*span[^>]*>(.*?)<\\s*\\/\\s*span>/)[1] : '';\n  const submitButton = useRef(null);\n  const size = useWindowSize();\n\n  function useWindowSize() {\n    const [windowSize, setWindowSize] = useState({\n      width: 0,\n      height: 0,\n    });\n    useEffect(() => {\n      function handleResize() {\n        setWindowSize({\n          width: window.innerWidth,\n          height: window.innerHeight,\n        });\n      }\n\n      window.addEventListener(\"resize\", handleResize);\n\n      handleResize();\n      return () => window.removeEventListener(\"resize\", handleResize);\n    }, []);\n    return windowSize;\n  }\n\n  useEffect(() => {\n    const redirect = new URLSearchParams(window.location.search).get('redirect_from')\n    const user_email = new URLSearchParams(window.location.search).get('user_email')\n    if (redirect === 'saml_sso') {\n      setEmail(user_email)\n      setStep(STEPS.TWOFACTOR)\n    }\n  }, [])\n\n  useEffect(() => {\n    if(window.location.href.includes('reset')){\n      setToken(window.location.href.split('=').pop());\n    }\n    if (token){\n      setUpdatePassword(true);\n      setResetPassword(false);\n      setSingleSignOn(false);\n    }\n  }, [token]);\n\n  const handleEmailInput = (event: React.ChangeEvent<HTMLInputElement>) => {\n    if (errors) {\n      setErrors('');\n    }\n    setEmail(event.target.value);\n  }\n\n  const handleCodeInput = (event: React.ChangeEvent<HTMLInputElement>) => {\n    if (errors) {\n      setErrors('');\n    }\n    setCode(event.target.value);\n  }\n\n  const handlePasswordInput = (event: React.ChangeEvent<HTMLInputElement>) => {\n    if (errors) {\n      setErrors('');\n    }\n    setPassword(event.target.value);\n  }\n\n  const handleDomainInput = (event: React.ChangeEvent<HTMLInputElement>) => {\n    if (errors) {\n      setErrors('');\n    }\n    setDomain(event.target.value);\n  }\n\n  const handleNewPasswordInput = (event: React.ChangeEvent<HTMLInputElement>) => {\n    setNewPassword(event.target.value);\n  }\n\n  const handleNewPasswordConfirmationInput = (event: React.ChangeEvent<HTMLInputElement>) => {\n    setNewPasswordConfirmation(event.target.value);\n  }\n\n  const handleSubmit = async () => {\n    setLoading(true)\n    if (singleSignOn) {\n      await postSSOLogin()\n    } else if (resetPassword) {\n      await postResetPassword()\n    } else if (updatePassword) {\n      await putUpdatePassword()\n    } else if (step === STEPS.TWOFACTOR) {\n      await postTwoFactorCode()\n    } else {\n      await postLogin()\n    }\n    clearAllPreferenceCache();\n    setLoading(false);\n  }\n\n  const handleSSOClick = () => {\n    setSingleSignOn(prev => !prev);\n    setResetPassword(false);\n    setUpdatePassword(false);\n    setErrors('');\n  }\n\n  const handleButtonSecondaryClick = () => {\n    if (step === STEPS.LOGIN) {\n      setResetPassword(prev => !prev);\n      setUpdatePassword(false)\n    } else {\n      resendTwoFactorCode();\n    }\n    setErrors('');\n  }\n\n  const buttonDisabled = () => {\n    if (singleSignOn) {\n      return !domain\n    } else if (resetPassword) {\n      return !email\n    } else if (updatePassword) {\n      return !newPassword || !newPasswordConfirmation\n    } else if (step === STEPS.TWOFACTOR) {\n      return code.length !== 6\n    } else {\n      return !email || !password || !!errors || loading\n    }\n  }\n\n  function finaliseLogin() {\n    localStorage.removeItem(\"userPermissions\");\n    window.location.href = redirectUrl || `${BASE_URL}/admin`\n  }\n\n  async function postLogin() {\n    try {\n      const response = await Api.postLogin({\n        'email': email,\n        'password': password\n      })\n      if ('errors' in response) {\n        setErrors(response.errors ? response.errors[0] : '')\n        setSingleSignOn(response.password_disabled === true ? true : false)\n        return\n      }\n      if (response.url) {\n        setRedirectUrl(response.url)\n      }\n      if (response.twofa_enabled) {\n        const res = await Api.sendTwoFactor()\n        if ('error' in res) {\n          return setErrors(res.error)\n        }\n        setStep(STEPS.TWOFACTOR)\n      } else {\n        finaliseLogin(response.url)\n      }\n    } catch (error) {\n      console.log(error)\n    }\n  }\n\n  async function postSSOLogin() {\n    try {\n      const response = await Api.postSSOLogin({\n        team_name: domain\n      })\n      if (!response.errors) {\n        window.location.href = response.url;\n      }\n      setErrors(response.errors ? response.errors[0] : '');\n    } catch (error) {\n      console.log(error);\n    }\n  }\n\n  async function postTwoFactorCode() {\n    try {\n      const response = await Api.postTwoFactor({ code })\n      if (response.authenticated) {\n        finaliseLogin(response.url)\n      } else {\n        if ('error' in response) {\n          return setErrors(response.error)\n        }\n      }\n    } catch (error) {\n      console.log(error)\n    }\n  }\n\n  async function resendTwoFactorCode() {\n    setSendingCode(true)\n    try {\n      const res = await Api.sendTwoFactor()\n      if ('error' in res) {\n        return setErrors(res.error)\n      }\n      setSnack(`A new code has been sent to ${email}`)\n    } catch (error) {\n      console.log(error)\n    } finally {\n      setSendingCode(false)\n    }\n  }\n\n  async function postResetPassword() {\n    try {\n      const response = await Api.postResetPassword({\n        'email': email\n      })\n\n      setErrors(response.notice ? response.notice[0] : '')\n\n    } catch (error) {\n      console.log(error)\n    }\n  }\n\n  async function putUpdatePassword() {\n    try {\n      const response = await Api.putUpdatePassword(token, {\n        'password': newPassword,\n        'password_confirmation': newPasswordConfirmation,\n      })\n      if(response.success){\n        window.location.href = `${BASE_URL}/login`\n      }\n      setErrors(response.errors ? response.errors[0] : '')\n\n    } catch (error) {\n      console.log(error)\n    }\n  }\n\n  const handleKeyPress = (event: React.KeyboardEvent<HTMLDivElement>) => {\n    if (event.key === 'Enter') submitButton.current.click();\n  }\n\n  const buttonText = (() => {\n    if (updatePassword) {\n      return 'Update'\n    } else if (resetPassword) {\n      return 'Send password reset link'\n    } else if (step === STEPS.TWOFACTOR) {\n      return 'Submit'\n    } else {\n      return 'Login'\n    }\n  })();\n\n  const buttonSecondaryText = (() => {\n    if (sendingCode) {\n      return 'Sending'\n    } else if (resetPassword) {\n      return 'Return to login'\n    } else if (step === STEPS.TWOFACTOR) {\n      return 'Resend code'\n    } else {\n      return 'Forgot password?'\n    }\n  })();\n\n  return (\n    <Box sx={classes.pageContainer}>\n      <Box sx={classes.logoContainer}>\n        <img src={size.width <= 1024 ? '/static/stg-logo-white.svg' : '/static/scout-logo.png'} alt='scout logo' />\n      </Box>\n\n      <Box sx={classes.loginFormContainer}>\n        <Box sx={classes.loginForm}>\n          <FadeChildrenVisibility>\n            <Box key={1} is-visible={step === STEPS.TWOFACTOR}>\n              <h1>Two-step authentication</h1>\n              <Box sx={classes.description}>\n                Enter the authentication code we sent to <span>{email}</span>. This code will be valid for {props.intervalToValidateInMinutes} mins.\n              </Box>\n              <TextField\n                fullWidth\n                id=\"code\"\n                label=\"Code\"\n                name=\"code\"\n                autoComplete=\"code\"\n                value={code}\n                size={size.width <= 430 ? \"small\" : \"medium\"}\n                autoFocus\n                onChange={handleCodeInput}\n                onKeyDown={handleKeyPress}\n                onFocus={() => setEmailFieldSelected(true)}\n                onBlur={() => setEmailFieldSelected(false)}\n                sx={classes.inputs}\n                InputLabelProps={{ shrink: !!code || emailFieldSelected, sx: classes.inputLabel }}\n                InputProps={{\n                  startAdornment: (\n                    <InputAdornment position=\"start\">\n                      <VpnKeyIcon sx={classes.inputIcons} />\n                    </InputAdornment>\n                  ),\n                }}\n              />\n            </Box>\n            <Box key={2} is-visible={step === STEPS.LOGIN}>\n              {messages &&\n                <Alert\n                  icon={<InfoIcon fontSize=\"inherit\" />}\n                  severity=\"warning\"\n                  id=\"alert-with-icon\"\n                  sx={classes.alert}\n                >\n                  {messages}\n                </Alert>\n              }\n              <h1>Welcome back</h1>\n              <FadeChildrenVisibility>\n                <div key={0} is-visible={!(singleSignOn || resetPassword || updatePassword)}>\n                  <TextField\n                    fullWidth\n                    id=\"email\"\n                    label=\"Email\"\n                    name=\"email\"\n                    value={email}\n                    size={size.width <= 430 ? \"small\" : \"medium\"}\n                    autoFocus\n                    onChange={handleEmailInput}\n                    onKeyDown={handleKeyPress}\n                    onFocus={() => setEmailFieldSelected(true)}\n                    onBlur={() => setEmailFieldSelected(false)}\n                    sx={classes.inputs}\n                    InputLabelProps={{ shrink: !!email || emailFieldSelected, sx: classes.inputLabel }}\n                    InputProps={{\n                      startAdornment: (\n                        <InputAdornment position=\"start\">\n                          <EmailIcon sx={classes.inputIcons} />\n                        </InputAdornment>\n                      ),\n                    }}\n                  />\n                  <TextField\n                    fullWidth\n                    id=\"password\"\n                    name=\"password\"\n                    label=\"Password\"\n                    type={showPassword ? 'text' : 'password'}\n                    autoComplete=\"current-password\"\n                    value={password}\n                    size={size.width <= 430 ? \"small\" : \"medium\"}\n                    onChange={handlePasswordInput}\n                    onKeyDown={handleKeyPress}\n                    onFocus={() => setPasswordFieldSelected(true)}\n                    onBlur={() => setPasswordFieldSelected(false)}\n                    sx={{...classes.inputs, marginBottom: '6px'}}\n                    InputLabelProps={{ shrink: !!password || passwordFieldSelected, sx: classes.inputLabel }}\n                    InputProps={{\n                      startAdornment: (\n                        <InputAdornment position=\"start\">\n                          <LockIcon sx={classes.inputIcons}/>\n                        </InputAdornment>\n                      ),\n                      endAdornment: (\n                        <InputAdornment position=\"end\">\n                          <IconButton\n                            aria-label=\"toggle password visibility\"\n                            onClick={() => setShowPassword(prev => !prev)}\n                            edge=\"end\"\n                          >\n                            {showPassword ? <VisibilityOff /> : <Visibility />}\n                          </IconButton>\n                        </InputAdornment>\n                      )\n                    }}\n                  />\n                </div>\n                <div key={1} is-visible={!(!singleSignOn || resetPassword || updatePassword)}>\n                  <TextField\n                    fullWidth\n                    id=\"domain-name\"\n                    label=\"Domain name\"\n                    name=\"Domain name\"\n                    autoComplete=\"domain\"\n                    size={size.width <= 430 ? \"small\" : \"medium\"}\n                    autoFocus\n                    value={domain}\n                    onChange={handleDomainInput}\n                    onKeyDown={handleKeyPress}\n                    onFocus={() => setDomainFieldSelected(true)}\n                    onBlur={() => setDomainFieldSelected(false)}\n                    sx={classes.inputs}\n                    InputLabelProps={{ shrink: !!domain || domainFieldSelected, sx: classes.inputLabel }}\n                    InputProps={{\n                      startAdornment: (\n                        <InputAdornment position=\"start\">\n                          <DomainIcon sx={classes.inputIcons}/>\n                        </InputAdornment>\n                      ),\n                    }}\n                  />\n                </div>\n                <div key={2} is-visible={resetPassword}>\n                  <TextField\n                    fullWidth\n                    id=\"reset-email\"\n                    label=\"Email\"\n                    name=\"email\"\n                    autoComplete=\"email\"\n                    size={size.width <= 430 ? \"small\" : \"medium\"}\n                    value={email}\n                    autoFocus\n                    onChange={handleEmailInput}\n                    onKeyDown={handleKeyPress}\n                    onFocus={() => setEmailFieldSelected(true)}\n                    onBlur={() => setEmailFieldSelected(false)}\n                    sx={classes.inputs}\n                    InputLabelProps={{ shrink: !!email || emailFieldSelected, sx: classes.inputLabel }}\n                    InputProps={{\n                      startAdornment: (\n                        <InputAdornment position=\"start\">\n                          <EmailIcon sx={classes.inputIcons}/>\n                        </InputAdornment>\n                      ),\n                    }}\n                  />\n                </div>\n                <div key={3} is-visible={updatePassword}>\n                  <TextField\n                    fullWidth\n                    id=\"newPassword\"\n                    name=\"newPassword\"\n                    label=\"Password\"\n                    type={showNewPassword ? 'text' : 'password'}\n                    autoComplete=\"current-password\"\n                    size={size.width <= 430 ? \"small\" : \"medium\"}\n                    value={newPassword}\n                    onChange={handleNewPasswordInput}\n                    onKeyDown={handleKeyPress}\n                    onFocus={() => setNewPasswordFieldSelected(true)}\n                    onBlur={() => setNewPasswordFieldSelected(false)}\n                    sx={{...classes.inputs, marginBottom: '6px'}}\n                    InputLabelProps={{ shrink: !!newPassword || newPasswordFieldSelected, sx: classes.inputLabel }}\n                    InputProps={{\n                      startAdornment: (\n                        <InputAdornment position=\"start\">\n                          <LockIcon sx={classes.inputIcons}/>\n                        </InputAdornment>\n                      ),\n                      endAdornment: (\n                        <InputAdornment position=\"end\">\n                          <IconButton\n                            aria-label=\"toggle password visibility\"\n                            onClick={() => setShowNewPassword(prev => !prev)}\n                            edge=\"end\"\n                          >\n                            {showPassword ? <VisibilityOff /> : <Visibility />}\n                          </IconButton>\n                        </InputAdornment>\n                      )\n                    }}\n                  />\n                  <TextField\n                    fullWidth\n                    id=\"newPasswordConfirm\"\n                    name=\"newPasswordConfirm\"\n                    label=\"Password Confirmation\"\n                    type={showNewPasswordConfirmation ? 'text' : 'password'}\n                    autoComplete=\"current-password\"\n                    size={size.width <= 430 ? \"small\" : \"medium\"}\n                    value={newPasswordConfirmation}\n                    onChange={handleNewPasswordConfirmationInput}\n                    onKeyDown={handleKeyPress}\n                    onFocus={() => setNewPasswordConfirmationFieldSelected(true)}\n                    onBlur={() => setNewPasswordConfirmationFieldSelected(false)}\n                    sx={{...classes.inputs, marginBottom: '6px'}}\n                    InputLabelProps={{ shrink: !!newPasswordConfirmation || newPasswordConfirmationFieldSelected, sx: classes.inputLabel }}\n                    InputProps={{\n                      startAdornment: (\n                        <InputAdornment position=\"start\">\n                          <LockIcon sx={classes.inputIcons}/>\n                        </InputAdornment>\n                      ),\n                      endAdornment: (\n                        <InputAdornment position=\"end\">\n                          <IconButton\n                            aria-label=\"toggle password visibility\"\n                            onClick={() => setShowNewPasswordConfirmation(prev => !prev)}\n                            edge=\"end\"\n                          >\n                            {showPassword ? <VisibilityOff /> : <Visibility />}\n                          </IconButton>\n                        </InputAdornment>\n                      )\n                    }}\n                  />\n                </div>\n              </FadeChildrenVisibility>\n            </Box>\n          </FadeChildrenVisibility>\n          <Box sx={classes.forgotPassword}>\n            <Box\n              id='forgot-password'\n              sx={classes.link}\n              onClick={handleButtonSecondaryClick}\n            >\n              {buttonSecondaryText}\n            </Box>\n          </Box>\n          <Box\n            sx={{\n              ...classes.errorMessage,\n              height: errors ? `${Math.ceil(errors.length / 56) * 22}px` : '0px',\n              width: '100%',\n            }}\n          >\n            <Box\n              sx={errors ?\n                {...classes.fadeIn, textAlign: 'center'} : {...classes.fadeOut, textAlign: 'center'}\n              }\n              id='message-box'\n            >\n              {errors}\n            </Box>\n          </Box>\n          <Button\n            id='submit-button'\n            sx={classes.loginButton}\n            ref={submitButton}\n            onClick={handleSubmit}\n            disabled={buttonDisabled()}\n          >\n            {loading && <CircularProgress size={20} color=\"inherit\" />}\n            {buttonText}\n          </Button>\n          <Box sx={classes.singleSignOn}>\n            <Box\n              id='single-sign-on'\n              sx={classes.link}\n              onClick={handleSSOClick}\n            >\n              {singleSignOn ?  'Sign in using email' : 'Sign in using Single Sign On'}\n            </Box>\n          </Box>\n        </Box>\n      </Box>\n      <Box sx={{backgroundImage: `linear-gradient(#00000040, #00000040), url(${assets[randomNumber].url})`, ...classes.imageAndBlurbContainer}}>\n        <Box sx={classes.blurb}>\n            {assets[randomNumber].blurb}\n        </Box>\n      </Box>\n      <Box sx={{...classes.infoPanel, backgroundColor: randomNumber ? '#5BC4BF' : '#084D6D'}}>\n        <Box sx={classes.infoPanelText}>\n          {assets[randomNumber].info}\n        </Box>\n      </Box>\n      <Box\n        sx={classes.helpContainer}\n        onClick={() => window.location.href = 'https://scouttalent.force.com/support/s/'}\n      >\n        <HelpIcon sx={classes.helpIcon}/>\n        <Box sx={classes.helpText}>\n          Support Centre\n        </Box>\n      </Box>\n      <Snackbar\n        open={!!snack}\n        onClose={() => setSnack('')}\n        message={snack}\n        anchorOrigin={{ horizontal: 'center', vertical: 'bottom' }} />\n    </Box>\n  )\n}\n\nexport default NewLogin;\n","import { Box } from '@mui/material';\nimport React, { SetStateAction, useEffect, useRef, useState } from 'react';\nimport { classes } from '../styles';\n\ninterface IProps {\n  setHeight: React.Dispatch<SetStateAction<number>>;\n  props: {\n    children: React.ReactNode;\n    ['is-visible']: boolean;\n  };\n}\n\nconst Child: React.FC<IProps> = ({ props, setHeight }) => {\n  const visible = props['is-visible'];\n\n  const ref = (node: HTMLElement) => {\n    if (!node || !visible) return;\n    setHeight(node.offsetHeight);\n  };\n\n  return (\n    <Box ref={ref} sx={visible ? classes.fadeIn : classes.fadeOut}>\n      {props.children}\n    </Box>\n  );\n};\n\nconst FadeChildrenVisibility: React.FC = ({ children }) => {\n  const [height, setHeight] = useState(0);\n  const ref = useRef<HTMLDivElement>(null)\n\n  useEffect(() => {\n    if (!ref.current) return\n    const index = Array.from(children).findIndex(child => child.props['is-visible'])\n    const target = ref.current.children[index]\n    setTimeout(() => {\n      setHeight(target.clientHeight)\n    }, 400)\n  }, [children])\n\n  return (\n    <Box\n      ref={ref}\n      style={{\n        height: height || 'auto',\n        position: 'relative',\n        width: '100%',\n        transition: 'height 0.4s ease-in-out'\n      }}\n    >\n      {Array.isArray(children) &&\n        children.map((child) => (\n          <Child {...child} key={child.key} setHeight={setHeight} height={height} />\n        ))}\n    </Box>\n  );\n};\n\nexport default FadeChildrenVisibility;\n","import React, { MouseEvent, SyntheticEvent, useEffect, useReducer, useRef, useState } from 'react';\nimport { Divider, Skeleton, Stack, Tab, Tabs } from '@mui/material';\nimport { Forward as ForwardIcon } from '@mui/icons-material';\nimport { ApplicationReducer, InitialApplicationState } from './reducer';\nimport StyledSnackbar, { ISnackbarInput } from '../Components/CustomUIElements/StyledSnackbar';\nimport { useQuery } from '@tanstack/react-query';\nimport Api from './API';\nimport ApplicationHeader from './ApplicationHeader';\nimport { styles as tabsStyle } from '../Candidate/styles';\nimport { styles } from './styles';\nimport OverviewTab from './OverviewTab';\nimport ActivitiesTab from '../Candidate/ActivitiesTab';\nimport TasksAndEventsTab from './TasksAndEventsTab';\nimport SmartFormsTab from './SmartFormsTab/SmartFormsTab';\nimport SendEmail from './Modals/SendEmail';\nimport AddToEvent from './Modals/AddToEvent';\nimport InviteToTimeslot from './Modals/InviteToTimeslot';\nimport { ModalType } from './config';\nimport { getPermissions } from '../../shared/permissionHelpers';\nimport { formatUserPermissions } from '../Components/Utilities/formatUserPermissions';\nimport AddForm from './Modals/AddForm';\nimport SendForm from './Modals/SendForm';\nimport IntegrationsTab from './IntegrationsTab';\nimport { IApplicationPageProps } from '.';\nimport { scrollToElement } from '../utils/scroll-to-element';\nimport GenericDialog from '../Components/Modals/GenericDialog';\n\nimport ExportToOnboard from './Modals/ExportToOnboard';\nimport { useNotepadUpdater } from './helper';\n\nexport default function Application({\n  applicationId,\n  jobId,\n  showLinkedInURL,\n  aiSummariesEnabled,\n  currentUser,\n  newIntegrationEnabled\n}: IApplicationPageProps) {\n  const [ApplicationState, dispatch] = useReducer(ApplicationReducer, InitialApplicationState);\n  const { modalsOpen } = ApplicationState;\n  const [tabValue, setTabValue] = useState<number>(0);\n  const [showDialog, setShowDialog] = useState<boolean>(false);\n  const [pendingHref, setPendingHref] = useState<string | null>(null);\n  const {\n    overviewTab: { hasUnsavedChanges }\n  } = ApplicationState;\n\n  const urlParams = new URLSearchParams(window.location.search);\n  const cognology = urlParams.get('cognology'); // used for new approval created from the approval forms page\n  const scrollRef = useRef<HTMLDivElement>(null);\n  const headerRefs = useRef<HTMLDivElement[]>([]);\n  const urlIndex = window.location.href.split('?i=')[1];\n  const applicationURL = `${window.location.origin}/admin/jobs/${jobId}/new_applications/`;\n\n  const { data: application, isLoading: loadingApplication } = useQuery({\n    queryKey: ['application'],\n    queryFn: async () => {\n      const { res } = await Api.getApplicationData(jobId, applicationId, urlIndex);\n      return res;\n    },\n    onSuccess: () => {\n      if (cognology) {\n        setTabValue(4);\n        dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.COGNOLOGY_WAITING_FOR_APPROVAL });\n      }\n    },\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting application data, ${error}`,\n          state: 'error'\n        }\n      })\n  });\n\n  useQuery({\n    queryKey: ['permissions'],\n    queryFn: async () => {\n      const res = await getPermissions(currentUser.api_key);\n      return formatUserPermissions(res);\n    },\n    onError: (error) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting user permissions, ${error}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n\n  const { mutate: updateApplicationNotepad, isLoading: updatingApplicationNotepad } =\n    useNotepadUpdater({ application, dispatch });\n\n  const handleTabChange = (_e: SyntheticEvent, value: number) => {\n    setTabValue(value);\n  };\n\n  const onConfirmHandler = (shouldSave: boolean) => {\n    if (pendingHref === null) return;\n    window.location.href = pendingHref;\n    shouldSave && updateApplicationNotepad(ApplicationState.overviewTab.note);\n  };\n\n  useEffect(\n    () =>\n      dispatch({\n        type: 'SET_USER_DATA',\n        payload: {\n          apiKey: currentUser.api_key,\n          isAdminUser: currentUser.admin,\n          userTimeZone: currentUser.timeZone,\n          userEmail: currentUser.email\n        }\n      }),\n    [currentUser]\n  );\n\n  useEffect(() => {\n    const isOverviewTab = tabValue === 0 && application;\n\n    if (isOverviewTab) {\n      dispatch({\n        type: 'SET_OVERVIEW_TAB',\n        payload: { note: ApplicationState.overviewTab.note || application.suitability_comment }\n      });\n    }\n  }, [application]);\n\n  useEffect(() => {\n    scrollToElement(scrollRef, { block: 'start', behavior: 'instant' });\n  }, [tabValue]);\n\n  useEffect(() => {\n    const handleClick = (event: MouseEvent) => {\n      const target = (event.target as HTMLElement).closest('a');\n      if (hasUnsavedChanges && target?.href) {\n        event.preventDefault();\n        setPendingHref(target.href);\n        setShowDialog(true);\n      }\n    };\n\n    document.addEventListener('click', handleClick as unknown as EventListener);\n\n    return () => {\n      document.removeEventListener('click', handleClick as unknown as EventListener);\n    };\n  }, [hasUnsavedChanges]);\n\n  return (\n    <Stack sx={{ padding: 5 }} ref={scrollRef}>\n      <Stack sx={styles.applicationPageStickyHeader}>\n        <ApplicationHeader\n          ApplicationState={ApplicationState}\n          dispatch={dispatch}\n          showLinkedInURL={showLinkedInURL}\n        />\n        <Stack>\n          <Stack sx={{ flexDirection: 'row', columnGap: 5, justifyContent: 'space-between' }}>\n            {loadingApplication ? (\n              <Skeleton height={30} animation=\"wave\" width=\"100%\" />\n            ) : (\n              <>\n                <Tabs\n                  value={tabValue}\n                  onChange={handleTabChange}\n                  variant=\"scrollable\"\n                  scrollButtons={false}\n                  TabIndicatorProps={{\n                    sx: {\n                      ...tabsStyle.candidateTabIndicator,\n                      maxWidth: headerRefs.current[tabValue]?.clientWidth - 15\n                    }\n                  }}\n                  sx={tabsStyle.candidateTabs}\n                >\n                  <Tab\n                    id=\"application-overview-tab\"\n                    label=\"Overview\"\n                    ref={(el) => el && (headerRefs.current[0] = el)}\n                  />\n                  <Tab\n                    id=\"application-tasks-and-events-tab\"\n                    label=\"Tasks & Events\"\n                    ref={(el) => el && (headerRefs.current[1] = el)}\n                  />\n                  <Tab\n                    id=\"application-smart-forms-tab\"\n                    label=\"Smart Forms\"\n                    ref={(el) => el && (headerRefs.current[2] = el)}\n                  />\n                  <Tab\n                    id=\"application-activities-tab\"\n                    label=\"Activities\"\n                    ref={(el) => el && (headerRefs.current[3] = el)}\n                  />\n                  <Tab\n                    id=\"application-integrations-tab\"\n                    label=\"Integrations\"\n                    ref={(el) => el && (headerRefs.current[4] = el)}\n                  />\n                </Tabs>\n                {urlIndex && (\n                  <Stack sx={styles.surroundingApplications}>\n                    <Stack sx={{ width: 'max-content', fontSize: '16px', fontWeight: 500 }}>\n                      {`${Number(urlIndex) + 1} of ${application?.surround_application.total_number_in_current_filter} applications`}\n                    </Stack>\n                    {application?.surround_application.pre_app_id && (\n                      <Stack\n                        id=\"previous-application-button\"\n                        sx={styles.surroundingApplicationsButton}\n                        onClick={() => {\n                          window.location.href = `${applicationURL}${application?.surround_application.pre_app_id}?i=${application?.surround_application.pre_idx}`;\n                        }}\n                      >\n                        <ForwardIcon sx={{ transform: 'scaleX(-1)' }} fontSize=\"small\" />\n                      </Stack>\n                    )}\n                    {application?.surround_application.next_app_id && (\n                      <Stack\n                        id=\"next-application-button\"\n                        sx={styles.surroundingApplicationsButton}\n                        onClick={() => {\n                          window.location.href = `${applicationURL}${application?.surround_application.next_app_id}?i=${application?.surround_application.next_idx}`;\n                        }}\n                      >\n                        <ForwardIcon fontSize=\"small\" />\n                      </Stack>\n                    )}\n                  </Stack>\n                )}\n              </>\n            )}\n          </Stack>\n          <Divider />\n        </Stack>\n      </Stack>\n      {tabValue === 0 && (\n        <OverviewTab\n          ApplicationState={ApplicationState}\n          dispatch={dispatch}\n          aiSummariesEnabled={aiSummariesEnabled}\n          updateApplicationNotepad={updateApplicationNotepad}\n          updatingApplicationNotepad={updatingApplicationNotepad}\n        />\n      )}\n      {tabValue === 1 && (\n        <TasksAndEventsTab\n          ApplicationState={ApplicationState}\n          dispatch={dispatch}\n          currentUserId={currentUser.id}\n        />\n      )}\n      {tabValue === 2 && <SmartFormsTab ApplicationState={ApplicationState} dispatch={dispatch} />}\n      {tabValue === 3 && <ActivitiesTab dispatch={dispatch} />}\n      {tabValue === 4 && (\n        <IntegrationsTab\n          ApplicationState={ApplicationState}\n          dispatch={dispatch}\n          newIntegrationEnabled={newIntegrationEnabled}\n        />\n      )}\n      {modalsOpen === ModalType.SEND_EMAIL && (\n        <SendEmail ApplicationState={ApplicationState} dispatch={dispatch} />\n      )}\n      {modalsOpen === ModalType.ADD_TO_EVENT && (\n        <AddToEvent\n          ApplicationState={ApplicationState}\n          dispatch={dispatch}\n          smsTemplatePermissions={true}\n        />\n      )}\n      {modalsOpen === ModalType.INVITE_TO_TIMESLOT && (\n        <InviteToTimeslot\n          ApplicationState={ApplicationState}\n          dispatch={dispatch}\n          smsTemplatePermissions={true}\n        />\n      )}\n      {modalsOpen === ModalType.ADD_FORM && (\n        <AddForm ApplicationState={ApplicationState} dispatch={dispatch} />\n      )}\n      {modalsOpen === ModalType.SEND_FORM && (\n        <SendForm\n          ApplicationState={ApplicationState}\n          dispatch={dispatch}\n          smsTemplatePermissions={true}\n        />\n      )}\n      {modalsOpen === ModalType.EXPORT_TO_ONBOARD && (\n        <ExportToOnboard ApplicationState={ApplicationState} dispatch={dispatch} />\n      )}\n      {!!ApplicationState.snackbar.message && (\n        <StyledSnackbar\n          message={ApplicationState.snackbar.message}\n          state={ApplicationState.snackbar.state}\n          setSnackbarState={(snackbarInput: ISnackbarInput) =>\n            dispatch({ type: 'SET_SNACKBAR', payload: snackbarInput })\n          }\n        />\n      )}\n      {showDialog && (\n        <GenericDialog\n          alternateColor\n          buttonCallback={() => onConfirmHandler(true)}\n          buttonText=\"Save\"\n          callbackLoading={updatingApplicationNotepad}\n          description=\"You have unsaved Notepad changes. Would you like to save them before leaving this page?\"\n          disablePrimaryButton={updatingApplicationNotepad}\n          isDialogOpen={showDialog}\n          onCancelCallback={() => onConfirmHandler(false)}\n          secondaryButtonText=\"Discard\"\n          setDialogOpen={setShowDialog}\n          title=\"Unsaved changes\"\n          url=\"\"\n        />\n      )}\n    </Stack>\n  );\n}\n","import React from 'react';\nimport { Button, Stack, Tooltip } from '@mui/material';\nimport { styles } from './styles';\nimport { sharedClasses } from '../Components/CustomUIElements/sharedClasses';\nimport BetaButton from '../Components/Buttons/BetaButton';\nimport { FelixSurveySVG } from './OverviewTab/Icons';\n\nexport default function ApplicationBetaButton() {\n  return (\n    <Tooltip\n      placement=\"right-start\"\n      slotProps={{\n        arrow: { sx: { color: 'white', fontSize: 'large' } },\n        tooltip: {\n          sx: {\n            backgroundColor: 'white',\n            boxShadow: '0 0 20px rgba(36, 36, 36, 0.18)',\n            maxWidth: 'unset'\n          }\n        }\n      }}\n      title={\n        <Stack sx={styles.betaButtonTooltipContainer}>\n          <FelixSurveySVG />\n          <Stack sx={styles.modalTitle}>Our new interface is live!</Stack>\n          <Stack sx={{ fontSize: '16px' }}>\n            {`We built it to enhance your experience. It's still in Beta, so feel free to\n                      share any feedback to help us improve!`}\n          </Stack>\n          <Stack sx={{ flexDirection: 'row', columnGap: 1, justifyContent: 'flex-end' }}>\n            <Button\n              sx={sharedClasses.genericButtonSecondary}\n              onClick={() => window.open(`https://form.jotform.com/242677079968882`, '_blank')}\n            >\n              Give feedback\n            </Button>\n            <Button\n              sx={sharedClasses.genericButton}\n              onClick={() =>\n                window.open(`https://scouttalenthq.com/new-applications-design`, '_blank')\n              }\n            >\n              Learn more\n            </Button>\n          </Stack>\n        </Stack>\n      }\n      arrow\n    >\n      <BetaButton sx={{ padding: '4px 8px', fontSize: '8px', boxShadow: 'none' }} />\n    </Tooltip>\n  );\n}\n","import React, { Dispatch, useEffect, useMemo, useState } from 'react';\nimport {\n  Avatar,\n  CircularProgress,\n  Divider,\n  Link,\n  Skeleton,\n  Stack,\n  Tooltip,\n  Typography\n} from '@mui/material';\nimport {\n  Close as CloseIcon,\n  Done as DoneIcon,\n  DriveFileMove as DriveFileMoveIcon,\n  Edit as EditIcon,\n  Email as EmailIcon,\n  Event as EventIcon,\n  LinkedIn as LinkedInIcon,\n  LocationOn as LocationOnIcon,\n  Man4 as Man4Icon,\n  MoreVert as MoreVertIcon,\n  Phone as PhoneIcon,\n  ContentCopy as CopyIcon\n} from '@mui/icons-material';\nimport { styles } from './styles';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\nimport { FormTextField } from '../Components/CustomUIElements/FormTextField';\nimport MoveApplicationModal from './Modals/MoveApplicationModal';\nimport { ApplicationAction, ApplicationState, IApplication } from './types';\nimport { LINKEDIN_URL_REGEX, ModalType } from './config';\nimport Api from './API';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport MoreOptionsPopover from './MoreOptionsPopover';\nimport GenericDialog from '../Components/Modals/GenericDialog';\nimport { DeleteApplication } from './Modals/DeleteApplication';\nimport SearchIndex from './Modals/SearchIndex';\nimport { formatAddress } from '../Candidate/ProfileTab';\nimport { IUserPermissions } from '../Components/sharedTypes';\nimport { theme } from '../../ThemeContext/ThemeObject';\nimport ApplicationBetaButton from './ApplicationBetaButton';\nimport ApplicationStatusPopover from './ApplicationStatusPopover';\nimport CandidateIcon from '../Candidate/CandidateIcon';\nimport moment from 'moment-timezone';\n\nconst browserTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone;\nconst BASE_URL = window.location.origin;\n\nexport default function ApplicationHeader({\n  ApplicationState,\n  dispatch,\n  showLinkedInURL\n}: {\n  ApplicationState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n  showLinkedInURL: boolean;\n}) {\n  const { modalsOpen, userTimeZone } = ApplicationState;\n  const [linkedInURL, setLinkedInURL] = useState<string>('');\n  const [editLinkedInURL, setEditLinkedInURL] = useState<boolean>(false);\n\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const permissions = queryClient.getQueryData<IUserPermissions>(['permissions']);\n  const closeModal = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n  const { mutate: trashApplication, isLoading: trashingApplication } = useMutation({\n    mutationFn: async () => {\n      if (application?.job) {\n        await Api.trashApplication(application.job.id, application.id);\n      }\n    },\n    onSuccess: () => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: 'Application trashed', state: 'success' }\n      });\n      if (application?.job) {\n        window.location.href = `${window.location.origin}/admin/jobs/${application.job.id}?applications=true`;\n      }\n    },\n    onError: (error: { error: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error trashing application, ${error.error}`,\n          state: 'error'\n        }\n      });\n    },\n    onSettled: () => closeModal()\n  });\n\n  const { mutate: resendApplication, isLoading: resendingApplication } = useMutation({\n    mutationFn: async () => {\n      if (application?.job) {\n        const response = await Api.resendApplication(application.job.id, application.id);\n        return response;\n      }\n    },\n    onSuccess: (res) => {\n      dispatch({ type: 'SET_SNACKBAR', payload: { message: res.res.message, state: 'success' } });\n    },\n    onError: (error: { error: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error resending application, ${error.error}`,\n          state: 'error'\n        }\n      });\n    },\n    onSettled: () => closeModal()\n  });\n\n  const { mutate: updateLinkedInURL, isLoading: updatingLinkedInURL } = useMutation({\n    mutationFn: async () =>\n      application?.candidate &&\n      Api.updateCandidateLinkedInURL(application.candidate.id, linkedInURL),\n    onSuccess: () => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `Candidate linkedIn url has been successfully updated`,\n          state: 'success'\n        }\n      });\n      application?.candidate &&\n        queryClient.setQueryData(['application'], {\n          ...application,\n          candidate: { ...application.candidate, linkedin_url: linkedInURL }\n        });\n      queryClient.invalidateQueries(['application'], { exact: true });\n      setEditLinkedInURL(false);\n    },\n    onError: (error: { error: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error updating candidate linkedIn url, ${error.error}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n  const modalState = useMemo(() => {\n    return {\n      modalDesc: () => (\n        <Stack>\n          <Stack>{`Are you sure you want to ${modalsOpen === ModalType.TRASH ? 'move this' : 'resend'}`}</Stack>\n          <Stack>{`application to ${modalsOpen === ModalType.TRASH ? 'Trash' : 'application recipient'}?`}</Stack>\n        </Stack>\n      ),\n      modalTitle: `${modalsOpen === ModalType.TRASH ? 'Trash' : 'Resend'} application`,\n      buttonText: modalsOpen === ModalType.TRASH ? 'Trash' : 'Resend',\n      callback: modalsOpen === ModalType.TRASH ? trashApplication : resendApplication,\n      callbackLoading: modalsOpen === ModalType.TRASH ? trashingApplication : resendingApplication,\n      alternateColor: modalsOpen === ModalType.RESEND\n    };\n  }, [modalsOpen, resendApplication, resendingApplication, trashApplication, trashingApplication]);\n\n  useEffect(() => {\n    application?.candidate?.linkedin_url && setLinkedInURL(application.candidate.linkedin_url);\n  }, [application]);\n\n  const validateLinkedInURL = (url: string) => {\n    return !!url.match(LINKEDIN_URL_REGEX) || url.length === 0;\n  };\n\n  const sanitizeLinkedInURL = (url: string) => {\n    const match = url.match(LINKEDIN_URL_REGEX);\n    return match ? match[0] : '';\n  };\n\n  const handleLinkedinSubmit = () => {\n    if (validateLinkedInURL(linkedInURL)) {\n      setLinkedInURL(sanitizeLinkedInURL(linkedInURL));\n      updateLinkedInURL();\n    }\n  };\n\n  const getLinkedInProfileName = () => {\n    const profileName = application?.candidate?.linkedin_url?.split('/')[4];\n    return !application?.candidate?.linkedin_url || !profileName ? 'Search Candidate' : profileName;\n  };\n\n  const LinkedInSection = useMemo(() => {\n    return (\n      <Stack sx={styles.applicationHeaderItems}>\n        <LinkedInIcon sx={styles.scoutNavyIcon} />\n        {editLinkedInURL ? (\n          <>\n            <FormTextField\n              value={linkedInURL}\n              onChange={(e) => setLinkedInURL(e.target.value)}\n              styles={styles.linkedInURLInput}\n              placeholder=\"e.g. https://linkedin.com/in/felix\"\n              onKeyDown={(e) => {\n                if (e.key === 'Enter') {\n                  handleLinkedinSubmit();\n                }\n              }}\n            />\n            {updatingLinkedInURL ? (\n              <CircularProgress size={15} />\n            ) : (\n              <DoneIcon\n                id=\"save-linkedin-url-button\"\n                sx={{ color: '#5BC4C0', cursor: 'pointer', fontSize: '16px' }}\n                onClick={handleLinkedinSubmit}\n              />\n            )}\n            <CloseIcon\n              id=\"cancel-linkedin-url-button\"\n              sx={{ ...styles.clickableGreyIcon, fontSize: '16px' }}\n              onClick={() => {\n                application?.candidate?.linkedin_url\n                  ? setLinkedInURL(application?.candidate.linkedin_url)\n                  : setLinkedInURL('');\n                setEditLinkedInURL(false);\n              }}\n            />\n            {linkedInURL && !validateLinkedInURL(linkedInURL) && (\n              <Stack sx={{ color: theme.palette.error.main, fontSize: '10px' }}>\n                Please enter a valid LinkedIn URL\n              </Stack>\n            )}\n          </>\n        ) : (\n          <>\n            <Typography\n              sx={styles.linkedInURLLink}\n              onClick={() =>\n                window.open(\n                  application?.candidate?.linkedin_url ||\n                    `https://www.linkedin.com/pub/dir?firstName=${application?.candidate?.firstname}&lastName=${application?.candidate?.lastname}&trk=people-guest_people-search-bar_search-submit`,\n                  '_blank'\n                )\n              }\n            >\n              {getLinkedInProfileName()}\n            </Typography>\n            <EditIcon\n              id=\"edit-linkedin-url-button\"\n              sx={{ ...styles.clickableGreyIcon, fontSize: '12px' }}\n              onClick={() => setEditLinkedInURL(true)}\n            />\n          </>\n        )}\n      </Stack>\n    );\n  }, [application, editLinkedInURL, linkedInURL, updateLinkedInURL, updatingLinkedInURL]);\n\n  return (\n    <Stack>\n      {!application ? (\n        [...Array(3)].map((_, index) => <Skeleton key={index} height={30} animation=\"wave\" />)\n      ) : (\n        <>\n          <Stack sx={{ flexDirection: 'row', columnGap: 3 }}>\n            <Avatar sx={{ background: '#DDDDDD', width: '72px', height: '72px' }}>\n              <CandidateIcon\n                existingCandidate={application.candidate?.existing_candidate}\n                sx={{ fontSize: '60px' }}\n              />\n            </Avatar>\n            <Stack sx={{ minWidth: '150px' }}>\n              <Stack sx={{ flexDirection: 'row', alignItems: 'center', columnGap: 1 }}>\n                <Stack sx={{ color: '#666666', fontSize: '10px', fontWeight: 600 }}>\n                  Application #{application.id}\n                </Stack>\n                <ApplicationBetaButton />\n              </Stack>\n              <Link\n                href={`${BASE_URL}/admin/candidates/${application.candidate.id}`}\n                target=\"_blank\"\n                sx={styles.candidateLink}\n              >\n                {application.candidate?.title} {application.candidate?.firstname}{' '}\n                {application.candidate?.lastname}\n              </Link>\n              <Stack\n                id=\"job-name-link\"\n                sx={{ color: '#939393', fontSize: '14px', cursor: 'pointer' }}\n                onClick={() => window.open(`${BASE_URL}/admin/jobs/${application.job.id}`, '_blank')}\n              >\n                {application.job?.title}\n              </Stack>\n              <ApplicationStatusPopover {...{ dispatch }} />\n            </Stack>\n            <Divider orientation=\"vertical\" flexItem sx={{ margin: '0px 16px' }} />\n            <Stack sx={{ rowGap: 2, paddingTop: 0.5, minWidth: '240px' }}>\n              <Stack\n                sx={{\n                  ...styles.applicationHeaderItems,\n                  cursor: permissions?.Applications?.['Send Emails'] ? 'pointer' : 'unset'\n                }}\n              >\n                <EmailIcon sx={styles.scoutNavyIcon} />\n                <Stack\n                  id=\"email-link\"\n                  onClick={() =>\n                    permissions?.Applications?.['Send Emails'] &&\n                    dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.SEND_EMAIL })\n                  }\n                >\n                  {application.candidate?.email}\n                </Stack>\n                <CopyToClipboard\n                  text={application.candidate?.email}\n                  onCopy={() => {\n                    dispatch({\n                      type: 'SET_SNACKBAR',\n                      payload: { message: 'Email copied to clipboard!', state: 'success' }\n                    });\n                  }}\n                >\n                  <Tooltip placement=\"top\" title=\"Copy email\">\n                    <CopyIcon sx={styles.smallGreyIcon} />\n                  </Tooltip>\n                </CopyToClipboard>\n              </Stack>\n              <Stack sx={styles.applicationHeaderItems}>\n                <PhoneIcon sx={styles.scoutNavyIcon} />\n                {application.candidate?.phone1}\n              </Stack>\n              {showLinkedInURL && LinkedInSection}\n            </Stack>\n            <Stack sx={{ rowGap: 2, paddingTop: 0.5 }}>\n              <Stack sx={styles.applicationHeaderItems}>\n                <LocationOnIcon sx={styles.scoutNavyIcon} />\n                {formatAddress(application.candidate?.address_details)}\n              </Stack>\n              {!!Number(application.job.options.gender_field) &&\n                permissions?.Applications?.['Show Gender'] &&\n                application?.candidate?.gender_full && (\n                  <Stack sx={styles.applicationHeaderItems}>\n                    <Man4Icon sx={styles.scoutNavyIcon} />\n                    {application.candidate.gender_full}\n                  </Stack>\n                )}\n              <Stack sx={styles.applicationHeaderItems}>\n                <EventIcon sx={styles.scoutNavyIcon} />\n                {moment\n                  .tz(\n                    application.created_at,\n                    application.job.time_zone || userTimeZone || browserTimezone\n                  )\n                  .format('ddd, D MMM YYYY, hh:mma z')}\n              </Stack>\n            </Stack>\n            <Stack sx={styles.applicationHeaderActionsContainer}>\n              {permissions?.Applications?.['Move Application'] &&\n                permissions?.Applications?.['Clone and Move Application'] && (\n                  <Tooltip placement=\"top\" title=\"Move\" arrow>\n                    <DriveFileMoveIcon\n                      id=\"move-application-button\"\n                      sx={styles.clickableGreyIcon}\n                      onClick={() => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.MOVE })}\n                    />\n                  </Tooltip>\n                )}\n              <MoreVertIcon\n                sx={styles.clickableGreyIcon}\n                onClick={(e) => {\n                  dispatch({\n                    type: 'SET_ACTIONS',\n                    payload: { anchorEl: e.target as HTMLElement }\n                  });\n                }}\n              />\n            </Stack>\n          </Stack>\n        </>\n      )}\n      {(modalsOpen === ModalType.MOVE || modalsOpen === ModalType.CLONE) && (\n        <MoveApplicationModal ApplicationState={ApplicationState} dispatch={dispatch} />\n      )}\n      <MoreOptionsPopover\n        actionsState={ApplicationState}\n        dispatch={dispatch}\n        label=\"MoreOptionsPopover\"\n      />\n      {modalsOpen == ModalType.DELETE && (\n        <DeleteApplication isDialogOpen={modalsOpen == ModalType.DELETE} dispatch={dispatch} />\n      )}\n      {modalState && (\n        <GenericDialog\n          url={''}\n          title={modalState.modalTitle}\n          description={modalState.modalDesc()}\n          buttonText={modalState.buttonText}\n          buttonCallback={() => {\n            if (modalsOpen === ModalType.RESEND && !application?.job.recipients?.length) {\n              dispatch({\n                type: 'SET_SNACKBAR',\n                payload: {\n                  message: `No email attached to application recipient. Please add a user on the Edit Job page to resend the application`,\n                  state: 'warning'\n                }\n              });\n              closeModal();\n            } else {\n              modalState.callback();\n            }\n          }}\n          callbackLoading={modalState.callbackLoading}\n          isDialogOpen={modalsOpen == ModalType.TRASH || modalsOpen == ModalType.RESEND}\n          setDialogOpen={closeModal}\n          alternateColor={modalState.alternateColor}\n          primaryButtonId={\n            modalsOpen === ModalType.TRASH ? 'confirm-trash-application-button' : undefined\n          }\n        />\n      )}\n      {modalsOpen === ModalType.SEARCH && (\n        <SearchIndex\n          isOpen={modalsOpen === ModalType.SEARCH}\n          handleClose={closeModal}\n          dispatch={dispatch}\n        />\n      )}\n    </Stack>\n  );\n}\n","import React, { useState, Dispatch } from 'react';\nimport { CircularProgress, Stack, Popover } from '@mui/material';\nimport {\n  Circle as CircleIcon,\n  ArrowDropDown as ArrowDropDownIcon,\n  ArrowDropUp as ArrowDropUpIcon\n} from '@mui/icons-material';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport { IApplication, ApplicationAction } from './types';\nimport { IApplicationStatus } from '../Job/types';\nimport { IUserPermissions } from '../Components/sharedTypes';\nimport Api from './API';\nimport { styles } from './styles';\n\nexport default function ApplicationStatusPopover({\n  dispatch\n}: {\n  dispatch: Dispatch<ApplicationAction>;\n}) {\n  const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const permissions = queryClient.getQueryData<IUserPermissions>(['permissions']);\n\n  const { data: applicationStatuses } = useQuery({\n    queryKey: ['application statuses'],\n    queryFn: async () => {\n      if (application?.job) {\n        const { res } = await Api.getApplicationStatuses(application.job.id);\n        return res.job_application_statuses as IApplicationStatus[];\n      }\n    },\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting application statuses, ${error}`,\n          state: 'error'\n        }\n      }),\n    initialData: [],\n    enabled: !!application\n  });\n\n  const { mutate: updateApplicationStatus, isLoading: updatingApplicationStatus } = useMutation({\n    mutationFn: async (id: number) => {\n      if (application?.job) {\n        const { res } = await Api.updateApplicationStatus(application.job.id, application.id, id);\n        return res;\n      }\n    },\n    onSuccess: (res) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: `Application status has been successfully updated`, state: 'success' }\n      });\n      queryClient.invalidateQueries(['application'], { exact: true });\n\n      queryClient.setQueryData(['application'], {\n        ...application,\n        status: res.name,\n        status_details: res\n      });\n    },\n    onError: (error: { error: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error updating application status, ${error.error}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n\n  const ArrowIcons = () =>\n    anchorEl ? (\n      <ArrowDropUpIcon sx={{ color: '#AAAAAA' }} />\n    ) : (\n      <ArrowDropDownIcon sx={{ color: '#AAAAAA' }} />\n    );\n\n  const enabled = permissions?.Applications?.['Change Status'];\n\n  return (\n    <Stack\n      sx={{ ...styles.applicationStatusDropdownStyle, cursor: enabled ? 'pointer' : 'default' }}\n      onClick={(e) =>\n        enabled ? (anchorEl ? setAnchorEl(null) : setAnchorEl(e.currentTarget)) : null\n      }\n    >\n      <Stack sx={{ flexDirection: 'row', columnGap: 1, alignItems: 'center' }}>\n        <CircleIcon\n          sx={{ fontSize: '0.5rem', color: application?.status_details?.colour || '#808080' }}\n        />\n        {application?.status}\n      </Stack>\n      {updatingApplicationStatus ? <CircularProgress size={15} /> : <ArrowIcons />}\n      <Popover\n        id={anchorEl ? 'status-selection' : undefined}\n        sx={styles.applicationStatusPopoverStyle}\n        open={Boolean(anchorEl)}\n        anchorEl={anchorEl}\n        onClose={() => setAnchorEl(null)}\n        anchorOrigin={{\n          vertical: 'bottom',\n          horizontal: 'left'\n        }}\n      >\n        <Stack sx={{ padding: '8px 0px' }}>\n          {applicationStatuses\n            ?.filter((status) => status.name !== application?.status)\n            ?.map((status) => (\n              <Stack\n                key={status.id}\n                onClick={() => updateApplicationStatus(status.id)}\n                sx={{ fontSize: '12px', padding: '4px 16px', '&:hover': { background: '#F5F5F5' } }}\n              >\n                {status.name}\n              </Stack>\n            ))}\n        </Stack>\n      </Popover>\n    </Stack>\n  );\n}\n","import React from 'react';\nimport { Stack } from '@mui/material';\nimport { styles } from './styles';\n\nexport default function Export({ onClick }: { onClick: () => void }) {\n  return (\n    <Stack sx={styles.exportButton} onClick={onClick}>\n      Export\n    </Stack>\n  );\n}\n","import React from 'react';\n\nexport function ScoutOnboardLogo() {\n  return (\n    <svg\n      width=\"100\"\n      height=\"22\"\n      viewBox=\"0 0 300 44\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path\n        d=\"M6.79181 23.2879C3.39981 23.2879 0.903809 20.5999 0.903809 17.1439C0.903809 13.6879 3.39981 10.9999 6.79181 10.9999C10.1838 10.9999 12.7438 13.6879 12.7438 17.1439C12.7438 20.5999 10.1838 23.2879 6.79181 23.2879ZM6.79181 43.7679C3.39981 43.7679 0.903809 41.0799 0.903809 37.6239C0.903809 34.1679 3.39981 31.4799 6.79181 31.4799C10.1838 31.4799 12.7438 34.1679 12.7438 37.6239C12.7438 41.0799 10.1838 43.7679 6.79181 43.7679Z\"\n        fill=\"#084D6D\"\n      />\n      <path\n        d=\"M38.5768 43.7679C27.2488 43.7679 19.5048 35.6399 19.5048 22.0079C19.5048 8.31187 27.2488 0.567871 38.5768 0.567871C49.9048 0.567871 57.6488 8.37587 57.6488 22.0079C57.6488 35.6399 49.9048 43.7679 38.5768 43.7679ZM38.5768 35.1919C44.0808 35.1919 47.4728 30.0719 47.4728 22.0079C47.4728 13.8799 44.0808 9.14387 38.5768 9.14387C33.1368 9.14387 29.6808 13.8799 29.6808 22.0079C29.6808 30.0719 33.1368 35.1919 38.5768 35.1919Z\"\n        fill=\"#084D6D\"\n      />\n      <path\n        d=\"M65.3623 42.9999V1.33587H75.6663L85.9063 21.3039C87.3783 24.1199 88.7223 27.4479 90.0023 30.7119H90.2583C89.7463 26.2319 88.9783 20.2799 88.9783 15.3519V1.33587H98.3863V42.9999H88.1463L77.8423 23.0319C76.4343 20.2159 75.0903 16.8879 73.8103 13.6239H73.5543C74.0663 18.2319 74.8343 23.9919 74.8343 28.9839V42.9999H65.3623Z\"\n        fill=\"#084D6D\"\n      />\n      <path\n        d=\"M108.05 42.9999V1.33587H122.578C131.218 1.33587 138.066 3.63987 138.066 11.7039C138.066 15.3519 136.018 19.3839 132.626 20.6639V20.9199C136.85 22.0719 140.114 25.1439 140.114 30.7119C140.114 39.2239 132.818 42.9999 123.794 42.9999H108.05ZM118.034 17.9119H122.194C126.482 17.9119 128.338 16.0559 128.338 13.1759C128.338 10.1679 126.354 8.95187 122.258 8.95187H118.034V17.9119ZM118.034 35.3839H123.026C127.89 35.3839 130.386 33.5919 130.386 30.0719C130.386 26.5519 127.954 25.2079 123.026 25.2079H118.034V35.3839Z\"\n        fill=\"#084D6D\"\n      />\n      <path\n        d=\"M164.077 43.7679C152.749 43.7679 145.005 35.6399 145.005 22.0079C145.005 8.31187 152.749 0.567871 164.077 0.567871C175.405 0.567871 183.149 8.37587 183.149 22.0079C183.149 35.6399 175.405 43.7679 164.077 43.7679ZM164.077 35.1919C169.581 35.1919 172.973 30.0719 172.973 22.0079C172.973 13.8799 169.581 9.14387 164.077 9.14387C158.637 9.14387 155.181 13.8799 155.181 22.0079C155.181 30.0719 158.637 35.1919 164.077 35.1919Z\"\n        fill=\"#084D6D\"\n      />\n      <path\n        d=\"M200.349 22.1359L199.453 25.7199H207.965L207.069 22.1359C205.981 18.0399 204.893 13.1119 203.805 8.75987H203.549C202.525 13.1119 201.437 18.0399 200.349 22.1359ZM184.925 42.9999L197.917 1.33587H209.821L222.813 42.9999H212.317L209.885 33.3999H197.533L195.101 42.9999H184.925Z\"\n        fill=\"#084D6D\"\n      />\n      <path\n        d=\"M227.112 42.9999V1.33587H242.408C251.24 1.33587 258.664 4.40787 258.664 14.4559C258.664 20.5359 255.784 24.4399 251.496 26.4879L260.776 42.9999H249.64L241.96 28.3439H237.096V42.9999H227.112ZM237.096 20.4719H241.64C246.376 20.4719 248.936 18.4239 248.936 14.4559C248.936 10.4879 246.376 9.20787 241.64 9.20787H237.096V20.4719Z\"\n        fill=\"#084D6D\"\n      />\n      <path\n        d=\"M266.675 42.9999V1.33587H278.643C291.379 1.33587 299.763 7.54387 299.763 22.0079C299.763 36.4079 291.379 42.9999 279.219 42.9999H266.675ZM276.659 34.9999H278.067C284.787 34.9999 289.587 31.8639 289.587 22.0079C289.587 12.0879 284.787 9.33587 278.067 9.33587H276.659V34.9999Z\"\n        fill=\"#084D6D\"\n      />\n    </svg>\n  );\n}\n","import React, { useState, Dispatch, useRef } from 'react';\nimport { Autocomplete, Stack, TextField } from '@mui/material';\nimport StyledModal from '../../../Components/GenericModal/StyledModal';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../API';\nimport { ApplicationAction, ApplicationState, IApplication } from '../../types';\nimport { ModalType } from '../../config';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport ModalFooterButtons from '../../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from '../styles';\nimport { FormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport { TCandidate } from '../../../Candidates/types';\nimport { validateEmail } from '../../../Candidates/EditCandidate';\nimport { scrollToElement } from '../../../utils/scroll-to-element';\n\nexport default function AlayaCare({\n  ApplicationState,\n  dispatch\n}: {\n  ApplicationState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n}) {\n  const { modalsOpen } = ApplicationState;\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const [candidate, setCandidate] = useState<TCandidate | null>(application?.candidate || null);\n  const [errors, setErrors] = useState<Record<string, string>>({});\n  const [state, setState] = useState<string | null>(null);\n  const [title, setTitle] = useState<string | null>(null);\n  const [gender, setGender] = useState<string | null>(null);\n\n  const fieldRefs = {\n    firstName: useRef<HTMLInputElement>(null),\n    lastName: useRef<HTMLInputElement>(null),\n    email: useRef<HTMLInputElement>(null),\n    mobile: useRef<HTMLInputElement>(null),\n    postcode: useRef<HTMLInputElement>(null)\n  };\n\n  const { data: alayaCareData, isLoading: loadingAlayaCareData } = useQuery({\n    queryKey: ['AlayaCare data'],\n    queryFn: async () => {\n      if (application) {\n        const { res } = await Api.getAlayaCareData(application.id);\n        return res;\n      }\n    },\n    onSuccess: (res) => {\n      if (!res) return;\n      const savedState = res.states.find(\n        (state) => state === application?.candidate?.address_details.state?.abbreviation\n      );\n      const savedTitle = res.titles.find((title) => title === application?.candidate?.title);\n      const savedGender = res.genders.find(\n        (gender) => gender === application?.candidate?.gender_full\n      );\n      savedState && setState(savedState);\n      savedTitle && setTitle(savedTitle);\n      savedGender && setGender(savedGender);\n    },\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting AlayaCare data, ${error}`,\n          state: 'error'\n        }\n      })\n  });\n\n  const validateInputs = () => {\n    if (!candidate) return false;\n    setErrors({});\n    const inputErrors: Record<string, string> = {};\n    if (!candidate.firstname.trim()) inputErrors.firstName = 'First name can not be empty';\n    if (!candidate.lastname.trim()) inputErrors.lastName = 'Last name can not be empty';\n    if (!validateEmail(candidate.email)) inputErrors.email = 'Please enter a proper email address';\n    if (!candidate.phone1.trim()) inputErrors.mobile = 'Please enter a mobile number';\n    if (!candidate.address_details?.postcode?.trim())\n      inputErrors.postcode = 'Please enter a postcode';\n    setErrors(inputErrors);\n    if (inputErrors.firstName) {\n      scrollToElement(fieldRefs.firstName);\n    } else if (inputErrors.lastName) {\n      scrollToElement(fieldRefs.lastName);\n    } else if (inputErrors.email) {\n      scrollToElement(fieldRefs.email);\n    } else if (inputErrors.mobile) {\n      scrollToElement(fieldRefs.mobile);\n    } else if (inputErrors.postcode) {\n      scrollToElement(fieldRefs.postcode);\n    }\n    return !Object.keys(inputErrors).length;\n  };\n\n  const { mutate: alayaCareExport, isLoading: exportingAlayaCare } = useMutation({\n    mutationFn: async () => {\n      if (application && candidate && candidate.address_details.postcode) {\n        const { res } = await Api.alayaCareExport({\n          application_id: application.id,\n          firstname: candidate.firstname,\n          lastname: candidate.lastname,\n          email: candidate.email,\n          gender: gender || undefined,\n          title: title || undefined,\n          mobile_phone: candidate.phone1,\n          street: candidate.address_details.street1 || undefined,\n          street_cont: candidate.address_details.street2 || undefined,\n          suburb_town: candidate.address_details.suburb || undefined,\n          state: state || undefined,\n          postcode: candidate.address_details.postcode\n        });\n        return res;\n      }\n    },\n    onSuccess: (res) => {\n      if (!res) return;\n      dispatch({ type: 'SET_SNACKBAR', payload: { message: res.success, state: 'success' } });\n      handleClose();\n    },\n    onError: (error: { error: string }) => {\n      dispatch({ type: 'SET_SNACKBAR', payload: { message: error.error, state: 'error' } });\n    }\n  });\n\n  const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n  if (!candidate) return null;\n\n  return (\n    <StyledModal\n      isOpen={modalsOpen === ModalType.ALAYACARE}\n      label=\"AlayaCare export modal\"\n      handleClose={handleClose}\n      styleOverrides={styles.modalStyleOverrides}\n    >\n      <Stack sx={styles.modalContainer}>\n        <Stack sx={styles.modalTitle}>Export to AlayaCare</Stack>\n        <Stack sx={{ overflow: 'auto', rowGap: 3 }}>\n          <Stack sx={styles.modalDoubleColumn}>\n            <FormTextField\n              label=\"First name\"\n              value={candidate.firstname || ''}\n              required\n              fullWidth\n              onChange={(e) => setCandidate({ ...candidate, firstname: e.target.value })}\n              error={errors.firstName}\n              innerRef={fieldRefs.firstName}\n            />\n            <FormTextField\n              label=\"Last name\"\n              value={candidate.lastname || ''}\n              required\n              fullWidth\n              onChange={(e) => setCandidate({ ...candidate, lastname: e.target.value })}\n              error={errors.lastName}\n              innerRef={fieldRefs.lastName}\n            />\n          </Stack>\n          <Stack sx={styles.modalDoubleColumn}>\n            <FormTextField\n              label=\"Email\"\n              value={candidate.email}\n              required\n              onChange={(e) => setCandidate({ ...candidate, email: e.target.value })}\n              fullWidth\n              error={errors.email}\n              innerRef={fieldRefs.email}\n            />\n            <FormTextField\n              label={'Mobile phone'}\n              value={candidate.phone1}\n              required\n              onChange={(e) => setCandidate({ ...candidate, phone1: e.target.value })}\n              fullWidth\n              error={errors.mobile}\n              innerRef={fieldRefs.mobile}\n            />\n          </Stack>\n          <Stack sx={styles.modalDoubleColumn}>\n            <Autocomplete\n              disablePortal\n              options={alayaCareData?.titles || []}\n              value={title}\n              sx={{ ...sharedClasses.formAutocomplete, width: '100%', marginTop: 3 }}\n              loading={loadingAlayaCareData}\n              loadingText=\"Loading titles...\"\n              ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n              renderInput={(params) => (\n                <TextField\n                  {...params}\n                  label=\"Title\"\n                  placeholder=\"Please select\"\n                  InputLabelProps={{ shrink: true }}\n                  sx={styles.autoCompleteTextfield}\n                />\n              )}\n              onChange={(event, value) => setTitle(value)}\n            />\n            <Autocomplete\n              disablePortal\n              options={alayaCareData?.genders || []}\n              value={gender}\n              sx={{ ...sharedClasses.formAutocomplete, width: '100%', marginTop: 3 }}\n              loading={loadingAlayaCareData}\n              loadingText=\"Loading gender options...\"\n              ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n              renderInput={(params) => (\n                <TextField\n                  {...params}\n                  label=\"Gender\"\n                  placeholder=\"Please select\"\n                  InputLabelProps={{ shrink: true }}\n                  sx={styles.autoCompleteTextfield}\n                />\n              )}\n              onChange={(event, value) => setGender(value)}\n            />\n          </Stack>\n          <Stack sx={styles.modalDoubleColumn}>\n            <FormTextField\n              label=\"Street address\"\n              value={candidate?.address_details?.street1 || ''}\n              fullWidth\n              onChange={(e) =>\n                setCandidate({\n                  ...candidate,\n                  address_details: { ...candidate.address_details, street1: e.target.value }\n                })\n              }\n            />\n            <FormTextField\n              label=\"Street address cont'd\"\n              value={candidate?.address_details?.street2 || ''}\n              fullWidth\n              onChange={(e) =>\n                setCandidate({\n                  ...candidate,\n                  address_details: { ...candidate.address_details, street2: e.target.value }\n                })\n              }\n            />\n          </Stack>\n          <Stack sx={{ ...styles.modalDoubleColumn, marginRight: '2px' }}>\n            <FormTextField\n              label=\"City, town or suburb\"\n              value={candidate?.address_details?.suburb || ''}\n              fullWidth\n              onChange={(e) =>\n                setCandidate({\n                  ...candidate,\n                  address_details: { ...candidate.address_details, suburb: e.target.value }\n                })\n              }\n            />\n            <Autocomplete\n              disablePortal\n              options={alayaCareData?.states || []}\n              value={state}\n              sx={{ ...sharedClasses.formAutocomplete, width: '100%', marginTop: '20px' }}\n              loading={loadingAlayaCareData}\n              loadingText=\"Loading states...\"\n              ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n              renderInput={(params) => (\n                <TextField\n                  {...params}\n                  label=\"State, region or province\"\n                  placeholder=\"Please select\"\n                  InputLabelProps={{ shrink: true }}\n                  sx={{\n                    ...styles.autoCompleteTextfield,\n                    '& .MuiInputBase-root': { margin: 'unset', marginTop: 0.5 }\n                  }}\n                />\n              )}\n              onChange={(event, value) => setState(value)}\n            />\n          </Stack>\n          <FormTextField\n            label=\"Postcode\"\n            value={candidate?.address_details?.postcode || ''}\n            styles={{ width: '48%' }}\n            onChange={(e) =>\n              setCandidate({\n                ...candidate,\n                address_details: { ...candidate.address_details, postcode: e.target.value }\n              })\n            }\n            required\n            error={errors.postcode}\n            innerRef={fieldRefs.postcode}\n          />\n        </Stack>\n        <ModalFooterButtons\n          primaryButtonText=\"Export\"\n          primaryButtonCallback={() => validateInputs() && alayaCareExport()}\n          isLoading={exportingAlayaCare}\n          secondaryButtonText=\"Cancel\"\n          secondaryButtonCallback={handleClose}\n          primaryButtonMinWidth=\"95px\"\n        />\n      </Stack>\n    </StyledModal>\n  );\n}\n","import React, { Dispatch } from 'react';\nimport { Button, Dialog, Stack, Tooltip } from '@mui/material';\nimport { CheckCircle as CheckCircleIcon, FileCopy as FileCopyIcon } from '@mui/icons-material';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { ApplicationAction, IApplication } from '../../types';\nimport { styles } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\n\nexport type AlreadyExportedModalProps = {\n  revolve: boolean;\n  referoo: boolean;\n  hro: boolean;\n  sparkhire: boolean;\n  cognology: boolean;\n  foundu: boolean;\n};\n\nexport default function AlreadyExportedModal({\n  alreadyExportedModalOpen,\n  onClose,\n  dispatch,\n  buttonName,\n  callback\n}: {\n  alreadyExportedModalOpen: AlreadyExportedModalProps;\n  onClose: () => void;\n  dispatch: Dispatch<ApplicationAction>;\n  buttonName?: string;\n  callback?: () => void;\n}) {\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n\n  const integrationTitle = () => {\n    if (alreadyExportedModalOpen.referoo) {\n      return 'Referoo';\n    } else if (alreadyExportedModalOpen.sparkhire) {\n      return 'SparkHire';\n    } else if (alreadyExportedModalOpen.revolve) {\n      return 'Revolve Onboard';\n    } else if (alreadyExportedModalOpen.hro) {\n      return 'HROnboard';\n    } else if (alreadyExportedModalOpen.foundu) {\n      return 'foundU';\n    } else {\n      return 'Cognology';\n    }\n  };\n\n  const integrationName = () => {\n    if (alreadyExportedModalOpen.referoo) {\n      return 'Referoo';\n    } else if (alreadyExportedModalOpen.sparkhire) {\n      return 'SparkHire';\n    } else if (alreadyExportedModalOpen.cognology) {\n      return 'Cognology';\n    } else if (alreadyExportedModalOpen.foundu) {\n      return 'foundU';\n    }\n  };\n\n  if (!application) return null;\n  return (\n    <Dialog\n      open={\n        alreadyExportedModalOpen.revolve ||\n        alreadyExportedModalOpen.referoo ||\n        alreadyExportedModalOpen.hro ||\n        alreadyExportedModalOpen.sparkhire ||\n        alreadyExportedModalOpen.foundu ||\n        alreadyExportedModalOpen.cognology\n      }\n      onClose={onClose}\n    >\n      <Stack sx={styles.alreadyExportedModal}>\n        <CheckCircleIcon sx={{ color: '#5BC4BF', fontSize: '4rem' }} />\n        <Stack sx={styles.modalTitle}>{`Export to ${integrationTitle()}`}</Stack>\n        <Stack sx={{ alignItems: 'center', color: '#333333', paddingBottom: 2 }}>\n          {alreadyExportedModalOpen.referoo ||\n          alreadyExportedModalOpen.foundu ||\n          alreadyExportedModalOpen.sparkhire ||\n          alreadyExportedModalOpen.cognology ? (\n            <>\n              <Stack>This application has already been</Stack>\n              <Stack>{`exported to ${integrationName()}`}</Stack>\n            </>\n          ) : (\n            <Stack>{`This application has already been exported to ${alreadyExportedModalOpen.hro ? 'HROnboard' : 'Revolve.'}`}</Stack>\n          )}\n          {alreadyExportedModalOpen.revolve && (\n            <Stack sx={{ flexDirection: 'row', columnGap: 1, alignItems: 'center' }}>\n              <Stack>Revolve record id is</Stack>\n              <Stack fontWeight=\"bold\">{application.revolve_record_id}</Stack>\n              <CopyToClipboard\n                id=\"copy-revolve-id-button\"\n                text={application.revolve_record_id}\n                onCopy={() =>\n                  dispatch({\n                    type: 'SET_SNACKBAR',\n                    payload: {\n                      message: 'Revolve record id has been copied to clipboard',\n                      state: 'success'\n                    }\n                  })\n                }\n              >\n                <Tooltip title={'Copy ID'} placement={'bottom'}>\n                  <FileCopyIcon fontSize=\"small\" sx={{ color: '#666666', cursor: 'pointer' }} />\n                </Tooltip>\n              </CopyToClipboard>\n            </Stack>\n          )}\n        </Stack>\n        <Button\n          sx={sharedClasses.genericButton}\n          onClick={() => {\n            callback && callback();\n            onClose();\n          }}\n        >\n          {buttonName || 'Exit'}\n        </Button>\n      </Stack>\n    </Dialog>\n  );\n}\n","import React, { useState, Dispatch } from 'react';\nimport {\n  Autocomplete,\n  Button,\n  Checkbox,\n  CircularProgress,\n  FormControlLabel,\n  Stack,\n  TextField\n} from '@mui/material';\nimport { NavigateBefore as NavigateBeforeIcon } from '@mui/icons-material';\nimport StyledModal from '../../../../Components/GenericModal/StyledModal';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../../API';\nimport {\n  ApplicationAction,\n  ApplicationState,\n  IApplication,\n  ICognologyRecord,\n  IIntegrationsResponse\n} from '../../../types';\nimport { ModalType } from '../../../config';\nimport { sharedClasses } from '../../../../Components/CustomUIElements/sharedClasses';\nimport { styles } from '../../styles';\nimport { ICountries, IStates } from '../../../../Components/sharedTypes';\nimport { classes } from '../../../../Job/Applications/styles';\nimport CognologySummary from './CognologySummary';\nimport { useGetCognologyData } from '../../../helper';\nimport CognologyApprovalDetails from './CognologyApprovalDetails';\nimport CognologyStep1 from './CognologyStep1';\n\nexport const autocompleteStyle = {\n  ...sharedClasses.formAutocomplete,\n  width: '48%',\n  paddingTop: 3,\n  '.MuiInputBase-root': { margin: '3px 0px' }\n};\n\nexport default function Cognology({\n  ApplicationState,\n  dispatch\n}: {\n  ApplicationState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n}) {\n  const { modalsOpen } = ApplicationState;\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const integrationsData = queryClient.getQueryData<IIntegrationsResponse>(['integrations']);\n  const [exportPreference, setExportPreference] = useState<string>('quick');\n  const [startDate, setStartDate] = useState<Date | null>(null);\n  const [country, setCountry] = useState<ICountries | null>(null);\n  const [state, setState] = useState<IStates | null>(null);\n  const [step, setStep] = useState<number>(1);\n  const [record, setRecord] = useState<ICognologyRecord | null>(null);\n  const [approvalTemplate, setApprovalTemplate] = useState<{ id: number; name: string } | null>(\n    null\n  );\n  const [reapproval, setReapproval] = useState<boolean>(false);\n  const [categories, setCategories] = useState<Record<string, [string, number] | null> | null>(\n    null\n  );\n  const [attachments, setAttachments] = useState<Record<\n    number,\n    { id: number; name: string } | null\n  > | null>(null);\n\n  const { cognologyData, loadingCognologyData } = useGetCognologyData({\n    applicationId: application?.id,\n    dispatch,\n    setRecord,\n    setCategories,\n    setAttachments\n  });\n\n  const categoriesPayload = () => {\n    if (!categories) return;\n    const payload: Record<string, { id: number | null; new_value?: string; name?: string } | null> =\n      {};\n    Object.keys(categories).forEach((key) => {\n      if (categories[key]) {\n        if (categories[key][1]) {\n          return (payload[key] = { id: categories[key][1], name: categories[key][0] });\n        } else {\n          return (payload[key] = { id: null, new_value: categories[key][0] });\n        }\n      } else {\n        return (payload[key] = null);\n      }\n    });\n    return payload;\n  };\n\n  const { mutate: cognologyExport, isLoading: exportingCognology } = useMutation({\n    mutationFn: async () => {\n      if (application && country && record && attachments) {\n        const { res } = await Api.cognologyExport({\n          application_id: application.id,\n          candidate_title: record.candidate_title || '',\n          candidate_first_name: record.candidate_first_name,\n          candidate_last_name: record.candidate_last_name,\n          candidate_email: record.candidate_email,\n          candidate_phone1: record.candidate_phone1,\n          candidate_phone2: record.candidate_phone2,\n          candidate_addr_street1: record.candidate_addr_street1,\n          candidate_addr_street2: record.candidate_addr_street2,\n          candidate_addr_suburb: record.candidate_addr_suburb,\n          candidate_addr_state: state?.abbreviation || '',\n          candidate_addr_postcode: record.candidate_addr_postcode,\n          candidate_addr_country: country.iso,\n          requisition_form_id: approvalTemplate ? approvalTemplate.id : undefined,\n          candidate_gender: record.candidate_gender || '',\n          start_date: startDate?.toISOString() || '',\n          candidate_employee_id: record.candidate_employee_id || '',\n          manager_id: record.manager_id || '',\n          recruitment_record_url: record.recruitment_record_url,\n          reapproval_required_for_modifications: reapproval,\n          categories: exportPreference === 'quick' ? null : categoriesPayload(),\n          assets: attachments\n        });\n        return res;\n      }\n    },\n    onSuccess: (res) => {\n      if (!res) return;\n      if (!setApprovalTemplate) {\n        queryClient.invalidateQueries(['integrations'], { exact: true });\n        dispatch({ type: 'SET_SNACKBAR', payload: { message: res.success, state: 'success' } });\n        handleClose();\n      } else {\n        if (!res.approval_url) return;\n        window.location.href = res.approval_url;\n      }\n    },\n    onError: (error: { error: string }) => {\n      dispatch({ type: 'SET_SNACKBAR', payload: { message: error.error, state: 'error' } });\n    }\n  });\n\n  const handleSubmit = () => {\n    if (step === 1) {\n      setStep(2);\n    } else {\n      cognologyExport();\n    }\n  };\n\n  const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n  const buttonName = () => {\n    if (step === 1) {\n      return 'Next';\n    } else {\n      return integrationsData?.cognology_config.approval_bypassed ? 'Export' : 'Submit';\n    }\n  };\n\n  return (\n    <StyledModal\n      isOpen={modalsOpen === ModalType.COGNOLOGY || modalsOpen === ModalType.EDIT_COGNOLOGY}\n      label=\"Cognology export modal\"\n      handleClose={handleClose}\n      styleOverrides={styles.modalStyleOverrides}\n    >\n      <Stack sx={styles.modalContainer}>\n        <Stack sx={styles.modalTitle}>Export to Cognology</Stack>\n        <Stack sx={{ overflow: 'auto', rowGap: 2 }}>\n          {modalsOpen === ModalType.EDIT_COGNOLOGY && cognologyData?.cognology_requisition && (\n            <CognologyApprovalDetails\n              requisition={cognologyData.cognology_requisition}\n              reapprovalRequired={cognologyData.record.reapproval_required_for_modifications}\n            />\n          )}\n          {step === 1 ? (\n            <CognologyStep1\n              {...{\n                exportPreference,\n                setExportPreference,\n                record,\n                setRecord,\n                country,\n                setCountry,\n                state,\n                setState,\n                categories,\n                setCategories,\n                attachments,\n                setAttachments,\n                startDate,\n                setStartDate,\n                dispatch\n              }}\n            />\n          ) : (\n            <>\n              {(integrationsData?.cognology_config.approval_bypassed ||\n                modalsOpen === ModalType.EDIT_COGNOLOGY) &&\n              record ? (\n                <CognologySummary {...{ record, country, state, startDate }} />\n              ) : (\n                <>\n                  <Stack sx={styles.cognologySectionTitle}>Approval Details</Stack>\n                  <Autocomplete\n                    disablePortal\n                    autoHighlight\n                    includeInputInList\n                    value={approvalTemplate}\n                    options={cognologyData?.requisition_forms || []}\n                    getOptionLabel={(option) => option.name}\n                    loading={loadingCognologyData}\n                    loadingText=\"Loading approval templates...\"\n                    onChange={(_event, newValue) => setApprovalTemplate(newValue)}\n                    sx={autocompleteStyle}\n                    ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n                    renderInput={(params) => (\n                      <TextField\n                        {...params}\n                        label=\"Approval template\"\n                        InputLabelProps={{ shrink: true }}\n                        placeholder=\"Please select\"\n                      />\n                    )}\n                  />\n                  <FormControlLabel\n                    control={\n                      <Checkbox\n                        sx={sharedClasses.formCheckbox}\n                        checked={reapproval}\n                        onClick={() => setReapproval(!reapproval)}\n                        disableRipple\n                      />\n                    }\n                    label=\"Reapproval required for modifications\"\n                    sx={sharedClasses.checkboxLabel}\n                  />\n                </>\n              )}\n            </>\n          )}\n        </Stack>\n        <Stack\n          sx={{ flexDirection: 'row', justifyContent: 'flex-end', columnGap: 1, paddingTop: 1 }}\n        >\n          <Button\n            sx={classes.modalCancelButton}\n            onClick={() => dispatch({ type: 'SET_MODALS_OPEN', payload: null })}\n          >\n            Cancel\n          </Button>\n          {step === 2 && (\n            <Button\n              onClick={() => setStep(1)}\n              sx={{ ...sharedClasses.genericButtonSecondary, minWidth: 'unset', padding: 1 }}\n            >\n              <NavigateBeforeIcon />\n            </Button>\n          )}\n          <Button\n            sx={{ ...sharedClasses.genericButton, minWidth: '95px', minHeight: '41px' }}\n            onClick={handleSubmit}\n          >\n            {exportingCognology ? <CircularProgress size={20} color=\"inherit\" /> : buttonName()}\n          </Button>\n        </Stack>\n      </Stack>\n    </StyledModal>\n  );\n}\n","import React, { Dispatch } from 'react';\nimport { Button, Dialog, Stack } from '@mui/material';\nimport { Error as ErrorIcon } from '@mui/icons-material';\nimport { styles } from '../../styles';\nimport { sharedClasses } from '../../../../Components/CustomUIElements/sharedClasses';\nimport { ApplicationAction, IApplication } from '../../../types';\nimport { ModalType } from '../../../config';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../../API';\nimport { useGetCognologyData } from '../../../helper';\n\nexport default function CognologyAfterApprovalModal({\n  open,\n  onClose,\n  dispatch\n}: {\n  open: boolean;\n  onClose: () => void;\n  dispatch: Dispatch<ApplicationAction>;\n}) {\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n\n  const { cognologyData } = useGetCognologyData({\n    applicationId: application?.id,\n    dispatch\n  });\n\n  const { mutate: exportToCognology } = useMutation({\n    mutationFn: async () => {\n      if (application) {\n        const { res } = await Api.exportToCognology(application.id);\n        return res;\n      }\n    },\n    onSuccess: (res) => {\n      if (!res) return;\n      dispatch({ type: 'SET_SNACKBAR', payload: { message: res.success, state: 'success' } });\n      dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n    },\n    onError: (error: { error: string }) => {\n      dispatch({ type: 'SET_SNACKBAR', payload: { message: error.error, state: 'error' } });\n    }\n  });\n\n  return (\n    <Dialog open={open} onClose={onClose}>\n      <Stack sx={styles.alreadyExportedModal}>\n        <ErrorIcon sx={{ color: '#5BC4BF', fontSize: '4rem' }} />\n        <Stack sx={styles.modalTitle}>Export to Cognology</Stack>\n        <Stack sx={{ alignItems: 'center', color: '#333333', paddingBottom: 3 }}>\n          This application has been approved\n        </Stack>\n        <Stack sx={{ flexDirection: 'row', columnGap: 2 }}>\n          <Button\n            sx={sharedClasses.genericRedButton}\n            onClick={() =>\n              cognologyData?.record.reapproval_required_for_modifications\n                ? dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.COGNOLOGY })\n                : dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.EDIT_COGNOLOGY })\n            }\n          >\n            {cognologyData?.record.reapproval_required_for_modifications\n              ? 'Reset approval'\n              : 'Edit candidate details'}\n          </Button>\n          <Button sx={sharedClasses.genericButton} onClick={() => exportToCognology()}>\n            Continue to export\n          </Button>\n        </Stack>\n      </Stack>\n    </Dialog>\n  );\n}\n","import React from 'react';\nimport { Link, Stack } from '@mui/material';\nimport { Cancel as CancelIcon, CheckCircle as CheckCircleIcon } from '@mui/icons-material';\nimport { theme } from '../../../../../ThemeContext/ThemeObject';\nimport { styles } from '../../styles';\n\nexport default function CognologyApprovalDetails({\n  requisition,\n  reapprovalRequired\n}: {\n  requisition: { url: string; name: string };\n  reapprovalRequired: boolean;\n}) {\n  return (\n    <>\n      <Stack sx={styles.cognologySectionTitle}>Approval Details</Stack>\n      <Stack>\n        <Stack sx={{ color: theme.palette.common.grey }}>Approval form</Stack>\n        <Stack>\n          <Link href={requisition.url} target=\"_blank\" style={{ textDecoration: 'underline' }}>\n            {requisition.name}\n          </Link>\n        </Stack>\n      </Stack>\n      <Stack>\n        <Stack sx={{ color: theme.palette.common.grey }}>\n          Reapproval required for modifications\n        </Stack>\n        {reapprovalRequired ? (\n          <CheckCircleIcon sx={{ color: theme.palette.action.main }} />\n        ) : (\n          <CancelIcon sx={{ color: theme.palette.error.main }} />\n        )}\n      </Stack>\n    </>\n  );\n}\n","import React, { useState, Dispatch, SetStateAction, useEffect } from 'react';\nimport { Autocomplete, Stack, TextField } from '@mui/material';\nimport { styles } from '../../styles';\nimport { sharedClasses } from '../../../../Components/CustomUIElements/sharedClasses';\nimport {\n  ApplicationAction,\n  IApplication,\n  IIntegrationsResponse,\n  ICognologyRecord\n} from '../../../types';\nimport { useQuery, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../../API';\nimport { useGetCognologyData } from '../../../helper';\nimport FormRadioButtonGroup from '../../../../Components/CustomUIElements/FormRadioButtonGroup';\nimport { FormTextField } from '../../../../Components/CustomUIElements/FormTextField';\nimport { SingleDatePicker } from '../../../../Components/CustomUIElements/SingleDatePicker';\nimport { cognologyExportPreference } from '../../../config';\nimport { autocompleteStyle } from './Cognology';\nimport DocTypeIcon from '../../../../Components/Utilities/DocTypeIcon';\nimport { ICountries, IStates } from '../../../../Components/sharedTypes';\nimport dayjs from 'dayjs';\n\nexport default function CognologyStep1({\n  exportPreference,\n  setExportPreference,\n  record,\n  setRecord,\n  country,\n  setCountry,\n  state,\n  setState,\n  categories,\n  setCategories,\n  attachments,\n  setAttachments,\n  startDate,\n  setStartDate,\n  dispatch\n}: {\n  exportPreference: string;\n  setExportPreference: Dispatch<SetStateAction<string>>;\n  record: ICognologyRecord | null;\n  setRecord: Dispatch<SetStateAction<ICognologyRecord | null>>;\n  country: ICountries | null;\n  setCountry: Dispatch<SetStateAction<ICountries | null>>;\n  state: IStates | null;\n  setState: Dispatch<SetStateAction<IStates | null>>;\n  categories: Record<string, [string, number] | null> | null;\n  setCategories: Dispatch<SetStateAction<Record<string, [string, number] | null> | null>>;\n  attachments: Record<number, { id: number; name: string } | null> | null;\n  setAttachments: Dispatch<\n    SetStateAction<Record<number, { id: number; name: string } | null> | null>\n  >;\n  startDate: Date | null;\n  setStartDate: Dispatch<SetStateAction<Date | null>>;\n  dispatch: Dispatch<ApplicationAction>;\n}) {\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const integrationsData = queryClient.getQueryData<IIntegrationsResponse>(['integrations']);\n  const [dateError, setDateError] = useState<string>('');\n\n  const { cognologyData, loadingCognologyData } = useGetCognologyData({\n    applicationId: application?.id,\n    dispatch\n  });\n\n  const { data: countriesStates } = useQuery({\n    queryKey: ['countries states'],\n    queryFn: async () => {\n      const { res } = await Api.getCountriesStates();\n      return res.countries;\n    },\n    onSuccess: (res) => {\n      const savedCountry = res.find((r) => r.iso === record?.candidate_addr_country);\n      const savedState = savedCountry?.states?.find(\n        (s) => s.abbreviation === record?.candidate_addr_state\n      );\n      savedCountry && setCountry(savedCountry);\n      savedState && setState(savedState);\n    },\n    onError: (error) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting countries and states data, ${error}`,\n          state: 'error'\n        }\n      });\n    },\n    enabled: !!record\n  });\n\n  useEffect(() => {\n    record?.categories && setExportPreference('full');\n  }, [record, setExportPreference]);\n\n  return (\n    <>\n      <FormRadioButtonGroup\n        options={cognologyExportPreference}\n        onChange={(value) => setExportPreference(value.toString())}\n        directionRow\n        color={'#939393'}\n        defaultValue={exportPreference}\n        groupLabel=\"Export preference\"\n        required\n      />\n      <Stack sx={styles.cognologySectionTitle}>Candidate Details</Stack>\n      {!integrationsData?.cognology_config.id_blank && (\n        <FormTextField\n          label=\"Employee ID\"\n          value={record?.candidate_employee_id || ''}\n          styles={{ width: '48%' }}\n          required\n          onChange={(e) =>\n            record && setRecord({ ...record, candidate_employee_id: e.target.value })\n          }\n          helperText=\"Please leave it blank to have Cognology generate an employee ID automatically\"\n        />\n      )}\n      <Autocomplete\n        disablePortal\n        autoHighlight\n        includeInputInList\n        value={record?.candidate_title || null}\n        options={['Mr', 'Mrs', 'Ms', 'Miss', 'Dr', 'Other']}\n        onChange={(_event, newValue) =>\n          record && setRecord({ ...record, candidate_title: newValue })\n        }\n        sx={autocompleteStyle}\n        ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n        renderInput={(params) => (\n          <TextField\n            {...params}\n            label=\"Title\"\n            InputLabelProps={{ shrink: true }}\n            placeholder=\"Please select\"\n          />\n        )}\n      />\n      <Stack sx={styles.modalDoubleColumn}>\n        <FormTextField\n          label=\"First name\"\n          value={record?.candidate_first_name || ''}\n          required\n          fullWidth\n          onChange={(e) => record && setRecord({ ...record, candidate_first_name: e.target.value })}\n        />\n        <FormTextField\n          label=\"Last name\"\n          value={record?.candidate_last_name || ''}\n          required\n          fullWidth\n          onChange={(e) => record && setRecord({ ...record, candidate_last_name: e.target.value })}\n        />\n      </Stack>\n      <FormTextField\n        label=\"Email\"\n        value={record?.candidate_email || ''}\n        styles={{ width: '48%' }}\n        required\n        onChange={(e) => record && setRecord({ ...record, candidate_email: e.target.value })}\n      />\n      <Stack sx={styles.modalDoubleColumn}>\n        <FormTextField\n          label={'Phone (must include country code)'}\n          value={record?.candidate_phone1 || ''}\n          onChange={(e) => record && setRecord({ ...record, candidate_phone1: e.target.value })}\n          fullWidth\n        />\n        <FormTextField\n          label={'Mobile (must include country code)'}\n          value={record?.candidate_phone2 || ''}\n          onChange={(e) => record && setRecord({ ...record, candidate_phone2: e.target.value })}\n          fullWidth\n        />\n      </Stack>\n      <Stack sx={styles.modalDoubleColumn}>\n        <FormTextField\n          label=\"Street address\"\n          value={record?.candidate_addr_street1 || ''}\n          fullWidth\n          onChange={(e) =>\n            record && setRecord({ ...record, candidate_addr_street1: e.target.value })\n          }\n        />\n        <FormTextField\n          label=\"Street address cont'd\"\n          value={record?.candidate_addr_street2 || ''}\n          fullWidth\n          onChange={(e) =>\n            record && setRecord({ ...record, candidate_addr_street2: e.target.value })\n          }\n        />\n      </Stack>\n      <Stack sx={styles.modalDoubleColumn}>\n        <FormTextField\n          label=\"City, town or suburb\"\n          value={record?.candidate_addr_suburb || ''}\n          fullWidth\n          onChange={(e) =>\n            record && setRecord({ ...record, candidate_addr_suburb: e.target.value })\n          }\n        />\n        <FormTextField\n          label=\"Postcode or zipcode\"\n          value={record?.candidate_addr_postcode || ''}\n          fullWidth\n          onChange={(e) =>\n            record && setRecord({ ...record, candidate_addr_postcode: e.target.value })\n          }\n        />\n      </Stack>\n      <Stack sx={styles.modalDoubleColumn}>\n        <Autocomplete\n          filterSelectedOptions\n          disablePortal\n          autoHighlight\n          includeInputInList\n          value={country}\n          options={countriesStates || []}\n          getOptionLabel={(option) => option.name}\n          onChange={(_event, newValue) => {\n            setCountry(newValue);\n            setState(null);\n          }}\n          sx={autocompleteStyle}\n          ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n          renderInput={(params) => (\n            <TextField\n              {...params}\n              label=\"Country\"\n              InputLabelProps={{ shrink: true }}\n              placeholder=\"Please select\"\n            />\n          )}\n        />\n        <Autocomplete\n          filterSelectedOptions\n          disablePortal\n          autoHighlight\n          includeInputInList\n          value={state}\n          options={country?.states || []}\n          getOptionLabel={(option) => option.name}\n          onChange={(_event, newValue) => setState(newValue)}\n          disabled={!country}\n          sx={autocompleteStyle}\n          ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n          renderInput={(params) => (\n            <TextField\n              {...params}\n              label=\"State, region or province\"\n              InputLabelProps={{ shrink: true }}\n              placeholder=\"Please select\"\n            />\n          )}\n        />\n      </Stack>\n      <Autocomplete\n        disablePortal\n        autoHighlight\n        includeInputInList\n        value={record?.candidate_gender || null}\n        options={cognologyData?.genders || []}\n        loading={loadingCognologyData}\n        loadingText=\"Loading genders...\"\n        onChange={(_event, newValue) =>\n          record && setRecord({ ...record, candidate_gender: newValue })\n        }\n        sx={autocompleteStyle}\n        ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n        renderInput={(params) => (\n          <TextField\n            {...params}\n            label=\"Gender\"\n            InputLabelProps={{ shrink: true }}\n            placeholder=\"Please select\"\n          />\n        )}\n      />\n      <FormTextField\n        label=\"Manager employee ID\"\n        value={record?.manager_id || ''}\n        styles={{ width: '48%' }}\n        onChange={(e) => record && setRecord({ ...record, manager_id: e.target.value })}\n      />\n      <FormTextField\n        label=\"Application URL\"\n        value={record?.recruitment_record_url || ''}\n        styles={{ width: '48%' }}\n        onChange={(e) => record && setRecord({ ...record, recruitment_record_url: e.target.value })}\n      />\n      <Stack>\n        <SingleDatePicker\n          value={startDate}\n          label=\"Start date\"\n          inputStyles={{ ...sharedClasses.datePicker, width: '48%' }}\n          onChange={(value) => {\n            if (!value?.isValid()) {\n              setDateError('Please input a valid date');\n            } else {\n              setDateError('');\n              setStartDate(dayjs(value.toDate()).toDate());\n            }\n          }}\n          error={dateError}\n        />\n      </Stack>\n      {exportPreference === 'full' && (\n        <Stack sx={styles.cognologyCategoriesContainer}>\n          {cognologyData?.categories?.map((category) => (\n            <Autocomplete\n              key={category.id}\n              disablePortal\n              autoHighlight\n              includeInputInList\n              value={categories?.[category.id]}\n              options={category.options}\n              getOptionLabel={(option) => option[0]}\n              filterOptions={(options, state) => {\n                const { inputValue } = state;\n                const filtered = options.filter((option) =>\n                  option[0].toLowerCase().includes(inputValue.toLowerCase())\n                );\n                inputValue && filtered.push([`Create ${inputValue}`, 0]);\n                return filtered;\n              }}\n              onChange={(_event, newValue) => {\n                if (newValue) {\n                  const newCategories = { ...categories };\n                  if (newValue[1] === 0) {\n                    newValue = [newValue[0].replace('Create ', ''), newValue[1]];\n                  }\n                  newCategories[category.id] = newValue;\n                  setCategories(newCategories);\n                }\n              }}\n              sx={autocompleteStyle}\n              ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n              renderInput={(params) => (\n                <TextField\n                  {...params}\n                  label={category.name}\n                  InputLabelProps={{ shrink: true }}\n                  placeholder=\"Please select\"\n                />\n              )}\n            />\n          ))}\n        </Stack>\n      )}\n      {!!cognologyData?.application_assets?.length && (\n        <>\n          <Stack sx={styles.cognologySectionTitle}>Attachments</Stack>\n          {cognologyData.application_assets.map((asset, index) => (\n            <Stack key={index} sx={styles.modalDoubleColumn}>\n              <Stack sx={styles.cognologyAttachmentContainer}>\n                <Stack sx={styles.fileIcon}>{DocTypeIcon(asset.file_name.split('.').pop())}</Stack>\n                <Stack>{asset.file_name}</Stack>\n              </Stack>\n              <Autocomplete\n                disablePortal\n                autoHighlight\n                includeInputInList\n                value={attachments?.[asset.id] || null}\n                options={cognologyData?.document_tags}\n                getOptionLabel={(option) => option?.name || ''}\n                onChange={(_event, newValue) =>\n                  setAttachments({ ...attachments, [asset.id]: newValue })\n                }\n                sx={autocompleteStyle}\n                ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n                renderInput={(params) => (\n                  <TextField\n                    {...params}\n                    label=\"Attachment tag\"\n                    InputLabelProps={{ shrink: true }}\n                    placeholder=\"Please select\"\n                  />\n                )}\n              />\n            </Stack>\n          ))}\n        </>\n      )}\n    </>\n  );\n}\n","import React from 'react';\nimport { Stack } from '@mui/material';\nimport { styles } from '../../styles';\nimport { ICognologyRecord, IIntegrationsResponse, ICognologyData } from '../../../types';\nimport { theme } from '../../../../../ThemeContext/ThemeObject';\nimport dayjs from 'dayjs';\nimport { ICountries, IStates } from '../../../../Components/sharedTypes';\nimport { useQueryClient } from '@tanstack/react-query';\nimport CognologyApprovalDetails from './CognologyApprovalDetails';\nimport DocTypeIcon from '../../../../Components/Utilities/DocTypeIcon';\n\nexport default function CognologySummary({\n  record,\n  requisition,\n  reapprovalRequired,\n  country,\n  state,\n  startDate\n}: {\n  record: ICognologyRecord;\n  requisition?: { url: string; name: string } | null;\n  reapprovalRequired?: boolean;\n  country?: ICountries | null;\n  state?: IStates | null;\n  startDate?: Date | null;\n}) {\n  const queryClient = useQueryClient();\n  const integrationsData = queryClient.getQueryData<IIntegrationsResponse>(['integrations']);\n  const cognologyData = queryClient.getQueryData<ICognologyData>(['cognology data']);\n  return (\n    <>\n      {requisition && reapprovalRequired && (\n        <CognologyApprovalDetails {...{ requisition, reapprovalRequired }} />\n      )}\n      <Stack sx={styles.cognologySectionTitle}>Candidate Details</Stack>\n      {!integrationsData?.cognology_config.id_blank && (\n        <Stack>\n          <Stack sx={{ color: theme.palette.common.grey }}>Employee ID</Stack>\n          <Stack>{record.candidate_employee_id || '-'}</Stack>\n        </Stack>\n      )}\n      <Stack>\n        <Stack sx={{ color: theme.palette.common.grey }}>Title</Stack>\n        <Stack>{record.candidate_title || '-'}</Stack>\n      </Stack>\n      <Stack sx={{ ...styles.modalDoubleColumn, div: { width: '100%' } }}>\n        <Stack>\n          <Stack sx={{ color: theme.palette.common.grey }}>First name</Stack>\n          <Stack>{record.candidate_first_name || '-'}</Stack>\n        </Stack>\n        <Stack>\n          <Stack sx={{ color: theme.palette.common.grey }}>Last name</Stack>\n          <Stack>{record.candidate_last_name || '-'}</Stack>\n        </Stack>\n      </Stack>\n      <Stack>\n        <Stack sx={{ color: theme.palette.common.grey }}>Email</Stack>\n        <Stack>{record.candidate_email || '-'}</Stack>\n      </Stack>\n      <Stack sx={{ ...styles.modalDoubleColumn, div: { width: '100%' } }}>\n        <Stack>\n          <Stack sx={{ color: theme.palette.common.grey }}>\n            {'Phone (must include country code)'}\n          </Stack>\n          <Stack>{record.candidate_phone1 || '-'}</Stack>\n        </Stack>\n        <Stack>\n          <Stack sx={{ color: theme.palette.common.grey }}>\n            {'Mobile (must include country code)'}\n          </Stack>\n          <Stack>{record.candidate_phone2 || '-'}</Stack>\n        </Stack>\n      </Stack>\n      <Stack sx={{ ...styles.modalDoubleColumn, div: { width: '100%' } }}>\n        <Stack>\n          <Stack sx={{ color: theme.palette.common.grey }}>Street address</Stack>\n          <Stack>{record.candidate_addr_street1 || '-'}</Stack>\n        </Stack>\n        <Stack>\n          <Stack sx={{ color: theme.palette.common.grey }}>{`Street address cont'd`}</Stack>\n          <Stack>{record.candidate_addr_street2 || '-'}</Stack>\n        </Stack>\n      </Stack>\n      <Stack sx={{ ...styles.modalDoubleColumn, div: { width: '100%' } }}>\n        <Stack>\n          <Stack sx={{ color: theme.palette.common.grey }}>City, town or suburb</Stack>\n          <Stack>{record.candidate_addr_suburb || '-'}</Stack>\n        </Stack>\n        <Stack>\n          <Stack sx={{ color: theme.palette.common.grey }}>Postcode or zipcode</Stack>\n          <Stack>{record.candidate_addr_postcode || '-'}</Stack>\n        </Stack>\n      </Stack>\n      <Stack sx={{ ...styles.modalDoubleColumn, div: { width: '100%' } }}>\n        <Stack>\n          <Stack sx={{ color: theme.palette.common.grey }}>Country</Stack>\n          <Stack>{country?.printable_name || record.candidate_addr_country || '-'}</Stack>\n        </Stack>\n        <Stack>\n          <Stack sx={{ color: theme.palette.common.grey }}>State, region or province</Stack>\n          <Stack>{state?.name || record.candidate_addr_state || '-'}</Stack>\n        </Stack>\n      </Stack>\n      <Stack>\n        <Stack sx={{ color: theme.palette.common.grey }}>Gender</Stack>\n        <Stack>{record.candidate_gender || '-'}</Stack>\n      </Stack>\n      <Stack>\n        <Stack sx={{ color: theme.palette.common.grey }}>Manager employee ID</Stack>\n        <Stack>{record.manager_id || '-'}</Stack>\n      </Stack>\n      <Stack>\n        <Stack sx={{ color: theme.palette.common.grey }}>Application URL</Stack>\n        <Stack>{record.recruitment_record_url || '-'}</Stack>\n      </Stack>\n      <Stack>\n        <Stack sx={{ color: theme.palette.common.grey }}>Start date</Stack>\n        <Stack>\n          {startDate || record.start_date ? dayjs(startDate).format('dddd, D MMMM YYYY') : '-'}\n        </Stack>\n      </Stack>\n      <Stack sx={styles.cognologyCategoriesContainer}>\n        {cognologyData?.categories?.map((category) => (\n          <Stack key={category.id} sx={{ width: '48%' }}>\n            <Stack sx={{ color: theme.palette.common.grey }}>{category.name}</Stack>\n            <Stack>\n              {record.categories?.[category.id]?.name ||\n                record.categories?.[category.id]?.new_value ||\n                '-'}\n            </Stack>\n          </Stack>\n        ))}\n      </Stack>\n      {!!cognologyData?.application_assets?.length && (\n        <>\n          <Stack sx={styles.cognologySectionTitle}>Attachments</Stack>\n          {cognologyData.application_assets.map((asset, index) => (\n            <Stack key={index} sx={styles.modalDoubleColumn}>\n              <Stack sx={styles.cognologyAttachmentContainer}>\n                <Stack sx={styles.fileIcon}>{DocTypeIcon(asset.file_name.split('.').pop())}</Stack>\n                <Stack>{asset.file_name}</Stack>\n              </Stack>\n              <Stack>\n                <Stack sx={{ color: theme.palette.common.grey }}>Attachment tag</Stack>\n                <Stack>{record.assets?.[asset.id]?.name || '-'}</Stack>\n              </Stack>\n            </Stack>\n          ))}\n        </>\n      )}\n    </>\n  );\n}\n","import React from 'react';\nimport { Button, Dialog, Stack } from '@mui/material';\nimport { Schedule as ScheduleIcon } from '@mui/icons-material';\nimport { styles } from '../../styles';\nimport { sharedClasses } from '../../../../Components/CustomUIElements/sharedClasses';\nimport CognologySummary from './CognologySummary';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { ICognologyData } from '../../../types';\nimport { theme } from '../../../../../ThemeContext/ThemeObject';\n\nexport default function CognologyAfterApprovalModal({\n  open,\n  onClose\n}: {\n  open: boolean;\n  onClose: () => void;\n}) {\n  const queryClient = useQueryClient();\n  const cognologyData = queryClient.getQueryData<ICognologyData>(['cognology data']);\n\n  if (!cognologyData) return null;\n\n  return (\n    <Dialog open={open} onClose={onClose} maxWidth=\"md\">\n      <Stack sx={{ ...styles.alreadyExportedModal, width: 'unset', overflow: 'auto' }}>\n        <ScheduleIcon sx={{ color: theme.palette.secondary.yellow, fontSize: '4rem' }} />\n        <Stack sx={styles.modalTitle}>Export to Cognology</Stack>\n        <Stack sx={{ alignItems: 'center', color: '#333333' }}>\n          This Cognology record is waiting for approval. It must be approved before it can be\n          exported.\n        </Stack>\n        <Stack sx={{ width: '100%', rowGap: 2, overflow: 'auto', padding: '8px 0px' }}>\n          <CognologySummary\n            record={cognologyData.record}\n            requisition={cognologyData.cognology_requisition}\n            reapprovalRequired={cognologyData.record.reapproval_required_for_modifications}\n          />\n        </Stack>\n        <Button sx={sharedClasses.genericButton} onClick={onClose}>\n          Exit\n        </Button>\n      </Stack>\n    </Dialog>\n  );\n}\n","import React, { useState, useRef, Dispatch } from 'react';\nimport { Autocomplete, Stack, TextField } from '@mui/material';\nimport StyledModal from '../../../Components/GenericModal/StyledModal';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../API';\nimport { ApplicationAction, ApplicationState, IApplication } from '../../types';\nimport { ModalType } from '../../config';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport ModalFooterButtons from '../../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from '../styles';\nimport { FormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport { TCandidate } from '../../../Candidates/types';\nimport { validateEmail } from '../../../Candidates/EditCandidate';\nimport { scrollToElement } from '../../../utils/scroll-to-element';\n\nexport default function Fit2Work({\n  ApplicationState,\n  dispatch\n}: {\n  ApplicationState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n}) {\n  const { modalsOpen } = ApplicationState;\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const [candidate, setCandidate] = useState<TCandidate | null>(application?.candidate || null);\n  const [accountEmail, setAccountEmail] = useState<string>('');\n  const [errors, setErrors] = useState<Record<string, string>>({});\n  const [fit2WorkPackage, setFit2WorkPackage] = useState<string | null>(null);\n  const [state, setState] = useState<string | null>(null);\n  const [template, setTemplate] = useState<string | null>(null);\n\n  const fieldRefs = {\n    accountEmail: useRef<HTMLInputElement>(null),\n    candidateEmail: useRef<HTMLInputElement>(null),\n    package: useRef<HTMLInputElement>(null),\n    state: useRef<HTMLInputElement>(null),\n    template: useRef<HTMLInputElement>(null)\n  };\n\n  const { data: fit2WorkData, isLoading: loadingFit2WorkData } = useQuery({\n    queryKey: ['fit2work data'],\n    queryFn: async () => {\n      if (application) {\n        const { res } = await Api.getFit2WorkData(application.id);\n        return res;\n      }\n    },\n    onSuccess: (res) => res && setAccountEmail(res.account_email),\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting fit2work data, ${error}`,\n          state: 'error'\n        }\n      })\n  });\n\n  const validateInputs = () => {\n    if (!candidate) return false;\n    setErrors({});\n    const inputErrors: Record<string, string> = {};\n    if (!validateEmail(accountEmail))\n      inputErrors.accountEmail = 'Please enter a proper email address';\n    if (!validateEmail(candidate.email))\n      inputErrors.candidateEmail = 'Please enter a proper email address';\n    if (!state) inputErrors.state = 'Please select a state';\n    if (!fit2WorkPackage) inputErrors.package = 'Please select a package';\n    if (!template) inputErrors.template = 'Please select a template';\n    setErrors(inputErrors);\n    if (inputErrors.accountEmail) {\n      scrollToElement(fieldRefs.accountEmail);\n    } else if (inputErrors.candidateEmail) {\n      scrollToElement(fieldRefs.candidateEmail);\n    } else if (inputErrors.state) {\n      scrollToElement(fieldRefs.state);\n    } else if (inputErrors.package) {\n      scrollToElement(fieldRefs.package);\n    } else if (inputErrors.template) {\n      scrollToElement(fieldRefs.template);\n    }\n    return !Object.keys(inputErrors).length;\n  };\n\n  const { mutate: fit2WorkExport, isLoading: exportingFit2Work } = useMutation({\n    mutationFn: async () => {\n      if (!fit2WorkPackage) return;\n      const packagePayload = fit2WorkData?.packages[fit2WorkPackage];\n      if (application && candidate && state && template && packagePayload) {\n        const { res } = await Api.fit2WorkExport(application.id, {\n          candidate_email: candidate.email,\n          account_email: accountEmail,\n          state: state,\n          package_ids: [packagePayload],\n          template_name: template\n        });\n        return res;\n      }\n    },\n    onSuccess: (res) => {\n      if (!res) return;\n      queryClient.invalidateQueries(['integrations'], { exact: true });\n      dispatch({ type: 'SET_SNACKBAR', payload: { message: res.success, state: 'success' } });\n      handleClose();\n    },\n    onError: (error: { error: string }) => {\n      dispatch({ type: 'SET_SNACKBAR', payload: { message: error.error, state: 'error' } });\n    }\n  });\n\n  const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n  if (!candidate) return null;\n\n  return (\n    <StyledModal\n      isOpen={modalsOpen === ModalType.FIT2WORK}\n      label=\"Fit2Work export modal\"\n      handleClose={handleClose}\n      styleOverrides={styles.modalStyleOverrides}\n    >\n      <Stack sx={styles.modalContainer}>\n        <Stack sx={styles.modalTitle}>Fit2Work request</Stack>\n        <Stack sx={{ overflow: 'auto', rowGap: 3 }}>\n          <Stack sx={styles.modalDoubleColumn}>\n            <FormTextField\n              label=\"Account email\"\n              value={accountEmail}\n              required\n              fullWidth\n              onChange={(e) => setAccountEmail(e.target.value)}\n              error={errors.accountEmail}\n              innerRef={fieldRefs.accountEmail}\n            />\n            <FormTextField\n              label=\"Candidate email\"\n              value={candidate.email}\n              required\n              fullWidth\n              onChange={(e) => setCandidate({ ...candidate, email: e.target.value })}\n              error={errors.candidateEmail}\n              innerRef={fieldRefs.candidateEmail}\n            />\n          </Stack>\n          <Autocomplete\n            disablePortal\n            options={fit2WorkData?.states || []}\n            value={state}\n            sx={{ ...sharedClasses.formAutocomplete, width: '48%', marginTop: 3 }}\n            loading={loadingFit2WorkData}\n            loadingText=\"Loading states...\"\n            ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n            renderInput={(params) => (\n              <TextField\n                {...params}\n                label=\"State\"\n                placeholder=\"Please select\"\n                InputLabelProps={{ shrink: true }}\n                sx={styles.autoCompleteTextfield}\n                required\n                helperText={errors.state}\n                ref={fieldRefs.state}\n              />\n            )}\n            onChange={(event, value) => setState(value)}\n          />\n          <Stack sx={styles.modalDoubleColumn}>\n            <Autocomplete\n              disablePortal\n              options={Object.keys(fit2WorkData?.packages || {})}\n              value={fit2WorkPackage}\n              sx={{ ...sharedClasses.formAutocomplete, width: '48%', marginTop: 3 }}\n              loading={loadingFit2WorkData}\n              loadingText=\"Loading packages...\"\n              ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n              renderInput={(params) => (\n                <TextField\n                  {...params}\n                  label=\"Packages\"\n                  placeholder=\"Please select\"\n                  InputLabelProps={{ shrink: true }}\n                  sx={styles.autoCompleteTextfield}\n                  required\n                  helperText={errors.package}\n                  ref={fieldRefs.package}\n                />\n              )}\n              onChange={(event, value) => setFit2WorkPackage(value)}\n            />\n            <Autocomplete\n              disablePortal\n              options={fit2WorkData?.templates || []}\n              value={template}\n              sx={{ ...sharedClasses.formAutocomplete, width: '48%', marginTop: 3 }}\n              loading={loadingFit2WorkData}\n              loadingText=\"Loading email templates...\"\n              ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n              renderInput={(params) => (\n                <TextField\n                  {...params}\n                  label=\"Email template\"\n                  placeholder=\"Please select\"\n                  InputLabelProps={{ shrink: true }}\n                  sx={styles.autoCompleteTextfield}\n                  required\n                  helperText={errors.template}\n                  ref={fieldRefs.template}\n                />\n              )}\n              onChange={(event, value) => setTemplate(value)}\n            />\n          </Stack>\n        </Stack>\n        <ModalFooterButtons\n          primaryButtonText=\"Send\"\n          primaryButtonCallback={() => validateInputs() && fit2WorkExport()}\n          isLoading={exportingFit2Work}\n          secondaryButtonText=\"Cancel\"\n          secondaryButtonCallback={handleClose}\n          primaryButtonMinWidth=\"95px\"\n        />\n      </Stack>\n    </StyledModal>\n  );\n}\n","import React, { useState, useRef, Dispatch } from 'react';\nimport { Checkbox, FormControlLabel, Stack } from '@mui/material';\nimport StyledModal from '../../../Components/GenericModal/StyledModal';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../API';\nimport { ApplicationAction, ApplicationState, IApplication } from '../../types';\nimport { ModalType } from '../../config';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport ModalFooterButtons from '../../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from '../styles';\nimport { FormNumberField, FormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport { TCandidate } from '../../../Candidates/types';\nimport { scrollToElement } from '../../../utils/scroll-to-element';\nimport { validateEmail } from '../../../Candidates/EditCandidate';\n\nexport default function FoundU({\n  ApplicationState,\n  dispatch\n}: {\n  ApplicationState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n}) {\n  const { modalsOpen } = ApplicationState;\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const [candidate, setCandidate] = useState<TCandidate | null>(application?.candidate || null);\n  const [preferredName, setPreferredName] = useState<string>('');\n  const [sendWelcomeEmail, setSendWelcomeEmail] = useState<boolean>(false);\n  const [errors, setErrors] = useState<Record<string, string>>({});\n\n  const fieldRefs = {\n    firstName: useRef<HTMLInputElement>(null),\n    lastName: useRef<HTMLInputElement>(null),\n    email: useRef<HTMLInputElement>(null),\n    mobile: useRef<HTMLInputElement>(null)\n  };\n\n  const { mutate: foundUExport, isLoading: exportingFoundU } = useMutation({\n    mutationFn: async () => {\n      if (application && candidate) {\n        const { res } = await Api.foundUExport(application.id, {\n          first_name: candidate?.firstname,\n          surname: candidate?.lastname,\n          email: candidate.email,\n          mobile: candidate.phone1,\n          preferred_name: preferredName,\n          send_welcome_email: sendWelcomeEmail\n        });\n        return res;\n      }\n    },\n    onSuccess: (res: { success: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: res.success, state: 'success' }\n      });\n      handleClose();\n    },\n    onError: (error: { error: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error in exporting to foundU, ${error.error}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n\n  const validateInputs = () => {\n    if (!candidate) return false;\n    setErrors({});\n    const inputErrors: Record<string, string> = {};\n    if (!candidate.firstname.trim()) inputErrors.firstName = 'First name can not be empty';\n    if (!candidate.lastname.trim()) inputErrors.lastName = 'Last name can not be empty';\n    if (!validateEmail(candidate.email)) inputErrors.email = 'Please enter a proper email address';\n    if (!candidate.phone1.trim()) inputErrors.mobile = 'Please enter a mobile number';\n    setErrors(inputErrors);\n    if (inputErrors.firstName) {\n      scrollToElement(fieldRefs.firstName);\n    } else if (inputErrors.lastName) {\n      scrollToElement(fieldRefs.lastName);\n    } else if (inputErrors.email) {\n      scrollToElement(fieldRefs.email);\n    } else if (inputErrors.mobile) {\n      scrollToElement(fieldRefs.mobile);\n    }\n    return !Object.keys(inputErrors).length;\n  };\n\n  const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n  if (!candidate) return null;\n\n  return (\n    <StyledModal\n      isOpen={modalsOpen === ModalType.FOUNDU}\n      label=\"FoundU export modal\"\n      handleClose={handleClose}\n      styleOverrides={styles.modalStyleOverrides}\n    >\n      <Stack sx={styles.modalContainer}>\n        <Stack sx={styles.modalTitle}>Export to FoundU</Stack>\n        <Stack sx={styles.modalDoubleColumn}>\n          <FormTextField\n            label=\"First name\"\n            value={candidate.firstname || ''}\n            required\n            fullWidth\n            onChange={(e) => setCandidate({ ...candidate, firstname: e.target.value })}\n            error={errors.firstName}\n            innerRef={fieldRefs.firstName}\n          />\n          <FormTextField\n            label=\"Last name\"\n            value={candidate.lastname || ''}\n            required\n            fullWidth\n            onChange={(e) => setCandidate({ ...candidate, lastname: e.target.value })}\n            error={errors.lastName}\n            innerRef={fieldRefs.lastName}\n          />\n        </Stack>\n        <FormTextField\n          label=\"Preferred name\"\n          value={preferredName}\n          onChange={(e) => setPreferredName(e.target.value)}\n          styles={{ width: '48%' }}\n        />\n        <Stack sx={styles.modalDoubleColumn}>\n          <FormTextField\n            label=\"Email\"\n            value={candidate.email}\n            required\n            fullWidth\n            onChange={(e) => setCandidate({ ...candidate, email: e.target.value })}\n            error={errors.email}\n            innerRef={fieldRefs.email}\n          />\n          <FormNumberField\n            label={'Mobile'}\n            value={candidate.phone1}\n            onChange={(e) => setCandidate({ ...candidate, phone1: e.target.value })}\n            required\n            fullWidth\n            error={errors.mobile}\n            innerRef={fieldRefs.mobile}\n          />\n        </Stack>\n        <FormControlLabel\n          control={\n            <Checkbox\n              sx={sharedClasses.formCheckbox}\n              checked={sendWelcomeEmail}\n              onChange={(event) => setSendWelcomeEmail(event.target.checked)}\n            />\n          }\n          label=\"Send welcome email\"\n          sx={{ ...sharedClasses.checkboxLabel, margin: 'unset' }}\n        />\n        <ModalFooterButtons\n          primaryButtonText=\"Export\"\n          primaryButtonCallback={() => validateInputs() && foundUExport()}\n          isLoading={exportingFoundU}\n          secondaryButtonText=\"Cancel\"\n          secondaryButtonCallback={handleClose}\n          primaryButtonMinWidth=\"95px\"\n        />\n      </Stack>\n    </StyledModal>\n  );\n}\n","import React, { useState, useRef, Dispatch } from 'react';\nimport { Autocomplete, Stack, TextField } from '@mui/material';\nimport StyledModal from '../../../Components/GenericModal/StyledModal';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../API';\nimport { ApplicationAction, ApplicationState, IApplication } from '../../types';\nimport { ModalType } from '../../config';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport ModalFooterButtons from '../../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from '../styles';\nimport { FormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport { TCandidate } from '../../../Candidates/types';\nimport { validateEmail } from '../../../Candidates/EditCandidate';\nimport { scrollToElement } from '../../../utils/scroll-to-element';\n\nexport default function Hronboard({\n  ApplicationState,\n  dispatch\n}: {\n  ApplicationState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n}) {\n  const { modalsOpen } = ApplicationState;\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const [title, setTitle] = useState<string>('');\n  const [candidate, setCandidate] = useState<TCandidate | null>(application?.candidate || null);\n  const [errors, setErrors] = useState<Record<string, string>>({});\n  const [hroUser, setHroUser] = useState<string | null>(null);\n  const [company, setCompany] = useState<string | null>(null);\n  const [location, setLocation] = useState<string | null>(null);\n  const [approvalNumber, setApprovalNumber] = useState<string>('');\n  const [jobReferenceNumber, setJobReferenceNumber] = useState<string>(\n    application?.job?.reference || ''\n  );\n  const [positionTitle, setPositionTitle] = useState<string>(application?.job?.title || '');\n  const [glCode, setGlCode] = useState<string>('');\n  const [state, setState] = useState<string | null>(null);\n\n  const fieldRefs = {\n    location: useRef<HTMLInputElement>(null),\n    firstName: useRef<HTMLInputElement>(null),\n    lastName: useRef<HTMLInputElement>(null),\n    email: useRef<HTMLInputElement>(null),\n    phone: useRef<HTMLInputElement>(null)\n  };\n\n  const { data: HronboardData, isLoading: loadingHronboardData } = useQuery({\n    queryKey: ['HR Onboard data'],\n    queryFn: async () => {\n      if (application) {\n        const { res } = await Api.getHronboardData(application.id);\n        return res;\n      }\n    },\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting HR Onboard data, ${error}`,\n          state: 'error'\n        }\n      })\n  });\n\n  const { mutate: hronboardExport, isLoading: exportingHronboard } = useMutation({\n    mutationFn: async () => {\n      if (application && candidate) {\n        const { res } = await Api.hronboardExport(application.id, {\n          position_title: positionTitle,\n          candidate_title: candidate.title,\n          candidate_first_name: candidate.firstname,\n          candidate_last_name: candidate.lastname,\n          candidate_email: candidate.email,\n          candidate_mobile_no: candidate.phone1,\n          candidate_phone_no: candidate.phone2,\n          candidate_addr_street1: candidate?.address_details?.street1 || '',\n          candidate_addr_street2: candidate?.address_details?.street2 || '',\n          candidate_addr_suburb: candidate?.address_details?.suburb || '',\n          candidate_addr_state: state,\n          candidate_addr_postcode: candidate?.address_details?.postcode || '',\n          hro_user: hroUser,\n          company: company,\n          location: location,\n          requisition_id: approvalNumber,\n          job_id: application.job.id,\n          gl_code: glCode\n        });\n        return res;\n      }\n    },\n    onSuccess: (res: { message: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: res.message, state: 'success' }\n      });\n      handleClose();\n    },\n    onError: (error: { message: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error in exporting to HR Onboard, ${error.message}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n\n  const validateInputs = () => {\n    if (!candidate) return false;\n    setErrors({});\n    const inputErrors: Record<string, string> = {};\n    if (!location) inputErrors.location = 'Please select a location';\n    if (!candidate.firstname.trim()) inputErrors.firstName = 'First name can not be empty';\n    if (!candidate.lastname.trim()) inputErrors.lastName = 'Last name can not be empty';\n    if (!validateEmail(candidate.email)) inputErrors.email = 'Please enter a proper email address';\n    if (!candidate.phone1.trim()) inputErrors.phone = 'Please enter a mobile number';\n    setErrors(inputErrors);\n    if (inputErrors.location) {\n      scrollToElement(fieldRefs.location);\n    } else if (inputErrors.firstName) {\n      scrollToElement(fieldRefs.firstName);\n    } else if (inputErrors.lastName) {\n      scrollToElement(fieldRefs.lastName);\n    } else if (inputErrors.email) {\n      scrollToElement(fieldRefs.email);\n    } else if (inputErrors.phone) {\n      scrollToElement(fieldRefs.phone);\n    }\n    return !Object.keys(inputErrors).length;\n  };\n\n  const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n  if (!candidate) return null;\n\n  return (\n    <StyledModal\n      isOpen={modalsOpen === ModalType.HRONBOARD}\n      label=\"HROnboard export modal\"\n      handleClose={handleClose}\n      styleOverrides={styles.modalStyleOverrides}\n    >\n      <Stack sx={styles.modalContainer}>\n        <Stack sx={styles.modalTitle}>Export to HROnboard</Stack>\n        <Stack sx={{ overflow: 'auto', rowGap: 2 }}>\n          <Stack\n            sx={{\n              fontWeight: 'bold',\n              color: '#666666',\n              fontSize: '18px'\n            }}\n          >\n            HR Onboarding\n          </Stack>\n          <Autocomplete\n            disablePortal\n            options={HronboardData?.hro_users || []}\n            value={hroUser}\n            sx={{ ...sharedClasses.formAutocomplete, width: '48%', marginTop: 3, flexGrow: 1 }}\n            loading={loadingHronboardData}\n            loadingText=\"Loading users...\"\n            ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n            renderInput={(params) => (\n              <TextField\n                {...params}\n                label=\"HRO user\"\n                placeholder=\"Please select\"\n                InputLabelProps={{ shrink: true }}\n                sx={styles.autoCompleteTextfield}\n              />\n            )}\n            onChange={(event, value) => setHroUser(value)}\n          />\n          <Autocomplete\n            disablePortal\n            options={HronboardData?.companies || []}\n            value={company}\n            sx={{ ...sharedClasses.formAutocomplete, width: '48%', marginTop: 3, flexGrow: 1 }}\n            loading={loadingHronboardData}\n            loadingText=\"Loading companies...\"\n            ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n            renderInput={(params) => (\n              <TextField\n                {...params}\n                label=\"Company\"\n                placeholder=\"Please select\"\n                InputLabelProps={{ shrink: true }}\n                sx={styles.autoCompleteTextfield}\n              />\n            )}\n            onChange={(event, value) => setCompany(value)}\n          />\n          <Autocomplete\n            disablePortal\n            options={HronboardData?.locations || []}\n            value={location}\n            sx={{ ...sharedClasses.formAutocomplete, width: '48%', marginTop: 3, flexGrow: 1 }}\n            loading={loadingHronboardData}\n            loadingText=\"Loading locations...\"\n            ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n            renderInput={(params) => (\n              <TextField\n                {...params}\n                label=\"Location\"\n                required\n                placeholder=\"Please select\"\n                InputLabelProps={{ shrink: true }}\n                sx={styles.autoCompleteTextfield}\n                helperText={errors.location}\n                ref={fieldRefs.location}\n              />\n            )}\n            onChange={(event, value) => setLocation(value)}\n          />\n          <Stack\n            sx={{\n              fontWeight: 'bold',\n              color: '#666666',\n              fontSize: '18px'\n            }}\n          >\n            Migrate system fields from\n          </Stack>\n          <FormTextField\n            label=\"Approval number\"\n            value={approvalNumber}\n            styles={{ width: '48%' }}\n            onChange={(e) => setApprovalNumber(e.target.value)}\n          />\n          <FormTextField\n            label=\"Job reference number\"\n            value={jobReferenceNumber}\n            styles={{ width: '48%' }}\n            onChange={(e) => setJobReferenceNumber(e.target.value)}\n          />\n          <Stack\n            sx={{\n              fontWeight: 'bold',\n              color: '#666666',\n              fontSize: '18px'\n            }}\n          >\n            Job information\n          </Stack>\n          <FormTextField\n            label=\"Position title\"\n            value={positionTitle}\n            styles={{ width: '48%' }}\n            onChange={(e) => setPositionTitle(e.target.value)}\n          />\n          <FormTextField\n            label=\"GL code\"\n            value={glCode}\n            styles={{ width: '48%' }}\n            onChange={(e) => setGlCode(e.target.value)}\n          />\n          <Stack\n            sx={{\n              fontWeight: 'bold',\n              color: '#666666',\n              fontSize: '18px'\n            }}\n          >\n            Candidate information\n          </Stack>\n          <FormTextField\n            label=\"Title\"\n            value={title}\n            styles={{ width: '48%' }}\n            onChange={(e) => setTitle(e.target.value)}\n          />\n          <Stack sx={styles.modalDoubleColumn}>\n            <FormTextField\n              label=\"First name\"\n              value={candidate.firstname || ''}\n              required\n              fullWidth\n              onChange={(e) => setCandidate({ ...candidate, firstname: e.target.value })}\n              error={errors.firstName}\n              innerRef={fieldRefs.firstName}\n            />\n            <FormTextField\n              label=\"Last name\"\n              value={candidate.lastname || ''}\n              required\n              fullWidth\n              onChange={(e) => setCandidate({ ...candidate, lastname: e.target.value })}\n              error={errors.lastName}\n              innerRef={fieldRefs.lastName}\n            />\n          </Stack>\n          <FormTextField\n            label=\"Email\"\n            value={candidate.email}\n            styles={{ width: '48%' }}\n            required\n            onChange={(e) => setCandidate({ ...candidate, email: e.target.value })}\n            error={errors.email}\n            innerRef={fieldRefs.email}\n          />\n          <Stack sx={styles.modalDoubleColumn}>\n            <FormTextField\n              label={'Phone'}\n              value={candidate.phone1}\n              onChange={(e) => setCandidate({ ...candidate, phone1: e.target.value })}\n              required\n              fullWidth\n              error={errors.phone}\n              innerRef={fieldRefs.phone}\n            />\n            <FormTextField\n              label={'Mobile'}\n              value={candidate.phone2}\n              onChange={(e) => setCandidate({ ...candidate, phone2: e.target.value })}\n              fullWidth\n            />\n          </Stack>\n          <Stack sx={styles.modalDoubleColumn}>\n            <FormTextField\n              label=\"Street address\"\n              value={candidate?.address_details?.street1 || ''}\n              fullWidth\n              onChange={(e) =>\n                setCandidate({\n                  ...candidate,\n                  address_details: { ...candidate.address_details, street1: e.target.value }\n                })\n              }\n            />\n            <FormTextField\n              label=\"Street address cont'd\"\n              value={candidate?.address_details?.street2 || ''}\n              fullWidth\n              onChange={(e) =>\n                setCandidate({\n                  ...candidate,\n                  address_details: { ...candidate.address_details, street2: e.target.value }\n                })\n              }\n            />\n          </Stack>\n          <Stack sx={{ ...styles.modalDoubleColumn, marginRight: '2px' }}>\n            <FormTextField\n              label=\"Suburb/Town\"\n              value={candidate?.address_details?.suburb || ''}\n              fullWidth\n              onChange={(e) =>\n                setCandidate({\n                  ...candidate,\n                  address_details: { ...candidate.address_details, suburb: e.target.value }\n                })\n              }\n            />\n            <Autocomplete\n              disablePortal\n              options={HronboardData?.states || []}\n              value={state}\n              sx={{ ...sharedClasses.formAutocomplete, width: '100%', marginTop: 3 }}\n              loading={loadingHronboardData}\n              loadingText=\"Loading states...\"\n              ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n              renderInput={(params) => (\n                <TextField\n                  {...params}\n                  label=\"State, region or province\"\n                  placeholder=\"Please select\"\n                  InputLabelProps={{ shrink: true }}\n                  sx={styles.autoCompleteTextfield}\n                />\n              )}\n              onChange={(event, value) => setState(value)}\n            />\n          </Stack>\n          <FormTextField\n            label=\"Postcode\"\n            value={candidate?.address_details?.postcode || ''}\n            styles={{ width: '48%' }}\n            onChange={(e) =>\n              setCandidate({\n                ...candidate,\n                address_details: { ...candidate.address_details, postcode: e.target.value }\n              })\n            }\n          />\n        </Stack>\n        <ModalFooterButtons\n          primaryButtonText=\"Export\"\n          primaryButtonCallback={() => validateInputs() && hronboardExport()}\n          isLoading={exportingHronboard}\n          secondaryButtonText=\"Cancel\"\n          secondaryButtonCallback={handleClose}\n          primaryButtonMinWidth=\"95px\"\n        />\n      </Stack>\n    </StyledModal>\n  );\n}\n","import React, { useState, Dispatch } from 'react';\nimport { Autocomplete, Stack, TextField } from '@mui/material';\nimport StyledModal from '../../../Components/GenericModal/StyledModal';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../API';\nimport { ApplicationAction, ApplicationState, IApplication } from '../../types';\nimport { ModalType } from '../../config';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport ModalFooterButtons from '../../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from '../styles';\n\nexport default function Mvs({\n  ApplicationState,\n  dispatch\n}: {\n  ApplicationState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n}) {\n  const { modalsOpen } = ApplicationState;\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const [mvsPackage, setMvsPackage] = useState<{\n    id: string;\n    name: string;\n    checks: { id: string; name: string }[];\n  } | null>(null);\n  const [checks, setChecks] = useState<{ id: string; name: string }[]>([]);\n\n  const { data, isLoading } = useQuery({\n    queryKey: ['mvs data'],\n    queryFn: async () => {\n      if (application) {\n        const { res } = await Api.getMvsData(application.id);\n        return res;\n      }\n    },\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting mvs data, ${error}`,\n          state: 'error'\n        }\n      })\n  });\n\n  const { mutate: mvsExport, isLoading: loadingMvsExport } = useMutation({\n    mutationFn: async () => {\n      if (application && mvsPackage) {\n        const { res } = await Api.mvsExport(application.id, {\n          package_id: mvsPackage.id,\n          blueprint_ids: checks.map((c) => c.id)\n        });\n        return res;\n      }\n    },\n    onSuccess: (res: { success: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: res.success, state: 'success' }\n      });\n      handleClose();\n    },\n    onError: (error: { error: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error in sending request to MVS, ${error.error}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n\n  const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n  return (\n    <StyledModal\n      isOpen={modalsOpen === ModalType.MVS}\n      label=\"MVS export modal\"\n      handleClose={handleClose}\n      styleOverrides={styles.modalStyleOverrides}\n    >\n      <Stack sx={styles.modalContainer}>\n        <Stack sx={styles.modalTitle}>MVS request test</Stack>\n        <Stack sx={{ flexDirection: 'row', marginTop: 3, columnGap: 4 }}>\n          <Autocomplete\n            disablePortal\n            options={data?.packages || []}\n            getOptionLabel={(option) => option.name}\n            value={mvsPackage}\n            sx={{ ...sharedClasses.formAutocomplete, width: '50%' }}\n            loading={isLoading}\n            loadingText=\"Loading packages...\"\n            ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n            renderInput={(params) => (\n              <TextField\n                {...params}\n                label=\"Package\"\n                placeholder=\"Please select\"\n                InputLabelProps={{ shrink: true }}\n                sx={styles.autoCompleteTextfield}\n              />\n            )}\n            onChange={(event, value) => {\n              if (value) {\n                const packageChecks: { id: string; name: string }[] = [];\n                value.checks.map((c) => {\n                  const checkFound = data?.blueprints.find(\n                    (b: { id: string; name: string }) => b.id === c.id\n                  );\n                  checkFound && packageChecks.push(checkFound);\n                });\n                setChecks(packageChecks);\n              } else {\n                setChecks([]);\n              }\n              setMvsPackage(value);\n            }}\n          />\n          <Autocomplete\n            multiple\n            disablePortal\n            options={data?.blueprints || []}\n            getOptionLabel={(option) => option.name}\n            value={checks}\n            sx={{ ...sharedClasses.formAutocomplete, width: '50%' }}\n            loading={isLoading}\n            loadingText=\"Loading checks...\"\n            ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n            renderInput={(params) => (\n              <TextField\n                {...params}\n                label=\"Additional Checks\"\n                placeholder=\"Please select\"\n                InputLabelProps={{ shrink: true }}\n                sx={styles.autoCompleteTextfield}\n              />\n            )}\n            onChange={(event, value) => setChecks(value)}\n          />\n        </Stack>\n        <ModalFooterButtons\n          primaryButtonText=\"Send\"\n          primaryButtonCallback={mvsExport}\n          isLoading={loadingMvsExport}\n          secondaryButtonText=\"Cancel\"\n          secondaryButtonCallback={handleClose}\n          primaryButtonMinWidth=\"95px\"\n        />\n      </Stack>\n    </StyledModal>\n  );\n}\n","import React, { Dispatch, useState, useRef } from 'react';\nimport { Autocomplete, Stack, TextField } from '@mui/material';\nimport StyledModal from '../../../Components/GenericModal/StyledModal';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../API';\nimport { ApplicationAction, ApplicationState, IApplication } from '../../types';\nimport { ModalType } from '../../config';\nimport ModalFooterButtons from '../../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from '../styles';\nimport { FormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport { TCandidate } from '../../../Candidates/types';\nimport { SingleDatePicker } from '../../../Components/CustomUIElements/SingleDatePicker';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport dayjs from 'dayjs';\nimport { validateEmail } from '../../../Candidates/EditCandidate';\nimport { scrollToElement } from '../../../utils/scroll-to-element';\nimport { validatePhone } from '../../Modals/SendSms';\n\nexport default function OnboardExpress({\n  ApplicationState,\n  dispatch\n}: {\n  ApplicationState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n}) {\n  const { modalsOpen, userEmail } = ApplicationState;\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const [positionTitle, setPositionTitle] = useState<string>(application?.job.title || '');\n  const [candidate, setCandidate] = useState<TCandidate | null>(application?.candidate || null);\n  const [startDate, setStartDate] = useState<Date | null>(null);\n  const [dateError, setDateError] = useState<string>('');\n  const [workType, setWorkType] = useState<string | null>(null);\n  const [entity, setEntity] = useState<string | null>(null);\n  const [template, setTemplate] = useState<string | null>(null);\n  const [state, setState] = useState<string | null>(null);\n  const [createdBy, setCreatedBy] = useState<string>(userEmail);\n  const [errors, setErrors] = useState<Record<string, string>>({});\n  const fieldRefs = {\n    template: useRef<HTMLInputElement>(null),\n    positionTitle: useRef<HTMLInputElement>(null),\n    createdBy: useRef<HTMLInputElement>(null),\n    startDate: useRef<HTMLInputElement>(null),\n    firstName: useRef<HTMLInputElement>(null),\n    lastName: useRef<HTMLInputElement>(null),\n    email: useRef<HTMLInputElement>(null),\n    phone: useRef<HTMLInputElement>(null),\n    mobile: useRef<HTMLInputElement>(null)\n  };\n\n  const { data: revolveData, isLoading: loadingRevolveData } = useQuery({\n    queryKey: ['revolve data'],\n    queryFn: async () => {\n      if (application) {\n        const { res } = await Api.getRevolveData(application.id);\n        return res;\n      }\n    },\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting onboard express data, ${error}`,\n          state: 'error'\n        }\n      })\n  });\n\n  const { mutate: revolveExport, isLoading: loadingRevolveExport } = useMutation({\n    mutationFn: async () => {\n      if (application && candidate) {\n        return await Api.revolveExport(application.id, {\n          template_name: template || '',\n          position_title: positionTitle,\n          worktype: workType || '',\n          entity_name: entity || '',\n          created_by: createdBy,\n          candidate_first_name: candidate.firstname,\n          candidate_last_name: candidate.lastname,\n          candidate_email: candidate.email,\n          candidate_mobile_no: candidate.phone1.trim(),\n          candidate_phone_no: candidate.phone2.trim(),\n          candidate_addr_street: candidate.address_details.street1 || '',\n          candidate_addr_street1: candidate.address_details.street2 || '',\n          candidate_addr_suburb: candidate.address_details.suburb || '',\n          candidate_addr_state: state || '',\n          candidate_addr_postcode: candidate.address_details.postcode || '',\n          start_date: dayjs(startDate).format('DD/MM/YYYY')\n        });\n      }\n    },\n    onSuccess: () => {\n      queryClient.invalidateQueries(['application'], { exact: true });\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: 'Revolve export has been successfully exported', state: 'success' }\n      });\n      handleClose();\n    },\n    onError: (error: { error: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error in exporting to Revolve Onboard, ${error.error}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n\n  const validateAUPhoneNumber = (phone: string) => {\n    return (\n      (phone.trim().slice(0, 2) === '04' && phone.replace(/\\s/g, '').length === 10) ||\n      (phone.trim().slice(0, 3) === '+61' && phone.replace(/\\s/g, '').length === 12)\n    );\n  };\n\n  const validateInputs = () => {\n    if (!candidate) return false;\n    setErrors({});\n    const inputErrors: Record<string, string> = {};\n    if (!template) inputErrors.template = 'Please select a template';\n    if (!positionTitle.trim()) inputErrors.positionTitle = 'Position title can not be empty';\n    if (!createdBy.trim()) inputErrors.createdBy = 'Created by can not be empty';\n    if (!startDate) inputErrors.startDate = 'Please select a start date';\n    if (!candidate.firstname.trim()) inputErrors.firstName = 'First name can not be empty';\n    if (!candidate.lastname.trim()) inputErrors.lastName = 'Last name can not be empty';\n    if (!validateEmail(candidate.email)) inputErrors.email = 'Please enter a proper email address';\n    setErrors(inputErrors);\n    if (candidate.phone1) {\n      if (validatePhone(candidate.phone1)) {\n        if (!validateAUPhoneNumber(candidate.phone1))\n          inputErrors.phone = 'Must be in the format 0400 000 000 or +61 400 000 000';\n      } else {\n        inputErrors.phone = 'Please enter a valid phone number';\n      }\n    } else {\n      inputErrors.phone = 'Please enter a phone number';\n    }\n    if (candidate.phone2) {\n      if (validatePhone(candidate.phone2)) {\n        if (!validateAUPhoneNumber(candidate.phone2))\n          inputErrors.mobile = 'Must be in the format 0400 000 000 or +61 400 000 000';\n      } else {\n        inputErrors.mobile = 'Please enter a valid mobile number';\n      }\n    }\n    if (inputErrors.template) {\n      scrollToElement(fieldRefs.template);\n    } else if (inputErrors.positionTitle) {\n      scrollToElement(fieldRefs.positionTitle);\n    } else if (inputErrors.createdBy) {\n      scrollToElement(fieldRefs.createdBy);\n    } else if (inputErrors.startDate) {\n      scrollToElement(fieldRefs.startDate);\n    } else if (inputErrors.firstName) {\n      scrollToElement(fieldRefs.firstName);\n    } else if (inputErrors.lastName) {\n      scrollToElement(fieldRefs.lastName);\n    } else if (inputErrors.email) {\n      scrollToElement(fieldRefs.email);\n    } else if (inputErrors.phone) {\n      scrollToElement(fieldRefs.phone);\n    } else if (inputErrors.mobile) {\n      scrollToElement(fieldRefs.mobile);\n    }\n    return !Object.keys(inputErrors).length;\n  };\n\n  const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n  if (!candidate) return null;\n\n  return (\n    <StyledModal\n      isOpen={modalsOpen === ModalType.ONBOARD_EXPRESS}\n      label=\"Onboard express modal\"\n      handleClose={handleClose}\n      styleOverrides={styles.modalStyleOverrides}\n    >\n      <Stack sx={styles.modalContainer}>\n        <Stack sx={styles.modalTitle}>Export to Revolve Onboard</Stack>\n        <Stack sx={{ overflow: 'auto', rowGap: 2 }}>\n          <Autocomplete\n            disablePortal\n            options={revolveData?.template_names || []}\n            value={template}\n            sx={{ ...sharedClasses.formAutocomplete, width: '48%', marginTop: 3, flexGrow: 1 }}\n            loading={loadingRevolveData}\n            loadingText=\"Loading templates...\"\n            ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n            renderInput={(params) => (\n              <TextField\n                {...params}\n                label=\"NEA letter template\"\n                placeholder=\"Please select\"\n                InputLabelProps={{ shrink: true }}\n                sx={styles.autoCompleteTextfield}\n                required\n                helperText={errors.template}\n                ref={fieldRefs.template}\n              />\n            )}\n            onChange={(event, value) => setTemplate(value)}\n          />\n          <FormTextField\n            label=\"Position title\"\n            value={positionTitle}\n            styles={{ width: '48%' }}\n            required\n            onChange={(e) => setPositionTitle(e.target.value)}\n            error={errors.positionTitle}\n            innerRef={fieldRefs.positionTitle}\n          />\n          <Autocomplete\n            disablePortal\n            options={revolveData?.entity_names || []}\n            value={entity}\n            sx={{ ...sharedClasses.formAutocomplete, width: '48%', marginTop: 3, flexGrow: 1 }}\n            loading={loadingRevolveData}\n            loadingText=\"Loading entity names...\"\n            ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n            renderInput={(params) => (\n              <TextField\n                {...params}\n                label=\"Entity name\"\n                placeholder=\"Please select\"\n                InputLabelProps={{ shrink: true }}\n                sx={styles.autoCompleteTextfield}\n              />\n            )}\n            onChange={(event, value) => setEntity(value)}\n          />\n          <FormTextField\n            label=\"Created by (email)\"\n            value={createdBy}\n            styles={{ width: '48%' }}\n            required\n            onChange={(e) => setCreatedBy(e.target.value)}\n            error={errors.createdBy}\n            innerRef={fieldRefs.createdBy}\n          />\n          <Autocomplete\n            disablePortal\n            options={revolveData?.worktypes || []}\n            value={workType}\n            sx={{ ...sharedClasses.formAutocomplete, width: '48%', marginTop: 3, flexGrow: 1 }}\n            loading={loadingRevolveData}\n            loadingText=\"Loading work types...\"\n            ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n            renderInput={(params) => (\n              <TextField\n                {...params}\n                label=\"Work type\"\n                placeholder=\"Please select\"\n                InputLabelProps={{ shrink: true }}\n                sx={styles.autoCompleteTextfield}\n              />\n            )}\n            onChange={(event, value) => setWorkType(value)}\n          />\n          <Stack>\n            <SingleDatePicker\n              value={startDate}\n              label=\"Start date\"\n              inputStyles={{ ...sharedClasses.datePicker, width: '48%' }}\n              onChange={(value) => {\n                if (!value?.isValid()) {\n                  setDateError('Please input a valid date');\n                } else {\n                  setDateError('');\n                  setStartDate(dayjs(value.toDate()).toDate());\n                }\n              }}\n              error={dateError || errors.startDate}\n              required\n            />\n          </Stack>\n          <Stack sx={styles.modalDoubleColumn}>\n            <FormTextField\n              label=\"First name\"\n              value={candidate.firstname || ''}\n              required\n              fullWidth\n              onChange={(e) => setCandidate({ ...candidate, firstname: e.target.value })}\n              error={errors.firstName}\n              innerRef={fieldRefs.firstName}\n            />\n            <FormTextField\n              label=\"Last name\"\n              value={candidate.lastname || ''}\n              required\n              fullWidth\n              onChange={(e) => setCandidate({ ...candidate, lastname: e.target.value })}\n              error={errors.lastName}\n              innerRef={fieldRefs.lastName}\n            />\n          </Stack>\n          <FormTextField\n            label=\"Email\"\n            value={candidate.email}\n            styles={{ width: '48%' }}\n            required\n            onChange={(e) => setCandidate({ ...candidate, email: e.target.value })}\n            error={errors.email}\n            innerRef={fieldRefs.email}\n          />\n          <Stack sx={styles.modalDoubleColumn}>\n            <FormTextField\n              label={'Phone'}\n              value={candidate.phone1}\n              onChange={(e) => setCandidate({ ...candidate, phone1: e.target.value })}\n              required\n              fullWidth\n              error={errors.phone}\n              innerRef={fieldRefs.phone}\n            />\n            <FormTextField\n              label={'Mobile'}\n              value={candidate.phone2}\n              onChange={(e) => setCandidate({ ...candidate, phone2: e.target.value })}\n              fullWidth\n              error={errors.mobile}\n              innerRef={fieldRefs.mobile}\n            />\n          </Stack>\n          <Stack sx={styles.modalDoubleColumn}>\n            <FormTextField\n              label=\"Street address\"\n              value={candidate?.address_details?.street1 || ''}\n              fullWidth\n              onChange={(e) =>\n                setCandidate({\n                  ...candidate,\n                  address_details: { ...candidate.address_details, street1: e.target.value }\n                })\n              }\n            />\n            <FormTextField\n              label=\"Street address cont'd\"\n              value={candidate?.address_details?.street2 || ''}\n              fullWidth\n              onChange={(e) =>\n                setCandidate({\n                  ...candidate,\n                  address_details: { ...candidate.address_details, street2: e.target.value }\n                })\n              }\n            />\n          </Stack>\n          <Stack sx={styles.modalDoubleColumn}>\n            <FormTextField\n              label=\"City, town or suburb\"\n              value={candidate?.address_details?.suburb || ''}\n              fullWidth\n              onChange={(e) =>\n                setCandidate({\n                  ...candidate,\n                  address_details: { ...candidate.address_details, suburb: e.target.value }\n                })\n              }\n            />\n            <FormTextField\n              label=\"Postcode or zipcode\"\n              value={candidate?.address_details?.postcode || ''}\n              fullWidth\n              onChange={(e) =>\n                setCandidate({\n                  ...candidate,\n                  address_details: { ...candidate.address_details, postcode: e.target.value }\n                })\n              }\n            />\n          </Stack>\n          <Autocomplete\n            disablePortal\n            options={revolveData?.states || []}\n            value={state}\n            sx={{ ...sharedClasses.formAutocomplete, width: '48%', marginTop: 3, flexGrow: 1 }}\n            loading={loadingRevolveData}\n            loadingText=\"Loading states...\"\n            ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n            renderInput={(params) => (\n              <TextField\n                {...params}\n                label=\"State, region or province\"\n                placeholder=\"Please select\"\n                InputLabelProps={{ shrink: true }}\n                sx={styles.autoCompleteTextfield}\n              />\n            )}\n            onChange={(event, value) => setState(value)}\n          />\n        </Stack>\n        <ModalFooterButtons\n          primaryButtonText=\"Export\"\n          primaryButtonCallback={() => validateInputs() && revolveExport()}\n          isLoading={loadingRevolveExport}\n          secondaryButtonText=\"Cancel\"\n          secondaryButtonCallback={handleClose}\n          primaryButtonMinWidth=\"95px\"\n        />\n      </Stack>\n    </StyledModal>\n  );\n}\n","import React, { useState, useRef, Dispatch } from 'react';\nimport { Autocomplete, Stack, TextField } from '@mui/material';\nimport StyledModal from '../../../Components/GenericModal/StyledModal';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../API';\nimport { ApplicationAction, ApplicationState, IApplication } from '../../types';\nimport { ModalType } from '../../config';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport ModalFooterButtons from '../../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from '../styles';\nimport {\n  FormTextField,\n  FormNumberField,\n  MultilineFormTextField\n} from '../../../Components/CustomUIElements/FormTextField';\nimport { TCandidate } from '../../../Candidates/types';\nimport { scrollToElement } from '../../../utils/scroll-to-element';\nimport { validateEmail } from '../../../Candidates/EditCandidate';\n\nexport default function Referoo({\n  ApplicationState,\n  dispatch\n}: {\n  ApplicationState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n}) {\n  const { modalsOpen, userEmail } = ApplicationState;\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const [candidate, setCandidate] = useState<TCandidate | null>(application?.candidate || null);\n  const [jobTitle, setJobTitle] = useState<string>(application?.job?.title || '');\n  const [company, setCompany] = useState<string>(application?.job?.entity || '');\n  const [numberOfReferences, setNumberOfReferences] = useState<string>('');\n  const [notes, setNotes] = useState<string>('');\n  const [errors, setErrors] = useState<Record<string, string>>({});\n  const [country, setCountry] = useState<[string, string] | null>(null);\n  const [questionnaire, setQuestionnaire] = useState<[string, string] | null>(null);\n  const [referooPackage, setReferooPackage] = useState<[string, string] | null>(null);\n\n  const fieldRefs = {\n    firstName: useRef<HTMLInputElement>(null),\n    lastName: useRef<HTMLInputElement>(null),\n    email: useRef<HTMLInputElement>(null),\n    questionnaire: useRef<HTMLInputElement>(null),\n    references: useRef<HTMLInputElement>(null),\n    country: useRef<HTMLInputElement>(null),\n    phone: useRef<HTMLInputElement>(null)\n  };\n\n  const { data, isLoading } = useQuery({\n    queryKey: ['referoo data'],\n    queryFn: async () => {\n      if (application) {\n        const { res } = await Api.getReferooData(application.id);\n        return res;\n      }\n    },\n    onSuccess: (res) => {\n      const candidateCountry = res?.countries.find((c) => c[1] === res.country);\n      candidateCountry && setCountry(candidateCountry);\n    },\n    onError: (error: { error: string }) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting referoo data, ${error.error}`,\n          state: 'error'\n        }\n      })\n  });\n\n  const { mutate: referooExport, isLoading: loadingReferooExport } = useMutation({\n    mutationFn: async () => {\n      if (application && candidate) {\n        const { res } = await Api.referooExport(application.id, {\n          first_name: candidate.firstname,\n          last_name: candidate.lastname,\n          email: candidate.email,\n          phone: candidate.phone1,\n          phone_country: country?.[1] || '',\n          job: jobTitle,\n          company: company,\n          questionnairesNum: questionnaire ? questionnaire[1] : undefined,\n          packagesNum: referooPackage ? referooPackage[1] : undefined,\n          number_of_references_required: numberOfReferences,\n          notes: notes,\n          recruiter_email: userEmail\n        });\n        return res;\n      }\n    },\n    onSuccess: (res: { success: string }) => {\n      queryClient.invalidateQueries(['integrations'], { exact: true });\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: res.success, state: 'success' }\n      });\n      handleClose();\n    },\n    onError: (error: { error: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error in sending request to referoo, ${error.error}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n\n  const validateInputs = () => {\n    if (!candidate) return false;\n    setErrors({});\n    const inputErrors: Record<string, string> = {};\n    if (!candidate.firstname.trim()) inputErrors.firstName = 'First name can not be empty';\n    if (!candidate.lastname.trim()) inputErrors.lastName = 'Last name can not be empty';\n    if (!validateEmail(candidate.email)) inputErrors.email = 'Please enter a proper email address';\n    if (!country) inputErrors.country = 'Please select a country';\n    if (candidate.phone1.trim().includes('+')) inputErrors.phone = 'Please do not use country code';\n    if (!questionnaire && !referooPackage)\n      inputErrors.questionnaire = 'Please select at least one questionnaire or one package';\n    if (Number(numberOfReferences) < 1 && !referooPackage)\n      inputErrors.references = 'Please enter a valid number of references';\n    setErrors(inputErrors);\n    if (inputErrors.firstName) {\n      scrollToElement(fieldRefs.firstName);\n    } else if (inputErrors.lastName) {\n      scrollToElement(fieldRefs.lastName);\n    } else if (inputErrors.email) {\n      scrollToElement(fieldRefs.email);\n    } else if (inputErrors.country) {\n      scrollToElement(fieldRefs.country);\n    } else if (inputErrors.phone) {\n      scrollToElement(fieldRefs.phone);\n    } else if (inputErrors.questionnaire) {\n      scrollToElement(fieldRefs.questionnaire);\n    } else if (inputErrors.references) {\n      scrollToElement(fieldRefs.references);\n    }\n    return !Object.keys(inputErrors).length;\n  };\n\n  const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n  if (!candidate) return null;\n\n  return (\n    <StyledModal\n      isOpen={modalsOpen === ModalType.REFEROO}\n      label=\"Referoo export modal\"\n      handleClose={handleClose}\n      styleOverrides={{ ...styles.modalStyleOverrides, width: '800px' }}\n    >\n      <Stack sx={styles.modalContainer}>\n        <Stack sx={styles.modalTitle}>Export to Referoo</Stack>\n        <Stack sx={{ rowGap: 2, overflow: 'auto' }}>\n          <Stack sx={styles.modalDoubleColumn}>\n            <FormTextField\n              label=\"First name\"\n              value={candidate.firstname || ''}\n              required\n              fullWidth\n              onChange={(e) => setCandidate({ ...candidate, firstname: e.target.value })}\n              error={errors.firstName}\n              innerRef={fieldRefs.firstName}\n            />\n            <FormTextField\n              label=\"Last name\"\n              value={candidate.lastname || ''}\n              required\n              fullWidth\n              onChange={(e) => setCandidate({ ...candidate, lastname: e.target.value })}\n              error={errors.lastName}\n              innerRef={fieldRefs.lastName}\n            />\n          </Stack>\n          <FormTextField\n            label=\"Email\"\n            value={candidate.email}\n            styles={{ width: '48%' }}\n            required\n            onChange={(e) => setCandidate({ ...candidate, email: e.target.value })}\n            error={errors.email}\n            innerRef={fieldRefs.email}\n          />\n          <Stack sx={styles.modalDoubleColumn}>\n            <Autocomplete\n              disablePortal\n              options={data?.countries || []}\n              getOptionLabel={(option) => option[0]}\n              value={country}\n              sx={{\n                ...sharedClasses.formAutocomplete,\n                width: '100%',\n                marginTop: '18px',\n                '& .MuiInputLabel-root': { top: '-10px' }\n              }}\n              loading={isLoading}\n              loadingText=\"Loading countries...\"\n              ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n              renderInput={(params) => (\n                <TextField\n                  {...params}\n                  label=\"Phone country\"\n                  placeholder=\"Please select\"\n                  InputLabelProps={{ shrink: true }}\n                  sx={styles.autoCompleteTextfield}\n                  required\n                  helperText={errors.country}\n                  ref={fieldRefs.country}\n                />\n              )}\n              onChange={(event, value) => setCountry(value)}\n            />\n            <FormTextField\n              label={'Phone'}\n              value={candidate.phone1}\n              onChange={(e) => {\n                if (\n                  Number(e.target.value) === 0 ||\n                  (!e.target.value.includes('.') && !!Number(e.target.value))\n                ) {\n                  setCandidate({ ...candidate, phone1: e.target.value.trim() });\n                }\n              }}\n              required\n              fullWidth\n              helperText=\"Do not use the country code here\"\n              error={errors.phone}\n              innerRef={fieldRefs.phone}\n            />\n          </Stack>\n          <Stack sx={styles.modalDoubleColumn}>\n            <FormTextField\n              label=\"Job title\"\n              value={jobTitle}\n              fullWidth\n              onChange={(e) => setJobTitle(e.target.value)}\n            />\n            <FormTextField\n              label=\"Company\"\n              value={company}\n              fullWidth\n              onChange={(e) => setCompany(e.target.value)}\n            />\n          </Stack>\n          <Stack sx={{ ...styles.modalDoubleColumn, marginRight: '3px', paddingTop: 1 }}>\n            <Autocomplete\n              disablePortal\n              options={data?.questionnaires || []}\n              getOptionLabel={(option) => option[0]}\n              value={questionnaire}\n              sx={{ ...sharedClasses.formAutocomplete, width: '100%', marginTop: 2 }}\n              loading={isLoading}\n              loadingText=\"Loading questionnaires...\"\n              ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n              renderInput={(params) => (\n                <TextField\n                  {...params}\n                  label=\"Questionnaires\"\n                  placeholder=\"Please select\"\n                  InputLabelProps={{ shrink: true }}\n                  sx={styles.autoCompleteTextfield}\n                  required\n                  helperText={errors.questionnaire}\n                  ref={fieldRefs.questionnaire}\n                />\n              )}\n              onChange={(event, value) => setQuestionnaire(value)}\n              disabled={!!referooPackage}\n            />\n            <Autocomplete\n              disablePortal\n              options={data?.packages || []}\n              getOptionLabel={(option) => option[0]}\n              value={referooPackage}\n              sx={{ ...sharedClasses.formAutocomplete, width: '100%', marginTop: 2 }}\n              loading={isLoading}\n              loadingText=\"Loading packages...\"\n              ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n              renderInput={(params) => (\n                <TextField\n                  {...params}\n                  label=\"Packages\"\n                  placeholder=\"Please select\"\n                  InputLabelProps={{ shrink: true }}\n                  sx={styles.autoCompleteTextfield}\n                />\n              )}\n              onChange={(event, value) => {\n                setQuestionnaire(null);\n                setNumberOfReferences('');\n                setReferooPackage(value);\n              }}\n            />\n          </Stack>\n          <FormNumberField\n            label={'Number of references required'}\n            value={numberOfReferences}\n            onChange={(e) => setNumberOfReferences(e.target.value)}\n            required\n            styles={{\n              width: '48%',\n              marginLeft: '3px',\n              '& .MuiInputBase-input': {\n                '&.Mui-disabled': { backgroundColor: 'rgba(217, 217, 217, 0.23)' }\n              }\n            }}\n            error={errors.references}\n            innerRef={fieldRefs.references}\n            disabled={!!referooPackage}\n          />\n          <MultilineFormTextField\n            label=\"Notes\"\n            value={notes}\n            onChange={(e) => setNotes(e.target.value)}\n            fullWidth\n            rows={6}\n          />\n        </Stack>\n        <ModalFooterButtons\n          primaryButtonText=\"Export\"\n          primaryButtonCallback={() => validateInputs() && referooExport()}\n          isLoading={loadingReferooExport}\n          secondaryButtonText=\"Cancel\"\n          secondaryButtonCallback={handleClose}\n          primaryButtonMinWidth=\"95px\"\n        />\n      </Stack>\n    </StyledModal>\n  );\n}\n","import React, { useState, Dispatch } from 'react';\nimport { Stack } from '@mui/material';\nimport StyledModal from '../../../Components/GenericModal/StyledModal';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../API';\nimport { ApplicationAction, ApplicationState, IApplication } from '../../types';\nimport { ModalType } from '../../config';\nimport ModalFooterButtons from '../../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from '../styles';\nimport { FormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport { TCandidate } from '../../../Candidates/types';\nimport { validateEmail } from '../../../Candidates/EditCandidate';\n\nexport default function Roubler({\n  ApplicationState,\n  dispatch\n}: {\n  ApplicationState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n}) {\n  const { modalsOpen } = ApplicationState;\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const [candidate, setCandidate] = useState<TCandidate | null>(application?.candidate || null);\n  const [errors, setErrors] = useState<Record<string, string>>({});\n\n  const validateInputs = () => {\n    if (!candidate) return false;\n    setErrors({});\n    const inputErrors: Record<string, string> = {};\n    if (!candidate.firstname.trim()) inputErrors.firstName = 'First name can not be empty';\n    if (!candidate.lastname.trim()) inputErrors.lastName = 'Last name can not be empty';\n    if (!validateEmail(candidate.email)) inputErrors.email = 'Please enter a proper email address';\n    setErrors(inputErrors);\n    return !Object.keys(inputErrors).length;\n  };\n\n  const { mutate: roublerExport, isLoading: exportingRoubler } = useMutation({\n    mutationFn: async () => {\n      if (application && candidate) {\n        const { res } = await Api.roublerExport(application.id, {\n          first_name: candidate.firstname,\n          last_name: candidate.lastname,\n          email: candidate.email\n        });\n        return res;\n      }\n    },\n    onSuccess: (res: { success: string }) => {\n      dispatch({ type: 'SET_SNACKBAR', payload: { message: res.success, state: 'success' } });\n      handleClose();\n    },\n    onError: (error: { error: string }) => {\n      dispatch({ type: 'SET_SNACKBAR', payload: { message: error.error, state: 'error' } });\n    }\n  });\n\n  const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n  if (!candidate) return null;\n\n  return (\n    <StyledModal\n      isOpen={modalsOpen === ModalType.ROUBLER}\n      label=\"HROnboard export modal\"\n      handleClose={handleClose}\n      styleOverrides={styles.modalStyleOverrides}\n    >\n      <Stack sx={{ ...styles.modalContainer, rowGap: 4 }}>\n        <Stack sx={styles.modalTitle}>Export to Roubler</Stack>\n        <Stack sx={{ overflow: 'auto', rowGap: 3, paddingBottom: 4 }}>\n          <Stack sx={styles.modalDoubleColumn}>\n            <FormTextField\n              label=\"First name\"\n              value={candidate.firstname || ''}\n              required\n              fullWidth\n              onChange={(e) => setCandidate({ ...candidate, firstname: e.target.value })}\n              error={errors.firstName}\n            />\n            <FormTextField\n              label=\"Surname\"\n              value={candidate.lastname || ''}\n              required\n              fullWidth\n              onChange={(e) => setCandidate({ ...candidate, lastname: e.target.value })}\n              error={errors.lastName}\n            />\n          </Stack>\n          <FormTextField\n            label=\"Email\"\n            value={candidate.email}\n            styles={{ width: '48%' }}\n            required\n            onChange={(e) => setCandidate({ ...candidate, email: e.target.value })}\n            error={errors.email}\n          />\n        </Stack>\n        <ModalFooterButtons\n          primaryButtonText=\"Export\"\n          primaryButtonCallback={() => validateInputs() && roublerExport()}\n          isLoading={exportingRoubler}\n          secondaryButtonText=\"Cancel\"\n          secondaryButtonCallback={handleClose}\n          primaryButtonMinWidth=\"95px\"\n        />\n      </Stack>\n    </StyledModal>\n  );\n}\n","import React, { Dispatch, useState, useRef } from 'react';\nimport { Autocomplete, Stack, TextField } from '@mui/material';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport StyledModal from '../../../Components/GenericModal/StyledModal';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../API';\nimport { ApplicationAction, ApplicationState, IApplication } from '../../types';\nimport { ModalType } from '../../config';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport ModalFooterButtons from '../../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from '../styles';\nimport { MultilineFormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport { SingleDateTimePicker } from '../../../Components/CustomUIElements/SingleDatePicker';\nimport { scrollToElement } from '../../../utils/scroll-to-element';\nimport dayjs from 'dayjs';\n\nexport default function SparkHire({\n  ApplicationState,\n  dispatch\n}: {\n  ApplicationState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n}) {\n  const { modalsOpen } = ApplicationState;\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const [emailMessage, setEmailMessage] = useState<string>('');\n  const [scheduledAt, setScheduledAt] = useState<Date>(new Date());\n  const [timezone, setTimezone] = useState<string | null>(null);\n  const [job, setJob] = useState<[string, string] | null>(null);\n  const [question, setQuestion] = useState<[string, string] | null>(null);\n  const [errors, setErrors] = useState<Record<string, string>>({});\n\n  const fieldRefs = {\n    job: useRef<HTMLInputElement>(null),\n    question: useRef<HTMLInputElement>(null),\n    scheduledAt: useRef<HTMLInputElement>(null)\n  };\n\n  const { data: sparkHireData, isFetching: loadingSparkHireData } = useQuery({\n    queryKey: ['SparkHire data'],\n    queryFn: async () => {\n      if (application) {\n        const { res } = await Api.getSparkHireData(application.id);\n        return res;\n      }\n    },\n    onSuccess: (res) => {\n      const savedTimezone = res?.timezones?.find((tz) => tz === res?.timezone);\n      savedTimezone && setTimezone(savedTimezone);\n    },\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting sparkhire data, ${error}`,\n          state: 'error'\n        }\n      })\n  });\n\n  const validateInputs = () => {\n    setErrors({});\n    const inputErrors: Record<string, string> = {};\n    if (!job) inputErrors.job = 'Please select a job';\n    if (!question) inputErrors.question = 'Please select a question set';\n    if (dayjs(scheduledAt).isBefore(Date.now()))\n      inputErrors.scheduledAt = 'Date and time must be in the future';\n    setErrors(inputErrors);\n    if (inputErrors.job) {\n      scrollToElement(fieldRefs.job);\n    } else if (inputErrors.question) {\n      scrollToElement(fieldRefs.question);\n    } else if (inputErrors.scheduledAt) {\n      scrollToElement(fieldRefs.scheduledAt);\n    }\n    return !Object.keys(inputErrors).length;\n  };\n\n  const { mutate: sparkHireExport, isLoading: exportingSparkHire } = useMutation({\n    mutationFn: async () => {\n      if (application && job && question) {\n        const { res } = await Api.sparkHireExport(application.id, {\n          job_uuid: job[1],\n          interview_questions_set_uuid: question[1],\n          email_message: emailMessage,\n          scheduled_time: scheduledAt.toISOString(),\n          timezone: timezone ? timezone : undefined\n        });\n        return res;\n      }\n    },\n    onSuccess: (res: { success: string }) => {\n      dispatch({ type: 'SET_SNACKBAR', payload: { message: res.success, state: 'success' } });\n      handleClose();\n    },\n    onError: (error: { error: string }) => {\n      dispatch({ type: 'SET_SNACKBAR', payload: { message: error.error, state: 'error' } });\n    }\n  });\n\n  const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n  return (\n    <StyledModal\n      isOpen={modalsOpen === ModalType.SPARKHIRE}\n      label=\"Spark Hire export modal\"\n      handleClose={handleClose}\n      styleOverrides={styles.modalStyleOverrides}\n    >\n      <Stack sx={styles.modalContainer}>\n        <Stack sx={styles.modalTitle}>Export to Spark Hire</Stack>\n        <Stack sx={{ overflow: 'auto', rowGap: 3 }}>\n          <Autocomplete\n            disablePortal\n            options={sparkHireData?.jobs || []}\n            getOptionLabel={(option) => option[0]}\n            value={job}\n            sx={{ ...sharedClasses.formAutocomplete, width: '48%', marginTop: 3 }}\n            loading={loadingSparkHireData}\n            loadingText=\"Loading jobs...\"\n            ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n            renderInput={(params) => (\n              <TextField\n                {...params}\n                label=\"Job from Spark Hire\"\n                placeholder=\"Please select\"\n                InputLabelProps={{ shrink: true }}\n                sx={styles.autoCompleteTextfield}\n                required\n                helperText={errors.job}\n                ref={fieldRefs.job}\n              />\n            )}\n            onChange={(_event, value) => setJob(value)}\n          />\n          <Autocomplete\n            disablePortal\n            options={sparkHireData?.questions || []}\n            getOptionLabel={(option) => option[0]}\n            value={question}\n            sx={{ ...sharedClasses.formAutocomplete, width: '48%', marginTop: 3 }}\n            loading={loadingSparkHireData}\n            loadingText=\"Loading questions...\"\n            ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n            renderInput={(params) => (\n              <TextField\n                {...params}\n                label=\"Question set\"\n                placeholder=\"Please select\"\n                InputLabelProps={{ shrink: true }}\n                sx={styles.autoCompleteTextfield}\n                required\n                helperText={errors.question}\n                ref={fieldRefs.question}\n              />\n            )}\n            onChange={(event, value) => setQuestion(value)}\n          />\n          <MultilineFormTextField\n            label=\"Email message\"\n            value={emailMessage}\n            onChange={(e) => setEmailMessage(e.target.value)}\n            fullWidth\n            rows={6}\n          />\n          <Stack sx={styles.modalDoubleColumn}>\n            <Stack sx={{ width: '100%' }}>\n              <SingleDateTimePicker\n                label=\"Scheduled at\"\n                inputStyles={{ ...sharedClasses.datePicker, width: '100%', height: '2em' }}\n                onChange={(value) => value && setScheduledAt(value)}\n                value={scheduledAt}\n                disablePast\n                required\n                innerRef={fieldRefs.scheduledAt}\n                error={errors.scheduledAt}\n              />\n            </Stack>\n            <Autocomplete\n              disablePortal\n              options={sparkHireData?.timezones || []}\n              value={timezone}\n              sx={{ ...sharedClasses.formAutocomplete, width: '100%', marginTop: '20px' }}\n              loading={loadingSparkHireData}\n              loadingText=\"Loading timezones...\"\n              ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n              renderInput={(params) => (\n                <TextField\n                  {...params}\n                  label=\"Timezone\"\n                  InputLabelProps={{ shrink: true }}\n                  InputProps={{\n                    ...params.InputProps,\n                    endAdornment: (\n                      <>\n                        {loadingSparkHireData && <CircularProgress color=\"inherit\" size={20} />}\n                        {params.InputProps.endAdornment}\n                      </>\n                    )\n                  }}\n                  sx={{\n                    ...styles.autoCompleteTextfield,\n                    '& .MuiInputBase-root': { margin: 'unset', marginTop: 0.5 }\n                  }}\n                  required\n                />\n              )}\n              onChange={(event, value) => setTimezone(value)}\n              disableClearable={!!timezone}\n            />\n          </Stack>\n        </Stack>\n        <ModalFooterButtons\n          primaryButtonText=\"Export\"\n          primaryButtonCallback={() => validateInputs() && sparkHireExport()}\n          isLoading={exportingSparkHire}\n          secondaryButtonText=\"Cancel\"\n          secondaryButtonCallback={handleClose}\n          primaryButtonMinWidth=\"95px\"\n        />\n      </Stack>\n    </StyledModal>\n  );\n}\n","import React, { useState, Dispatch } from 'react';\nimport { Autocomplete, Stack, TextField } from '@mui/material';\nimport StyledModal from '../../../Components/GenericModal/StyledModal';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../API';\nimport { ApplicationAction, ApplicationState, IApplication } from '../../types';\nimport { ModalType } from '../../config';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport ModalFooterButtons from '../../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from '../styles';\n\nexport default function Testgrid({\n  ApplicationState,\n  dispatch\n}: {\n  ApplicationState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n}) {\n  const { modalsOpen } = ApplicationState;\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const [testgridPackage, setTestgridPackage] = useState<string | null>(null);\n  const [error, setError] = useState<string>('');\n\n  const { data: packages, isLoading: loadingPackages } = useQuery({\n    queryKey: ['testgrid packages'],\n    queryFn: async () => {\n      if (application) {\n        const { res } = await Api.getTestGridPackages(application.id);\n        return res;\n      }\n    },\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting testgrid data, ${error}`,\n          state: 'error'\n        }\n      })\n  });\n\n  const validateInput = () => {\n    setError('');\n    if (!testgridPackage) {\n      setError('Please select a package');\n      return false;\n    }\n    return true;\n  };\n\n  const { mutate: testGridExport, isLoading: loadingTestGridExport } = useMutation({\n    mutationFn: async () => {\n      if (application && packages && testgridPackage) {\n        const { res } = await Api.testGridExport(application.id, packages[testgridPackage]);\n        return res;\n      }\n    },\n    onSuccess: (res: { success: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: res.success, state: 'success' }\n      });\n      handleClose();\n    },\n    onError: (error: { message: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error in sending request to testgrid, ${error.message}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n\n  const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n  return (\n    <StyledModal\n      isOpen={modalsOpen === ModalType.TESTGRID}\n      label=\"Testgrid export modal\"\n      handleClose={handleClose}\n      styleOverrides={styles.modalStyleOverrides}\n    >\n      <Stack sx={styles.modalContainer}>\n        <Stack sx={styles.modalTitle}>Testgrid request test</Stack>\n        <Autocomplete\n          disablePortal\n          options={Object.keys(packages || {})}\n          value={testgridPackage}\n          sx={{ ...sharedClasses.formAutocomplete, width: '48%', marginTop: 3, flexGrow: 1 }}\n          loading={loadingPackages}\n          loadingText=\"Loading packages...\"\n          ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n          renderInput={(params) => (\n            <TextField\n              {...params}\n              label=\"Package\"\n              placeholder=\"Please select\"\n              InputLabelProps={{ shrink: true }}\n              sx={styles.autoCompleteTextfield}\n              required\n              helperText={error}\n            />\n          )}\n          onChange={(event, value) => setTestgridPackage(value)}\n        />\n        <ModalFooterButtons\n          primaryButtonText=\"Send\"\n          primaryButtonCallback={() => validateInput() && testGridExport()}\n          isLoading={loadingTestGridExport}\n          secondaryButtonText=\"Cancel\"\n          secondaryButtonCallback={handleClose}\n          primaryButtonMinWidth=\"95px\"\n        />\n      </Stack>\n    </StyledModal>\n  );\n}\n","import React, { useState, Dispatch } from 'react';\nimport { Divider, Stack } from '@mui/material';\nimport { Circle, Info as InfoIcon } from '@mui/icons-material';\nimport StyledModal from '../../../Components/GenericModal/StyledModal';\nimport { useQueryClient, useMutation } from '@tanstack/react-query';\nimport Api from '../../API';\nimport { ApplicationAction, ApplicationState, IApplication } from '../../types';\nimport { ModalType } from '../../config';\nimport ModalFooterButtons from '../../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from '../styles';\nimport { MultilineFormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport { theme } from '../../../../../components/ThemeContext/ThemeObject';\n\nexport default function UnusualActivity({\n  ApplicationState,\n  dispatch\n}: {\n  ApplicationState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n}) {\n  const { modalsOpen, referenceId, selectedReferee } = ApplicationState;\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const [comments, setComments] = useState<string>('');\n  const [selectedButton, setSelectedButton] = useState<string>('');\n\n  const buttonsColor = () => {\n    switch (selectedButton) {\n      case 'valid':\n        return '#8CCF95';\n      case 'suspicious':\n        return theme.palette.error.main;\n      default:\n        return '#7CD0CC';\n    }\n  };\n\n  const resolution = () => {\n    switch (selectedButton) {\n      case 'valid':\n        return 0;\n      case 'suspicious':\n        return 1;\n      default:\n        return undefined;\n    }\n  };\n\n  const { mutate: resolveUnusualActivity, isLoading: resolvingUnusualActivity } = useMutation({\n    mutationFn: async () => {\n      if (application && referenceId && selectedReferee) {\n        const { res } = await Api.resolveUnusualActivity(application.id, {\n          referee_id: selectedReferee.id,\n          note: comments.trim(),\n          reference_id: referenceId,\n          resolution: resolution()\n        });\n        return res;\n      }\n    },\n    onSuccess: (res: { success: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: res.success, state: 'success' }\n      });\n      handleClose();\n    },\n    onError: (error: { message: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error in resolving unusual activity, ${error.message}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n\n  const handleClose = () => {\n    dispatch({\n      type: 'SET_UNUSUAL_ACTIVITY_DATA',\n      payload: { referenceId: null, selectedReferee: null }\n    });\n    dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n  };\n\n  const errorsLength = selectedReferee?.unusual_activities?.errors?.length;\n\n  return (\n    <StyledModal\n      isOpen={modalsOpen === ModalType.UNUSUAL_ACTIVITY}\n      label=\"Unusual activity modal\"\n      handleClose={handleClose}\n      styleOverrides={styles.modalStyleOverrides}\n    >\n      <Stack sx={styles.modalContainer}>\n        <Stack sx={styles.modalTitle}>Unusual activity</Stack>\n        <Stack\n          sx={{\n            border: '1px solid #7CD0CC',\n            borderRadius: '6px',\n            padding: '8px 16px',\n            color: '#939393'\n          }}\n        >\n          <Stack sx={{ flexDirection: 'row', columnGap: 1, alignItems: 'center' }}>\n            <InfoIcon fontSize=\"small\" sx={{ color: '#7CD0CC' }} />\n            Status:\n            <Stack sx={{ fontWeight: 'bold' }}>{selectedReferee?.unusual_activities?.status}</Stack>\n          </Stack>\n          <Stack sx={{ paddingLeft: '28px' }}>\n            {`There ${errorsLength === 1 ? 'is' : 'are'} ${errorsLength} possibilit${errorsLength === 1 ? 'y' : 'ies'}:`}\n          </Stack>\n          {selectedReferee?.unusual_activities?.errors?.map((error, index) => (\n            <Stack key={index} sx={{ flexDirection: 'row', paddingLeft: 3 }}>\n              <Circle sx={{ fontSize: '6px', margin: 1 }} />\n              {error}\n            </Stack>\n          ))}\n        </Stack>\n        <Stack sx={{ rowGap: 1 }}>\n          <Stack sx={{ color: '#838383' }}>Verify this activity</Stack>\n          <Stack\n            sx={{\n              ...styles.verifyActivityButtonsContainer,\n              border: `2px solid ${buttonsColor()}`,\n              color: buttonsColor()\n            }}\n          >\n            <Stack\n              sx={{\n                ...styles.verifyActivityButton,\n                background: selectedButton === 'valid' ? '#EFFDF3' : 'inherit',\n                ...(selectedButton === 'suspicious' && { color: '#93939390' })\n              }}\n              onClick={() =>\n                selectedButton === 'valid' ? setSelectedButton('') : setSelectedButton('valid')\n              }\n            >\n              Valid\n            </Stack>\n            <Divider\n              orientation=\"vertical\"\n              flexItem\n              sx={{ margin: 0.25, borderColor: `${buttonsColor()}25`, borderRightWidth: 1 }}\n            />\n            <Stack\n              sx={{\n                ...styles.verifyActivityButton,\n                background: selectedButton === 'suspicious' ? `#FCEFEF` : 'inherit',\n                ...(selectedButton === 'valid' && { color: '#93939390' })\n              }}\n              onClick={() =>\n                selectedButton === 'suspicious'\n                  ? setSelectedButton('')\n                  : setSelectedButton('suspicious')\n              }\n            >\n              Suspicious\n            </Stack>\n          </Stack>\n        </Stack>\n        <Stack sx={{ width: '50%' }}>\n          <MultilineFormTextField\n            label=\"Comments\"\n            value={comments}\n            onChange={(e) => setComments(e.target.value)}\n            rows={6}\n          />\n        </Stack>\n        <ModalFooterButtons\n          primaryButtonText=\"Submit\"\n          primaryButtonCallback={resolveUnusualActivity}\n          isLoading={resolvingUnusualActivity}\n          secondaryButtonText=\"Cancel\"\n          secondaryButtonCallback={handleClose}\n          primaryButtonMinWidth=\"95px\"\n        />\n      </Stack>\n    </StyledModal>\n  );\n}\n","import React, { useState, Dispatch, useRef } from 'react';\nimport { Autocomplete, Stack, TextField } from '@mui/material';\nimport StyledModal from '../../../Components/GenericModal/StyledModal';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../API';\nimport { ApplicationAction, ApplicationState, IApplication, IXrefPackage } from '../../types';\nimport { ModalType } from '../../config';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport ModalFooterButtons from '../../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from '../styles';\nimport {\n  FormTextField,\n  FormNumberField,\n  MultilineFormTextField\n} from '../../../Components/CustomUIElements/FormTextField';\nimport { TCandidate } from '../../../Candidates/types';\nimport { validateEmail } from '../../../Candidates/EditCandidate';\nimport { scrollToElement } from '../../../utils/scroll-to-element';\n\nexport default function XRef({\n  ApplicationState,\n  dispatch\n}: {\n  ApplicationState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n}) {\n  const { modalsOpen } = ApplicationState;\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const [candidate, setCandidate] = useState<TCandidate | null>(application?.candidate || null);\n  const [minReferees, setMinReferees] = useState<string>('');\n  const [candidateNote, setCandidateNote] = useState<string>('');\n  const [refereeNote, setRefereeNote] = useState<string>('');\n  const [xRefPackage, setXRefPackage] = useState<IXrefPackage | null>(null);\n  const [errors, setErrors] = useState<Record<string, string>>({});\n\n  const fieldRefs = {\n    package: useRef<HTMLInputElement>(null),\n    referees: useRef<HTMLInputElement>(null),\n    candidateNote: useRef<HTMLInputElement>(null),\n    refereeNote: useRef<HTMLInputElement>(null),\n    email: useRef<HTMLInputElement>(null)\n  };\n\n  const { data: packages, isLoading: loadingPackages } = useQuery({\n    queryKey: ['xref packages'],\n    queryFn: async () => {\n      if (application) {\n        const { res } = await Api.getXrefPackages(application.id);\n        return res;\n      }\n    },\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting onboard express data, ${error}`,\n          state: 'error'\n        }\n      })\n  });\n\n  const { mutate: xRefExport, isLoading: loadingXRefExport } = useMutation({\n    mutationFn: async () => {\n      if (application && candidate && xRefPackage) {\n        const { res } = await Api.xRefExport(application.id, {\n          candidate_email: candidate.email,\n          package_id: xRefPackage.id,\n          min_referees: Number(minReferees),\n          note_to_candidate: candidateNote,\n          note_to_referee: refereeNote\n        });\n        return res;\n      }\n    },\n    onSuccess: (res: { success: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: res.success, state: 'success' }\n      });\n      handleClose();\n    },\n    onError: (error: { error: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error in exporting to Xref, ${error.error}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n\n  const validateInputs = () => {\n    if (!candidate) return false;\n    setErrors({});\n    const inputErrors: Record<string, string> = {};\n    if (!xRefPackage) inputErrors.package = 'Please select a package';\n    if (!minReferees) inputErrors.referees = 'Min referees can not be empty';\n    if (!candidateNote.trim()) inputErrors.candidateNote = 'Candidate note can not be empty';\n    if (!refereeNote.trim()) inputErrors.refereeNote = 'Referee note can not be empty';\n    if (!validateEmail(candidate.email)) inputErrors.email = 'Please enter a proper email address';\n    setErrors(inputErrors);\n    if (inputErrors.email) {\n      scrollToElement(fieldRefs.email);\n    } else if (inputErrors.package) {\n      scrollToElement(fieldRefs.package);\n    } else if (inputErrors.referees) {\n      scrollToElement(fieldRefs.referees);\n    } else if (inputErrors.candidateNote) {\n      scrollToElement(fieldRefs.candidateNote);\n    } else if (inputErrors.refereeNote) {\n      scrollToElement(fieldRefs.refereeNote);\n    }\n    return !Object.keys(inputErrors).length;\n  };\n\n  const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n  if (!candidate) return null;\n\n  return (\n    <StyledModal\n      isOpen={modalsOpen === ModalType.XREF}\n      label=\"Xref export modal\"\n      handleClose={handleClose}\n      styleOverrides={styles.modalStyleOverrides}\n    >\n      <Stack sx={styles.modalContainer}>\n        <Stack sx={styles.modalTitle}>Xref request</Stack>\n        <Stack sx={{ overflow: 'auto', rowGap: 2 }}>\n          <FormTextField\n            label=\"Candidate email\"\n            value={candidate.email}\n            styles={{ width: '50%' }}\n            required\n            onChange={(e) => setCandidate({ ...candidate, email: e.target.value })}\n            error={errors.email}\n            innerRef={fieldRefs.email}\n          />\n          <Autocomplete\n            disablePortal\n            options={packages || []}\n            getOptionLabel={(option) => option.name}\n            value={xRefPackage}\n            sx={{ ...sharedClasses.formAutocomplete, width: '50%', marginTop: 3, flexGrow: 1 }}\n            loading={loadingPackages}\n            loadingText=\"Loading packages...\"\n            ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n            renderInput={(params) => (\n              <TextField\n                {...params}\n                label=\"Package\"\n                placeholder=\"Please select\"\n                InputLabelProps={{ shrink: true }}\n                sx={styles.autoCompleteTextfield}\n                required\n                helperText={errors.package}\n                ref={fieldRefs.package}\n              />\n            )}\n            onChange={(event, value) => {\n              if (value) {\n                setMinReferees(String(value.min_referees));\n                setCandidateNote(value.note_to_candidate);\n                setRefereeNote(value.note_to_referee);\n              } else {\n                setMinReferees('');\n                setCandidateNote('');\n                setRefereeNote('');\n              }\n              setXRefPackage(value);\n            }}\n          />\n          <FormNumberField\n            label={'Min referees'}\n            value={minReferees}\n            onChange={(e) => setMinReferees(e.target.value)}\n            required\n            styles={{ width: '50%' }}\n            error={errors.referees}\n            innerRef={fieldRefs.referees}\n          />\n          <MultilineFormTextField\n            label=\"Note to candidate\"\n            value={candidateNote}\n            onChange={(e) => setCandidateNote(e.target.value)}\n            fullWidth\n            required\n            rows={6}\n            error={errors.candidateNote}\n            innerRef={fieldRefs.candidateNote}\n          />\n          <MultilineFormTextField\n            label=\"Note to referee\"\n            value={refereeNote}\n            onChange={(e) => setRefereeNote(e.target.value)}\n            fullWidth\n            required\n            rows={6}\n            error={errors.refereeNote}\n            innerRef={fieldRefs.refereeNote}\n          />\n        </Stack>\n        <ModalFooterButtons\n          primaryButtonText=\"Send\"\n          primaryButtonCallback={() => validateInputs() && xRefExport()}\n          isLoading={loadingXRefExport}\n          secondaryButtonText=\"Cancel\"\n          secondaryButtonCallback={handleClose}\n          primaryButtonMinWidth=\"95px\"\n        />\n      </Stack>\n    </StyledModal>\n  );\n}\n","import React from 'react';\nimport { Button, Stack } from '@mui/material';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { theme } from '../../../ThemeContext/ThemeObject';\n\nexport default function OldIntegrationsLink() {\n  return (\n    <Stack sx={{ alignItems: 'center', rowGap: 3, paddingTop: 5 }}>\n      <Stack sx={{ alignItems: 'center', rowGap: 0.75, color: theme.palette.common.grey }}>\n        <Stack sx={{ fontSize: '19px', fontWeight: 'bold' }}>\n          {`Can't see one of your integrations?`}\n        </Stack>\n        <Stack>{`Some integrations haven't been moved over yet.`}</Stack>\n        <Stack>Click below to access them on the old version</Stack>\n      </Stack>\n      <Button\n        id=\"old-version-button\"\n        sx={sharedClasses.genericButtonSecondary}\n        onClick={() =>\n          window.open(\n            `${window.location.href.replace('new_applications', 'applications')}#application-activities`,\n            '_blank'\n          )\n        }\n      >\n        Go to the old version\n      </Button>\n    </Stack>\n  );\n}\n","import React, { Dispatch } from 'react';\nimport { Link, Stack, Table, TableBody, TableCell, TableHead, TableRow } from '@mui/material';\nimport { styles } from '../styles';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { IIntegrationsResponse, ApplicationAction, IApplication } from '../../types';\nimport UpdateStatusIcon from '../UpdateStatusIcon';\nimport Api from '../../API';\nimport formatToUserTimeZone from '../../../utils/formatToUserTimeZone';\n\nexport default function Fit2WorkRecord({ dispatch }: { dispatch: Dispatch<ApplicationAction> }) {\n  const queryClient = useQueryClient();\n  const integrationsData = queryClient.getQueryData<IIntegrationsResponse>(['integrations']);\n  const application = queryClient.getQueryData<IApplication>(['application']);\n\n  const { mutate: updateFit2WorkStatus, isLoading: updatingFit2WorkStatus } = useMutation({\n    mutationFn: async (id: number) => {\n      if (application) {\n        const { res } = await Api.updateFit2WorkStatus(application.id, id);\n        return res;\n      }\n    },\n    onSuccess: (res: { success: string }) => {\n      queryClient.invalidateQueries(['integrations'], { exact: true });\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: res.success, state: 'success' }\n      });\n    },\n    onError: (error: { error: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: error.error, state: 'error' }\n      });\n    }\n  });\n\n  return (\n    <Stack sx={styles.integrationDetails}>\n      <Stack sx={{ fontSize: '16px', fontWeight: 600 }}>Fit2Work requested checks</Stack>\n      <Table sx={styles.integrationDetailsTable}>\n        <TableHead>\n          <TableRow>\n            {['Submitted At', 'Package Name', 'Reference ID', 'Candidate email', 'Status'].map(\n              (title, index) => (\n                <TableCell sx={styles.integrationDetailsTableHeader} key={index}>\n                  <Stack>{title}</Stack>\n                </TableCell>\n              )\n            )}\n          </TableRow>\n        </TableHead>\n        <TableBody>\n          {integrationsData?.fit2_work_records.map((record, index) => (\n            <TableRow key={index}>\n              <TableCell sx={{ verticalAlign: 'top', minWidth: '100px' }}>\n                {formatToUserTimeZone(record.created_at)}\n              </TableCell>\n              <TableCell sx={{ verticalAlign: 'top', minWidth: '110px' }}>\n                {record.package_name}\n              </TableCell>\n              <TableCell sx={{ verticalAlign: 'top', minWidth: '100px' }}>\n                {record.reference_id}\n              </TableCell>\n              <TableCell sx={{ verticalAlign: 'top' }}>{record.candidate_email}</TableCell>\n              <TableCell sx={{ verticalAlign: 'top' }}>\n                <Stack sx={{ rowGap: 1 }}>\n                  {record.checks.map((check, index) => (\n                    <Stack key={index}>\n                      <Stack>{check.status}</Stack>\n                      {check.report_path && (\n                        <Link\n                          href={check.report_path}\n                          target=\"_blank\"\n                          style={{\n                            color: 'inherit',\n                            width: 'fit-content',\n                            textDecoration: 'underline'\n                          }}\n                        >\n                          Download Report\n                        </Link>\n                      )}\n                    </Stack>\n                  ))}\n                </Stack>\n              </TableCell>\n              <TableCell sx={{ verticalAlign: 'top' }}>\n                <UpdateStatusIcon\n                  callback={() => updateFit2WorkStatus(record.reference_id)}\n                  loading={updatingFit2WorkStatus}\n                  dispatch={dispatch}\n                />\n              </TableCell>\n            </TableRow>\n          ))}\n        </TableBody>\n      </Table>\n    </Stack>\n  );\n}\n","import React from 'react';\nimport { Stack, Table, TableBody, TableCell, TableHead, TableRow } from '@mui/material';\nimport { styles } from '../styles';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { IIntegrationsResponse } from '../../types';\nimport formatToUserTimeZone from '../../../utils/formatToUserTimeZone';\n\nexport default function FoundURecord() {\n  const queryClient = useQueryClient();\n  const integrationsData = queryClient.getQueryData<IIntegrationsResponse>(['integrations']);\n  return (\n    <Stack sx={styles.integrationDetails}>\n      <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>\n        <Stack sx={{ fontSize: '16px', fontWeight: 600 }}>Exported foundU Record</Stack>\n      </Stack>\n      <Table sx={styles.integrationDetailsTable}>\n        <TableHead>\n          <TableRow>\n            {['foundU Employee ID', 'Exported at'].map((title, index) => (\n              <TableCell sx={styles.integrationDetailsTableHeader} key={index}>\n                <Stack>{title}</Stack>\n              </TableCell>\n            ))}\n          </TableRow>\n        </TableHead>\n        <TableBody>\n          {integrationsData?.foundu_record && (\n            <TableRow>\n              <TableCell sx={{ verticalAlign: 'top' }}>\n                {integrationsData?.foundu_record.foundu_id}\n              </TableCell>\n              <TableCell sx={{ verticalAlign: 'top' }}>\n                {formatToUserTimeZone(integrationsData?.foundu_record.created_at)}\n              </TableCell>\n            </TableRow>\n          )}\n        </TableBody>\n      </Table>\n    </Stack>\n  );\n}\n","import React from 'react';\nimport { Stack, Table, TableBody, TableCell, TableHead, TableRow } from '@mui/material';\nimport { styles } from '../styles';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { IIntegrationsResponse } from '../../types';\nimport formatToUserTimeZone from '../../../utils/formatToUserTimeZone';\n\nexport default function MvsRecord() {\n  const queryClient = useQueryClient();\n  const integrationsData = queryClient.getQueryData<IIntegrationsResponse>(['integrations']);\n  return (\n    <Stack sx={styles.integrationDetails}>\n      <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>\n        <Stack sx={{ fontSize: '16px', fontWeight: 600 }}>MVS requested tests</Stack>\n      </Stack>\n      <Table sx={styles.integrationDetailsTable}>\n        <TableHead>\n          <TableRow>\n            {['Package name', 'Checks', 'Status', 'Requested at'].map((title, index) => (\n              <TableCell sx={styles.integrationDetailsTableHeader} key={index}>\n                <Stack>{title}</Stack>\n              </TableCell>\n            ))}\n          </TableRow>\n        </TableHead>\n        <TableBody>\n          {integrationsData?.mvs_requests.map((request, index) => (\n            <TableRow key={index}>\n              <TableCell sx={{ verticalAlign: 'top' }}>{request.package_name}</TableCell>\n              <TableCell sx={{ verticalAlign: 'top' }}>\n                {request.blueprint_ids.join(', ')}\n              </TableCell>\n              <TableCell sx={{ verticalAlign: 'top' }}>{request.status}</TableCell>\n              <TableCell sx={{ verticalAlign: 'top' }}>\n                {formatToUserTimeZone(request.created_at)}\n              </TableCell>\n            </TableRow>\n          ))}\n        </TableBody>\n      </Table>\n    </Stack>\n  );\n}\n","import React, { Dispatch } from 'react';\nimport { Link, Stack, Table, TableBody, TableCell, TableHead, TableRow } from '@mui/material';\nimport { styles } from '../styles';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { IIntegrationsResponse, ApplicationAction } from '../../types';\nimport UpdateStatusIcon from '../UpdateStatusIcon';\nimport formatToUserTimeZone from '../../../utils/formatToUserTimeZone';\n\nexport default function ReferooRecord({ dispatch }: { dispatch: Dispatch<ApplicationAction> }) {\n  const queryClient = useQueryClient();\n  const integrationsData = queryClient.getQueryData<IIntegrationsResponse>(['integrations']);\n  if (!integrationsData?.referoo_record) return null;\n  return (\n    <Stack sx={styles.integrationDetails}>\n      <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>\n        <Stack sx={{ fontSize: '16px', fontWeight: 600 }}>Referoo requested checks</Stack>\n        <UpdateStatusIcon dispatch={dispatch} />\n      </Stack>\n      <Table sx={styles.integrationDetailsTable}>\n        <TableHead>\n          <TableRow>\n            {[\n              'Submitted at',\n              'References required',\n              'Reference ID',\n              'Candidate status',\n              'Referees status'\n            ].map((title, index) => (\n              <TableCell sx={styles.integrationDetailsTableHeader} key={index}>\n                <Stack>{title}</Stack>\n              </TableCell>\n            ))}\n          </TableRow>\n        </TableHead>\n        <TableBody>\n          <TableRow>\n            <TableCell sx={{ verticalAlign: 'top', minWidth: '120px' }}>\n              {formatToUserTimeZone(integrationsData.referoo_record.created_at)}\n            </TableCell>\n            <TableCell sx={{ verticalAlign: 'top', minWidth: '150px' }}>\n              {integrationsData.referoo_record.number_of_references_required}\n            </TableCell>\n            <TableCell sx={{ verticalAlign: 'top', minWidth: '110px' }}>\n              {integrationsData.referoo_record.referoo_id}\n            </TableCell>\n            <TableCell sx={{ verticalAlign: 'top', minWidth: '120px' }}>\n              {integrationsData.referoo_record.candidate_status}\n            </TableCell>\n            <TableCell sx={{ verticalAlign: 'top' }}>\n              <Stack sx={{ rowGap: 2 }}>\n                {integrationsData.referoo_record.referees_status ? (\n                  <>\n                    {integrationsData.referoo_record.referees_status.map((status, index) => (\n                      <Stack key={index} sx={{ rowGap: 1 }}>\n                        <Stack>{status.referee}</Stack>\n                      </Stack>\n                    ))}\n                  </>\n                ) : (\n                  '-'\n                )}\n                {integrationsData.referoo_record.report_url && (\n                  <Link\n                    href={\n                      integrationsData.referoo_login_url ||\n                      integrationsData.referoo_record.report_url\n                    }\n                    target=\"_blank\"\n                    style={{\n                      color: 'inherit',\n                      width: 'fit-content',\n                      textDecoration: 'underline'\n                    }}\n                  >\n                    View All Report\n                  </Link>\n                )}\n              </Stack>\n            </TableCell>\n          </TableRow>\n        </TableBody>\n      </Table>\n    </Stack>\n  );\n}\n","import React from 'react';\nimport { Link, Stack, Table, TableBody, TableCell, TableHead, TableRow } from '@mui/material';\nimport { styles } from '../styles';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { IIntegrationsResponse } from '../../types';\n\nexport default function SparkHireRecord() {\n  const queryClient = useQueryClient();\n  const integrationsData = queryClient.getQueryData<IIntegrationsResponse>(['integrations']);\n\n  if (!integrationsData?.sparkhire_record) return null;\n  return (\n    <Stack sx={styles.integrationDetails}>\n      <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>\n        <Stack sx={{ fontSize: '16px', fontWeight: 600 }}>Spark Hire Interview</Stack>\n      </Stack>\n      <Table sx={styles.integrationDetailsTable}>\n        <TableHead>\n          <TableRow>\n            {['Status', 'Share link'].map((title, index) => (\n              <TableCell sx={styles.integrationDetailsTableHeader} key={index}>\n                <Stack>{title}</Stack>\n              </TableCell>\n            ))}\n          </TableRow>\n        </TableHead>\n        <TableBody>\n          <TableRow>\n            <TableCell>{integrationsData.sparkhire_record.status}</TableCell>\n            <TableCell>\n              {integrationsData?.sparkhire_record?.share_link ? (\n                <Link\n                  href={integrationsData.sparkhire_record.share_link}\n                  target=\"_blank\"\n                  style={{\n                    color: 'inherit',\n                    width: 'fit-content',\n                    textDecoration: 'underline'\n                  }}\n                >\n                  Watch Here\n                </Link>\n              ) : (\n                'Candidate needs to complete the interview first'\n              )}\n            </TableCell>\n          </TableRow>\n        </TableBody>\n      </Table>\n    </Stack>\n  );\n}\n","import React from 'react';\nimport { Stack, Table, TableBody, TableCell, TableHead, TableRow } from '@mui/material';\nimport { styles } from '../styles';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { IIntegrationsResponse } from '../../types';\nimport formatToUserTimeZone from '../../../utils/formatToUserTimeZone';\n\nexport default function TestgridRecord() {\n  const queryClient = useQueryClient();\n  const integrationsData = queryClient.getQueryData<IIntegrationsResponse>(['integrations']);\n\n  if (!integrationsData?.test_grid_requests.length) return null;\n  return (\n    <Stack sx={styles.integrationDetails}>\n      <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>\n        <Stack sx={{ fontSize: '16px', fontWeight: 600 }}>TestGrid requested tests</Stack>\n      </Stack>\n      <Table sx={styles.integrationDetailsTable}>\n        <TableHead>\n          <TableRow>\n            {['Package Name', 'Status', 'Requested at', 'Score'].map((title, index) => (\n              <TableCell sx={styles.integrationDetailsTableHeader} key={index}>\n                <Stack>{title}</Stack>\n              </TableCell>\n            ))}\n          </TableRow>\n        </TableHead>\n        <TableBody>\n          {integrationsData?.test_grid_requests.map((request, index) => (\n            <TableRow key={index}>\n              <TableCell sx={{ verticalAlign: 'top' }}>{request.package_name || '-'}</TableCell>\n              <TableCell sx={{ verticalAlign: 'top' }}>{request.status}</TableCell>\n              <TableCell sx={{ verticalAlign: 'top' }}>\n                {formatToUserTimeZone(request.created_at)}\n              </TableCell>\n              <TableCell sx={{ verticalAlign: 'top' }}>{request.score || '-'}</TableCell>\n            </TableRow>\n          ))}\n        </TableBody>\n      </Table>\n    </Stack>\n  );\n}\n","import React, { Dispatch } from 'react';\nimport { Link, Stack, Table, TableBody, TableCell, TableHead, TableRow } from '@mui/material';\nimport { styles } from '../styles';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { ApplicationAction, IIntegrationsResponse } from '../../types';\nimport { ModalType } from '../../config';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\nimport UpdateStatusIcon from '../UpdateStatusIcon';\nimport formatToUserTimeZone from '../../../utils/formatToUserTimeZone';\n\nexport default function XrefRecord({ dispatch }: { dispatch: Dispatch<ApplicationAction> }) {\n  const queryClient = useQueryClient();\n  const integrationsData = queryClient.getQueryData<IIntegrationsResponse>(['integrations']);\n  return (\n    <Stack sx={styles.integrationDetails}>\n      <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>\n        <Stack sx={{ fontSize: '16px', fontWeight: 600 }}>Xref requested checks</Stack>\n        <UpdateStatusIcon dispatch={dispatch} />\n      </Stack>\n      <Table sx={styles.integrationDetailsTable}>\n        <TableHead>\n          <TableRow>\n            {['Submitted at', 'Package name', 'Reference ID', 'Status', 'Referees'].map(\n              (title, index) => (\n                <TableCell sx={styles.integrationDetailsTableHeader} key={index}>\n                  <Stack>{title}</Stack>\n                </TableCell>\n              )\n            )}\n          </TableRow>\n        </TableHead>\n        <TableBody>\n          {integrationsData?.xref_records.map((record, index) => (\n            <TableRow key={index}>\n              <TableCell sx={{ verticalAlign: 'top' }}>\n                {formatToUserTimeZone(record.created_at)}\n              </TableCell>\n              <TableCell sx={{ verticalAlign: 'top' }}>{record.package_name}</TableCell>\n              <TableCell sx={{ verticalAlign: 'top' }}>{record.reference_id}</TableCell>\n              <TableCell sx={{ verticalAlign: 'top' }}>{record.state}</TableCell>\n              <TableCell>\n                {record.referees?.length ? (\n                  <Stack sx={{ rowGap: 2 }}>\n                    {record.referees.map((referee, index) => (\n                      <Stack key={index} sx={{ rowGap: 1 }}>\n                        {referee.first_name} {referee.last_name} - {referee.state}\n                        {referee.report_path && (\n                          <Link\n                            href={referee.report_path}\n                            target=\"_blank\"\n                            style={{\n                              color: 'inherit',\n                              width: 'fit-content',\n                              textDecoration: 'underline'\n                            }}\n                          >\n                            View Report\n                          </Link>\n                        )}\n                        {referee.unusual_activities && (\n                          <Stack\n                            sx={{\n                              color: theme.palette.error.main,\n                              textDecoration: 'underline',\n                              cursor: 'pointer',\n                              width: 'fit-content'\n                            }}\n                            onClick={() => {\n                              dispatch({\n                                type: 'SET_MODALS_OPEN',\n                                payload: ModalType.UNUSUAL_ACTIVITY\n                              });\n                              dispatch({\n                                type: 'SET_UNUSUAL_ACTIVITY_DATA',\n                                payload: {\n                                  referenceId: record.reference_id,\n                                  selectedReferee: referee\n                                }\n                              });\n                            }}\n                          >\n                            Unusual Activity\n                          </Stack>\n                        )}\n                      </Stack>\n                    ))}\n                  </Stack>\n                ) : (\n                  '-'\n                )}\n              </TableCell>\n            </TableRow>\n          ))}\n        </TableBody>\n      </Table>\n    </Stack>\n  );\n}\n","import React, { Dispatch } from 'react';\nimport { CircularProgress, IconButton, Tooltip } from '@mui/material';\nimport { Refresh as RefreshIcon } from '@mui/icons-material';\nimport { useGetIntegrationsData } from '../helper';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { ApplicationAction, IApplication } from '../types';\n\nexport default function UpdateStatusIcon({\n  callback,\n  loading,\n  dispatch\n}: {\n  callback?: () => void;\n  loading?: boolean;\n  dispatch: Dispatch<ApplicationAction>;\n}) {\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const { refetchIntegrationsData, refetchingIntegrationsData } = useGetIntegrationsData({\n    applicationId: application?.id,\n    dispatch: dispatch\n  });\n  const buttonLoading = loading ? loading : refetchingIntegrationsData;\n  return (\n    <Tooltip title=\"Update status\" placement=\"top\" arrow>\n      <IconButton\n        sx={{\n          padding: 0.5,\n          '&:focus': {\n            outline: 'none'\n          }\n        }}\n        onClick={() => (callback ? callback() : refetchIntegrationsData())}\n      >\n        {buttonLoading ? (\n          <CircularProgress size={20} color=\"inherit\" />\n        ) : (\n          <RefreshIcon fontSize=\"small\" sx={{ color: '#666666' }} />\n        )}\n      </IconButton>\n    </Tooltip>\n  );\n}\n","import React, { useState, Dispatch } from 'react';\nimport { Stack, Skeleton } from '@mui/material';\nimport OldIntegrationsLink from './OldIntegrationsLink';\nimport ExportButton from './ExportButton';\nimport OnboardExpressLogo from './Logos/OnboardExpressLogo.png';\nimport XrefLogo from './Logos/XrefLogo.png';\nimport CognologyLogo from './Logos/CognologyLogo.png';\nimport MvsLogo from './Logos/MvsLogo.png';\nimport ReferooLogo from './Logos/ReferooLogo.png';\nimport FoundULogo from './Logos/FoundULogo.png';\nimport TestgridLogo from './Logos/TestgridLogo.png';\nimport HronboardLogo from './Logos/HronboardLogo.png';\nimport RoublerLogo from './Logos/RoublerLogo.png';\nimport SparkHireLogo from './Logos/SparkHireLogo.png';\nimport Fit2WorkLogo from './Logos/Fit2WorkLogo.png';\nimport AlayaCareLogo from './Logos/AlayaCareLogo.png';\nimport { ApplicationState, ApplicationAction } from '../types';\nimport { ModalType } from '../config';\nimport OnboardExpress from './Modals/OnboardExpress';\nimport XRef from './Modals/XRef';\nimport Cognology from './Modals/Cognology/Cognology';\nimport Mvs from './Modals/Mvs';\nimport Referoo from './Modals/Referoo';\nimport FoundU from './Modals/FoundU';\nimport Testgrid from './Modals/Testgrid';\nimport Hronboard from './Modals/Hronboard';\nimport Roubler from './Modals/Roubler';\nimport SparkHire from './Modals/SparkHire';\nimport Fit2Work from './Modals/Fit2Work';\nimport AlayaCare from './Modals/AlayaCare';\nimport { ScoutOnboardLogo } from './Logos/Logos';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { IUserPermissions } from '../../Components/sharedTypes';\nimport { styles } from './styles';\nimport { IApplication } from '../types';\nimport UnusualActivity from './Modals/UnusualActivity';\nimport AlreadyExportedModal, { AlreadyExportedModalProps } from './Modals/AlreadyExportedModal';\nimport XrefRecord from './Records/XrefRecord';\nimport ReferooRecord from './Records/ReferooRecord';\nimport MvsRecord from './Records/MvsRecord';\nimport Fit2WorkRecord from './Records/Fit2WorkRecord';\nimport TestgridRecord from './Records/TestgridRecord';\nimport SparkHireRecord from './Records/SparkHireRecord';\nimport { useGetIntegrationsData, useGetCognologyData } from '../helper';\nimport CognologyAfterApprovalModal from './Modals/Cognology/CognologyAfterApprovalModal';\nimport CognologyWaitingForApprovalModal from './Modals/Cognology/CognologyWaitingForApprovalModal';\nimport { isIntegrationAvailable } from './helper';\nimport FoundURecord from './Records/FoundURecord';\n\nexport default function IntegrationsTab({\n  ApplicationState,\n  dispatch,\n  newIntegrationEnabled\n}: {\n  ApplicationState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n  newIntegrationEnabled: boolean;\n}) {\n  const [alreadyExportedModalOpen, setAlreadyExportedModalOpen] =\n    useState<AlreadyExportedModalProps>({\n      revolve: false,\n      referoo: false,\n      hro: false,\n      sparkhire: false,\n      cognology: false,\n      foundu: false\n    });\n  const { modalsOpen } = ApplicationState;\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const permissions = queryClient.getQueryData<IUserPermissions>(['permissions']);\n  const urlParams = new URL(window.location.href);\n\n  const { integrationsData, loadingIntegrationsData } = useGetIntegrationsData({\n    applicationId: application?.id,\n    dispatch\n  });\n\n  const { cognologyData } = useGetCognologyData({\n    applicationId: application?.id,\n    dispatch,\n    enabled:\n      application?.integrations.cognology &&\n      !!integrationsData &&\n      !integrationsData.cognology_login_url\n  });\n\n  const cognologyAction = () => {\n    if (integrationsData?.cognology_record_exported) {\n      setAlreadyExportedModalOpen({ ...alreadyExportedModalOpen, cognology: true });\n    } else {\n      if (integrationsData?.cognology_record_exported === null) {\n        dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.COGNOLOGY });\n      } else {\n        if (cognologyData?.record.status === 'approved') {\n          dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.COGNOLOGY_APPROVED });\n        } else {\n          dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.COGNOLOGY_WAITING_FOR_APPROVAL });\n        }\n      }\n    }\n  };\n\n  if (!application || loadingIntegrationsData)\n    return (\n      <Stack sx={{ rowGap: 2 }}>\n        {[...Array(2)].map((_, index) => (\n          <Skeleton key={index} sx={{ transform: 'unset', height: '50px' }} animation=\"wave\" />\n        ))}\n      </Stack>\n    );\n\n  return (\n    <Stack sx={{ rowGap: 5 }}>\n      <Stack sx={{ flexDirection: 'row', columnGap: 4, flexWrap: 'wrap', rowGap: 4 }}>\n        {isIntegrationAvailable('revolve', newIntegrationEnabled, permissions, application) && (\n          <Stack sx={styles.integrationCard}>\n            <Stack\n              sx={styles.integrationCardImageContainer}\n              component=\"img\"\n              src={OnboardExpressLogo}\n            />\n            <ExportButton\n              onClick={() =>\n                application.revolve_record_id\n                  ? setAlreadyExportedModalOpen({ ...alreadyExportedModalOpen, revolve: true })\n                  : dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.ONBOARD_EXPRESS })\n              }\n            />\n          </Stack>\n        )}\n        {isIntegrationAvailable(\n          'scoutOnboard',\n          newIntegrationEnabled,\n          permissions,\n          application\n        ) && (\n          <Stack sx={styles.integrationCard}>\n            <Stack sx={styles.integrationCardImageContainer}>\n              <ScoutOnboardLogo />\n            </Stack>\n            <ExportButton\n              onClick={() =>\n                dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.EXPORT_TO_ONBOARD })\n              }\n            />\n          </Stack>\n        )}\n        {isIntegrationAvailable('xref', newIntegrationEnabled, permissions, application) && (\n          <Stack sx={styles.integrationCard}>\n            <Stack\n              sx={{ ...styles.integrationCardImageContainer, width: '4rem' }}\n              component=\"img\"\n              src={XrefLogo}\n            />\n            <ExportButton\n              onClick={() => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.XREF })}\n            />\n          </Stack>\n        )}\n        {isIntegrationAvailable('mvs', newIntegrationEnabled, permissions, application) && (\n          <Stack sx={styles.integrationCard}>\n            <Stack\n              sx={{ ...styles.integrationCardImageContainer, width: '4rem' }}\n              component=\"img\"\n              src={MvsLogo}\n            />\n            <ExportButton\n              onClick={() => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.MVS })}\n            />\n          </Stack>\n        )}\n        {isIntegrationAvailable('referoo', newIntegrationEnabled, permissions, application) && (\n          <Stack sx={styles.integrationCard}>\n            <Stack\n              sx={{ ...styles.integrationCardImageContainer, width: '5.5rem' }}\n              component=\"img\"\n              src={ReferooLogo}\n            />\n            <ExportButton\n              onClick={() => {\n                if (integrationsData?.referoo_login_url)\n                  window.open(integrationsData?.referoo_login_url);\n                else {\n                  integrationsData?.referoo_record\n                    ? setAlreadyExportedModalOpen({ ...alreadyExportedModalOpen, referoo: true })\n                    : dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.REFEROO });\n                }\n              }}\n            />\n          </Stack>\n        )}\n        {isIntegrationAvailable('foundU', newIntegrationEnabled, permissions, application) && (\n          <Stack sx={styles.integrationCard}>\n            <Stack\n              sx={{ ...styles.integrationCardImageContainer, width: '3.5rem' }}\n              component=\"img\"\n              src={FoundULogo}\n            />\n            <ExportButton\n              onClick={() => {\n                integrationsData?.foundu_record\n                  ? setAlreadyExportedModalOpen({ ...alreadyExportedModalOpen, foundu: true })\n                  : dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.FOUNDU });\n              }}\n            />\n          </Stack>\n        )}\n        {isIntegrationAvailable('testGrid', newIntegrationEnabled, permissions, application) && (\n\n          <Stack sx={styles.integrationCard}>\n            <Stack sx={{ padding: '8px 0px', width: '5rem' }} component=\"img\" src={TestgridLogo} />\n            <ExportButton\n              onClick={() => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.TESTGRID })}\n            />\n          </Stack>\n        )}\n        {isIntegrationAvailable('hro', newIntegrationEnabled, permissions, application) && (\n          <Stack sx={styles.integrationCard}>\n            <Stack sx={{ padding: '8px 0px', width: '7rem' }} component=\"img\" src={HronboardLogo} />\n            <ExportButton\n              onClick={() =>\n                integrationsData?.hro_record_exported\n                  ? setAlreadyExportedModalOpen({ ...alreadyExportedModalOpen, hro: true })\n                  : dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.HRONBOARD })\n              }\n            />\n          </Stack>\n        )}\n        {isIntegrationAvailable('cognology', newIntegrationEnabled, permissions, application) && (\n          <Stack sx={styles.integrationCard}>\n            <Stack\n              sx={{ ...styles.integrationCardImageContainer, width: '6rem', padding: '8px 0px' }}\n              component=\"img\"\n              src={CognologyLogo}\n            />\n            <ExportButton\n              onClick={() =>\n                integrationsData?.cognology_login_url\n                  ? window.open(integrationsData?.cognology_login_url)\n                  : cognologyAction()\n              }\n            />\n          </Stack>\n        )}\n        {isIntegrationAvailable('roubler', newIntegrationEnabled, permissions, application) && (\n          <Stack sx={styles.integrationCard}>\n            <Stack\n              sx={{ ...styles.integrationCardImageContainer, padding: '8px 0px', width: '6rem' }}\n              component=\"img\"\n              src={RoublerLogo}\n            />\n            <ExportButton\n              onClick={() => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.ROUBLER })}\n            />\n          </Stack>\n        )}\n        {isIntegrationAvailable('sparkhire', newIntegrationEnabled, permissions, application) && (\n          <Stack sx={styles.integrationCard}>\n            <Stack\n              sx={{ ...styles.integrationCardImageContainer, padding: '12px 0px', width: '7rem' }}\n              component=\"img\"\n              src={SparkHireLogo}\n            />\n            <ExportButton\n              onClick={() =>\n                integrationsData?.sparkhire_record\n                  ? setAlreadyExportedModalOpen({ ...alreadyExportedModalOpen, sparkhire: true })\n                  : dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.SPARKHIRE })\n              }\n            />\n          </Stack>\n        )}\n        {isIntegrationAvailable('fit2work', newIntegrationEnabled, permissions, application) && (\n          <Stack sx={styles.integrationCard}>\n            <Stack\n              sx={{ ...styles.integrationCardImageContainer, padding: '12px 0px', width: '6rem' }}\n              component=\"img\"\n              src={Fit2WorkLogo}\n            />\n            <ExportButton\n              onClick={() => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.FIT2WORK })}\n            />\n          </Stack>\n        )}\n        {isIntegrationAvailable('alayacare', newIntegrationEnabled, permissions, application) && (\n          <Stack sx={styles.integrationCard}>\n            <Stack\n              sx={{ ...styles.integrationCardImageContainer, padding: '8px 0px', width: '6rem' }}\n              component=\"img\"\n              src={AlayaCareLogo}\n            />\n            <ExportButton\n              onClick={() => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.ALAYACARE })}\n            />\n          </Stack>\n        )}\n      </Stack>\n      {isIntegrationAvailable('referoo', newIntegrationEnabled, permissions, application) &&\n        integrationsData?.referoo_record && <ReferooRecord dispatch={dispatch} />}\n      {isIntegrationAvailable('xref', newIntegrationEnabled, permissions, application) &&\n        !!integrationsData?.xref_records.length && <XrefRecord dispatch={dispatch} />}\n      {isIntegrationAvailable('mvs', newIntegrationEnabled, permissions, application) &&\n        !!integrationsData?.mvs_requests.length && <MvsRecord />}\n      {isIntegrationAvailable('fit2work', newIntegrationEnabled, permissions, application) &&\n        !!integrationsData?.fit2_work_records.length && <Fit2WorkRecord dispatch={dispatch} />}\n      {isIntegrationAvailable('sparkhire', newIntegrationEnabled, permissions, application) && (\n        <SparkHireRecord />\n      )}\n      {isIntegrationAvailable('testGrid', newIntegrationEnabled, permissions, application) && (\n        <TestgridRecord />\n      )}\n      {isIntegrationAvailable('foundU', newIntegrationEnabled, permissions, application) &&\n        !!integrationsData?.foundu_record && <FoundURecord />}\n      <OldIntegrationsLink />\n      {modalsOpen === ModalType.ONBOARD_EXPRESS && (\n        <OnboardExpress ApplicationState={ApplicationState} dispatch={dispatch} />\n      )}\n      {modalsOpen === ModalType.XREF && (\n        <XRef ApplicationState={ApplicationState} dispatch={dispatch} />\n      )}\n      {(modalsOpen === ModalType.COGNOLOGY || modalsOpen === ModalType.EDIT_COGNOLOGY) && (\n        <Cognology ApplicationState={ApplicationState} dispatch={dispatch} />\n      )}\n      {modalsOpen === ModalType.COGNOLOGY_WAITING_FOR_APPROVAL && (\n        <CognologyWaitingForApprovalModal\n          open={modalsOpen === ModalType.COGNOLOGY_WAITING_FOR_APPROVAL}\n          onClose={() => {\n            dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n            urlParams.search = '';\n            window.history.pushState(null, '', urlParams.href);\n          }}\n        />\n      )}\n      {modalsOpen === ModalType.COGNOLOGY_APPROVED && (\n        <CognologyAfterApprovalModal\n          open={modalsOpen === ModalType.COGNOLOGY_APPROVED}\n          onClose={() => dispatch({ type: 'SET_MODALS_OPEN', payload: null })}\n          dispatch={dispatch}\n        />\n      )}\n      {modalsOpen === ModalType.MVS && (\n        <Mvs ApplicationState={ApplicationState} dispatch={dispatch} />\n      )}\n      {modalsOpen === ModalType.REFEROO && (\n        <Referoo ApplicationState={ApplicationState} dispatch={dispatch} />\n      )}\n      {modalsOpen === ModalType.FOUNDU && (\n        <FoundU ApplicationState={ApplicationState} dispatch={dispatch} />\n      )}\n      {modalsOpen === ModalType.TESTGRID && (\n        <Testgrid ApplicationState={ApplicationState} dispatch={dispatch} />\n      )}\n      {modalsOpen === ModalType.HRONBOARD && (\n        <Hronboard ApplicationState={ApplicationState} dispatch={dispatch} />\n      )}\n      {modalsOpen === ModalType.ROUBLER && (\n        <Roubler ApplicationState={ApplicationState} dispatch={dispatch} />\n      )}\n      {modalsOpen === ModalType.SPARKHIRE && (\n        <SparkHire ApplicationState={ApplicationState} dispatch={dispatch} />\n      )}\n      {modalsOpen === ModalType.FIT2WORK && (\n        <Fit2Work ApplicationState={ApplicationState} dispatch={dispatch} />\n      )}\n      <AlayaCare ApplicationState={ApplicationState} dispatch={dispatch} />\n      <AlreadyExportedModal\n        alreadyExportedModalOpen={alreadyExportedModalOpen}\n        onClose={() =>\n          setAlreadyExportedModalOpen({\n            revolve: false,\n            referoo: false,\n            hro: false,\n            sparkhire: false,\n            cognology: false,\n            foundu: false\n          })\n        }\n        dispatch={dispatch}\n        buttonName={alreadyExportedModalOpen.cognology ? 'Make changes and re-export' : undefined}\n        callback={() =>\n          alreadyExportedModalOpen.cognology\n            ? dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.COGNOLOGY })\n            : undefined\n        }\n      />\n      {modalsOpen === ModalType.UNUSUAL_ACTIVITY && (\n        <UnusualActivity ApplicationState={ApplicationState} dispatch={dispatch} />\n      )}\n    </Stack>\n  );\n}\n","import React, { Dispatch, useState } from 'react';\nimport {\n  Autocomplete,\n  Button,\n  Checkbox,\n  FormControlLabel,\n  InputLabel,\n  Stack,\n  TextField\n} from '@mui/material';\nimport { Delete as DeleteIcon } from '@mui/icons-material';\nimport { ApplicationAction, ApplicationState, IApplication, IApplicationTask } from '../types';\nimport dayjs from 'dayjs';\nimport StyledModal from '../../Components/GenericModal/StyledModal';\nimport {\n  FormTextField,\n  MultilineFormTextField\n} from '../../Components/CustomUIElements/FormTextField';\nimport { SingleDateTimePicker } from '../../Components/CustomUIElements/SingleDatePicker';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { classes as importClasses } from '../../../ScoutCalendar/CreateEvent/EventProgress/styles';\nimport FormSelectWithIconField from '../../Components/CustomUIElements/FormSelectWithIconField';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport { IAssignableUsers } from '../../ApprovalForms/types';\nimport ModalFooterButtons from '../../Components/GenericModal/ModalFooterButtons';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport { styles } from '../../Candidate/styles';\nimport { useGetAssignableUsers } from '../helper';\nimport { ModalType } from '../config';\n\nconst priorities = [\n  { label: 'Low', value: '1', color: '#8CCF95' },\n  { label: 'Normal', value: '0', color: '#E6A052' },\n  { label: 'High', value: '-1', color: '#E37D7A' }\n];\n\nexport default function AddEditTask({\n  ApplicationState,\n  dispatch\n}: {\n  ApplicationState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n}) {\n  const { modalsOpen, editedTask } = ApplicationState;\n  const [subject, setSubject] = useState<string>(editedTask?.subject || '');\n  const [note, setNote] = useState<string>(editedTask?.note || '');\n  const [date, setDate] = useState<Date>(new Date(editedTask?.due_at || Date.now()));\n  const [priority, setPriority] = useState<{ label: string; value: string; color: string }>(\n    priorities.find((p) => p.label === editedTask?.priority) || priorities[0]\n  );\n  const [assignedUser, setAssignedUser] = useState<IAssignableUsers | null>(null);\n  const [taskCompleted, setTaskCompleted] = useState<boolean>(!!editedTask?.completed_at);\n  const [deleteTaskDialogOpen, setDeleteTaskDialogOpen] = useState<boolean>(false);\n  const [errors, setErrors] = useState<Record<string, string>>({});\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const tasks = queryClient.getQueryData<IApplicationTask[]>(['tasks']);\n\n  const { assignableUsers, loadingAssignableUsers } = useGetAssignableUsers({ dispatch });\n\n  const { mutate: addTask, isLoading: addingTask } = useMutation({\n    mutationFn: async () => {\n      if (application && assignedUser) {\n        const { res } = await Api.addTask(application.job.id, application.id, {\n          subject,\n          note,\n          priority: Number(priority.value),\n          due_at: dayjs(date).toISOString(),\n          user_id: assignedUser.id\n        });\n        return res;\n      }\n    },\n    onSuccess: (res) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: `Task has been successfully added`, state: 'success' }\n      });\n      tasks && queryClient.setQueryData(['tasks'], [...tasks, res]);\n      handleClose();\n    },\n    onError: (error: { error: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error adding a task, ${error.error}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n\n  const { mutate: updateTask, isLoading: updatingTask } = useMutation({\n    mutationFn: async () => {\n      if (application && editedTask) {\n        const { res } = await Api.updateApplicationTask(\n          application.job.id,\n          application.id,\n          editedTask.id,\n          {\n            subject,\n            note,\n            priority: Number(priority.value),\n            due_at: dayjs(date).toISOString(),\n            completed_at: taskCompleted ? dayjs().toISOString() : null\n          }\n        );\n        return res;\n      }\n    },\n    onSuccess: (res) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: `Task has been successfully updated`, state: 'success' }\n      });\n      if (tasks) {\n        const newTasks = [...tasks];\n        const index = tasks.findIndex((t) => t.id === editedTask?.id);\n        newTasks[index] = res;\n        queryClient.setQueryData(['tasks'], newTasks);\n      }\n      handleClose();\n    },\n    onError: (error: { error: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error in updating task, ${error.error}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n\n  const { mutate: deleteTask, isLoading: deletingTask } = useMutation({\n    mutationFn: async () => {\n      if (application && editedTask) {\n        Api.deleteTask(application?.job.id, application?.id, editedTask.id);\n      }\n    },\n    onSuccess: () => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: `Task has been successfully deleted`, state: 'success' }\n      });\n      const newTasks = tasks?.filter((task) => task.id !== editedTask?.id);\n      queryClient.setQueryData(['tasks'], newTasks);\n      handleClose();\n    },\n    onError: (error: { error: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error in deleting task, ${error.error}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n\n  const handleClose = () => {\n    dispatch({ type: 'SET_EDITED_TASK', payload: null });\n    dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n  };\n\n  const DeleteDialogDescription = () => (\n    <Stack>\n      <Stack>Are you sure you want to delete the current task?</Stack>\n      <Stack>{`You will lose the task you've made.`}</Stack>\n    </Stack>\n  );\n\n  const validateInputs = () => {\n    setErrors({});\n    const inputErrors: Record<string, string> = {};\n    if (!subject.trim()) inputErrors.subject = 'Subject can not be empty';\n    if (!note.trim()) inputErrors.note = 'Note can not be empty';\n    if (!assignedUser && !editedTask) inputErrors.user = 'Assigned user can not be empty';\n    setErrors(inputErrors);\n    return !Object.keys(inputErrors).length;\n  };\n\n  const handleSubmit = () => {\n    if (validateInputs()) {\n      editedTask ? updateTask() : addTask();\n    }\n  };\n\n  return (\n    <StyledModal\n      isOpen={modalsOpen === ModalType.ADD_EDIT_TASK}\n      label=\"Add/Edit application task\"\n      handleClose={handleClose}\n      styleOverrides={styles.modalContainer}\n      closeIconId={`close-${editedTask ? 'edit' : 'add'}-task-button`}\n    >\n      <Stack sx={styles.modalContent}>\n        <Stack sx={styles.modalTitle}>{editedTask ? 'Edit' : 'Add'} task</Stack>\n        <Stack sx={styles.modalCandidateName}>\n          {`Application #${application?.id} - ${application?.candidate.firstname} ${application?.candidate.lastname}`}\n        </Stack>\n        <FormTextField\n          label=\"Subject\"\n          value={subject}\n          required\n          onChange={(v) => setSubject(v.target.value)}\n          error={errors.subject}\n        />\n        <MultilineFormTextField\n          label=\"Note\"\n          value={note}\n          onChange={(e) => setNote(e.target.value)}\n          fullWidth\n          rows={5}\n          required\n          error={errors.note}\n        />\n        <Stack sx={{ flexDirection: 'row', columnGap: 5 }}>\n          <Stack sx={{ width: '45%', flexDirection: 'row', columnGap: 2 }}>\n            <Stack>\n              <SingleDateTimePicker\n                inputStyles={importClasses.datePicker}\n                label={\n                  <InputLabel htmlFor=\"text-input\" sx={sharedClasses.inputLabel}>\n                    Expiry date and time<span>*</span>\n                  </InputLabel>\n                }\n                value={date}\n                onChange={(value) => value && setDate(value)}\n              />\n            </Stack>\n          </Stack>\n          <FormSelectWithIconField\n            options={priorities}\n            defaultValue={priority.value}\n            onChange={(value) =>\n              setPriority(priorities.find((p) => p.value === value) || priorities[0])\n            }\n            label={'Priority'}\n            styles={styles.prioritySelectStyling}\n          />\n        </Stack>\n        {!editedTask && (\n          <Autocomplete\n            disablePortal\n            id=\"add-application-task-assigned-users-select\"\n            options={assignableUsers || []}\n            getOptionLabel={(option: IAssignableUsers) =>\n              `${option?.firstname} ${option?.lastname}`\n            }\n            value={assignedUser}\n            sx={{ ...sharedClasses.formAutocomplete, paddingTop: 3, width: '45%' }}\n            loading={loadingAssignableUsers}\n            loadingText=\"Loading assignable users...\"\n            ListboxProps={{ style: styles.listboxProps }}\n            renderInput={(params) => (\n              <TextField\n                {...params}\n                label=\"Assign to user\"\n                InputLabelProps={{ shrink: true }}\n                sx={styles.autoCompleteTextfield}\n                required\n                error={!assignedUser}\n                helperText={!assignedUser && errors.user}\n              />\n            )}\n            onChange={(event, value) => setAssignedUser(value)}\n          />\n        )}\n        {editedTask && (\n          <FormControlLabel\n            control={\n              <Checkbox\n                id=\"mark-as-complete-check-box\"\n                sx={sharedClasses.formCheckbox}\n                checked={taskCompleted}\n                onClick={() => setTaskCompleted(!taskCompleted)}\n                disableRipple\n              />\n            }\n            label=\"Mark as complete\"\n            sx={sharedClasses.checkboxLabel}\n          />\n        )}\n        <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between' }}>\n          {editedTask && (\n            <Button\n              id=\"delete-task-button\"\n              sx={{\n                ...sharedClasses.genericRedButton,\n                marginTop: '10px',\n                columnGap: 0.5,\n                minWidth: '135px'\n              }}\n              onClick={() => setDeleteTaskDialogOpen(true)}\n            >\n              <DeleteIcon />\n              Delete task\n            </Button>\n          )}\n          <ModalFooterButtons\n            primaryButtonText={editedTask ? 'Save' : 'Submit'}\n            primaryButtonCallback={handleSubmit}\n            secondaryButtonText=\"Cancel\"\n            secondaryButtonCallback={handleClose}\n            isLoading={addingTask || updatingTask}\n            primaryButtonID={`${editedTask ? 'save' : 'submit'}-task-button`}\n            secondaryButtonID={`cancel-${editedTask ? 'edit' : 'add'}-task-button`}\n            primaryButtonMinWidth={editedTask ? '75px' : '90px'}\n          />\n        </Stack>\n      </Stack>\n      <GenericDialog\n        isDialogOpen={deleteTaskDialogOpen}\n        setDialogOpen={setDeleteTaskDialogOpen}\n        title={`Delete task?`}\n        description={DeleteDialogDescription()}\n        buttonCallback={() => deleteTask()}\n        callbackLoading={deletingTask}\n        buttonText=\"Delete\"\n        secondaryButtonText=\"Cancel\"\n        url=\"\"\n        primaryButtonId=\"confirm-delete-task-button\"\n        secondaryButtonId=\"cancel-delete-task-button\"\n      />\n    </StyledModal>\n  );\n}\n","import React, { Dispatch, useRef, useState } from 'react';\nimport { Button, CircularProgress, Stack } from '@mui/material';\nimport { NavigateBefore as NavigateBeforeIcon } from '@mui/icons-material';\nimport StyledModal from '../../Components/GenericModal/StyledModal';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport { ApplicationAction, ApplicationState, IApplication, IFormsOption } from '../types';\nimport { ModalType } from '../config';\nimport { styles } from './styles';\nimport { IError } from '../../SmartForms/types';\nimport { createQuestionErrorsObject } from '../../ApprovalForms/NewApproval/NewApproval';\nimport FormsDropdown from './Components/FormsDropdown';\nimport { validateForm } from '../SmartFormsTab/validate-form-submission';\nimport { getAnswerAttributes } from '../SmartFormsTab/get-answer-attributes';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { classes } from '../../Job/Applications/styles';\nimport QuestionsAndRatings from '../OverviewTab/QuestionsAndRatings';\nimport { ExitConfirmationModal } from './ExitConfirmationModal';\n\nexport default function AddForm({\n  ApplicationState,\n  dispatch\n}: {\n  ApplicationState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n}) {\n  const [selectedForm, setSelectedForm] = useState<IFormsOption | null>(null);\n  const [ratings, setRatings] = useState<Record<number, number>>({});\n  const [answers, setAnswers] = useState<\n    Record<number, string | number | Record<string, string | boolean>>\n  >({});\n  const [questionErrors, setQuestionErrors] = useState<Record<number, string>>({});\n  const [step, setStep] = useState<number>(1);\n  const [exitConfirmation, setExitConfirmation] = useState<boolean>(false);\n\n  const { modalsOpen } = ApplicationState;\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n\n  const questionsRef = useRef<Array<HTMLDivElement | null>>([]);\n\n  const {\n    data: formQuestions,\n    isFetching: fetchingFormQuestions,\n    refetch: fetchFormQuestions\n  } = useQuery({\n    queryKey: ['form'],\n    queryFn: async () => {\n      if (selectedForm) {\n        const { res } = await Api.getFormQuestions({\n          form_id: selectedForm.id,\n          enabled_only: true\n        });\n        return res.fields;\n      }\n    },\n    onSuccess: (res) => {\n      res && setQuestionErrors(createQuestionErrorsObject(res));\n      setStep(2);\n    },\n    onError: (error: IError) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: error.errors.join(', '), state: 'error' }\n      }),\n    enabled: false\n  });\n\n  const answersAttributes: any = {};\n  if (formQuestions) {\n    formQuestions.forEach((question, index) => {\n      answersAttributes[index] = getAnswerAttributes(question, index, answers, ratings);\n    });\n  }\n\n  const { mutate: addForm, isLoading: addingForm } = useMutation({\n    mutationFn: async () => {\n      if (application && selectedForm) {\n        const { res } = await Api.addForm(\n          application.job.id,\n          application.id,\n          selectedForm.id,\n          answersAttributes\n        );\n        return res;\n      }\n    },\n    onSuccess: (res) => {\n      queryClient.invalidateQueries(['formResponses'], { exact: true });\n      dispatch({ type: 'SET_SNACKBAR', payload: { message: res.success, state: 'success' } });\n      handleClose();\n    },\n    onError: () =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: `Failed to create form response`, state: 'error' }\n      })\n  });\n\n  const handleClose = () => {\n    queryClient.removeQueries(['form']);\n    queryClient.removeQueries(['formResponses']);\n    dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n  };\n\n  const handleSubmit = () => {\n    step == 1\n      ? fetchFormQuestions()\n      : formQuestions &&\n        validateForm(formQuestions, answers, setQuestionErrors, questionsRef) &&\n        addForm();\n  };\n\n  const buttonName = step === 1 ? 'Select' : 'Add form response';\n\n  return (\n    <StyledModal\n      isOpen={modalsOpen === ModalType.ADD_FORM}\n      label=\"Add form response modal\"\n      handleClose={() => setExitConfirmation(true)}\n      styleOverrides={{ ...styles.modalStyleOverrides, ...(step === 1 ? {} : styles.wideModal) }}\n    >\n      <Stack sx={styles.modalContainer}>\n        <Stack sx={styles.modalTitle}>{step === 1 ? 'Add form' : selectedForm?.name}</Stack>\n        {step === 1 ? (\n          <Stack sx={{ paddingBottom: 5, overflow: 'auto' }}>\n            <FormsDropdown\n              applicationId={application?.id}\n              selectedForm={selectedForm}\n              setSelectedForm={setSelectedForm}\n              dispatch={dispatch}\n            />\n          </Stack>\n        ) : (\n          <QuestionsAndRatings\n            questions={formQuestions}\n            questionErrors={questionErrors}\n            setQuestionErrors={setQuestionErrors}\n            ratings={ratings}\n            setRatings={setRatings}\n            setAnswers={setAnswers}\n            questionsRef={questionsRef}\n          />\n        )}\n        <Stack\n          sx={{ flexDirection: 'row', justifyContent: 'flex-end', columnGap: 1, paddingTop: 1 }}\n        >\n          <Button sx={classes.modalCancelButton} onClick={() => setExitConfirmation(true)}>\n            Cancel\n          </Button>\n          {step === 2 && (\n            <Button\n              onClick={() => setStep(1)}\n              sx={{ ...sharedClasses.genericButtonSecondary, minWidth: 'unset', padding: 1 }}\n            >\n              <NavigateBeforeIcon />\n            </Button>\n          )}\n          <Button\n            sx={{\n              ...sharedClasses.genericButton,\n              '&.Mui-disabled ': { background: '#DDDDDD', color: '#939393' },\n              minWidth: step === 1 ? '95px' : '165px',\n              minHeight: '41px'\n            }}\n            onClick={handleSubmit}\n            disabled={!selectedForm}\n          >\n            {fetchingFormQuestions || addingForm ? (\n              <CircularProgress size={20} color=\"inherit\" />\n            ) : (\n              buttonName\n            )}\n          </Button>\n        </Stack>\n      </Stack>\n      <ExitConfirmationModal\n        exitConfirmation={exitConfirmation}\n        setExitConfirmation={setExitConfirmation}\n        handleClose={handleClose}\n      />\n    </StyledModal>\n  );\n}\n","import React, { useState, Dispatch } from 'react';\nimport { Box, Button, Stack } from '@mui/material';\nimport { NavigateBefore as NavigateBeforeIcon } from '@mui/icons-material';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { ControlledStaticDatePicker } from '../../Components/CustomUIElements/SingleDatePicker';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { classes } from '../../Job/Applications/styles';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport API from '../API';\nimport { ApplicationAction, ApplicationState, IApplication } from '../types';\nimport { ModalType } from '../config';\nimport StyledModal from '../../Components/GenericModal/StyledModal';\nimport { styles } from './styles';\nimport SmsTemplateComponent from '../../Components/CustomUIElements/SmsTemplateComponent';\nimport { useGetEmailTemplate, useGetEvents, useGetSmsTemplatePlaceholders } from '../helper';\nimport { useDispatch } from '../../hooks/useDispatch';\nimport EmailsDropdown from './Components/EmailsDropdown';\nimport EmailBodyComponent from './Components/EmailBodyComponent';\nimport NotificationOptionSwitch from './Components/NotificationOptionsSwitch';\nimport { ISmsTemplate } from '../../Job/Applications/Modals/SMSCandidates';\nimport formatToUserTimeZone from '../../utils/formatToUserTimeZone';\n\nexport default function AddToEvent({\n  ApplicationState,\n  dispatch,\n  smsTemplatePermissions\n}: {\n  ApplicationState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n  smsTemplatePermissions: boolean;\n}) {\n  const [selectedDay, setSelectedDay] = useState<Date | null>(new Date());\n  const [selectedTimeSlot, setSelectedTimeSlot] = useState<number>(0);\n  const [step, setStep] = useState<number>(1);\n  const [notification, setNotification] = useState<string>('email');\n  const [smsMessage, setSmsMessage] = useState<string>('');\n  const [smsTemplate, setSmsTemplate] = useState<ISmsTemplate | null>(null);\n  const [selectedEmailTemplate, setSelectedEmailTemplate] = useState<string | null>('');\n  const [body, setBody] = useState<string>('');\n  const [errors, setErrors] = useState<Record<string, string>>({});\n  const { modalsOpen, apiKey } = ApplicationState;\n\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n\n  useGetEmailTemplate({ apiKey, selectedEmailTemplate, setBody, dispatch });\n  const { displayError, displaySuccess } = useDispatch(dispatch);\n  const { events, loadingEvents } = useGetEvents({ apiKey, dispatch });\n  const { placeholders } = useGetSmsTemplatePlaceholders({ kind: 'event', dispatch });\n\n  const { mutate: sendEmail, isLoading: sendingEmail } = useMutation({\n    mutationFn: async () => {\n      if (!selectedEmailTemplate || !application) return;\n      const res = await API.sendEmail(\n        application.job.id,\n        selectedTimeSlot,\n        Number(selectedEmailTemplate.split(' -')[0]),\n        body,\n        [application.id]\n      );\n      return res;\n    },\n    onSuccess: () => {\n      queryClient.invalidateQueries(['application events'], { exact: true });\n      displaySuccess('Add to event email notification has been sent successfully');\n      dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n    },\n    onError: (error: { success: boolean; message: string }) => displayError(error.message)\n  });\n\n  const { mutate: sendSms, isLoading: sendingSms } = useMutation({\n    mutationFn: async () => {\n      if (application) {\n        const res = await API.addToEventSms(\n          application.job.id,\n          selectedTimeSlot,\n          [application.id],\n          smsMessage,\n          smsTemplate?.id\n        );\n        if (res.success !== 0) {\n          queryClient.invalidateQueries(['application events'], { exact: true });\n          displaySuccess('Add to event SMS notification has been sent successfully');\n          dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n        } else {\n          displayError('There is an error in sending SMS notification');\n        }\n        return res;\n      }\n    }\n  });\n\n  const selectedDayEvents = events?.filter((e) => {\n    if (!selectedDay) return false;\n    return formatToUserTimeZone(e.begins_at, 'ymd') === formatToUserTimeZone(selectedDay, 'ymd');\n  });\n\n  const shouldDisableDate = (date: Date) => {\n    if (!events) return true;\n    return !events\n      .map((e) => formatToUserTimeZone(e.begins_at, 'ymd'))\n      .includes(formatToUserTimeZone(date, 'ymd'));\n  };\n\n  const buttonName = step === 1 ? 'Next' : 'Send';\n\n  const eventCandidates = events\n    ?.find((e) => e.id === selectedTimeSlot)\n    ?.attendees.filter((a) => a.type === 'Candidate')\n    .map((c) => c.application_id);\n\n  const candidateAlreadyBooked = application && eventCandidates?.includes(application.id);\n\n  const validateInput = () => {\n    const fieldsErrors: Record<string, string> = {};\n    if (notification === 'email') {\n      !selectedEmailTemplate && (fieldsErrors.template = 'Must select a template');\n      !body.trim() && (fieldsErrors.body = 'Must add email body');\n    } else {\n      !smsMessage.trim() && (fieldsErrors.sms = 'Must add SMS content');\n    }\n    setErrors(fieldsErrors);\n    return !Object.keys(fieldsErrors).length;\n  };\n\n  const handleSubmit = () => {\n    if (step === 1) {\n      setStep(2);\n    } else {\n      notification === 'email' ? validateInput() && sendEmail() : validateInput() && sendSms();\n    }\n  };\n\n  return (\n    <StyledModal\n      isOpen={modalsOpen === ModalType.ADD_TO_EVENT}\n      label=\"Add to event modal\"\n      handleClose={() => dispatch({ type: 'SET_MODALS_OPEN', payload: null })}\n      styleOverrides={{ ...styles.modalStyleOverrides, width: '900px' }}\n      disableEnforceFocus\n    >\n      <Stack sx={{ width: '100%', height: '100%', overflow: 'auto' }}>\n        <Stack id=\"add-to-event-title\" sx={{ ...classes.actionModalHeader, paddingBottom: 3 }}>\n          Add to Event\n        </Stack>\n        {step === 1 ? (\n          <Stack sx={{ flexGrow: 1, rowGap: 1, overflow: 'auto', paddingBottom: 10 }}>\n            <Stack sx={{ paddingLeft: 1, rowGap: 0.5 }}>\n              <Stack sx={{ color: '#939393' }}>Timeslot availability:</Stack>\n              <Stack>\n                {selectedTimeSlot ? (\n                  <Stack\n                    sx={{\n                      ...styles.timeslotAvailabilityButton,\n                      background: candidateAlreadyBooked ? '#E5E5E5' : '#EFFDF3',\n                      color: candidateAlreadyBooked ? '#939393' : '#8CCF95'\n                    }}\n                  >\n                    {candidateAlreadyBooked ? 'BOOKED' : 'AVAILABLE'}\n                  </Stack>\n                ) : (\n                  <Stack sx={{ padding: '6px 0px' }}>-</Stack>\n                )}\n              </Stack>\n            </Stack>\n            <Stack\n              sx={{\n                flexDirection: 'row',\n                justifyContent: 'space-between'\n              }}\n            >\n              <Box sx={classes.calendar}>\n                <ControlledStaticDatePicker\n                  displayStaticWrapperAs=\"desktop\"\n                  views={['day']}\n                  value={selectedDay}\n                  disablePast\n                  onChange={(value) => setSelectedDay(value)}\n                  shouldDisableDate={shouldDisableDate}\n                />\n              </Box>\n              <Box sx={classes.dailyTimeslots}>\n                <Box sx={{ ...classes.dailyTimeslotsHeader, marginTop: 2, marginBottom: '20px' }}>\n                  Choose available timeslot\n                </Box>\n                {loadingEvents ? (\n                  <Box sx={classes.noTimeslots}>\n                    <CircularProgress size={32} />\n                  </Box>\n                ) : (\n                  <Stack sx={classes.addToEventTimeslotsContainer}>\n                    {selectedDayEvents?.map((e) => {\n                      const candidates = e.attendees.filter((a) => a.type === 'Candidate');\n                      const fullyBooked = candidates.length === e.max_candidates;\n                      return (\n                        <Stack\n                          key={e.id}\n                          sx={{\n                            ...classes.addToEventTimeslot,\n                            border: `1px solid ${e.id === selectedTimeSlot ? '#5BC4C0' : '#DDDDDD'}`,\n                            color: `${fullyBooked ? '#939393' : '#666666'}`,\n                            background: `${fullyBooked ? '#EAEEF0' : 'inherit'}`,\n                            cursor: `${fullyBooked ? 'unset' : 'pointer'}`\n                          }}\n                          onClick={() => {\n                            if (fullyBooked) return;\n                            setSelectedTimeSlot(e.id);\n                          }}\n                        >\n                          <Stack sx={{ rowGap: '4px' }}>\n                            <Stack sx={{ fontSize: '14px' }}>\n                              {formatToUserTimeZone(e.begins_at, 'onlyTime')}\n                            </Stack>\n                            <Stack sx={{ fontSize: '12px' }}>{e.subject}</Stack>\n                          </Stack>\n                          <Stack sx={{ color: `${fullyBooked ? '#939393' : '#084D6D'}` }}>\n                            {candidates.length}/{e.max_candidates} BOOKED\n                          </Stack>\n                        </Stack>\n                      );\n                    })}\n                  </Stack>\n                )}\n              </Box>\n            </Stack>\n          </Stack>\n        ) : (\n          <Stack sx={classes.addToEventSecondStepContainer}>\n            <NotificationOptionSwitch\n              setNotification={(value) => {\n                setNotification(value);\n                setErrors({});\n              }}\n              notification={notification}\n            />\n            {notification === 'email' ? (\n              <Stack sx={{ paddingTop: 4, rowGap: 3 }}>\n                <EmailsDropdown\n                  apiKey={apiKey}\n                  selectedEmailTemplate={selectedEmailTemplate}\n                  setSelectedEmailTemplate={setSelectedEmailTemplate}\n                  setBody={setBody}\n                  dispatch={dispatch}\n                  error={errors.template}\n                  required\n                  type=\"no_interview_urls\"\n                />\n                <EmailBodyComponent body={body} setBody={setBody} error={errors.body} />\n              </Stack>\n            ) : (\n              <SmsTemplateComponent\n                smsMessageError={errors.sms}\n                {...{\n                  smsTemplatePermissions,\n                  smsMessage,\n                  setSmsMessage,\n                  smsTemplate,\n                  setSmsTemplate,\n                  dispatch,\n                  placeholders\n                }}\n              />\n            )}\n          </Stack>\n        )}\n        <Box sx={{ ...classes.modalFooter, columnGap: 1, paddingTop: 2 }}>\n          <Button\n            id=\"close-add-to-event-modal-button\"\n            sx={classes.modalCancelButton}\n            onClick={() => dispatch({ type: 'SET_MODALS_OPEN', payload: null })}\n          >\n            Cancel\n          </Button>\n          {step !== 1 && (\n            <Button\n              onClick={() => setStep(1)}\n              sx={{ ...sharedClasses.genericButtonSecondary, minWidth: 'unset', padding: 1 }}\n            >\n              <NavigateBeforeIcon />\n            </Button>\n          )}\n          <Button\n            id=\"add-to-event-submit-button\"\n            type=\"submit\"\n            sx={{\n              ...sharedClasses.genericButton,\n              '&.Mui-disabled ': { background: '#DDDDDD', color: '#939393' }\n            }}\n            onClick={handleSubmit}\n            disabled={step === 1 ? !selectedTimeSlot || candidateAlreadyBooked : false}\n          >\n            {sendingSms || sendingEmail ? (\n              <CircularProgress size={20} color=\"inherit\" />\n            ) : (\n              buttonName\n            )}\n          </Button>\n        </Box>\n      </Stack>\n    </StyledModal>\n  );\n}\n","import React, { useEffect, useState } from 'react';\nimport {\n  Box,\n  Button,\n  CircularProgress,\n  Modal,\n  Slider,\n  Stack,\n  styled,\n  Typography\n} from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { classes } from '../../Components/Modals/styles';\nimport {\n  ApplicationAction,\n  ApplicationState,\n  IApplication,\n  IAttachment,\n  IVideoInterview\n} from '../types';\nimport { AttachmentType } from '../config';\nimport { useQuery, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport dayjs from 'dayjs';\nimport duration from 'dayjs/plugin/duration';\nimport TimestampTable from './Components/TimestampTable';\nimport ImagePreview from '../OverviewTab/Attachments/ImagePreview';\nimport VideoPreview from '../OverviewTab/Attachments/VideoPreview';\nimport AudioPreview from '../OverviewTab/Attachments/AudioPreview';\nimport TextPreview from '../OverviewTab/Attachments/TextPreview';\nimport PdfPreview from '../OverviewTab/Attachments/PdfPreview';\nimport WordPreview from '../OverviewTab/Attachments/WordPreview';\nimport { getAttachmentType } from '../../utils/attachment-type';\nimport { VIDEO_INTERVIEW_DISPLAY_NAME, VIDEO_INTERVIEW_SOURCE_INDEX } from '../config';\nimport { IUserPermissions } from '../../Components/sharedTypes';\nimport { ZoomInSVG, ZoomOutSVG } from '../OverviewTab/Icons';\nimport { theme } from '../../../../components/ThemeContext/ThemeObject';\nimport { useGesture } from '@use-gesture/react';\nimport { MAX_SCALE, ZOOM_STEP } from '../constants';\nimport { useThrottle } from '../../hooks';\n\ndayjs.extend(duration);\n\nconst CustomSlider = styled(Slider)(() => ({\n  ...classes.zoomSlider\n}));\n\nexport default function AttachmentPreviewModal({\n  previewOpen,\n  dispatch,\n  selectedAttachment,\n  ApplicationState,\n  permissions\n}: {\n  previewOpen: boolean;\n  dispatch: React.Dispatch<ApplicationAction>;\n  selectedAttachment: IAttachment | IVideoInterview;\n  ApplicationState: ApplicationState;\n  permissions: IUserPermissions | undefined;\n}) {\n  const BASE_URL = window.location.origin;\n  const videoRef = React.useRef<HTMLVideoElement>(null);\n  const [isLoadingPreview, setIsLoadingPreview] = useState<boolean>(true);\n  const [currentIndex, setCurrentIndex] = useState<number>(0);\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const isVideoInterview = 'watch_interview_link' in selectedAttachment;\n  const attachmentType = getAttachmentType(selectedAttachment as IAttachment);\n  const isVideoType = attachmentType === AttachmentType.Video || isVideoInterview;\n  const [zoom, setZoom] = useState<number>(0);\n  const zoomFactor = 1 + zoom / MAX_SCALE;\n\n  const modalTitle = isVideoInterview\n    ? VIDEO_INTERVIEW_DISPLAY_NAME\n    : selectedAttachment.attached_file_name;\n\n  const handleClose = () => {\n    dispatch({\n      type: 'SET_SELECTED_ATTACHMENT_ACTION',\n      payload: { delete: null, preview: null }\n    });\n    dispatch({ type: 'RESET_TIMESTAMP_STATE' });\n    setIsLoadingPreview(true);\n  };\n\n  const throttledUpdateZoom = useThrottle((delta: number) => {\n    setZoom((prevZoom) => {\n      const zoomChange = Math.max(2, Math.round(2 * Math.abs(delta * 0.05)));\n      const newZoom = delta > 0 ? prevZoom + zoomChange : prevZoom - zoomChange;\n\n      return Math.min(MAX_SCALE, Math.max(0, newZoom));\n    });\n  }, 500);\n\n  const onPinchHandler = useGesture({\n    onPinch: ({ direction: [pinchDirection] }) => {\n      const zoomDirection = pinchDirection < 0 ? -1 : 1;\n\n      throttledUpdateZoom(zoomDirection);\n    }\n  });\n\n  const { data: previewData } = useQuery({\n    queryKey: ['preview_data', currentIndex],\n    queryFn: async () => {\n      if (selectedAttachment.id && application && !isVideoInterview) {\n        const { res } = await Api.previewAttachment(\n          application.job.id,\n          application.id,\n          selectedAttachment.id,\n          currentIndex\n        );\n        return res;\n      }\n    },\n    onError: (error: { message: string }) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting preview data, ${error}`,\n          state: 'error'\n        }\n      }),\n    onSettled: () => setIsLoadingPreview(false),\n    enabled:\n      !!selectedAttachment &&\n      (attachmentType === AttachmentType.Video || attachmentType === AttachmentType.Word) &&\n      !isVideoInterview\n  });\n\n  const hasNoPreview = (attachmentType: AttachmentType | undefined): boolean => {\n    if (!attachmentType) return true;\n    if (attachmentType === AttachmentType.Word) return !previewData?.data;\n    return false;\n  };\n\n  const handleDisplayContent = () => {\n    const shouldDisablePreview = !isLoadingPreview && hasNoPreview(attachmentType);\n\n    if (shouldDisablePreview) {\n      return <Box sx={classes.noPreview}>No preview available for this file type.</Box>;\n    }\n\n    const videoInterviewSrc = isVideoInterview\n      ? selectedAttachment.sources[VIDEO_INTERVIEW_SOURCE_INDEX]?.url\n      : previewData?.video;\n\n    const sharedProps = {\n      onPinchHandler,\n      zoom: zoomFactor,\n      selectedAttachment: selectedAttachment as IAttachment\n    };\n\n    const components: Record<Exclude<AttachmentType, AttachmentType.Video>, JSX.Element | null> = {\n      [AttachmentType.Image]: (\n        <ImagePreview\n          {...sharedProps}\n          isLoadingPreview={isLoadingPreview}\n          setIsLoadingPreview={setIsLoadingPreview}\n        />\n      ),\n      [AttachmentType.Audio]: (\n        <AudioPreview\n          selectedAttachment={selectedAttachment as IAttachment}\n          setIsLoadingPreview={setIsLoadingPreview}\n        />\n      ),\n      [AttachmentType.Text]: (\n        <TextPreview\n          selectedAttachment={selectedAttachment as IAttachment}\n          dispatch={dispatch}\n          setIsLoadingPreview={setIsLoadingPreview}\n        />\n      ),\n      [AttachmentType.Pdf]: (\n        <PdfPreview\n          onPinchHandler={onPinchHandler}\n          selectedAttachment={selectedAttachment as IAttachment}\n          setIsLoadingPreview={setIsLoadingPreview}\n          zoom={zoomFactor}\n        />\n      ),\n      [AttachmentType.Word]: previewData ? (\n        <WordPreview {...sharedProps} previewData={previewData} setCurrentIndex={setCurrentIndex} />\n      ) : null\n    };\n    if (!attachmentType) return null;\n\n    if (attachmentType === AttachmentType.Video || isVideoInterview) {\n      return (\n        <VideoPreview\n          selectedAttachment={selectedAttachment}\n          videoRef={videoRef}\n          source={videoInterviewSrc}\n          isLoadingPreview={isLoadingPreview}\n          setIsLoadingPreview={setIsLoadingPreview}\n        />\n      );\n    }\n\n    return components[attachmentType] ?? null;\n  };\n\n  const handleZoomDecrement = () => {\n    setZoom((prevZoom) => Math.max(0, prevZoom - ZOOM_STEP));\n  };\n\n  const handleZoomIncrement = () => {\n    setZoom((prevZoom) => Math.min(MAX_SCALE, prevZoom + ZOOM_STEP));\n  };\n\n  const showZoomSlider =\n    (attachmentType === AttachmentType.Pdf ||\n      (attachmentType === AttachmentType.Word && previewData && 'data' in previewData) ||\n      attachmentType === AttachmentType.Image) &&\n    !isLoadingPreview;\n\n  useEffect(() => {\n    const handleWheelEvent = (event: WheelEvent) => {\n      if (event.ctrlKey) {\n        event.preventDefault();\n      }\n    };\n    document.addEventListener('wheel', handleWheelEvent, { passive: false });\n\n    return () => {\n      document.removeEventListener('wheel', handleWheelEvent);\n    };\n  }, []);\n\n  return (\n    <Modal open={previewOpen} onClose={handleClose} aria-labelledby=\"file-preview-modal\">\n      <Stack\n        sx={{\n          ...classes.attachmentPreviewModal,\n          height: 'auto',\n          maxHeight: '80vh',\n          minHeight: '40vh'\n        }}\n        justifyContent=\"space-between\"\n      >\n        <CloseIcon\n          id=\"close-attachment-preview-button\"\n          onClick={handleClose}\n          sx={classes.closeIcon}\n          className=\"close-button\"\n        />\n        <Box id=\"file-preview-modal-title\" sx={classes.attachmentPreviewTitle}>\n          {modalTitle}\n        </Box>\n        <Box sx={classes.attachmentPreviewContent}>\n          {handleDisplayContent()}\n          {isLoadingPreview && (\n            <Box sx={{ ...classes.previewLoader, ...classes.absoluteLoader }}>\n              <CircularProgress sx={{ color: '#084D6D' }} />\n              Loading Preview\n            </Box>\n          )}\n        </Box>\n        {showZoomSlider && (\n          <Stack direction=\"row\" spacing={1} sx={classes.zoomSliderContainer}>\n            <Typography\n              id=\"zoom-slider\"\n              variant=\"subtitle1\"\n              component=\"div\"\n              sx={{ marginRight: `${theme.spacing(0.5)} !important` }}\n            >\n              {zoom}%\n            </Typography>\n\n            <CustomSlider\n              value={zoom}\n              min={0}\n              max={MAX_SCALE}\n              step={ZOOM_STEP}\n              onChange={(_e, value) => setZoom(value as number)}\n              aria-labelledby=\"zoom-slider\"\n              size=\"small\"\n              sx={{ width: '150px' }}\n            />\n            <Button onClick={handleZoomDecrement} sx={classes.zoomIcons}>\n              <ZoomOutSVG />\n            </Button>\n            <Button onClick={handleZoomIncrement} sx={classes.zoomIcons}>\n              <ZoomInSVG />\n            </Button>\n          </Stack>\n        )}\n        {permissions?.Applications?.['Download Attachments'] &&\n          !isVideoType &&\n          !isLoadingPreview && (\n            <Box sx={classes.attachmentPreviewActions} marginTop={'auto'}>\n              <a\n                id=\"download-file-on-preview-button\"\n                href={`${BASE_URL}/admin/assets/${selectedAttachment.id}`}\n              >\n                <Button id=\"download-attachment-button\" sx={classes.downloadButton}>\n                  Download\n                </Button>\n              </a>\n            </Box>\n          )}\n        {isVideoType && !isLoadingPreview && (\n          <Box width={'100%'} sx={{ paddingY: '20px' }} marginTop={'auto'}>\n            <TimestampTable\n              selectedAttachment={selectedAttachment}\n              dispatch={dispatch}\n              videoRef={videoRef}\n              ApplicationState={ApplicationState}\n            />\n          </Box>\n        )}\n      </Stack>\n    </Modal>\n  );\n}\n","import React, { Dispatch, SetStateAction, RefObject } from 'react';\nimport { Stack } from '@mui/material';\nimport HtmlEditor from '../../../Components/Utilities/HtmlEditor';\nimport { classes } from '../../../Job/Applications/styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\n\nexport default function EmailBodyComponent({\n  body,\n  setBody,\n  placeholders,\n  error,\n  innerRef\n}: {\n  body: string;\n  setBody: Dispatch<SetStateAction<string>>;\n  placeholders?: string;\n  error?: string;\n  innerRef?: RefObject<HTMLDivElement>;\n}) {\n  return (\n    <Stack sx={{ marginLeft: '3px', rowGap: 0.5 }} ref={innerRef}>\n      <Stack sx={{ color: '#838383', flexDirection: 'row', columnGap: '2px' }}>\n        Body <Stack sx={{ color: '#E37D7A' }}>*</Stack>\n      </Stack>\n      <HtmlEditor body={body} onBlur={setBody} maxHeight={400} />\n      {error && <Stack sx={sharedClasses.errorBox}>{error}</Stack>}\n      <Stack sx={classes.addToEventEmailPlaceholder}>\n        Available placeholders are:{' '}\n        {placeholders ||\n          '{FIRSTNAME}, {LASTNAME}, {USER_FIRSTNAME}, {USER_LASTNAME}, {USER_EMAIL}, {USER_PHONE}, {JOB_TITLE}, {JOB_NUMBER}, {EVENT_NAME}, {EVENT_DATE}, {EVENT_TIME}, {EVENT_DESCRIPTION}, {EVENT_DURATION}, {NEXT_WEEK}'}\n      </Stack>\n    </Stack>\n  );\n}\n","import React, { Dispatch, RefObject, SetStateAction } from 'react';\nimport { useQuery } from '@tanstack/react-query';\nimport Api from '../../API';\nimport { ApplicationAction, IEmailTemplateList } from '../../types';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport { IError } from '../../../SmartForms/types';\nimport VirtualizeGrouped from '../../../Components/CustomUIElements/VirtualizedGroupedAutocomplete';\nimport { styles } from '../styles';\n\nexport default function EmailsDropdown({\n  apiKey,\n  selectedEmailTemplate,\n  setSelectedEmailTemplate,\n  setBody,\n  dispatch,\n  required,\n  dropdownLabel,\n  error,\n  innerRef,\n  type,\n  endpoint\n}: {\n  apiKey: string;\n  selectedEmailTemplate: string | null;\n  setSelectedEmailTemplate: Dispatch<SetStateAction<string | null>>;\n  setBody: Dispatch<SetStateAction<string>>;\n  dispatch: Dispatch<ApplicationAction>;\n  required?: boolean;\n  dropdownLabel?: string;\n  error?: string;\n  innerRef?: RefObject<HTMLDivElement>;\n  type?: string;\n  endpoint?: Promise<{ res: IEmailTemplateList }>;\n}) {\n  const queryKey = (() => {\n    if (endpoint) {\n      return ['email templates', endpoint];\n    } else if (type) {\n      return ['email templates', type];\n    } else {\n      return ['email templates'];\n    }\n  })();\n\n  const { data: emailTemplates, isLoading: loadingEmailTemplates } = useQuery({\n    queryKey,\n    queryFn: async () => {\n      const { res } = await (endpoint || Api.getEmailLetterheadGroupedEmailTemplates(apiKey, type));\n      const emailTemplates: string[] = [];\n      res.email_templates.forEach((group: [string, { id: number; name: string }[]]) => {\n        group[1].forEach((template) => {\n          emailTemplates.push(`${template.id} - ${template.name}@-*@${group[0]}`);\n        });\n      });\n      dispatch({ type: 'SET_EMAIL_PLACEHOLDERS', payload: res.placeholders });\n      return emailTemplates;\n    },\n    onError: (error: IError) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: error.errors.join(', '), state: 'error' }\n      })\n  });\n\n  return (\n    <VirtualizeGrouped\n      options={emailTemplates || []}\n      value={selectedEmailTemplate}\n      onChange={(value) => {\n        !value && setBody('');\n        setSelectedEmailTemplate(value);\n      }}\n      styles={{\n        ...sharedClasses.formAutocomplete,\n        marginRight: '1px',\n        '&.MuiAutocomplete-root': {\n          '& .MuiOutlinedInput-root': {\n            paddingRight: '16px !important'\n          }\n        }\n      }}\n      label={dropdownLabel || 'Choose email template'}\n      loading={loadingEmailTemplates}\n      loadingText=\"Loading email templates...\"\n      required={required}\n      error={error}\n      errorStyles={styles.errorMessage}\n      innerRef={innerRef}\n    />\n  );\n}\n","import { Box, Skeleton, Stack } from '@mui/material';\nimport { AccountBox, InsertDriveFile, Star, WatchLater } from '@mui/icons-material';\nimport React from 'react';\nimport { getApplicationRatingColor } from '../../config';\nimport { styles } from '../styles';\nimport formatToUserTimeZone from '../../../utils/formatToUserTimeZone';\n\nconst WidgetBlock = ({\n  icon,\n  heading,\n  body,\n  isLoading\n}: {\n  icon: React.ReactNode;\n  heading: string;\n  body: React.ReactNode;\n  isLoading: boolean;\n}) => (\n  <Box sx={styles.widgetBlock}>\n    <Box sx={styles.widgetBlockIcon}>{icon}</Box>\n    <Stack sx={styles.widgetBlockText}>\n      <Box sx={styles.widgetBlockHeading}>{heading}</Box>\n      <Box sx={styles.widgetBlockBody}>\n        {isLoading ? <Skeleton animation=\"wave\" width={80} height={30} /> : body}\n      </Box>\n    </Stack>\n  </Box>\n);\n\nexport const RenderFormResponseBlocks = ({\n  ApplicationId,\n  name,\n  created_at,\n  submitted_by,\n  rating,\n  isLoading,\n  expandedRows,\n  linkToUser\n}: {\n  ApplicationId: number;\n  name: string;\n  created_at: string;\n  submitted_by: string;\n  rating: string;\n  isLoading: boolean;\n  expandedRows: number[];\n  linkToUser?: string;\n}) => {\n  const formattedCreatedAtTime = formatToUserTimeZone(created_at);\n  const BASE_URL = window.location.origin;\n  return (\n    <Box sx={styles.subWidget}>\n      <Box sx={styles.widgetBlockContainer}>\n        <WidgetBlock\n          icon={<InsertDriveFile fontSize={'small'} />}\n          heading=\"Application\"\n          body={<Box>{`${ApplicationId} - ${name}`}</Box>}\n          isLoading={isLoading && !expandedRows.includes(ApplicationId)}\n        />\n        <WidgetBlock\n          icon={<WatchLater fontSize={'small'} />}\n          heading=\"Submitted at\"\n          body={<Box>{formattedCreatedAtTime}</Box>}\n          isLoading={isLoading}\n        />\n        <WidgetBlock\n          icon={<AccountBox fontSize={'small'} />}\n          heading=\"Submitted by\"\n          body={\n            <Box>\n              {linkToUser ? (\n                <a id=\"submitted-by-user-link\" href={BASE_URL + linkToUser}>\n                  {submitted_by}\n                </a>\n              ) : (\n                submitted_by\n              )}\n            </Box>\n          }\n          isLoading={isLoading}\n        />\n        <WidgetBlock\n          icon={<Star fontSize={'small'} />}\n          heading=\"Rating\"\n          body={\n            <Box\n              sx={{\n                color: getApplicationRatingColor(rating === 'N/A' ? 101 : Number(rating)),\n                backgroundColor: 'transparent'\n              }}\n            >\n              {!isNaN(parseFloat(rating)) ? Math.ceil(parseFloat(rating)) + '%' : '-'}\n            </Box>\n          }\n          isLoading={isLoading}\n        />\n      </Box>\n    </Box>\n  );\n};\n","import React, { Dispatch, SetStateAction, RefObject } from 'react';\nimport { Autocomplete, TextField } from '@mui/material';\nimport { useQuery } from '@tanstack/react-query';\nimport Api from '../../API';\nimport { ApplicationAction } from '../../types';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport { IError } from '../../../SmartForms/types';\nimport { IFormsOption } from '../../types';\nimport { styles } from '../styles';\n\nexport default function FormsDropdown({\n  selectedForm,\n  setSelectedForm,\n  dispatch,\n  dropdownLabel,\n  error,\n  innerRef,\n  applicationId\n}: {\n  selectedForm: IFormsOption | null;\n  setSelectedForm: Dispatch<SetStateAction<IFormsOption | null>>;\n  dispatch: Dispatch<ApplicationAction>;\n  dropdownLabel?: string;\n  error?: string;\n  innerRef?: RefObject<HTMLDivElement>;\n  applicationId?: number;\n}) {\n  const { data: smartForms, isLoading: loadingSmartForms } = useQuery({\n    queryKey: ['smart forms'],\n    queryFn: async () => {\n      const { res } = await Api.getSmartForms({\n        override_limit: true,\n        limit: 500,\n        enabled: true,\n        application_id: applicationId\n      });\n      return res.smart_forms;\n    },\n    onError: (error: IError) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: error.errors.join(', '), state: 'error' }\n      })\n  });\n\n  return (\n    <Autocomplete\n      disablePortal\n      options={smartForms || []}\n      getOptionLabel={(option) => option.name}\n      value={selectedForm}\n      sx={{ ...sharedClasses.formAutocomplete, width: '100%', marginTop: 5, flexGrow: 1 }}\n      loading={loadingSmartForms}\n      loadingText=\"Loading forms...\"\n      ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n      renderInput={(params) => (\n        <TextField\n          {...params}\n          label={dropdownLabel || 'Select form'}\n          placeholder=\"Please select\"\n          InputLabelProps={{ shrink: true }}\n          sx={styles.autoCompleteTextfield}\n          required\n          helperText={error}\n          ref={innerRef}\n        />\n      )}\n      onChange={(event, value) => setSelectedForm(value)}\n    />\n  );\n}\n","import React, { Dispatch, SetStateAction } from 'react';\nimport FormRadioButtonGroup from '../../../Components/CustomUIElements/FormRadioButtonGroup';\n\nexport default function NotificationOptionSwitch({\n  setNotification,\n  notification\n}: {\n  setNotification: Dispatch<SetStateAction<string>>;\n  notification: string;\n}) {\n  return (\n    <FormRadioButtonGroup\n      options={[\n        {\n          label: 'Email',\n          value: 'email'\n        },\n        {\n          label: 'SMS',\n          value: 'sms'\n        }\n      ]}\n      onChange={(value) => setNotification(value.toString())}\n      directionRow\n      color={'#939393'}\n      defaultValue={notification}\n      groupLabel=\"Choose notification preference\"\n    />\n  );\n}\n","import React, { useRef, useState } from 'react';\nimport {\n  ApplicationAction,\n  ApplicationState,\n  IApplication,\n  IAttachment,\n  ITimestamp,\n  IVideoInterview\n} from '../../types';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { Box, Stack } from '@mui/material';\nimport TableSkeleton from '../../../Components/Multiposter/TableSkeleton';\nimport { TIMESTAMP_REGEX } from '../../../constants';\nimport { useCurrentTime, useTimestampData } from '../../helper';\nimport { TimestampTableForm } from './TimestampTableForm';\nimport { timeStringToSeconds } from '../../config';\nimport { TimestampTableRow } from './TimestampTableRow';\n\nconst TimestampTable = ({\n  selectedAttachment,\n  dispatch,\n  videoRef,\n  ApplicationState\n}: {\n  selectedAttachment: IAttachment | IVideoInterview;\n  dispatch: React.Dispatch<ApplicationAction>;\n  videoRef: React.RefObject<HTMLVideoElement>;\n  ApplicationState: ApplicationState;\n}) => {\n  const [newTimestamp, setNewTimestamp] = useState<ITimestamp>({\n    id: null,\n    name: '',\n    value: ''\n  });\n  const [currentTime, setCurrentTime] = useState<string>('00:00:00');\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const listRef = useRef<HTMLDivElement>(null);\n  const isTimestampValid = (timestamp: ITimestamp): boolean => {\n    let isValid = true;\n    const errorMessages = {\n      nameMessage: '',\n      valueMessage: ''\n    };\n\n    if (!(timestamp.value as string).match(TIMESTAMP_REGEX)) {\n      errorMessages.valueMessage = 'Invalid timestamp format - must be HH:MM:SS';\n      isValid = false;\n    } else if (\n      videoRef.current &&\n      videoRef.current.duration < timeStringToSeconds(timestamp.value as string)\n    ) {\n      errorMessages.valueMessage = 'Timestamp is longer than video';\n      isValid = false;\n    }\n    if (timestamp.name.length === 0) {\n      errorMessages.nameMessage = 'Timestamp name cannot be empty';\n      isValid = false;\n    }\n\n    if (errorMessages.nameMessage || errorMessages.valueMessage) {\n      dispatch({\n        type: 'SET_TIMESTAMP_STATE',\n        payload: {\n          name: 'timestampError',\n          value: {\n            ...ApplicationState.timeStampState.timestampError,\n            ...errorMessages,\n            id: timestamp.id\n          }\n        }\n      });\n    }\n    return isValid;\n  };\n\n  const {\n    timestampData,\n    loadingTimestampData,\n    updateTimestamp,\n    updatingTimestamp,\n    addTimestamp,\n    deleteTimestamp\n  } = useTimestampData({\n    selectedAttachment,\n    dispatch,\n    listRef,\n    application,\n    newTimestamp,\n    setNewTimestamp\n  });\n  useCurrentTime(videoRef, setCurrentTime);\n\n  const hasBookmarkData = timestampData && 'bookmarks' in timestampData;\n\n  const tableRows = (hasBookmarkData ? timestampData.bookmarks : timestampData?.timestamps)?.map(\n    (timestamp) => (\n      <TimestampTableRow\n        key={timestamp.id}\n        timestamp={timestamp}\n        updateTimestamp={updateTimestamp}\n        updatingTimestamp={updatingTimestamp}\n        deleteTimestamp={deleteTimestamp}\n        videoRef={videoRef}\n        dispatch={dispatch}\n        isTimestampValid={isTimestampValid}\n        ApplicationState={ApplicationState}\n        newTimestamp={newTimestamp}\n        setNewTimestamp={setNewTimestamp}\n      />\n    )\n  );\n\n  return (\n    <>\n      <Stack\n        ref={listRef}\n        maxHeight={150}\n        overflow={'scroll'}\n        gap={1}\n        sx={{ paddingBottom: '20px' }}\n      >\n        {loadingTimestampData ? (\n          <TableSkeleton size={3} borderType={'none'} padding={'5px 0px'} />\n        ) : (\n          <>{tableRows}</>\n        )}\n\n        <Box sx={{ height: '0px' }}>&nbsp;</Box>\n      </Stack>\n\n      <TimestampTableForm\n        videoRef={videoRef}\n        ApplicationState={ApplicationState}\n        isTimestampValid={isTimestampValid}\n        addTimestamp={addTimestamp}\n        dispatch={dispatch}\n        newTimestamp={newTimestamp}\n        setNewTimestamp={setNewTimestamp}\n        currentTime={currentTime}\n      />\n    </>\n  );\n};\n\nexport default TimestampTable;\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { ApplicationAction, ApplicationState, ITimestamp } from '../../types';\nimport { Grid, IconButton, Stack } from '@mui/material';\nimport { FormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport { styles } from '../styles';\nimport { Add as AddIcon } from '@mui/icons-material';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\n\nexport const TimestampTableForm = ({\n  videoRef,\n  ApplicationState,\n  isTimestampValid,\n  addTimestamp,\n  dispatch,\n  newTimestamp,\n  setNewTimestamp,\n  currentTime\n}: {\n  videoRef: React.RefObject<HTMLVideoElement>;\n  ApplicationState: ApplicationState;\n  isTimestampValid: (timestamp: ITimestamp) => boolean;\n  addTimestamp: () => void;\n  dispatch: Dispatch<ApplicationAction>;\n  newTimestamp: ITimestamp;\n  setNewTimestamp: Dispatch<SetStateAction<ITimestamp>>;\n  currentTime: string;\n}) => {\n  const { hasTyped, timestampError } = ApplicationState.timeStampState;\n  const isAddingTimestamp = newTimestamp.id === null;\n  const hasError = timestampError.id === null;\n\n  const handleFieldChange =\n    (field: keyof ITimestamp) => (e: React.ChangeEvent<HTMLInputElement>) => {\n      if (!isAddingTimestamp) return;\n      setNewTimestamp({ ...newTimestamp, [field]: e.target.value });\n      if (field === 'value') {\n        dispatch({ type: 'SET_TIMESTAMP_STATE', payload: { name: 'hasTyped', value: true } });\n      }\n    };\n\n  const handleFocusBehavior = () => {\n    if (isAddingTimestamp && !hasTyped) {\n      setNewTimestamp({ ...newTimestamp, value: currentTime });\n    }\n    if (isAddingTimestamp) {\n      videoRef.current?.pause();\n    }\n  };\n\n  const handleNewTimestamp = () => {\n    if (isAddingTimestamp && !hasTyped) {\n      setNewTimestamp({ ...newTimestamp, value: currentTime });\n    }\n  };\n\n  return (\n    <Grid container spacing={2} columns={12}>\n      <Grid item xs={5}>\n        <FormTextField\n          value={newTimestamp.id ? '' : newTimestamp.name}\n          onChange={handleFieldChange('name')}\n          styles={styles.timeStampInput}\n          placeholder={'Add timestamp title'}\n          draggable={!isAddingTimestamp}\n          fullWidth={true}\n          onFocus={handleFocusBehavior}\n          error={hasError ? timestampError.nameMessage : ''}\n        />\n      </Grid>\n      <Grid item xs={2}>\n        <FormTextField\n          value={newTimestamp.id ? '' : timestampError.id !== null ? '' : newTimestamp.value}\n          onChange={handleFieldChange('value')}\n          styles={styles.timeStampInput}\n          placeholder={currentTime}\n          draggable={!isAddingTimestamp}\n          fullWidth={true}\n          onFocus={handleFocusBehavior}\n          onBlur={handleNewTimestamp}\n          error={hasError ? timestampError.valueMessage : ''}\n          noWrapError={true}\n        />\n      </Grid>\n      <Grid item xs={5}>\n        <Stack direction={'row'}>\n          <IconButton\n            id=\"add-timestamp-button\"\n            sx={styles.tableActionIcon}\n            onClick={() => {\n              if (isTimestampValid(newTimestamp) && addTimestamp) addTimestamp();\n            }}\n            disabled={!isAddingTimestamp}\n          >\n            <AddIcon sx={{ color: theme.palette.primary.main, fontSize: '15px' }} />\n          </IconButton>\n        </Stack>\n      </Grid>\n    </Grid>\n  );\n};\n","import { ApplicationAction, ApplicationState, ITimestamp } from '../../types';\nimport React, { Dispatch, SetStateAction } from 'react';\nimport { Box, CircularProgress, Grid, IconButton, Stack } from '@mui/material';\nimport { FormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport { styles } from '../styles';\nimport {\n  Close as CloseIcon,\n  Delete as DeleteIcon,\n  Done as DoneIcon,\n  Edit as EditIcon\n} from '@mui/icons-material';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\nimport { timeStringToSeconds } from '../../config';\n\nexport const TimestampTableRow = ({\n  timestamp,\n  updateTimestamp,\n  updatingTimestamp,\n  deleteTimestamp,\n  videoRef,\n  isTimestampValid,\n  dispatch,\n  ApplicationState,\n  setNewTimestamp,\n  newTimestamp\n}: {\n  timestamp: ITimestamp;\n  updateTimestamp: () => void;\n  updatingTimestamp: boolean;\n  deleteTimestamp: (id: number | string) => void;\n  videoRef: React.RefObject<HTMLVideoElement>;\n  isTimestampValid: (timestamp: ITimestamp) => boolean;\n  dispatch: React.Dispatch<ApplicationAction>;\n  ApplicationState: ApplicationState;\n  setNewTimestamp: Dispatch<SetStateAction<ITimestamp>>;\n  newTimestamp: ITimestamp;\n}) => {\n  const { timestampError } = ApplicationState.timeStampState;\n  const isEditingCurrentTimestamp = newTimestamp.id === timestamp.id;\n  const hasError = timestampError.id === timestamp.id;\n  const clearTimestampError = () => {\n    dispatch({\n      type: 'SET_TIMESTAMP_STATE',\n      payload: {\n        name: 'timestampError',\n        value: {\n          nameMessage: '',\n          valueMessage: '',\n          id: null\n        }\n      }\n    });\n  };\n  const handleEditClick = (timestamp: ITimestamp) => {\n    setNewTimestamp(timestamp);\n    if (!hasError) {\n      clearTimestampError();\n    }\n    dispatch({ type: 'SET_TIMESTAMP_STATE', payload: { name: 'hasTyped', value: false } });\n  };\n  const seekToTimestamp = (time: string | number) => {\n    if (videoRef.current) {\n      videoRef.current.currentTime = timeStringToSeconds(time.toString());\n      videoRef.current.play();\n    }\n  };\n\n  const renderNameField = () => (\n    <FormTextField\n      value={newTimestamp.name}\n      onChange={(e) => setNewTimestamp({ ...newTimestamp, name: e.target.value })}\n      styles={styles.timeStampInput}\n      placeholder={`${timestamp.name}`}\n      fullWidth={true}\n      error={hasError ? timestampError.nameMessage : ''}\n    />\n  );\n\n  const renderValueField = () => (\n    <FormTextField\n      value={newTimestamp.value}\n      onChange={(e) => setNewTimestamp({ ...newTimestamp, value: e.target.value })}\n      styles={styles.timeStampInput}\n      placeholder={`${timestamp.value}`}\n      fullWidth={true}\n      error={hasError ? timestampError.valueMessage : ''}\n      noWrapError={true}\n    />\n  );\n\n  const renderActionButtons = () => (\n    <Stack direction={'row'}>\n      <IconButton\n        id=\"save-timestamp-button\"\n        sx={styles.tableActionIcon}\n        onClick={() => {\n          if (isTimestampValid(newTimestamp)) {\n            clearTimestampError();\n            updateTimestamp();\n          }\n        }}\n      >\n        <DoneIcon sx={{ color: '#5BC4C0', cursor: 'pointer', fontSize: '15px' }} />\n      </IconButton>\n      <IconButton\n        id=\"cancel-timestamp-button\"\n        onClick={() => {\n          setNewTimestamp({ id: null, name: '', value: '' });\n          if (hasError) clearTimestampError();\n        }}\n      >\n        <CloseIcon focusable={false} sx={{ ...styles.clickableGreyIcon, fontSize: '15px' }} />\n      </IconButton>\n    </Stack>\n  );\n\n  const renderDefaultControls = () => (\n    <Stack direction={'row'}>\n      <IconButton\n        id=\"edit-timestamp-button\"\n        sx={styles.tableActionIcon}\n        onClick={() => handleEditClick(timestamp)}\n      >\n        <EditIcon sx={{ color: theme.palette.common.grey, fontSize: '15px' }} />\n      </IconButton>\n      <IconButton\n        id=\"delete-timestamp-button\"\n        sx={styles.tableActionIcon}\n        onClick={() => timestamp.id && deleteTimestamp(timestamp.id)}\n      >\n        <DeleteIcon sx={{ color: theme.palette.error.main, fontSize: '15px' }} />\n      </IconButton>\n    </Stack>\n  );\n\n  const renderItem = (field: keyof Pick<ITimestamp, 'name' | 'value'>) => {\n    const fieldValue = timestamp[field];\n    return (\n      <Box onClick={() => seekToTimestamp(timestamp.value)} sx={styles.timeStampItem}>\n        {fieldValue}\n      </Box>\n    );\n  };\n\n  return (\n    <Grid container spacing={2} key={timestamp.id} columns={12}>\n      <Grid item xs={5} alignContent={'baseline'}>\n        {isEditingCurrentTimestamp ? renderNameField() : renderItem('name')}\n      </Grid>\n      <Grid item xs={2}>\n        {isEditingCurrentTimestamp ? renderValueField() : renderItem('value')}\n      </Grid>\n      <Grid item xs={5}>\n        {isEditingCurrentTimestamp || hasError ? (\n          updatingTimestamp ? (\n            <CircularProgress size={15} sx={{ margin: '8px 0px 0px 6px' }} />\n          ) : (\n            renderActionButtons()\n          )\n        ) : (\n          renderDefaultControls()\n        )}\n      </Grid>\n    </Grid>\n  );\n};\n","import React, { Dispatch, useState } from 'react';\nimport { Autocomplete, Stack, TextField } from '@mui/material';\nimport StyledModal from '../../Components/GenericModal/StyledModal';\nimport { useQuery, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport { ApplicationAction, ApplicationState, IApplication } from '../types';\nimport { ModalType } from '../config';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport ModalFooterButtons from '../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from './styles';\nimport { IError } from '../../SmartForms/types';\nimport { IApprovalTemplate } from '../../ApprovalForms/ApprovalTemplates/types';\n\nexport default function CreateApproval({\n  ApplicationState,\n  dispatch\n}: {\n  ApplicationState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n}) {\n  const [selectedTemplate, setSelectedTemplate] = useState<IApprovalTemplate | null>(null);\n  const [movingPage, setMovingPage] = useState<boolean>(false);\n  const [templateError, setTemplateError] = useState<string>('');\n  const { modalsOpen } = ApplicationState;\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n\n  const { data: approvalTemplates, isLoading: loadingApprovalTemplates } = useQuery({\n    queryKey: ['approval templates'],\n    queryFn: async () => {\n      const { res } = await Api.getApprovalTemplates();\n      return res.enabled_requisition_forms;\n    },\n    onError: (error: IError) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: error.errors.join(', '), state: 'error' }\n      })\n  });\n\n  const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n  return (\n    <StyledModal\n      isOpen={modalsOpen === ModalType.CREATE_APPROVAL}\n      label=\"Move application modal\"\n      handleClose={handleClose}\n      styleOverrides={styles.modalStyleOverrides}\n    >\n      <Stack sx={styles.modalContainer}>\n        <Stack sx={styles.modalTitle}>New approval form</Stack>\n        <Stack sx={{ paddingRight: '4px', overflow: 'auto', paddingBottom: 3 }}>\n          <Autocomplete\n            disablePortal\n            options={approvalTemplates || []}\n            getOptionLabel={(option) => option.name}\n            value={selectedTemplate}\n            sx={{ ...sharedClasses.formAutocomplete, width: '100%', marginTop: 4, flexGrow: 1 }}\n            loading={loadingApprovalTemplates}\n            loadingText=\"Loading approval templates...\"\n            ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n            renderInput={(params) => (\n              <TextField\n                {...params}\n                label=\"Select an approval template\"\n                placeholder=\"Please select\"\n                InputLabelProps={{ shrink: true }}\n                sx={sharedClasses.autoCompleteTextfield}\n                helperText={templateError}\n                required\n              />\n            )}\n            onChange={(event, value) => {\n              value && setTemplateError('');\n              setSelectedTemplate(value);\n            }}\n          />\n        </Stack>\n        <ModalFooterButtons\n          primaryButtonText=\"Confirm\"\n          primaryButtonCallback={() => {\n            if (selectedTemplate) {\n              setMovingPage(true);\n              window.location.href = `/admin/requisitions/new?form_id=${selectedTemplate?.id}&job_id=${application?.job.id}&application_id=${application?.id}`;\n            } else {\n              setTemplateError('Must select a template');\n            }\n          }}\n          secondaryButtonText=\"Cancel\"\n          secondaryButtonCallback={handleClose}\n          isLoading={movingPage}\n          primaryButtonMinWidth=\"95px\"\n        />\n      </Stack>\n    </StyledModal>\n  );\n}\n","import React, { useState } from 'react';\nimport { ApplicationAction } from '../types';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport { Box, Stack } from '@mui/material';\nimport { FormTextField } from '../../Components/CustomUIElements/FormTextField';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport { IApplication } from '../types';\n\nexport function DeleteApplication({\n  dispatch,\n  isDialogOpen\n}: {\n  dispatch: React.Dispatch<ApplicationAction>;\n  isDialogOpen: boolean;\n}) {\n  const [confirmDelete, setConfirmDelete] = useState<string>('');\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n\n  const deleteApplication = useMutation({\n    mutationFn: async () => {\n      if (application) {\n        const { res } = await Api.deleteApplication(application?.job.id, application.id);\n        return res;\n      }\n    },\n    onSuccess: () => {\n      window.location.href = `${window.location.origin}/admin/jobs/${application?.job.id}?applications=true`;\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `${application?.candidate?.firstname} ${application?.candidate?.lastname} successfully deleted`,\n          state: 'success'\n        }\n      });\n    },\n    onError: (error) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: `There was an error deleting application, ${error}`, state: 'error' }\n      });\n    },\n    onSettled: () => {\n      dispatch({\n        type: 'SET_MODALS_OPEN',\n        payload: null\n      });\n    }\n  });\n\n  const dialogDescription = (\n    <Stack sx={{ color: '#000000', rowGap: 1 }}>\n      <Box>\n        This will <b>permanently</b> delete the application and all\n      </Box>\n      <Box>associated tasks, notes, and all events and invitations.</Box>\n      <Stack sx={{ rowGap: 1, alignItems: 'center' }}>\n        <Box sx={{ color: '#939393', fontSize: '14px', '& b': { color: '#000000' } }}>\n          Type the word <b>DELETE</b> in the text field below to\n          <Box>confirm deletion</Box>\n        </Box>\n        <FormTextField value={confirmDelete} onChange={(e) => setConfirmDelete(e.target.value)} />\n      </Stack>\n    </Stack>\n  );\n  return (\n    <GenericDialog\n      isDialogOpen={isDialogOpen}\n      setDialogOpen={() => {\n        dispatch({\n          type: 'SET_MODALS_OPEN',\n          payload: null\n        });\n      }}\n      title=\"Are you sure you want to delete this application?\"\n      description={dialogDescription}\n      buttonCallback={() => deleteApplication.mutate()}\n      callbackLoading={deleteApplication.isLoading}\n      buttonText=\"Delete\"\n      url=\"\"\n      disablePrimaryButton={confirmDelete !== 'DELETE'}\n      primaryButtonId=\"confirm-delete-application-button\"\n      secondaryButtonId=\"cancel-delete-application-button\"\n    />\n  );\n}\n","import React from 'react';\nimport { ApplicationAction, IApplication, IAttachment, IVideoInterview } from '../types';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport { Box, Stack } from '@mui/material';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport { theme } from '../../../ThemeContext/ThemeObject';\n\nexport function DeleteAttachment({\n  dispatch,\n  isDialogOpen,\n  selectedAttachment\n}: {\n  dispatch: React.Dispatch<ApplicationAction>;\n  isDialogOpen: boolean;\n  selectedAttachment: IAttachment | IVideoInterview;\n}) {\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const isVideoInterview = 'watch_interview_link' in selectedAttachment;\n  const deleteApi = () => {\n    if (!application || !selectedAttachment) return;\n    if (isVideoInterview) {\n      return Api.deleteVideoInterview(application.id);\n    } else {\n      return Api.deleteAttachment(application.job.id, application.id, selectedAttachment.id);\n    }\n  };\n  const deleteAttachment = useMutation({\n    mutationFn: async () => {\n      if (application && selectedAttachment) {\n        const { res } = await deleteApi();\n        return res;\n      }\n    },\n    onSuccess: () => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `File successfully deleted`,\n          state: 'success'\n        }\n      });\n      queryClient.removeQueries(['attachments']);\n    },\n    onError: (error) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: `There was an error deleting attachment, ${error}`, state: 'error' }\n      });\n    },\n    onSettled: () => {\n      dispatch({\n        type: 'SET_SELECTED_ATTACHMENT_ACTION',\n        payload: { delete: null, preview: null }\n      });\n    }\n  });\n\n  const dialogDescription = (\n    <Stack sx={{ color: theme.palette.common.grey, rowGap: 1, fontWeight: 400 }}>\n      <Box>Are you sure you want to delete</Box>\n      <Box>this file?</Box>\n    </Stack>\n  );\n  return (\n    <GenericDialog\n      isDialogOpen={isDialogOpen}\n      setDialogOpen={() => {\n        dispatch({\n          type: 'SET_SELECTED_ATTACHMENT_ACTION',\n          payload: { delete: null, preview: null }\n        });\n      }}\n      title=\"Delete file?\"\n      description={dialogDescription}\n      buttonCallback={() => deleteAttachment.mutate()}\n      callbackLoading={deleteAttachment.isLoading}\n      buttonText=\"Delete\"\n      url=\"\"\n      primaryButtonId=\"confirm-delete-attachment-button\"\n      secondaryButtonId=\"cancel-delete-attachment-button\"\n    />\n  );\n}\n","import React from 'react';\nimport { ApplicationAction, ApplicationState, IApplication } from '../types';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport { Box, Stack } from '@mui/material';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport { theme } from '../../../ThemeContext/ThemeObject';\n\nexport function DeleteFormResponse({\n  dispatch,\n  ApplicationState,\n  formResponseId\n}: {\n  dispatch: React.Dispatch<ApplicationAction>;\n  ApplicationState: ApplicationState;\n  formResponseId: number;\n}) {\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n\n  const deleteFormResponse = useMutation({\n    mutationFn: async () => {\n      if (application && formResponseId) {\n        const { res } = await Api.deleteFormResponse(\n          application.job.id,\n          application.id,\n          formResponseId\n        );\n        return res;\n      }\n    },\n    onSuccess: () => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `Form response successfully deleted`,\n          state: 'success'\n        }\n      });\n      queryClient.removeQueries(['formResponses']);\n    },\n    onError: (error) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: `There was an error deleting form response, ${error}`, state: 'error' }\n      });\n    },\n    onSettled: () => {\n      dispatch({\n        type: 'SET_SELECTED_FORM_RESPONSE_ACTION',\n        payload: { delete: null, edit: null }\n      });\n    }\n  });\n\n  const dialogDescription = (\n    <Stack sx={{ color: theme.palette.common.grey, rowGap: 1, fontWeight: 400 }}>\n      <Box>Are you sure you want to delete</Box>\n      <Box>this form response?</Box>\n    </Stack>\n  );\n\n  return (\n    <GenericDialog\n      isDialogOpen={!!ApplicationState.selectedFormResponseAction.delete}\n      setDialogOpen={() => {\n        dispatch({\n          type: 'SET_SELECTED_FORM_RESPONSE_ACTION',\n          payload: { delete: null, edit: null }\n        });\n      }}\n      title=\"Delete form response?\"\n      description={dialogDescription}\n      buttonCallback={() => deleteFormResponse.mutate()}\n      callbackLoading={deleteFormResponse.isLoading}\n      buttonText=\"Delete\"\n      url=\"\"\n      primaryButtonId=\"confirm-delete-form-button\"\n      secondaryButtonId=\"cancel-delete-form-button\"\n    />\n  );\n}\n","import React, { Dispatch, useEffect, useRef, useState } from 'react';\nimport { CircularProgress, Stack } from '@mui/material';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\n\nimport StyledModal from '../../Components/GenericModal/StyledModal';\nimport { IApplicantQuestion } from '../../Components/Utilities/QuestionFieldGenerator';\nimport ModalFooterButtons from '../../Components/GenericModal/ModalFooterButtons';\nimport { createQuestionErrorsObject } from '../../ApprovalForms/NewApproval/NewApproval';\nimport Api from '../API';\nimport { validateForm } from '../SmartFormsTab/validate-form-submission';\nimport { getAnswerValue } from '../SmartFormsTab/get-answer-value';\nimport { ApplicationAction, ApplicationState, IApplication } from '../types';\nimport { styles } from './styles';\nimport { getAnswerAttributes } from '../SmartFormsTab/get-answer-attributes';\nimport { useFormQuestions, useFormResponse } from '../helper';\nimport QuestionsAndRatings from '../OverviewTab/QuestionsAndRatings';\nimport { ExitConfirmationModal } from './ExitConfirmationModal';\n\nexport default function EditFormResponseModal({\n  ApplicationState,\n  dispatch,\n  selectedFormId,\n  EditingFormResponseId,\n  FormName\n}: {\n  ApplicationState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n  selectedFormId: number;\n  EditingFormResponseId: number;\n  FormName: string;\n}) {\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const questionsRef = useRef<Array<HTMLDivElement | null>>([]);\n  const [answers, setAnswers] = useState<\n    Record<number, string | number | Record<string, string | boolean>>\n  >({});\n  const [questions, setQuestions] = useState<IApplicantQuestion[]>([]);\n  const [questionErrors, setQuestionErrors] = useState<Record<number, string>>(\n    createQuestionErrorsObject(questions)\n  );\n  const [exitConfirmation, setExitConfirmation] = useState<boolean>(false);\n\n  const { data: formResponse, isLoading: loadingFormResponse } = useFormResponse({\n    FormResponseId: EditingFormResponseId,\n    dispatch,\n    application\n  });\n  const { formQuestions, loadingFormQuestions } = useFormQuestions({\n    application,\n    selectedFormId,\n    dispatch,\n    formResponseId: EditingFormResponseId\n  });\n\n  // for each question, store the rating value from the form response.rating\n  const [ratings, setRatings] = useState<Record<number, number>>({});\n  const { mutate: editForm, isLoading: editingForm } = useMutation({\n    mutationFn: async () => {\n      if (application && EditingFormResponseId) {\n        const { res } = await Api.editFormResponse(\n          application.job.id,\n          application.id,\n          EditingFormResponseId,\n          answersAttributes\n        );\n        return res;\n      }\n    },\n    onSuccess: (res) => {\n      queryClient.removeQueries(['formQuestionAndAnswers', EditingFormResponseId]);\n      queryClient.removeQueries(['formResponses']);\n      queryClient.removeQueries(['formQuestions', selectedFormId, EditingFormResponseId]);\n      dispatch({ type: 'SET_SNACKBAR', payload: { message: res.success, state: 'success' } });\n      handleClose();\n    },\n    onError: () =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: `Failed to save form response`, state: 'error' }\n      })\n  });\n\n  useEffect(() => {\n    if (formResponse && formQuestions) {\n      const initialAnswers = formQuestions.reduce(\n        (acc, q, index) => {\n          acc[q.id] = getAnswerValue(q, index, formResponse);\n          return acc;\n        },\n        {} as Record<number, string | number | Record<string, string | boolean>>\n      );\n      const initialRatings = formQuestions.reduce(\n        (acc, q, index) => {\n          acc[q.id] = formResponse[index]?.rating;\n          return acc;\n        },\n        {} as Record<number, number>\n      );\n      setAnswers(initialAnswers);\n      setRatings(initialRatings);\n      setQuestions(formQuestions);\n    }\n  }, [formResponse, formQuestions]);\n\n  const handleClose = () => {\n    dispatch({\n      type: 'SET_SELECTED_FORM_RESPONSE_ACTION',\n      payload: { edit: null, delete: null }\n    });\n  };\n\n  const answersAttributes: any = {};\n  if (questions && formResponse) {\n    questions.forEach((question, index) => {\n      answersAttributes[index] = getAnswerAttributes(\n        question,\n        index,\n        answers,\n        ratings,\n        formResponse\n      );\n    });\n  }\n  const handleSubmit = () =>\n    validateForm(questions, answers, setQuestionErrors, questionsRef) && editForm();\n\n  if (!application) return null;\n\n  return (\n    <StyledModal\n      isOpen={!!ApplicationState.selectedFormResponseAction.edit}\n      label=\"Edit form response modal\"\n      handleClose={() => setExitConfirmation(true)}\n      styleOverrides={{ ...styles.modalStyleOverrides, ...styles.wideModal }}\n    >\n      <Stack sx={styles.modalContainer}>\n        <Stack sx={styles.modalTitle}>{FormName}</Stack>\n        {loadingFormResponse || loadingFormQuestions ? (\n          <Stack sx={styles.loaderContainer}>\n            <CircularProgress size={60} sx={{ color: '#084D6D' }} />\n            Loading Form\n          </Stack>\n        ) : (\n          <QuestionsAndRatings\n            questions={questions}\n            questionErrors={questionErrors}\n            setQuestionErrors={setQuestionErrors}\n            ratings={ratings}\n            setRatings={setRatings}\n            setAnswers={setAnswers}\n            questionsRef={questionsRef}\n            formResponseAnswers={formResponse}\n          />\n        )}\n        <ModalFooterButtons\n          primaryButtonText={'Save'}\n          primaryButtonCallback={handleSubmit}\n          secondaryButtonText=\"Cancel\"\n          secondaryButtonCallback={() => setExitConfirmation(true)}\n          primaryButtonMinWidth={'95px'}\n          isLoading={editingForm}\n        />\n      </Stack>\n      <ExitConfirmationModal\n        exitConfirmation={exitConfirmation}\n        setExitConfirmation={setExitConfirmation}\n        handleClose={handleClose}\n      />\n    </StyledModal>\n  );\n}\n","import React, { Dispatch, useRef, useState } from 'react';\nimport StyledModal from '../../../NewUI/Components/GenericModal/StyledModal';\nimport { emailIsValid } from '../../../NewUI/Components/Utilities/emailIsValid';\nimport { Checkbox, FormControlLabel, Stack } from '@mui/material';\nimport MultiTagInput from '../../../NewUI/Components/CustomUIElements/MultiTagInput';\nimport { sharedClasses } from '../../../NewUI/Components/CustomUIElements/sharedClasses';\nimport ModalFooterButtons from '../../../NewUI/Components/GenericModal/ModalFooterButtons';\nimport { ApplicationState, ApplicationAction, IApplication } from '../types';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { ModalType } from '../config';\nimport { styles } from './styles';\nimport { MultilineFormTextField } from '../../Components/CustomUIElements/FormTextField';\nimport Api from '../API';\n\nexport default function EmailExternal({\n  ApplicationState,\n  dispatch,\n  aiSummariesEnabled\n}: {\n  ApplicationState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n  aiSummariesEnabled: boolean;\n}) {\n  const [emails, setEmails] = useState<string[]>([]);\n  const [submissionError, setSubmissionError] = useState<string>('');\n  const [includeAttachments, setIncludeAttachments] = useState<boolean>(false);\n  const [includeSmartForms, setIncludeSmartForms] = useState<boolean>(false);\n  const [includeSummary, setIncludeSummary] = useState<boolean>(false);\n  const [notes, setNotes] = useState<string>('');\n  const emailInputRef = useRef<HTMLDivElement>(null);\n  const { modalsOpen } = ApplicationState;\n\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n\n  const handleClose = () => {\n    dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n  };\n\n  const { mutate: sendEmail, isLoading: sendingEmail } = useMutation({\n    mutationFn: async () => {\n      if (application) {\n        const { res } = await Api.sendExternalEmails(application.job.id, {\n          application_ids: [application.id],\n          external_view: {\n            emails: emails.join(','),\n            full_view: includeAttachments,\n            smart_forms: includeSmartForms,\n            include_summary: includeSummary,\n            notes\n          }\n        });\n        return res;\n      }\n    },\n    onSuccess: (res) => {\n      dispatch({ type: 'SET_SNACKBAR', payload: { message: res.message, state: 'success' } });\n      handleClose();\n    },\n    onError: (e: { errors: string; status: number }) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message:\n            e.errors ??\n            'Error sending emails, please try again or contact support if the issue persists',\n          state: 'error'\n        }\n      })\n  });\n\n  return (\n    <StyledModal\n      isOpen={modalsOpen === ModalType.EMAIL_EXTERNAL}\n      handleClose={handleClose}\n      label=\"External Email\"\n      styleOverrides={styles.modalStyleOverrides}\n    >\n      <Stack sx={styles.modalContainer}>\n        <Stack sx={styles.modalTitle}>Email external</Stack>\n        <Stack sx={{ rowGap: 2, overflow: 'auto' }}>\n          <Stack sx={{ fontSize: '18px', fontWeight: 'bold', color: '#666666' }}>\n            Recipient details\n          </Stack>\n          <Stack ref={emailInputRef}>\n            <MultiTagInput\n              tags={emails}\n              setTags={setEmails}\n              validation={emailIsValid}\n              validationMessage=\"Must input valid email\"\n              label=\"Email address/s\"\n              width=\"100%\"\n              error={submissionError}\n              tagType=\"emails\"\n              helperText=\"To copy and paste bulk emails, email addresses must be separated with a comma\"\n              required\n            />\n            <Stack sx={{ flexDirection: 'row', columnGap: 2, marginLeft: '3px' }}>\n              <FormControlLabel\n                control={\n                  <Checkbox\n                    sx={sharedClasses.formCheckbox}\n                    onChange={(e) => setIncludeAttachments(e.target.checked)}\n                    value={includeAttachments}\n                  />\n                }\n                label=\"Include Attachments\"\n                sx={{\n                  ...sharedClasses.checkboxLabel,\n                  '.MuiFormControlLabel-label': { fontSize: '14px' }\n                }}\n              />\n              <FormControlLabel\n                control={\n                  <Checkbox\n                    sx={sharedClasses.formCheckbox}\n                    onChange={(e) => setIncludeSmartForms(e.target.checked)}\n                    value={includeSmartForms}\n                  />\n                }\n                label=\"Include Smart Forms\"\n                sx={{\n                  ...sharedClasses.checkboxLabel,\n                  '.MuiFormControlLabel-label': { fontSize: '14px' }\n                }}\n              />\n              {aiSummariesEnabled && (\n                <FormControlLabel\n                  control={\n                    <Checkbox\n                      sx={sharedClasses.formCheckbox}\n                      onChange={(e) => setIncludeSummary(e.target.checked)}\n                      value={includeSummary}\n                    />\n                  }\n                  label=\"Include Felix AI Summary\"\n                  sx={{\n                    ...sharedClasses.checkboxLabel,\n                    '.MuiFormControlLabel-label': { fontSize: '14px' }\n                  }}\n                />\n              )}\n            </Stack>\n          </Stack>\n          <MultilineFormTextField\n            label=\"Notes\"\n            rows={4}\n            value={notes}\n            onChange={(e) => setNotes(e.target.value)}\n            styles={{ marginLeft: '3px', paddingRight: '4px' }}\n          />\n        </Stack>\n        <ModalFooterButtons\n          primaryButtonText=\"Send\"\n          primaryButtonCallback={() =>\n            emails.length ? sendEmail() : setSubmissionError('Must input at least one valid email')\n          }\n          secondaryButtonText=\"Cancel\"\n          secondaryButtonCallback={handleClose}\n          isLoading={sendingEmail}\n          primaryButtonMinWidth=\"75px\"\n        />\n      </Stack>\n    </StyledModal>\n  );\n}\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { Stack } from '@mui/material';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\n\nexport function ExitConfirmationModal({\n  exitConfirmation,\n  setExitConfirmation,\n  handleClose\n}: {\n  exitConfirmation: boolean;\n  setExitConfirmation: Dispatch<SetStateAction<boolean>>;\n  handleClose: () => void;\n}) {\n  const ExitDialogDescription = () => (\n    <Stack>\n      <Stack>Are you sure you want to cancel editing the form?</Stack>\n      <Stack>You will lose any progress you have made.</Stack>\n    </Stack>\n  );\n\n  return (\n    <GenericDialog\n      isDialogOpen={exitConfirmation}\n      setDialogOpen={setExitConfirmation}\n      title=\"Close without submitting?\"\n      description={ExitDialogDescription()}\n      buttonCallback={handleClose}\n      callbackLoading={false}\n      buttonText=\"Yes, close\"\n      secondaryButtonText=\"Back to editing\"\n      url=\"\"\n    />\n  );\n}\n","import React, { useState, Dispatch } from 'react';\nimport { Stack } from '@mui/material';\nimport StyledModal from '../../Components/GenericModal/StyledModal';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport { ApplicationAction, ApplicationState, IApplication } from '../types';\nimport { ModalType } from '../config';\nimport ModalFooterButtons from '../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from './styles';\nimport { SingleDatePicker } from '../../Components/CustomUIElements/SingleDatePicker';\nimport dayjs from 'dayjs';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\n\nexport default function ExportToOnboard({\n  ApplicationState,\n  dispatch\n}: {\n  ApplicationState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n}) {\n  const [startDate, setStartDate] = useState<Date | null>(null);\n  const [dateError, setDateError] = useState<string>('');\n  const { modalsOpen } = ApplicationState;\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n\n  const { mutate: exportToOnboard, isLoading: exportingToOnboard } = useMutation({\n    mutationFn: async () => {\n      if (application && startDate) {\n        const { res } = await Api.exportToOnboard(application.job.id, application.id, startDate);\n        return res;\n      }\n    },\n    onSuccess: (res) => {\n      dispatch({ type: 'SET_SNACKBAR', payload: { message: res.success, state: 'success' } });\n      handleClose();\n    },\n    onError: (error: { error: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error in exporting candidate to onboard, ${error.error}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n\n  const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n  const handleSubmit = () =>\n    startDate ? exportToOnboard() : setDateError('Please select a start date');\n\n  return (\n    <StyledModal\n      isOpen={modalsOpen === ModalType.EXPORT_TO_ONBOARD}\n      label=\"Export to Onboard modal\"\n      handleClose={handleClose}\n      styleOverrides={styles.modalStyleOverrides}\n    >\n      <Stack sx={styles.modalContainer}>\n        <Stack sx={styles.modalTitle}>Export to :Onboard</Stack>\n        <Stack sx={{ paddingBottom: 5, paddingTop: 2, overflow: 'auto' }}>\n          <SingleDatePicker\n            value={startDate}\n            label={`When will ${application?.candidate?.firstname} ${application?.candidate?.lastname} start?`}\n            inputStyles={{ ...sharedClasses.datePicker, width: '50%' }}\n            onChange={(value) => {\n              if (!value?.isValid()) {\n                setDateError('Please input a valid date');\n              } else {\n                setDateError('');\n                setStartDate(dayjs(value.toDate()).toDate());\n              }\n            }}\n            showTodayButton\n            error={dateError}\n            required\n          />\n        </Stack>\n        <ModalFooterButtons\n          primaryButtonText=\"Export\"\n          primaryButtonCallback={handleSubmit}\n          secondaryButtonText=\"Cancel\"\n          secondaryButtonCallback={handleClose}\n          primaryButtonMinWidth=\"95px\"\n          isLoading={exportingToOnboard}\n        />\n      </Stack>\n    </StyledModal>\n  );\n}\n","import React, { Dispatch, useRef, useState } from 'react';\nimport {\n  Autocomplete,\n  Box,\n  Button,\n  Collapse,\n  FormControlLabel,\n  Stack,\n  Switch,\n  TextField\n} from '@mui/material';\nimport { NavigateBefore as NavigateBeforeIcon } from '@mui/icons-material';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { ControlledStaticDatePicker } from '../../Components/CustomUIElements/SingleDatePicker';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { classes } from '../../Job/Applications/styles';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport API from '../API';\nimport { ApplicationAction, ApplicationState, IApplication } from '../types';\nimport { checkMissingPlaceholders, INVITE_TO_TIMESLOT_PLACEHOLDER, ModalType } from '../config';\nimport StyledModal from '../../Components/GenericModal/StyledModal';\nimport { styles } from './styles';\nimport SmsTemplateComponent from '../../Components/CustomUIElements/SmsTemplateComponent';\nimport { useGetEmailTemplate, useGetEvents, useGetSmsTemplatePlaceholders } from '../helper';\nimport EmailsDropdown from './Components/EmailsDropdown';\nimport EmailBodyComponent from './Components/EmailBodyComponent';\nimport NotificationOptionSwitch from './Components/NotificationOptionsSwitch';\nimport { IEventType, IRecruiter } from '../../../ScoutCalendar/types';\nimport { scrollToElement } from '../../utils/scroll-to-element';\nimport { MissingPlaceholdersConfirmationModal } from './MissingPlaceholdersConfirmationModal';\nimport { ISMSTemplate } from '../../Job/types';\nimport { useDispatch } from '../../hooks/useDispatch';\nimport formatToUserTimeZone from '../../utils/formatToUserTimeZone';\n\nexport default function InviteToTimeslot({\n  ApplicationState,\n  dispatch,\n  smsTemplatePermissions\n}: {\n  ApplicationState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n  smsTemplatePermissions: boolean;\n}) {\n  const [recruiter, setRecruiter] = useState<IRecruiter | null>(null);\n  const [eventType, setEventType] = useState<IEventType | null>(null);\n  const [showTimeslots, setShowTimeslots] = useState<boolean>(false);\n  const [selectedDay, setSelectedDay] = useState<Date | null>(new Date());\n  const [step, setStep] = useState<number>(1);\n  const [notification, setNotification] = useState<string>('email');\n  const [smsMessage, setSmsMessage] = useState<string>('');\n  const [smsTemplate, setSmsTemplate] = useState<ISMSTemplate | null>(null);\n  const [selectedEmailTemplate, setSelectedEmailTemplate] = useState<string | null>(null);\n  const [subject, setSubject] = useState<string>('');\n  const [body, setBody] = useState<string>('');\n  const [errors, setErrors] = useState<Record<string, string>>({});\n  const [missingPlaceholderConfirmation, setMissingPlaceholderConfirmation] =\n    useState<boolean>(false);\n  const fieldRefs = {\n    emailTemplate: useRef<HTMLInputElement>(null),\n    body: useRef<HTMLDivElement>(null)\n  };\n  const { modalsOpen, apiKey } = ApplicationState;\n\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n\n  useGetEmailTemplate({ apiKey, selectedEmailTemplate, setBody, dispatch, setSubject });\n  const { events, loadingEvents } = useGetEvents({\n    apiKey,\n    dispatch,\n    eventTypeId: eventType?.id,\n    enabled: !!eventType\n  });\n  const { placeholders } = useGetSmsTemplatePlaceholders({ kind: 'invite', dispatch });\n\n  const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n  const { displayError, displaySuccess } = useDispatch(dispatch);\n\n  const { data: recruiters, isLoading: loadingRecruiters } = useQuery({\n    queryKey: ['recruiters'],\n    queryFn: async () => {\n      const { res } = await API.getRecruiters(apiKey);\n      return res.users;\n    },\n    onError: () => displayError('Failed to fetch recruiters data.')\n  });\n\n  const { data: eventTypes, isLoading: loadingEventTypes } = useQuery({\n    queryKey: ['event types'],\n    queryFn: async () => {\n      const { res } = await API.getEventTypes();\n      return res.event_types;\n    },\n    onError: () => displayError('Failed to fetch event types data.')\n  });\n\n  const { mutate: sendEmail, isLoading: sendingEmail } = useMutation({\n    mutationFn: async () => {\n      if (!recruiter || !eventType || !application || !selectedEmailTemplate) return;\n      const res = await API.inviteByEmail(apiKey, {\n        user_id: recruiter.id,\n        event_type_id: eventType.id,\n        job_id: application.job.id,\n        invitation: {\n          application_ids: [application.id],\n          subject: subject,\n          body: body,\n          email_template_id: selectedEmailTemplate.split(' -')[0]\n        }\n      });\n      return res;\n    },\n    onSuccess: () => {\n      displaySuccess('Invite to timeslot email notification has been sent successfully');\n      handleClose();\n    },\n    onError: () => displayError('Failed to send invite to timeslot email')\n  });\n\n  const { mutate: sendSms, isLoading: sendingSms } = useMutation({\n    mutationFn: async () => {\n      if (!recruiter || !eventType || !application || !smsMessage) return;\n\n      const res = await API.sendInviteSms(\n        application.job.id,\n        eventType.id,\n        [application.id],\n        smsMessage,\n        smsTemplate?.id\n      );\n      if (res.success !== 0) {\n        displaySuccess('Invite to timeslot SMS notification has been sent successfully');\n        handleClose();\n      } else {\n        displayError('There is an error in sending SMS notification');\n      }\n      return res;\n    }\n  });\n\n  const selectedDayEvents = events?.filter(\n    (e) => formatToUserTimeZone(e.begins_at, 'ymd') === formatToUserTimeZone(selectedDay, 'ymd')\n  );\n\n  const shouldDisableDate = (date: Date) => {\n    if (!events) return true;\n    return !events\n      .map((e) => formatToUserTimeZone(e.begins_at, 'ymd'))\n      .includes(formatToUserTimeZone(date, 'ymd'));\n  };\n\n  const buttonName = step === 1 ? 'Next' : 'Send';\n\n  const validateInput = () => {\n    const fieldsErrors: Record<string, string> = {};\n    if (step === 1) {\n      !recruiter && (fieldsErrors.recruiter = 'Must select a recruiter');\n      !eventType && (fieldsErrors.eventType = 'Must select an event type');\n    } else {\n      if (notification === 'email') {\n        !selectedEmailTemplate && (fieldsErrors.template = 'Must select a template');\n        !body.trim() && (fieldsErrors.body = 'Must add email body');\n      } else {\n        !smsMessage.trim() && (fieldsErrors.sms = 'Must add SMS content');\n      }\n    }\n    setErrors(fieldsErrors);\n    if (fieldsErrors.template) {\n      scrollToElement(fieldRefs.emailTemplate);\n    } else if (fieldsErrors.body) {\n      scrollToElement(fieldRefs.body);\n    }\n    return !Object.keys(fieldsErrors).length;\n  };\n\n  const handleEmailSubmission = () => {\n    const missingPlaceholders = checkMissingPlaceholders(\n      [INVITE_TO_TIMESLOT_PLACEHOLDER],\n      body.trim()\n    );\n    validateInput() &&\n      (missingPlaceholders ? setMissingPlaceholderConfirmation(true) : sendEmail());\n  };\n  const handleSubmit = () => {\n    if (step === 1) {\n      validateInput() && setStep(2);\n    } else {\n      notification === 'email' ? handleEmailSubmission() : validateInput() && sendSms();\n    }\n  };\n\n  return (\n    <StyledModal\n      isOpen={modalsOpen === ModalType.INVITE_TO_TIMESLOT}\n      label=\"Invite to timeslot modal\"\n      handleClose={handleClose}\n      styleOverrides={{ ...styles.modalStyleOverrides, width: '900px' }}\n      disableEnforceFocus\n    >\n      <Stack sx={{ width: '100%', height: '100%', overflow: 'auto' }}>\n        <Stack\n          id=\"invite-to-timeslot-title\"\n          sx={{ ...classes.actionModalHeader, paddingBottom: 3 }}\n        >\n          Invite to timeslot\n        </Stack>\n        {step === 1 ? (\n          <Stack sx={{ padding: 1, flexGrow: 1, rowGap: 3, overflow: 'auto' }}>\n            <Autocomplete\n              disablePortal\n              options={recruiters || []}\n              getOptionLabel={(option) => option.name}\n              value={recruiter}\n              sx={{ ...sharedClasses.formAutocomplete, width: '40%', marginTop: 3 }}\n              loading={loadingRecruiters}\n              loadingText=\"Loading recruiters list...\"\n              ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n              renderInput={(params) => (\n                <TextField\n                  {...params}\n                  label=\"Recruiter\"\n                  placeholder=\"Please select\"\n                  InputLabelProps={{ shrink: true }}\n                  required\n                  sx={sharedClasses.autoCompleteTextfield}\n                  helperText={errors.recruiter}\n                />\n              )}\n              onChange={(event, value) => setRecruiter(value)}\n            />\n            <Autocomplete\n              disablePortal\n              options={eventTypes || []}\n              getOptionLabel={(option) => option.name}\n              value={eventType}\n              sx={{ ...sharedClasses.formAutocomplete, width: '40%', marginTop: 3 }}\n              loading={loadingEventTypes}\n              loadingText=\"Loading event types list...\"\n              ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n              renderInput={(params) => (\n                <TextField\n                  {...params}\n                  label=\"Event type\"\n                  placeholder=\"Please select\"\n                  InputLabelProps={{ shrink: true }}\n                  required\n                  sx={sharedClasses.autoCompleteTextfield}\n                  helperText={errors.eventType}\n                />\n              )}\n              onChange={(event, value) => setEventType(value)}\n            />\n            <FormControlLabel\n              sx={classes.formSwitchLabels}\n              control={\n                <Switch\n                  sx={showTimeslots ? classes.switchActive : classes.switch}\n                  checked={showTimeslots}\n                  onChange={() => setShowTimeslots(!showTimeslots)}\n                />\n              }\n              label=\"Show timeslots\"\n              labelPlacement=\"start\"\n            />\n            <Collapse in={showTimeslots}>\n              <Stack\n                sx={{\n                  flexDirection: 'row',\n                  justifyContent: 'space-between'\n                }}\n              >\n                <Box sx={classes.calendar}>\n                  <ControlledStaticDatePicker\n                    displayStaticWrapperAs=\"desktop\"\n                    views={['day']}\n                    value={selectedDay}\n                    disablePast\n                    onChange={(value) => setSelectedDay(value)}\n                    shouldDisableDate={shouldDisableDate}\n                  />\n                </Box>\n                <Box sx={classes.dailyTimeslots}>\n                  <Box sx={{ ...classes.dailyTimeslotsHeader, marginTop: 2, marginBottom: '20px' }}>\n                    Timeslots\n                  </Box>\n                  {eventType ? (\n                    <>\n                      {loadingEvents ? (\n                        <Box sx={classes.noTimeslots}>\n                          <CircularProgress size={32} />\n                        </Box>\n                      ) : (\n                        <Stack sx={styles.timeslotsContainer}>\n                          {selectedDayEvents?.length ? (\n                            selectedDayEvents?.map((e) => {\n                              const candidates = e.attendees.filter((a) => a.type === 'Candidate');\n                              const fullyBooked = candidates.length === e.max_candidates;\n                              return (\n                                <Stack\n                                  key={e.id}\n                                  sx={{\n                                    ...styles.timeslot,\n                                    color: `${fullyBooked ? '#D9D9D9' : '#666666'}`,\n                                    background: `${fullyBooked ? '#F2F2F2' : 'inherit'}`\n                                  }}\n                                >\n                                  <Stack sx={{ fontSize: '14px' }}>\n                                    {formatToUserTimeZone(e.begins_at, 'onlyTime')}\n                                  </Stack>\n                                  <Box sx={styles.timeslotSubject}>{e.subject}</Box>\n                                </Stack>\n                              );\n                            })\n                          ) : (\n                            <Stack sx={styles.noTimeslotMessage}>\n                              No timeslots on selected date\n                            </Stack>\n                          )}\n                        </Stack>\n                      )}\n                    </>\n                  ) : (\n                    <Stack sx={styles.noTimeslotMessage}>Event type must be selected</Stack>\n                  )}\n                </Box>\n              </Stack>\n            </Collapse>\n          </Stack>\n        ) : (\n          <Stack sx={classes.addToEventSecondStepContainer}>\n            <NotificationOptionSwitch\n              setNotification={setNotification}\n              notification={notification}\n            />\n            {notification === 'email' ? (\n              <Stack sx={{ paddingTop: 4, rowGap: 3 }}>\n                <EmailsDropdown\n                  apiKey={apiKey}\n                  selectedEmailTemplate={selectedEmailTemplate}\n                  setSelectedEmailTemplate={setSelectedEmailTemplate}\n                  setBody={setBody}\n                  dispatch={dispatch}\n                  required\n                  error={errors.template}\n                  innerRef={fieldRefs.emailTemplate}\n                />\n                <EmailBodyComponent\n                  body={body}\n                  setBody={setBody}\n                  error={errors.body}\n                  innerRef={fieldRefs.body}\n                />\n              </Stack>\n            ) : (\n              <SmsTemplateComponent\n                smsMessageError={errors.sms}\n                {...{\n                  smsTemplatePermissions,\n                  smsMessage,\n                  setSmsMessage,\n                  smsTemplate,\n                  setSmsTemplate,\n                  dispatch,\n                  placeholders\n                }}\n              />\n            )}\n          </Stack>\n        )}\n        <Box sx={{ ...classes.modalFooter, columnGap: 1, paddingTop: 2 }}>\n          <Button\n            id=\"close-invite-to-timeslot-modal-button\"\n            sx={classes.modalCancelButton}\n            onClick={handleClose}\n          >\n            Cancel\n          </Button>\n          {step !== 1 && (\n            <Button\n              onClick={() => {\n                setStep(1);\n                setErrors({});\n              }}\n              sx={{ ...sharedClasses.genericButtonSecondary, minWidth: 'unset', padding: 1 }}\n            >\n              <NavigateBeforeIcon />\n            </Button>\n          )}\n          <Button\n            id=\"invite-to-timeslot-submit-button\"\n            type=\"submit\"\n            sx={{ ...sharedClasses.genericButton, minWidth: '75px' }}\n            onClick={handleSubmit}\n          >\n            {sendingSms || sendingEmail ? (\n              <CircularProgress size={20} color=\"inherit\" />\n            ) : (\n              buttonName\n            )}\n          </Button>\n        </Box>\n      </Stack>\n      {missingPlaceholderConfirmation && (\n        <MissingPlaceholdersConfirmationModal\n          missingPlaceholderList={INVITE_TO_TIMESLOT_PLACEHOLDER}\n          overrideFunction={sendEmail}\n          missingPlaceholderConfirmation={missingPlaceholderConfirmation}\n          setMissingPlaceholderConfirmation={setMissingPlaceholderConfirmation}\n          overridingLoading={sendingEmail}\n        />\n      )}\n    </StyledModal>\n  );\n}\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { Stack } from '@mui/material';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport { classes } from '../../Components/Modals/styles';\nimport { theme } from '../../../ThemeContext/ThemeObject';\n\n/**\n * MissingPlaceholdersConfirmationModal component.\n *\n * This component renders a modal dialog to confirm sending an email with missing placeholders.\n *\n * @param missingPlaceholderList - A list of missing placeholders.\n * @param overrideFunction - Callback function to proceed despite missing placeholders.\n * @param missingPlaceholderConfirmation - Boolean to control the modal's open state.\n * @param setMissingPlaceholderConfirmation - Function to set the modal's open state.\n * @param overridingLoading - Boolean to indicate if the override action is loading.\n */\nexport function MissingPlaceholdersConfirmationModal({\n  missingPlaceholderList,\n  overrideFunction,\n  missingPlaceholderConfirmation,\n  setMissingPlaceholderConfirmation,\n  overridingLoading\n}: {\n  missingPlaceholderList: string;\n  overrideFunction: () => void;\n  missingPlaceholderConfirmation: boolean;\n  setMissingPlaceholderConfirmation: Dispatch<SetStateAction<boolean>>;\n  overridingLoading: boolean;\n}) {\n  const MissingPlaceHolderDialogDescription = () => (\n    <Stack>\n      <Stack>It looks like there is no {missingPlaceholderList} in</Stack>\n      <Stack>your email body. Do you still want to send it?</Stack>\n    </Stack>\n  );\n\n  const Title = () => `Missing ${missingPlaceholderList} placeholder`;\n  return (\n    <GenericDialog\n      isDialogOpen={missingPlaceholderConfirmation}\n      setDialogOpen={setMissingPlaceholderConfirmation}\n      title={Title()}\n      description={<MissingPlaceHolderDialogDescription />}\n      buttonCallback={overrideFunction}\n      callbackLoading={overridingLoading}\n      buttonText=\"Yes, send\"\n      secondaryButtonText=\"Back to editing\"\n      overrideColor={{\n        primary: { ...classes.secondaryButtonAlternateColor, color: theme.palette.action.main },\n        secondary: classes.primaryButtonAlternateColor\n      }}\n      switchOrder\n      url=\"\"\n    />\n  );\n}\n","import React, { Dispatch, useMemo, useState } from 'react';\nimport { Autocomplete, Checkbox, Stack, TextField, Typography } from '@mui/material';\nimport StyledModal from '../../Components/GenericModal/StyledModal';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport { ApplicationAction, ApplicationState, IApplication } from '../types';\nimport { ModalType } from '../config';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport ModalFooterButtons from '../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from './styles';\nimport FormControlLabel from '@mui/material/FormControlLabel';\n\nexport default function MoveApplicationModal({\n  ApplicationState,\n  dispatch\n}: {\n  ApplicationState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n}) {\n  const [selectedJob, setSelectedJob] = useState<string | null>(null);\n  const { modalsOpen } = ApplicationState;\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const [cloneAttachments, setCloneAttachments] = useState<boolean>(false);\n  const [error, setError] = useState<string>('');\n\n  const { data: jobs, isLoading: loadingJobs } = useQuery({\n    queryKey: ['job options'],\n    queryFn: async () => {\n      if (application?.job) {\n        const { res } = await Api.getJobsOptions(application.job.id);\n        return res.jobs\n          .filter((job: { reference: string; title: string }) => job.reference)\n          .map((job: { reference: string; title: string }) => `${job.reference} - ${job.title}`);\n      }\n    },\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting job options, ${error}`,\n          state: 'error'\n        }\n      }),\n    initialData: [],\n    enabled: !!application\n  });\n  const modalState = useMemo(() => {\n    switch (modalsOpen) {\n      case ModalType.MOVE:\n        return {\n          errorMessage: 'There was an error moving the application',\n          modalTitle: 'Move application',\n          textFieldLabel: 'Select job to move application to',\n          primaryButtonText: 'Move'\n        };\n      case ModalType.CLONE:\n        return {\n          errorMessage: 'There was an error cloning the application',\n          modalTitle: 'Clone and move application',\n          textFieldLabel: 'Select job to clone and move application to',\n          checkboxLabel: 'I want to clone attachments',\n          note: 'Please note: By cloning attachments, it may take longer for the cloning process to complete',\n          primaryButtonText: 'Clone and move'\n        };\n    }\n  }, [modalsOpen]);\n\n  const { errorMessage } = modalState || {};\n  const { mutate: handleApplication, isLoading: handlingApplication } = useMutation({\n    mutationFn: async () => {\n      if (!application?.job || !selectedJob) return;\n      switch (modalsOpen) {\n        case ModalType.MOVE: {\n          const { res } = await Api.moveApplication(application.job.id, {\n            target_job: selectedJob.split(' -')[0],\n            application_ids: [application.id]\n          });\n          return res;\n        }\n        case ModalType.CLONE: {\n          const { res } = await Api.cloneApplication(application.job.id, application.id, {\n            to_job_id: selectedJob.split(' -')[0],\n            cloning_assets: cloneAttachments\n          });\n          return res;\n        }\n      }\n    },\n    onSuccess: (res) => {\n      if (modalsOpen === ModalType.MOVE) {\n        window.location.href = `${window.location.origin}${res.new_application_link.replace('applications', 'new_applications')}`;\n      }\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: res.success, state: 'success' }\n      });\n      handleClose();\n    },\n    onError: (error: { error: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `${errorMessage}, ${error.error}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n\n  const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n  return (\n    <StyledModal\n      isOpen={modalsOpen === ModalType.MOVE || modalsOpen === ModalType.CLONE}\n      label=\"Move application modal\"\n      handleClose={handleClose}\n      styleOverrides={styles.modalStyleOverrides}\n    >\n      <Stack sx={styles.modalContainer}>\n        <Stack sx={styles.modalTitle}>{modalState?.modalTitle}</Stack>\n        <Stack sx={{ paddingRight: '2px', overflow: 'auto', paddingBottom: 3 }}>\n          <Autocomplete\n            disablePortal\n            options={jobs}\n            getOptionLabel={(option) => option}\n            value={selectedJob}\n            sx={{ ...sharedClasses.formAutocomplete, paddingTop: 4, flexGrow: 1 }}\n            loading={loadingJobs}\n            loadingText=\"Loading workflows...\"\n            ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n            renderInput={(params) => (\n              <TextField\n                {...params}\n                label={modalState?.textFieldLabel}\n                InputLabelProps={{ shrink: true }}\n                required\n                sx={styles.autoCompleteTextfield}\n                helperText={error}\n              />\n            )}\n            onChange={(event, value) => {\n              value ? setError('') : setError('Must select a job');\n              setSelectedJob(value);\n            }}\n          />\n          {modalsOpen === ModalType.CLONE && (\n            <Stack sx={{ marginLeft: 0.5 }}>\n              <FormControlLabel\n                control={\n                  <Checkbox\n                    sx={sharedClasses.formCheckbox}\n                    checked={cloneAttachments}\n                    onChange={(event) => setCloneAttachments(event.target.checked)}\n                  />\n                }\n                label={modalState?.checkboxLabel}\n                sx={sharedClasses.checkboxLabel}\n              />\n              <Typography sx={styles.modalInfoStyle} variant=\"subtitle2\">\n                {modalState?.note}\n              </Typography>\n            </Stack>\n          )}\n        </Stack>\n        <ModalFooterButtons\n          primaryButtonText={modalState?.primaryButtonText}\n          primaryButtonCallback={() =>\n            selectedJob ? handleApplication() : setError('Must select a job')\n          }\n          secondaryButtonText=\"Cancel\"\n          secondaryButtonCallback={handleClose}\n          isLoading={handlingApplication}\n          primaryButtonMinWidth={modalsOpen === ModalType.CLONE ? '145px' : '75px'}\n        />\n      </Stack>\n    </StyledModal>\n  );\n}\n","import React, { Dispatch, useState } from 'react';\nimport { Button, Stack, Table, TableBody, TableCell, TableHead, TableRow } from '@mui/material';\nimport { Delete, History } from '@mui/icons-material';\nimport StyledModal from '../../Components/GenericModal/StyledModal';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport { styles } from './styles';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { classes as tableStyles } from '../../../TableStyles';\nimport { ApplicationAction, IApplication } from '../types';\nimport TableContainer from '@mui/material/TableContainer';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport TableSkeleton from '../../Components/Multiposter/TableSkeleton';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport CircularProgress from '@mui/material/CircularProgress';\n\nexport default function SearchIndex({\n  isOpen,\n  handleClose,\n  dispatch\n}: {\n  isOpen: boolean;\n  handleClose: () => void;\n  dispatch: Dispatch<ApplicationAction>;\n}) {\n  const [isDialogOpen, setIsDialogOpen] = useState<boolean>(false);\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const { data: searchIndexData, isLoading: isLoadingSearchIndex } = useQuery({\n    queryFn: async () => {\n      if (application) {\n        const { res } = await Api.getSearchIndex(application?.job.id, application.id);\n        return res;\n      }\n    },\n    onError: (error) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error in getting Search Index, ${error}`,\n          state: 'error'\n        }\n      });\n    },\n    refetchOnMount: false,\n    queryKey: ['searchIndex']\n  });\n\n  const { mutate: updateSearchIndex, isLoading: updatingSearchIndex } = useMutation({\n    mutationFn: async () => {\n      if (!application) return;\n      const { res } = await Api.updateSearchIndex(application?.job.id, application.id);\n      return res;\n    },\n    onSuccess: (res) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: res.success, state: 'success' }\n      });\n    },\n    onError: (error: { error: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an issue updating search index, ${error.error}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n\n  const { mutate: deleteSearchIndex, isLoading: deletingSearchIndex } = useMutation({\n    mutationFn: async () => {\n      if (!application) return;\n      const { res } = await Api.deleteSearchIndex(application?.job.id, application.id);\n      return res;\n    },\n    onSuccess: (res) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: res.success, state: 'success' }\n      });\n    },\n    onError: (error: { error: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an issue deleting search index, ${error.error}`,\n          state: 'error'\n        }\n      });\n    },\n    onSettled: () => {\n      setIsDialogOpen(false);\n    }\n  });\n\n  const deleteDialogDescription = () => (\n    <Stack>\n      <Stack>Are you sure you want to destroy</Stack>\n      <Stack>this search index?</Stack>\n    </Stack>\n  );\n\n  return (\n    <StyledModal\n      isOpen={isOpen}\n      label=\"Search Index modal\"\n      handleClose={handleClose}\n      styleOverrides={{ ...styles.modalStyleOverrides, width: '775px', height: '600px' }}\n      closeIconId=\"close-duplicated-candidates-modal-button\"\n    >\n      <Stack sx={styles.modalContainer}>\n        <Stack sx={styles.modalTitle}>Search Index</Stack>\n        <Stack flexDirection=\"row\" gap={2}>\n          <Button\n            sx={{ ...sharedClasses.genericButtonSecondary, minWidth: '200px' }}\n            startIcon={\n              updatingSearchIndex ? <CircularProgress size={20} color=\"inherit\" /> : <History />\n            }\n            disabled={updatingSearchIndex}\n            onClick={() => updateSearchIndex()}\n          >\n            {updatingSearchIndex ? 'Updating Search Index' : 'Update Search Index'}\n          </Button>\n          <Button\n            sx={sharedClasses.genericRedButton}\n            id=\"delete-search-index-button\"\n            startIcon={<Delete />}\n            onClick={() => {\n              setIsDialogOpen(true);\n            }}\n          >\n            Delete Search Index\n          </Button>\n        </Stack>\n        <Stack>\n          <Table sx={tableStyles.tableStyling}>\n            <TableHead>\n              <TableRow>\n                {['Keys', 'Scout Data', 'Search Index'].map((title, index) => (\n                  <TableCell\n                    key={index}\n                    sx={{ ...tableStyles.tableHeader, backgroundColor: 'inherit' }}\n                  >\n                    {title}\n                  </TableCell>\n                ))}\n              </TableRow>\n            </TableHead>\n          </Table>\n\n          {isLoadingSearchIndex ? (\n            <TableSkeleton size={4} />\n          ) : (\n            <TableContainer sx={{ maxHeight: 325 }}>\n              <Table sx={tableStyles.tableStyling}>\n                <TableBody>\n                  {searchIndexData &&\n                    searchIndexData.keys.map((key: string) => {\n                      const sameData =\n                        searchIndexData?.scout_data[key] === searchIndexData?.search_data[key];\n                      return (\n                        <TableRow key={key} sx={{ td: { overflowWrap: 'anywhere' } }}>\n                          <TableCell\n                            sx={{\n                              fontWeight: 'bold',\n                              color: theme.palette.common.grey,\n                              width: '160px'\n                            }}\n                          >\n                            {key}\n                          </TableCell>\n                          <TableCell\n                            sx={{\n                              width: '252px',\n                              color: sameData\n                                ? theme.palette.common.black\n                                : theme.palette.secondary.mediumRed\n                            }}\n                          >\n                            {searchIndexData?.scout_data[key] || '-'}\n                          </TableCell>\n                          <TableCell\n                            sx={{\n                              color: sameData\n                                ? theme.palette.common.black\n                                : theme.palette.secondary.mediumRed\n                            }}\n                          >\n                            {searchIndexData?.search_data[key] || '-'}\n                          </TableCell>\n                        </TableRow>\n                      );\n                    })}\n                </TableBody>\n              </Table>\n            </TableContainer>\n          )}\n        </Stack>\n      </Stack>\n      <GenericDialog\n        isDialogOpen={isDialogOpen}\n        setDialogOpen={setIsDialogOpen}\n        title=\"Destroy search index?\"\n        description={deleteDialogDescription()}\n        buttonCallback={() => deleteSearchIndex()}\n        callbackLoading={deletingSearchIndex}\n        buttonText=\"Destroy\"\n        url=\"\"\n        primaryButtonId=\"delete-search-index-button\"\n        secondaryButtonId=\"cancel-delete-search-index-button\"\n      />\n    </StyledModal>\n  );\n}\n","import React, { Dispatch, useRef, useState } from 'react';\nimport { Autocomplete, Stack, TextField } from '@mui/material';\nimport StyledModal from '../../Components/GenericModal/StyledModal';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport { ApplicationAction, ApplicationState, IApplication, ITemplateAttachment } from '../types';\nimport { ModalType } from '../config';\nimport ModalFooterButtons from '../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from './styles';\nimport EmailsDropdown from './Components/EmailsDropdown';\nimport EmailBodyComponent from './Components/EmailBodyComponent';\nimport { useGetEmailTemplate, useGetEvents } from '../helper';\nimport { FormTextField } from '../../Components/CustomUIElements/FormTextField';\nimport { IEvent } from '../../Job/types';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { IEventType } from '../../../ScoutCalendar/types';\nimport AttachmentSelectorAndPreview from '../../Components/CustomUIElements/AttachmentSelectorAndPreview';\nimport { FileWithPath } from 'react-dropzone';\nimport { stringToSeconds } from '../../Components/Utilities/stringToSeconds';\nimport { serialize } from 'object-to-formdata';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport DelaySelect from '../../EditJob/Automation/shared/DelaySelect';\nimport { scrollToElement } from '../../utils/scroll-to-element';\nimport { IUserPermissions } from '../../Components/sharedTypes';\n\nexport default function SendEmail({\n  ApplicationState,\n  dispatch\n}: {\n  ApplicationState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n}) {\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const permissions = queryClient.getQueryData<IUserPermissions>(['permissions']);\n\n  const [delay, setDelay] = useState('None');\n  const [selectedEmailTemplate, setSelectedEmailTemplate] = useState<string | null>(null);\n  const [selectedEvent, setSelectedEvent] = useState<IEvent | null>(null);\n  const [selectedCareAdvantageEvent, setSelectedCareAdvantageEvent] = useState<IEventType | null>(\n    null\n  );\n  const [subject, setSubject] = useState<string>('');\n  const [body, setBody] = useState<string>('');\n  const [attachments, setAttachments] = useState<FileWithPath[]>([]);\n  const [templateAttachments, setTemplateAttachments] = useState<ITemplateAttachment[]>([]);\n  const [errors, setErrors] = useState<Record<string, string>>({});\n  const { modalsOpen, apiKey, emailPlaceholders } = ApplicationState;\n  const jobId = application?.job.id;\n  const hasEventPermission = permissions?.['Events']?.['Create / Edit Events'];\n  const fieldRefs = {\n    subject: useRef<HTMLInputElement>(null),\n    body: useRef<HTMLDivElement>(null)\n  };\n\n  const getEmailTemplateEndpoint = (() => {\n    if (!hasEventPermission && selectedEmailTemplate && jobId) {\n      return Api.getEmailTemplateFromJob(\n        apiKey,\n        Number(selectedEmailTemplate.split(' -')[0]),\n        jobId\n      );\n    }\n  })();\n\n  useGetEmailTemplate({\n    apiKey,\n    selectedEmailTemplate,\n    setBody,\n    dispatch,\n    setSubject,\n    endpoint: getEmailTemplateEndpoint\n  });\n\n  const { events, loadingEvents } = useGetEvents({\n    apiKey,\n    dispatch,\n    enabled: !!hasEventPermission\n  });\n\n  const { data: careAdvantageEvents } = useQuery({\n    queryKey: ['care advantage events'],\n    queryFn: async () => {\n      if (application) {\n        const { res } = await Api.getCareAdvantageEvents(application?.job.id);\n        return res;\n      }\n    },\n    onError: () =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: 'Failed to fetch care advantage events data', state: 'error' }\n      })\n  });\n\n  const { mutate: sendEmail, isLoading: sendingEmail } = useMutation({\n    mutationFn: async () => {\n      if (application) {\n        const data = {\n          applications_ids: [application.id],\n          email_template_id: selectedEmailTemplate?.split(' -')[0],\n          event_id: selectedEvent ? selectedEvent.id : undefined,\n          subject,\n          body: body,\n          delay: stringToSeconds(delay),\n          care_advantage_event_id: selectedCareAdvantageEvent ? selectedCareAdvantageEvent.id : '',\n          ...(attachments.length > 0 && { new_email_attachments: attachments })\n        };\n\n        const res = await fetch(`/api/v4/jobs/${application.job.id}/applications/bulk_email`, {\n          method: 'POST',\n          headers: {\n            'X-api-authenticate': apiKey\n          },\n          body: serialize({ email_batch: data })\n        });\n        return res;\n      }\n    },\n    onSuccess: () => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: 'Email has been sent', state: 'success' }\n      });\n      handleClose();\n    },\n    onError: () =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: `Failed to send email`, state: 'error' }\n      })\n  });\n\n  const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n  const validateFields = () => {\n    const fieldsErrors: Record<string, string> = {};\n    !subject.trim() && (fieldsErrors.subject = 'Must add email subject');\n    !body.trim() && (fieldsErrors.body = 'Must add email body');\n    setErrors(fieldsErrors);\n    if (fieldsErrors.subject) {\n      scrollToElement(fieldRefs.subject);\n    } else if (fieldsErrors.body) {\n      scrollToElement(fieldRefs.body);\n    }\n    return !Object.keys(fieldsErrors).length;\n  };\n\n  if (!jobId) return null;\n\n  const subEntityGroupingEndpoint = Api.getSubEntityGroupedEmailTemplates(apiKey, jobId, {\n    group_templates: true\n  });\n\n  return (\n    <StyledModal\n      isOpen={modalsOpen === ModalType.SEND_EMAIL}\n      label=\"Send email modal\"\n      handleClose={handleClose}\n      styleOverrides={{ ...styles.modalStyleOverrides, ...styles.wideModal }}\n      disableEnforceFocus\n    >\n      <Stack sx={styles.modalContainer}>\n        <Stack sx={styles.modalTitle}>Send email</Stack>\n        <Stack sx={{ overflow: 'auto', rowGap: 2, padding: '0px 2px' }}>\n          <Stack sx={{ paddingTop: 4, rowGap: 3 }}>\n            <EmailsDropdown\n              apiKey={apiKey}\n              selectedEmailTemplate={selectedEmailTemplate}\n              setSelectedEmailTemplate={setSelectedEmailTemplate}\n              setBody={setBody}\n              dispatch={dispatch}\n              dropdownLabel=\"Template\"\n              endpoint={subEntityGroupingEndpoint}\n            />\n            <DelaySelect delay={delay} setDelay={setDelay} />\n            {hasEventPermission && (\n              <Autocomplete\n                disablePortal\n                options={events || []}\n                getOptionLabel={(option) => option.subject}\n                value={selectedEvent}\n                sx={{ ...sharedClasses.formAutocomplete, width: '100%', marginTop: 3, flexGrow: 1 }}\n                loading={loadingEvents}\n                loadingText=\"Loading events list...\"\n                ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n                renderInput={(params) => (\n                  <TextField\n                    {...params}\n                    label=\"Event\"\n                    placeholder=\"Please select\"\n                    InputLabelProps={{ shrink: true }}\n                    sx={{ '& .MuiInputBase-root': { margin: 'unset', marginTop: 0.5 } }}\n                  />\n                )}\n                onChange={(event, value) => setSelectedEvent(value)}\n              />\n            )}\n            {careAdvantageEvents?.has_care_advantage_integration && (\n              <Autocomplete\n                disablePortal\n                options={careAdvantageEvents?.care_advantage_events || []}\n                getOptionLabel={(option) => option.name}\n                value={selectedCareAdvantageEvent}\n                sx={{ ...sharedClasses.formAutocomplete, width: '100%', marginTop: 3, flexGrow: 1 }}\n                ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n                renderInput={(params) => (\n                  <TextField\n                    {...params}\n                    label=\"Select a care advantage event\"\n                    placeholder=\"Please select\"\n                    InputLabelProps={{ shrink: true }}\n                    sx={{ '& .MuiInputBase-root': { margin: 'unset', marginTop: 0.5 } }}\n                  />\n                )}\n                onChange={(event, value) => setSelectedCareAdvantageEvent(value)}\n              />\n            )}\n            <Stack>\n              <FormTextField\n                label=\"Subject\"\n                value={subject}\n                required\n                onChange={(v) => setSubject(v.target.value)}\n                error={errors.subject}\n                innerRef={fieldRefs.subject}\n              />\n              <Stack\n                sx={{ paddingLeft: 0.5, color: '#838383', fontSize: '11px', lineBreak: 'anywhere' }}\n              >{`Available placeholders are: ${emailPlaceholders}`}</Stack>\n            </Stack>\n            <EmailBodyComponent\n              body={body}\n              setBody={setBody}\n              placeholders={emailPlaceholders}\n              error={errors.body}\n              innerRef={fieldRefs.body}\n            />\n            <Stack sx={{ rowGap: 1, div: { margin: 'unset' } }}>\n              <Stack sx={{ color: theme.palette.common.grey }}>Attachments</Stack>\n              <AttachmentSelectorAndPreview\n                attachments={attachments}\n                setAttachments={setAttachments}\n                templateAttachments={templateAttachments}\n              />\n            </Stack>\n          </Stack>\n        </Stack>\n        <ModalFooterButtons\n          primaryButtonText=\"Send\"\n          primaryButtonCallback={() => validateFields() && sendEmail()}\n          secondaryButtonText=\"Cancel\"\n          secondaryButtonCallback={handleClose}\n          isLoading={sendingEmail}\n          primaryButtonMinWidth=\"75px\"\n        />\n      </Stack>\n    </StyledModal>\n  );\n}\n","import React, { Dispatch, useRef, useState } from 'react';\nimport { Autocomplete, Box, Button, CircularProgress, Stack, TextField } from '@mui/material';\nimport { NavigateBefore as NavigateBeforeIcon } from '@mui/icons-material';\nimport StyledModal from '../../Components/GenericModal/StyledModal';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport { ApplicationAction, ApplicationState, IApplication, IFormsOption } from '../types';\nimport { ADD_FORM_PLACEHOLDER, checkMissingPlaceholders, ModalType } from '../config';\nimport { styles } from './styles';\nimport FormsDropdown from './Components/FormsDropdown';\nimport EmailsDropdown from './Components/EmailsDropdown';\nimport EmailBodyComponent from './Components/EmailBodyComponent';\nimport { useGetEmailTemplate, useGetSmsTemplatePlaceholders } from '../helper';\nimport MultiTagInput from '../../Components/CustomUIElements/MultiTagInput';\nimport { emailIsValid } from '../../Components/Utilities/emailIsValid';\nimport { FormTextField } from '../../Components/CustomUIElements/FormTextField';\nimport { IApplicationStatus, ISMSTemplate } from '../../Job/types';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { scrollToElement } from '../../utils/scroll-to-element';\nimport { classes } from '../../Job/Applications/styles';\nimport NotificationOptionSwitch from './Components/NotificationOptionsSwitch';\nimport SmsTemplateComponent from '../../Components/CustomUIElements/SmsTemplateComponent';\nimport { validatePhone } from './SendSms';\nimport { IUserPermissions } from '../../Components/sharedTypes';\nimport { MissingPlaceholdersConfirmationModal } from './MissingPlaceholdersConfirmationModal';\n\nexport default function SendForm({\n  ApplicationState,\n  dispatch,\n  smsTemplatePermissions\n}: {\n  ApplicationState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n  smsTemplatePermissions: boolean;\n}) {\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const permissions = queryClient.getQueryData<IUserPermissions>(['permissions']);\n  const applicationStatuses = queryClient.getQueryData<IApplicationStatus[]>([\n    'application statuses'\n  ]);\n  const [selectedForm, setSelectedForm] = useState<IFormsOption | null>(null);\n  const [selectedEmailTemplate, setSelectedEmailTemplate] = useState<string | null>('');\n  const [subject, setSubject] = useState<string>('');\n  const [body, setBody] = useState<string>('');\n  const [emails, setEmails] = useState<string[]>([]);\n  const [submissionError, setSubmissionError] = useState<string>('');\n  const [status, setStatus] = useState<IApplicationStatus | null>(\n    applicationStatuses?.find((s) => s.id === application?.status_details?.id) ||\n      applicationStatuses?.[0] ||\n      null\n  );\n  const [errors, setErrors] = useState<Record<string, string>>({});\n  const [step, setStep] = useState<number>(1);\n  const [notification, setNotification] = useState<string>('email');\n  const [smsMessage, setSmsMessage] = useState<string>('');\n  const [smsTemplate, setSmsTemplate] = useState<ISMSTemplate | null>(null);\n  const [phoneNumbers, setPhoneNumbers] = useState<string[]>([]);\n  const [phoneNumberError, setPhoneNumberError] = useState<string>('');\n  const jobId = application?.job.id;\n  const hasEventPermission = permissions?.['Events']?.['Create / Edit Events'];\n  const [missingPlaceholderConfirmation, setMissingPlaceholderConfirmation] =\n    useState<boolean>(false);\n\n  const fieldRefs = {\n    form: useRef<HTMLDivElement>(null),\n    template: useRef<HTMLDivElement>(null),\n    subject: useRef<HTMLInputElement>(null),\n    body: useRef<HTMLDivElement>(null)\n  };\n\n  const { modalsOpen, apiKey, emailPlaceholders } = ApplicationState;\n\n  const getEmailTemplateEndpoint = (() => {\n    if (!hasEventPermission && selectedEmailTemplate && jobId) {\n      return Api.getEmailTemplateFromJob(\n        apiKey,\n        Number(selectedEmailTemplate.split(' -')[0]),\n        jobId\n      );\n    }\n  })();\n\n  useGetEmailTemplate({\n    apiKey,\n    selectedEmailTemplate,\n    setBody,\n    dispatch,\n    setSubject,\n    endpoint: getEmailTemplateEndpoint\n  });\n\n  const { placeholders } = useGetSmsTemplatePlaceholders({ kind: 'form', dispatch });\n\n  const { mutate: sendForm, isLoading: sendingForm } = useMutation({\n    mutationFn: async () => {\n      if (application) {\n        const { res } =\n          notification === 'email'\n            ? await Api.sendForm(application.job.id, application.id, {\n                form_id: selectedForm?.id,\n                email_template_id: selectedEmailTemplate?.split(' -')[0],\n                status_id: status?.id,\n                recipients: emails.join(','),\n                subject,\n                body\n              })\n            : await Api.sendFormBySMS(application.job.id, application.id, {\n                form_id: selectedForm?.id,\n                status_id: status?.id,\n                phones: phoneNumbers.join(','),\n                body: smsMessage.trim(),\n                sms_template_id: smsTemplate?.id\n              });\n        return res;\n      }\n    },\n    onSuccess: () => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: 'Form has been sent', state: 'success' }\n      });\n      handleClose();\n    },\n    onError: () =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: `Failed to send form`, state: 'error' }\n      })\n  });\n\n  const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n  const validateFields = () => {\n    const fieldsErrors: Record<string, string> = {};\n    setPhoneNumberError('');\n    setSubmissionError('');\n    if (step === 1) {\n      !selectedForm && (fieldsErrors.form = 'Must select a form');\n    } else {\n      if (notification === 'email') {\n        !selectedEmailTemplate && (fieldsErrors.template = 'Must select a template');\n        !subject.trim() && (fieldsErrors.subject = 'Must add email subject');\n        !body.trim() && (fieldsErrors.body = 'Must add email body');\n        !emails.length && setSubmissionError('Must input at least one valid email');\n      } else {\n        !phoneNumbers.length && setPhoneNumberError('Must input at least one valid phone number');\n        !smsMessage.length && (fieldsErrors.sms = 'Must add sms message');\n      }\n    }\n    setErrors(fieldsErrors);\n    if (fieldsErrors.form) {\n      scrollToElement(fieldRefs.form);\n    } else if (fieldsErrors.template) {\n      scrollToElement(fieldRefs.template);\n    } else if (fieldsErrors.subject) {\n      scrollToElement(fieldRefs.subject);\n    } else if (fieldsErrors.body) {\n      scrollToElement(fieldRefs.body);\n    }\n    return !Object.keys(fieldsErrors).length;\n  };\n\n  const handleSubmit = () => {\n    if (!validateFields()) {\n      return;\n    }\n    if (step === 1) {\n      setStep(2);\n      return;\n    }\n    const content = notification === 'email' ? body.trim() : smsMessage.trim();\n    const missingPlaceholders = checkMissingPlaceholders([ADD_FORM_PLACEHOLDER], content);\n    missingPlaceholders ? setMissingPlaceholderConfirmation(true) : sendForm();\n  };\n\n  const buttonName = step === 1 ? 'Next' : 'Send';\n\n  if (!jobId) return null;\n\n  const subEntityGroupingEndpoint = Api.getSubEntityGroupedEmailTemplates(apiKey, jobId, {\n    group_templates: true\n  });\n\n  return (\n    <StyledModal\n      isOpen={modalsOpen === ModalType.SEND_FORM}\n      label=\"Send form modal\"\n      handleClose={handleClose}\n      styleOverrides={{ ...styles.modalStyleOverrides, ...(step === 1 ? {} : styles.wideModal) }}\n      disableEnforceFocus\n    >\n      <Stack sx={styles.modalContainer}>\n        <Stack sx={styles.modalTitle}>Send form</Stack>\n        {step === 1 ? (\n          <Stack sx={{ rowGap: 3, padding: '0px 4px 16px 2px', overflow: 'auto' }}>\n            <FormsDropdown\n              applicationId={application?.id}\n              selectedForm={selectedForm}\n              setSelectedForm={(value) => {\n                value && setErrors({ ...errors, form: '' });\n                setSelectedForm(value);\n              }}\n              dispatch={dispatch}\n              dropdownLabel=\"Form\"\n              error={errors.form}\n              innerRef={fieldRefs.form}\n            />\n            <Autocomplete\n              disablePortal\n              options={applicationStatuses || []}\n              getOptionLabel={(option) => option.name}\n              value={status}\n              sx={{ ...sharedClasses.formAutocomplete, width: '100%', marginTop: 3, flexGrow: 1 }}\n              ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n              renderInput={(params) => (\n                <TextField\n                  {...params}\n                  label=\"After completing the form, change status to\"\n                  placeholder=\"Please select\"\n                  InputLabelProps={{ shrink: true }}\n                  sx={{ '& .MuiInputBase-root': { margin: 'unset', marginTop: 0.5 } }}\n                />\n              )}\n              onChange={(event, value) => setStatus(value)}\n            />\n          </Stack>\n        ) : (\n          <Stack sx={{ overflow: 'auto', flexGrow: 1 }}>\n            <NotificationOptionSwitch\n              setNotification={setNotification}\n              notification={notification}\n            />\n            {notification === 'email' ? (\n              <Stack sx={{ rowGap: 2 }}>\n                <MultiTagInput\n                  tags={emails}\n                  setTags={setEmails}\n                  validation={emailIsValid}\n                  validationMessage=\"Must input valid email\"\n                  label=\"Recipients\"\n                  width=\"100%\"\n                  error={submissionError}\n                  tagType=\"emails\"\n                  helperText=\"To copy and paste bulk emails, email addresses must be separated with a comma\"\n                  required\n                  styles={{ margin: 'unset' }}\n                />\n                <Stack sx={{ paddingRight: '2px', paddingTop: 3 }}>\n                  <EmailsDropdown\n                    apiKey={apiKey}\n                    selectedEmailTemplate={selectedEmailTemplate}\n                    setSelectedEmailTemplate={setSelectedEmailTemplate}\n                    setBody={setBody}\n                    dispatch={dispatch}\n                    required\n                    dropdownLabel=\"Email template\"\n                    error={errors.template}\n                    innerRef={fieldRefs.template}\n                    endpoint={subEntityGroupingEndpoint}\n                  />\n                </Stack>\n                <Stack>\n                  <FormTextField\n                    label=\"Subject\"\n                    value={subject}\n                    required\n                    onChange={(v) => setSubject(v.target.value)}\n                    error={errors.subject}\n                    innerRef={fieldRefs.subject}\n                  />\n                  <Stack\n                    sx={{\n                      paddingLeft: 0.5,\n                      color: '#838383',\n                      fontSize: '11px',\n                      lineBreak: 'anywhere'\n                    }}\n                  >{`Available placeholders are: ${emailPlaceholders}`}</Stack>\n                </Stack>\n                <EmailBodyComponent\n                  body={body}\n                  setBody={setBody}\n                  placeholders={emailPlaceholders}\n                  error={errors.body}\n                  innerRef={fieldRefs.body}\n                />\n              </Stack>\n            ) : (\n              <>\n                <MultiTagInput\n                  tags={phoneNumbers}\n                  setTags={setPhoneNumbers}\n                  validation={validatePhone}\n                  validationMessage=\"Must input valid phone number\"\n                  label=\"Phone numbers\"\n                  width=\"100%\"\n                  error={phoneNumberError}\n                  tagType=\"phone number\"\n                  helperText=\"To copy and paste bulk sms, phone numbers must be separated with a comma\"\n                  required\n                  styles={{ margin: 'unset' }}\n                />\n                <SmsTemplateComponent\n                  smsMessageError={errors.sms}\n                  {...{\n                    smsTemplatePermissions,\n                    smsMessage,\n                    setSmsMessage,\n                    smsTemplate,\n                    setSmsTemplate,\n                    dispatch,\n                    placeholders\n                  }}\n                />\n              </>\n            )}\n          </Stack>\n        )}\n        <Box sx={{ ...classes.modalFooter, columnGap: 1, paddingTop: 1 }}>\n          <Button\n            id=\"close-add-to-event-modal-button\"\n            sx={classes.modalCancelButton}\n            onClick={() => dispatch({ type: 'SET_MODALS_OPEN', payload: null })}\n          >\n            Cancel\n          </Button>\n          {step !== 1 && (\n            <Button\n              onClick={() => setStep(1)}\n              sx={{ ...sharedClasses.genericButtonSecondary, minWidth: 'unset', padding: 1 }}\n            >\n              <NavigateBeforeIcon />\n            </Button>\n          )}\n          <Button\n            id=\"add-to-event-submit-button\"\n            type=\"submit\"\n            sx={{\n              ...sharedClasses.genericButton,\n              '&.Mui-disabled ': { background: '#DDDDDD', color: '#939393' }\n            }}\n            onClick={handleSubmit}\n          >\n            {sendingForm ? <CircularProgress size={20} color=\"inherit\" /> : buttonName}\n          </Button>\n        </Box>\n      </Stack>\n      {missingPlaceholderConfirmation && (\n        <MissingPlaceholdersConfirmationModal\n          missingPlaceholderList={ADD_FORM_PLACEHOLDER}\n          overrideFunction={sendForm}\n          missingPlaceholderConfirmation={missingPlaceholderConfirmation}\n          setMissingPlaceholderConfirmation={setMissingPlaceholderConfirmation}\n          overridingLoading={sendingForm}\n        />\n      )}\n    </StyledModal>\n  );\n}\n","import React, { Dispatch, useState } from 'react';\nimport { Stack } from '@mui/material';\nimport StyledModal from '../../Components/GenericModal/StyledModal';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport { ApplicationAction, ApplicationState, IApplication } from '../types';\nimport { ModalType } from '../config';\nimport ModalFooterButtons from '../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from './styles';\nimport SmsTemplateComponent from '../../Components/CustomUIElements/SmsTemplateComponent';\nimport { FormTextField } from '../../Components/CustomUIElements/FormTextField';\nimport { ISMSTemplate } from '../../Job/types';\n\nexport const validatePhone = (phone: string) => {\n  const phoneRegex = /^[+-\\s0-9()]*$/;\n  return phoneRegex.test(phone);\n};\n\nexport default function SendSms({\n  smsTemplatePermissions,\n  ApplicationState,\n  dispatch\n}: {\n  smsTemplatePermissions: boolean;\n  ApplicationState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n}) {\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const [smsMessage, setSmsMessage] = useState<string>('');\n  const [smsTemplate, setSmsTemplate] = useState<ISMSTemplate | null>(null);\n  const [phone, setPhone] = useState<string>(application?.candidate.phone1 || '');\n  const [phoneError, setPhoneError] = useState<string>('');\n  const [smsMessageError, setSmsMessageError] = useState<string>('');\n  const { modalsOpen } = ApplicationState;\n\n  const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n  const { mutate: sendSms, isLoading: sendingSms } = useMutation({\n    mutationFn: async () => {\n      if (application) {\n        const { res } = await Api.sms(application.job.id, application.id, {\n          to: phone,\n          content: smsMessage,\n          sms_template_id: smsTemplate?.id\n        });\n        return res;\n      }\n    },\n    onSuccess: (res) => {\n      dispatch({ type: 'SET_SNACKBAR', payload: { message: res.message, state: 'success' } });\n      handleClose();\n    },\n    onError: () =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: `Failed to send sms`, state: 'error' }\n      })\n  });\n\n  const handleSubmit = () => {\n    !validatePhone(phone) &&\n      setPhoneError(\n        'Please use a valid phone format. Digits only or add + for international numbers'\n      );\n    !phone && setPhoneError('Must add phone number');\n    !smsMessage.trim() && setSmsMessageError('Must add SMS content');\n    validatePhone(phone) && phone.trim() && smsMessage.trim() && sendSms();\n  };\n\n  return (\n    <StyledModal\n      isOpen={modalsOpen === ModalType.SEND_SMS}\n      label=\"Send SMS modal\"\n      handleClose={handleClose}\n      styleOverrides={styles.modalStyleOverrides}\n    >\n      <Stack sx={styles.modalContainer}>\n        <Stack sx={styles.modalTitle}>Send SMS</Stack>\n        <Stack sx={{ rowGap: 1, marginTop: 1, overflow: 'auto' }}>\n          <FormTextField\n            label=\"Phone number\"\n            value={phone}\n            onChange={(e) => {\n              phoneError && setPhoneError('');\n              setPhone(e.target.value);\n            }}\n            styles={{ width: '40%' }}\n            required\n            error={phoneError}\n          />\n          <SmsTemplateComponent\n            smsMessage={smsMessage}\n            setSmsMessage={setSmsMessage}\n            smsTemplate={smsTemplate}\n            setSmsTemplate={setSmsTemplate}\n            smsTemplatePermissions={smsTemplatePermissions}\n            dispatch={dispatch}\n            dropdownLabel=\"Template\"\n            smsMessageError={smsMessageError}\n            multipleSms\n          />\n        </Stack>\n        <ModalFooterButtons\n          primaryButtonText=\"Send\"\n          primaryButtonCallback={handleSubmit}\n          isLoading={sendingSms}\n          secondaryButtonText=\"Cancel\"\n          secondaryButtonCallback={handleClose}\n          primaryButtonMinWidth=\"95px\"\n        />\n      </Stack>\n    </StyledModal>\n  );\n}\n","import React, { Dispatch, useState } from 'react';\nimport { Stack, Autocomplete, TextField } from '@mui/material';\nimport StyledModal from '../../Components/GenericModal/StyledModal';\nimport { IAssignableUsers } from '../../ApprovalForms/types';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport ModalFooterButtons from '../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from '../../Candidate/styles';\nimport { ApplicationAction, ApplicationState } from '../types';\nimport { IWorkflow } from '../../Candidate/types';\nimport { IApplication } from '../types';\nimport { ModalType } from '../config';\nimport { useGetAssignableUsers } from '../helper';\n\nexport default function TaskWorkflow({\n  ApplicationState,\n  dispatch\n}: {\n  ApplicationState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n}) {\n  const { modalsOpen } = ApplicationState;\n  const [assignedUser, setAssignedUser] = useState<IAssignableUsers | null>(null);\n  const [workflow, setWorkflow] = useState<IWorkflow | null>(null);\n  const [errors, setErrors] = useState<Record<string, string>>({});\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n\n  const { assignableUsers, loadingAssignableUsers } = useGetAssignableUsers({ dispatch });\n\n  const handleClose = () => {\n    dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n  };\n\n  const { data: workflows, isLoading: loadingWorkflows } = useQuery({\n    queryKey: ['workflows'],\n    queryFn: async () => {\n      if (application) {\n        const { res } = await Api.getWorkflows(application.id);\n        return res;\n      }\n    },\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting candidate data, ${error}`,\n          state: 'error'\n        }\n      })\n  });\n\n  const { mutate: assignWorkflow, isLoading: assigningWorkflow } = useMutation({\n    mutationFn: async () => {\n      if (application && workflow && assignedUser) {\n        return Api.assignWorkflow(application.id, { id: workflow.id, user_id: assignedUser.id });\n      }\n    },\n    onSuccess: () => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: `Workflow has been successfully started.`, state: 'success' }\n      });\n      queryClient.invalidateQueries(['tasks'], { exact: true });\n      handleClose();\n    },\n    onError: (error: { error: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error starting the workflow, ${error.error}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n\n  const validateInputs = () => {\n    setErrors({});\n    const inputErrors: Record<string, string> = {};\n    if (!workflow) inputErrors.workflow = 'Workflow is a required field';\n    if (!assignedUser) inputErrors.user = 'Assigned user is a required field';\n    setErrors(inputErrors);\n    return !Object.keys(inputErrors).length;\n  };\n\n  return (\n    <StyledModal\n      isOpen={modalsOpen === ModalType.TASK_WORKFLOW}\n      label=\"Application task workflow\"\n      handleClose={handleClose}\n      styleOverrides={styles.modalContainer}\n      closeIconId=\"close-start-workflow-button\"\n    >\n      <Stack sx={styles.modalContent}>\n        <Stack sx={styles.modalTitle}>Start workflow</Stack>\n        <Stack sx={styles.modalCandidateName}>\n          {`Application #${application?.id} - ${application?.candidate.firstname} ${application?.candidate.lastname}`}\n        </Stack>\n        <Autocomplete\n          disablePortal\n          id=\"application-task-workflows-select\"\n          options={workflows?.workflows || []}\n          getOptionLabel={(option) => option.name}\n          value={workflow}\n          sx={{ ...sharedClasses.formAutocomplete, paddingTop: 3, width: '35%' }}\n          loading={loadingWorkflows}\n          loadingText=\"Loading workflows...\"\n          ListboxProps={{ style: styles.listboxProps }}\n          renderInput={(params) => (\n            <TextField\n              {...params}\n              label=\"Workflow name\"\n              InputLabelProps={{ shrink: true }}\n              sx={styles.autoCompleteTextfield}\n              required\n              error={!workflow}\n              helperText={!workflow && errors.workflow}\n            />\n          )}\n          onChange={(event, value) => setWorkflow(value)}\n        />\n        <Autocomplete\n          disablePortal\n          id=\"application-task-workflow-assigned-users-select\"\n          options={assignableUsers || []}\n          getOptionLabel={(option: IAssignableUsers) => `${option?.firstname} ${option?.lastname}`}\n          value={assignedUser}\n          sx={{ ...sharedClasses.formAutocomplete, paddingTop: 3, width: '35%' }}\n          loading={loadingAssignableUsers}\n          loadingText=\"Loading assignable users...\"\n          ListboxProps={{ style: styles.listboxProps }}\n          renderInput={(params) => (\n            <TextField\n              {...params}\n              label=\"Assign to\"\n              InputLabelProps={{ shrink: true }}\n              sx={styles.autoCompleteTextfield}\n              required\n              error={!assignedUser}\n              helperText={!assignedUser && errors.user}\n            />\n          )}\n          onChange={(event, value) => setAssignedUser(value)}\n        />\n        <ModalFooterButtons\n          primaryButtonText=\"Submit\"\n          primaryButtonCallback={() => validateInputs() && assignWorkflow()}\n          secondaryButtonText=\"Cancel\"\n          secondaryButtonCallback={handleClose}\n          isLoading={assigningWorkflow}\n          primaryButtonID=\"submit-workflow-button\"\n          secondaryButtonID=\"cancel-workflow-button\"\n          primaryButtonMinWidth=\"90px\"\n        />\n      </Stack>\n    </StyledModal>\n  );\n}\n","import React, { Dispatch } from 'react';\nimport { Popover, Stack } from '@mui/material';\nimport { styles } from './styles';\nimport { ApplicationAction, ApplicationState } from './types';\nimport { ModalType } from './config';\nimport { DARK_RED, RED } from '../../ThemeContext/constants';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { IUserPermissions } from '../Components/sharedTypes';\n\ntype IOption = {\n  id: string;\n  label: string;\n  action: () => void;\n  permission?: boolean;\n};\n\nconst MoreOptionsPopover = ({\n  actionsState,\n  dispatch,\n  label\n}: {\n  actionsState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n  label: string;\n}) => {\n  const queryClient = useQueryClient();\n  const permissions = queryClient.getQueryData<IUserPermissions>(['permissions']);\n  const { isAdminUser } = actionsState;\n\n  const options: IOption[] = [\n    {\n      id: 'clone',\n      label: 'Clone',\n      action: () => {\n        dispatch({\n          type: 'SET_MODALS_OPEN',\n          payload: ModalType.CLONE\n        });\n      },\n      permission: permissions?.Applications?.['Clone and Move Application']\n    },\n    {\n      id: 'resend',\n      label: 'Resend Application',\n      action: () => {\n        dispatch({\n          type: 'SET_MODALS_OPEN',\n          payload: ModalType.RESEND\n        });\n      },\n      permission: permissions?.Applications?.['Re-send Application']\n    },\n    {\n      id: 'trash',\n      label: 'Trash',\n      action: () => {\n        dispatch({\n          type: 'SET_MODALS_OPEN',\n          payload: ModalType.TRASH\n        });\n      },\n      permission: permissions?.Trash?.['Trash Application']\n    },\n    {\n      id: 'delete',\n      label: 'Delete',\n      action: () => {\n        dispatch({\n          type: 'SET_MODALS_OPEN',\n          payload: ModalType.DELETE\n        });\n      },\n      permission: isAdminUser\n    },\n    {\n      id: 'search-index',\n      label: 'Search index',\n      action: () => {\n        dispatch({\n          type: 'SET_MODALS_OPEN',\n          payload: ModalType.SEARCH\n        });\n      },\n      permission: isAdminUser\n    }\n  ];\n  const handleSelectItem = (action: () => void) => {\n    dispatch({\n      type: 'SET_ACTIONS',\n      payload: { anchorEl: null }\n    });\n\n    action();\n  };\n\n  return (\n    <Popover\n      id={`${label}-more-options-popover`}\n      sx={styles.actionsMenu}\n      open={actionsState?.actions.anchorEl !== null}\n      anchorEl={actionsState?.actions.anchorEl}\n      onClose={() =>\n        dispatch({\n          type: 'SET_ACTIONS',\n          payload: { anchorEl: null }\n        })\n      }\n      anchorOrigin={{\n        vertical: 'bottom',\n        horizontal: 'right'\n      }}\n      transformOrigin={{\n        vertical: 'top',\n        horizontal: 'right'\n      }}\n    >\n      {options\n        .filter((option) => option.permission)\n        .map((option) => (\n          <Stack\n            id={`${option.id}${option.id === 'search-index' ? '' : `-application`}-button`}\n            sx={{\n              ...styles.actionsItem,\n              ...(option.id === 'delete'\n                ? { color: `${RED}`, ':hover': { color: `${DARK_RED}` } }\n                : undefined)\n            }}\n            key={option.id}\n            onClick={() => handleSelectItem(option.action)}\n            className={`${option.id}-action-button`}\n          >\n            {option.label}\n          </Stack>\n        ))}\n    </Popover>\n  );\n};\n\nexport default MoreOptionsPopover;\n","import React, { useState, useRef, Dispatch } from 'react';\nimport { Box, CircularProgress, Stack } from '@mui/material';\nimport { Update as UpdateIcon, Autorenew as AutorenewIcon } from '@mui/icons-material';\nimport { useQueryClient, useMutation } from '@tanstack/react-query';\nimport { ApplicationAction, IApplication } from '../types';\nimport AISummaryNoAccess from './AISummaryNoAccess';\nimport { styles } from '../styles';\nimport {\n  FelixConfused,\n  FelixMessageSVG\n} from '../../../AIStudio/SharedComponents/Graphics/FelixSVG';\nimport DisplayHTMLViewOnly from '../../../AIStudio/SharedComponents/DisplayHTMLViewOnly';\nimport { handleRichCopy } from '../../Components/Utilities/handleRichCopy';\nimport dayjs from 'dayjs';\nimport Api from '../API';\n\nexport default function AISummary({\n  dispatch,\n  aiSummariesEnabled\n}: {\n  dispatch: Dispatch<ApplicationAction>;\n  aiSummariesEnabled: boolean;\n}) {\n  const [emails, setEmails] = useState<string[]>([]);\n  const [emailInputOpen, setEmailInputOpen] = useState<boolean>(false);\n  const [copied, setCopied] = useState(false);\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const summaryRef = useRef<HTMLDivElement | null>(null);\n\n  const downloadPDF = () => {\n    const url = `/api/v4/jobs/${application?.job.id}/applications/${application?.id}/application_summary.pdf`;\n    window.open(url, '_blank');\n  };\n\n  const { mutate: sendEmail, isLoading: sendingEmails } = useMutation({\n    mutationFn: async () => {\n      if (application) {\n        await Api.sendApplicationSummary(application.job.id, application.id, emails);\n      }\n    },\n    onSuccess: () => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: `Email has been sent successfully`, state: 'success' }\n      });\n      setEmailInputOpen(false);\n      setEmails([]);\n    },\n    onError: (error: { error: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error in sending email, ${error.error}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n\n  const { mutate: updateSummary, isLoading: updatingSummary } = useMutation({\n    mutationFn: async () => {\n      if (application) {\n        await Api.updateSummary(application.job.id, application.id);\n      }\n    },\n    onSuccess: () => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: 'Summary is being generated, this may take a few minutes',\n          state: 'success'\n        }\n      });\n      queryClient.invalidateQueries(['application'], { exact: true });\n    },\n    onError: (error) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error in generating summary, ${error}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n\n  return (\n    <Stack sx={styles.AISummaryContainer}>\n      <Stack sx={{ fontSize: '16px', fontWeight: 600 }}>Felix AI Summary</Stack>\n      {aiSummariesEnabled ? (\n        <>\n          {application?.summary ? (\n            <Stack sx={{ rowGap: 2 }}>\n              <Stack sx={{ flexDirection: 'row', columnGap: 1, justifyContent: 'space-between' }}>\n                <Stack sx={styles.AISummaryHeader}>\n                  <FelixMessageSVG />\n                  <Stack sx={{ ...styles.AISummaryMessage, fontSize: '15px' }}>\n                    <Box>\n                      I’ve created your <span>candidate summary</span>! This summary\n                    </Box>\n                    <Stack>compares your application against the job requirements.</Stack>\n                  </Stack>\n                </Stack>\n                <Stack sx={{ rowGap: '4px', marginTop: 2 }}>\n                  <Stack sx={{ flexDirection: 'row', columnGap: 2 }}>\n                    <Stack\n                      id=\"update-summary-button\"\n                      sx={styles.generateSummaryButton}\n                      onClick={() => updateSummary()}\n                    >\n                      Update summary{' '}\n                      {updatingSummary ? (\n                        <CircularProgress size={12} color=\"inherit\" sx={{ marginRight: '4px' }} />\n                      ) : (\n                        <AutorenewIcon sx={{ transform: 'rotate(90deg)', fontSize: '18px' }} />\n                      )}\n                    </Stack>\n                    <Stack\n                      id=\"copy-summary-button\"\n                      sx={{\n                        ...styles.AISummaryButton,\n                        width: '80px',\n                        padding: '6px 16px',\n                        alignItems: 'center'\n                      }}\n                      onClick={() => handleRichCopy(summaryRef.current, setCopied)}\n                    >\n                      {copied ? 'Copied!' : 'Copy'}\n                    </Stack>\n                  </Stack>\n                  <Stack sx={styles.summaryLastUpdated}>\n                    <UpdateIcon sx={{ transform: 'scaleX(-1)', fontSize: '14px' }} /> Last updated{' '}\n                    {dayjs(application?.summary_updated_at).format('D/M/YY, LT')}\n                  </Stack>\n                </Stack>\n              </Stack>\n              <DisplayHTMLViewOnly\n                content={application.summary}\n                viewerRef={summaryRef}\n                onExportClick={downloadPDF}\n                setEmails={setEmails}\n                emails={emails}\n                onSendEmailClick={sendEmail}\n                emailInputOpen={emailInputOpen}\n                setEmailInputOpen={setEmailInputOpen}\n                sendingEmails={sendingEmails}\n                sendEmailButtonId=\"send-email-summary-button\"\n                emailButtonId=\"email-summary-button\"\n                exportButtonId=\"download-summary-as-pdf-button\"\n              />\n            </Stack>\n          ) : (\n            <Stack sx={{ alignItems: 'center', rowGap: 2 }}>\n              <Stack sx={{ width: '40px' }}>\n                <FelixConfused />\n              </Stack>\n              <Stack sx={{ color: '#939393', fontWeight: 600 }}>No summary available</Stack>\n              <Stack\n                id=\"generate-summary-button\"\n                sx={{\n                  ...styles.generateSummaryButton,\n                  minWidth: '155px',\n                  justifyContent: 'center'\n                }}\n                onClick={() => updateSummary()}\n              >\n                {updatingSummary ? (\n                  <CircularProgress size={18} color=\"inherit\" sx={{ marginRight: '4px' }} />\n                ) : (\n                  'Generate summary'\n                )}\n              </Stack>\n            </Stack>\n          )}\n        </>\n      ) : (\n        <AISummaryNoAccess />\n      )}\n    </Stack>\n  );\n}\n","import React from 'react';\nimport { Box, Stack } from '@mui/material';\nimport { FelixStarsSVG } from '../../../AIStudio/SharedComponents/Graphics/FelixSVG';\nimport { styles } from '../styles';\n\nexport default function AISummaryNoAccess() {\n  return (\n    <Stack sx={{ svg: { width: '75px', height: '75px' }, alignItems: 'center', rowGap: 2 }}>\n      <FelixStarsSVG />\n      <Stack sx={{ ...styles.AISummaryMessage, alignItems: 'center' }}>\n        <Box>\n          You do not have <span>AI Screen</span> access. Unlock <span>AI Screen</span> for enhanced\n          capabilities\n        </Box>\n        <Stack>that will optimize your workflow and save you valuable time!</Stack>\n      </Stack>\n      <Stack\n        id=\"find-out-more-button\"\n        sx={styles.AISummaryButton}\n        onClick={() =>\n          window.open(`https://scouttalenthq.com/talent-acquisition-software/ai-suite`, '_blank')\n        }\n      >\n        Find out more\n      </Stack>\n    </Stack>\n  );\n}\n","import React, { Dispatch } from 'react';\nimport { Button, Stack } from '@mui/material';\nimport {\n  Approval as ApprovalIcon,\n  DriveFileMove as DriveFileMoveIcon,\n  EditNote as EditNoteIcon,\n  Email as EmailIcon,\n  Event as EventIcon,\n  GroupAdd as GroupAddIcon,\n  MenuBook as MenuBookIcon,\n  NoteAdd as NoteAddIcon,\n  Smartphone as SmartphoneIcon\n} from '@mui/icons-material';\nimport { ExternalEmailSVG, SendFormSVG } from './Icons';\nimport { ApplicationAction, IApplication } from '../types';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { ModalType } from '../config';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { IUserPermissions } from '../../Components/sharedTypes';\n\nexport const ActionButton = ({\n  action,\n  boldFont,\n  buttonId\n}: {\n  action: { label: string; icon: React.JSX.Element; onClick: () => void };\n  boldFont?: boolean;\n  buttonId?: string;\n}) => (\n  <Button\n    id={buttonId}\n    sx={{\n      ...sharedClasses.genericButtonSecondary,\n      fontWeight: boldFont ? 'bold' : 600,\n      columnGap: 1,\n      svg: { fontSize: '20px' }\n    }}\n    onClick={action.onClick}\n  >\n    {action.icon}\n    {action.label}\n  </Button>\n);\n\nexport default function Actions({ dispatch }: { dispatch: Dispatch<ApplicationAction> }) {\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const permissions = queryClient.getQueryData<IUserPermissions>(['permissions']);\n\n  const actions = [\n    {\n      label: 'Add record',\n      icon: <EditNoteIcon />,\n      onClick: () => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.ADD_RECORD }),\n      permission: permissions?.Applications?.['Add Notes']\n    },\n    {\n      label: 'Add form',\n      icon: <NoteAddIcon />,\n      onClick: () => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.ADD_FORM }),\n      permission: permissions?.Applications?.['Add Form Response']\n    },\n    {\n      label: 'Send form',\n      icon: <SendFormSVG />,\n      onClick: () => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.SEND_FORM }),\n      permission: permissions?.Applications?.['Send Forms']\n    },\n    {\n      label: 'External email',\n      icon: <ExternalEmailSVG />,\n      onClick: () => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.EMAIL_EXTERNAL }),\n      permission: permissions?.Applications?.['Email/Bulk Email External']\n    },\n    {\n      label: 'Send email',\n      icon: <EmailIcon />,\n      onClick: () => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.SEND_EMAIL }),\n      permission: permissions?.Applications?.['Send Emails']\n    },\n    {\n      label: 'Send SMS',\n      icon: <SmartphoneIcon />,\n      onClick: () => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.SEND_SMS }),\n      permission: permissions?.Applications?.['Send SMS']\n    },\n    {\n      label: 'Add to event',\n      icon: <EventIcon />,\n      onClick: () => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.ADD_TO_EVENT }),\n      permission: permissions?.Events?.['Create / Edit Events']\n    },\n    {\n      label: 'Export to Onboard',\n      icon: <DriveFileMoveIcon />,\n      onClick: () => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.EXPORT_TO_ONBOARD }),\n      permission: permissions?.Integrations?.['Export To SCOUT Onboard']\n    },\n    {\n      label: 'Invite to timeslot',\n      icon: <GroupAddIcon sx={{ transform: 'scaleX(-1)' }} />,\n      onClick: () => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.INVITE_TO_TIMESLOT }),\n      permission: permissions?.Applications?.['Invite To Book In']\n    },\n    {\n      label: 'Interview guide',\n      icon: <MenuBookIcon />,\n      onClick: () => window.open(`${window.location.origin}${application?.interview_guide_url}`),\n      permission: !!application?.interview_guide_url\n    },\n    {\n      label: 'Create approval',\n      icon: <ApprovalIcon />,\n      onClick: () => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.CREATE_APPROVAL }),\n      permission: true\n    }\n  ];\n\n  return (\n    <Stack\n      sx={{\n        padding: 3,\n        borderRadius: '6px',\n        border: '1px solid #E3E3E3',\n        rowGap: 2\n      }}\n    >\n      <Stack sx={{ fontSize: '16px', fontWeight: 600 }}>Actions</Stack>\n      <Stack sx={{ flexDirection: 'row', flexWrap: 'wrap', columnGap: 2, rowGap: 2 }}>\n        {actions\n          .filter((a) => a.permission)\n          .map((action, index) => (\n            <ActionButton\n              key={index}\n              action={action}\n              buttonId={`${action.label.toLowerCase().split(' ').join('-')}-button`}\n            />\n          ))}\n      </Stack>\n    </Stack>\n  );\n}\n","import React from 'react';\nimport { Link, Stack } from '@mui/material';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { IApplication } from '../types';\nimport dayjs from 'dayjs';\nimport { styles } from '../styles';\n\nexport default function AdditionalInfo() {\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  if (!application) return null;\n  return (\n    <Stack sx={styles.additionalInfoContainer}>\n      <Stack sx={{ rowGap: 1 }}>\n        <Stack sx={{ color: '#084D6D' }}>Lodged by</Stack>\n        <Stack>{application.lodged_by || '-'}</Stack>\n      </Stack>\n      <Stack sx={{ rowGap: 1 }}>\n        <Stack sx={{ color: '#084D6D' }}>Applied</Stack>\n        <Stack>{dayjs(application.created_at).format('D MMM YYYY, LT')}</Stack>\n      </Stack>\n      {application.job.privacy_acknowledgement && (\n        <Stack sx={{ rowGap: 1 }}>\n          <Stack sx={{ color: '#084D6D' }}>Privacy statement</Stack>\n          <Stack>{application.privacy_acknowledgement ? 'Agreed' : '-'}</Stack>\n        </Stack>\n      )}\n      {application.source && (\n        <Stack sx={{ rowGap: 1 }}>\n          <Stack sx={{ color: '#084D6D' }}>Source</Stack>\n          <Stack>{application.source || '-'}</Stack>\n        </Stack>\n      )}\n      {application.original_job && (\n        <Stack sx={{ rowGap: 1 }}>\n          <Stack sx={{ color: '#084D6D' }}>Original job</Stack>\n          <Link\n            id=\"original-job-link\"\n            href={`${window.location.origin}/admin/jobs/${application.original_job.id}`}\n            sx={{ color: 'black !important' }}\n          >\n            {application.original_job?.title || '-'}\n          </Link>\n        </Stack>\n      )}\n    </Stack>\n  );\n}\n","import React, { useEffect } from 'react';\nimport { classes } from '../../../Components/Modals/styles';\nimport { Box } from '@mui/material';\nimport { IAttachment } from '../../types';\n\nexport default function AudioPreview({\n  selectedAttachment,\n  setIsLoadingPreview\n}: {\n  selectedAttachment: IAttachment;\n  setIsLoadingPreview: React.Dispatch<React.SetStateAction<boolean>>;\n}) {\n  const BASE_URL = window.location.origin;\n\n  useEffect(() => {\n    setIsLoadingPreview(true);\n  }, [selectedAttachment]);\n\n  return (\n    <Box sx={{ ...classes.mediaContentContainer, height: '15vh' }}>\n      <audio\n        controls\n        onLoadStart={() => setIsLoadingPreview(true)}\n        onCanPlayThrough={() => setIsLoadingPreview(false)}\n      >\n        <source src={`${BASE_URL}/admin/assets/${selectedAttachment.id}`} />\n        Your browser does not support the audio tag.\n      </audio>\n    </Box>\n  );\n}\n","import React from 'react';\nimport { IAttachment } from '../../types';\nimport { classes } from '../../../Components/Modals/styles';\nimport { Box } from '@mui/material';\nimport { useDragScroll } from '../../../hooks';\nimport { ReactDOMAttributes } from '@use-gesture/react/dist/declarations/src/types';\n\nexport default function ImagePreview({\n  isLoadingPreview,\n  onPinchHandler,\n  selectedAttachment,\n  setIsLoadingPreview,\n  zoom\n}: {\n  isLoadingPreview: boolean;\n  onPinchHandler: (...args: unknown[]) => ReactDOMAttributes;\n  selectedAttachment: IAttachment;\n  setIsLoadingPreview: React.Dispatch<React.SetStateAction<boolean>>;\n  zoom: number;\n}) {\n  const [scrollRef] = useDragScroll();\n  const BASE_URL = window.location.origin;\n\n  return (\n    <Box ref={scrollRef} sx={{ ...classes.imagePreviewContainer }} {...onPinchHandler()}>\n      <Box\n        component=\"img\"\n        alt={selectedAttachment.attached_file_name}\n        draggable={false}\n        onLoad={() => setIsLoadingPreview(false)}\n        src={`${BASE_URL}/admin/assets/${selectedAttachment.id}`}\n        sx={{\n          ...(classes.imagePreview as React.CSSProperties),\n          opacity: isLoadingPreview ? 0 : 1,\n          transform: `scale(${zoom})`,\n          transformOrigin: '0 0'\n        }}\n      />\n    </Box>\n  );\n}\n","import React from 'react';\nimport { Box } from '@mui/material';\nimport { Document, Page, pdfjs } from 'react-pdf';\nimport { IAttachment } from '../../types';\nimport { classes } from '../../../Components/Modals/styles';\nimport { useDragScroll } from '../../../hooks';\nimport { ReactDOMAttributes } from '@use-gesture/react/dist/declarations/src/types';\n\npdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;\n\nexport default function PdfPreview({\n  onPinchHandler,\n  selectedAttachment,\n  setIsLoadingPreview,\n  zoom\n}: {\n  onPinchHandler: (...args: unknown[]) => ReactDOMAttributes;\n  selectedAttachment: IAttachment;\n  setIsLoadingPreview: React.Dispatch<React.SetStateAction<boolean>>;\n  zoom: number;\n}) {\n  const BASE_URL = window.location.origin;\n  const [scrollRef] = useDragScroll();\n  const scaledDimension = `${(100 / zoom) * 0.1}%`;\n\n  const [numPages, setNumPages] = React.useState<number>(0);\n\n  function onDocumentLoadSuccess({ numPages }: { numPages: number }) {\n    setNumPages(numPages);\n    setIsLoadingPreview(false);\n  }\n\n  function onDocumentLoadProgress({ loaded, total }: { loaded: number; total: number }) {\n    if (loaded >= total) {\n      setIsLoadingPreview(false);\n    }\n  }\n\n  return (\n    <Box sx={{ overflow: 'auto' }} ref={scrollRef} {...onPinchHandler()}>\n      <Box\n        sx={{\n          paddingBottom: '5px',\n          touchAction: 'none',\n          transform: `scale(${zoom})`,\n          width: scaledDimension,\n          height: scaledDimension\n        }}\n      >\n        <Document\n          file={`${BASE_URL}/admin/assets/${selectedAttachment.id}`}\n          loading={<Box sx={classes.previewLoader}></Box>}\n          onLoadStart={() => setIsLoadingPreview(true)}\n          onLoadError={() => setIsLoadingPreview(false)}\n          onLoadSuccess={onDocumentLoadSuccess}\n          onLoadProgress={onDocumentLoadProgress}\n        >\n          {[...Array(numPages)].map((_, page) => (\n            <Box sx={{ ...classes.pdfPage }} key={page}>\n              <Page\n                width={750}\n                pageNumber={page + 1}\n                renderTextLayer={false}\n                renderAnnotationLayer={false}\n              />\n            </Box>\n          ))}\n        </Document>\n      </Box>\n    </Box>\n  );\n}\n","import React from 'react';\nimport { Box } from '@mui/material';\nimport { useQuery } from '@tanstack/react-query';\nimport { ApplicationAction, IAttachment } from '../../types';\n\nexport default function TextPreview({\n  selectedAttachment,\n  dispatch,\n  setIsLoadingPreview\n}: {\n  selectedAttachment: IAttachment;\n  dispatch: React.Dispatch<ApplicationAction>;\n  setIsLoadingPreview: React.Dispatch<React.SetStateAction<boolean>>;\n}) {\n  const BASE_URL = window.location.origin;\n  const { data: text } = useQuery({\n    queryKey: ['textData', selectedAttachment?.id],\n    queryFn: async () => {\n      const response = await fetch(`${BASE_URL}/admin/assets/${selectedAttachment?.id}`);\n      return response.text();\n    },\n    onError: (error: Error) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting text data, ${error.message}`,\n          state: 'error'\n        }\n      });\n    },\n    onSettled: () => setIsLoadingPreview(false)\n  });\n\n  return (\n    <>\n      <Box>\n        <pre>{text}</pre>\n      </Box>\n    </>\n  );\n}\n","import React, { useEffect } from 'react';\nimport { classes } from '../../../Components/Modals/styles';\nimport { Box } from '@mui/material';\nimport { IAttachment, IVideoInterview } from '../../types';\n\nexport default function VideoPreview({\n  selectedAttachment,\n  videoRef,\n  setIsLoadingPreview,\n  source\n}: {\n  selectedAttachment: IAttachment | IVideoInterview;\n  videoRef: React.RefObject<HTMLVideoElement>;\n  isLoadingPreview: boolean;\n  setIsLoadingPreview: React.Dispatch<React.SetStateAction<boolean>>;\n  source: string | undefined;\n}) {\n  useEffect(() => {\n    setIsLoadingPreview(true);\n  }, [selectedAttachment]);\n\n  useEffect(() => {\n    if (source && videoRef.current) {\n      videoRef.current.load();\n      setIsLoadingPreview(false);\n    }\n  }, [source, videoRef, setIsLoadingPreview]);\n\n  return (\n    <Box sx={classes.mediaContentContainer}>\n      <video\n        ref={videoRef}\n        key={selectedAttachment?.id}\n        width=\"100%\"\n        controls\n        style={{ objectFit: 'contain', maxHeight: '30vh' }}\n        onLoadStart={() => setIsLoadingPreview(false)}\n      >\n        <source src={source} />\n        Your browser does not support the video tag.\n      </video>\n    </Box>\n  );\n}\n","import React, { Dispatch, FC, SetStateAction } from 'react';\nimport { Box, Button, Stack } from '@mui/material';\nimport { pdfjs } from 'react-pdf';\nimport { IAttachment, IPreviewData } from '../../types';\nimport { classes } from '../../../Components/Modals/styles';\nimport { ReactDOMAttributes } from '@use-gesture/react/dist/declarations/src/types';\nimport { useDragScroll } from '../../../hooks';\n\npdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;\n\ninterface WordPreviewProps {\n  onPinchHandler: (...args: unknown[]) => ReactDOMAttributes;\n  previewData: IPreviewData;\n  selectedAttachment: IAttachment;\n  setCurrentIndex: Dispatch<SetStateAction<number>>;\n  zoom: number;\n}\n\nconst WordPreview: FC<WordPreviewProps> = ({\n  onPinchHandler,\n  previewData,\n  selectedAttachment,\n  setCurrentIndex,\n  zoom\n}) => {\n  const [scrollRef] = useDragScroll();\n\n  if (!('data' in previewData)) return null;\n\n  return (\n    <Stack>\n      <NavigationButtons\n        hasPrev={previewData.prev}\n        hasNext={previewData.next}\n        setCurrentIndex={setCurrentIndex}\n      />\n      <Box sx={classes.docPreviewContent}>\n        <Box ref={scrollRef} {...onPinchHandler()}>\n          <ImagePreviewList\n            imageData={previewData.data || []}\n            attachmentName={selectedAttachment.attached_file_name}\n            zoom={zoom}\n          />\n        </Box>\n      </Box>\n    </Stack>\n  );\n};\n\nconst NavigationButton: FC<{\n  onClick: () => void;\n  label: string;\n}> = ({ onClick, label }) => (\n  <Button sx={classes.downloadButton} onClick={onClick}>\n    {label}\n  </Button>\n);\n\nconst NavigationButtons: FC<{\n  hasPrev: boolean;\n  hasNext: boolean;\n  setCurrentIndex: Dispatch<SetStateAction<number>>;\n}> = ({ hasPrev, hasNext, setCurrentIndex }) => (\n  <Box sx={{ ...classes.docPreviewNavigation, position: 'sticky', top: 0 }}>\n    {hasPrev && (\n      <NavigationButton onClick={() => setCurrentIndex((prev) => prev - 1)} label=\"Previous\" />\n    )}\n    {hasNext && (\n      <NavigationButton onClick={() => setCurrentIndex((prev) => prev + 1)} label=\"Next\" />\n    )}\n  </Box>\n);\n\nconst ImagePreviewList: FC<{\n  imageData: string[];\n  attachmentName: string;\n  zoom: number;\n}> = ({ imageData, attachmentName, zoom }) => (\n  <>\n    {imageData.map((src, index) => (\n      <Box\n        key={index}\n        alt={attachmentName}\n        component=\"img\"\n        draggable={false}\n        src={src || ''}\n        sx={{\n          ...classes.imagePreview,\n          height: '1000px',\n          transform: `scale(${zoom})`,\n          transformOrigin: '0 0',\n          borderBottom: '2px solid black'\n        }}\n      />\n    ))}\n  </>\n);\n\nexport default WordPreview;\n","import React, { Dispatch } from 'react';\nimport { useQuery, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../API';\nimport {\n  ApplicationAction,\n  ApplicationState,\n  IApplication,\n  IAttachment,\n  IVideoInterview\n} from '../../types';\nimport {\n  Box,\n  IconButton,\n  Paper,\n  Stack,\n  Table,\n  TableBody,\n  TableCell,\n  TableContainer,\n  TableHead,\n  TableRow,\n  Tooltip\n} from '@mui/material';\nimport { Delete, Download, OpenInNew, Visibility } from '@mui/icons-material';\nimport { styles } from '../../styles';\nimport { sharedClasses } from '../../../../NewUI/Components/CustomUIElements/sharedClasses';\nimport NoAttachmentsSVG, { CopyLinkSVG } from '../Icons';\nimport DocTypeIcon from '../../../Components/Utilities/DocTypeIcon';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\nimport AttachmentSelector from '../../../Components/Utilities/AttachmentSelector';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\nimport TableSkeleton from '../../../Components/Multiposter/TableSkeleton';\nimport { IUserPermissions } from '../../../Components/sharedTypes';\nimport dayjs from 'dayjs';\nimport {\n  categorizeAttachments,\n  VIDEO_INTERVIEW_DISPLAY_NAME,\n  VIDEO_INTERVIEW_SOURCE_INDEX\n} from '../../config';\n\nconst BASE_URL = window.location.origin;\n\nfunction AttachmentsTab({\n  ApplicationState,\n  dispatch\n}: {\n  ApplicationState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n}) {\n  const { apiKey, userTimeZone } = ApplicationState;\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const permissions = queryClient.getQueryData<IUserPermissions>(['permissions']);\n\n  const { data: combinedData, isLoading } = useQuery({\n    queryKey: ['attachments'],\n    queryFn: async () => {\n      if (application) {\n        const [attachmentsResult, videoInterviewResult] = await Promise.allSettled([\n          Api.getApplicationAttachments(application.job.id, application.id),\n          Api.getVideoInterview(application.id)\n        ]);\n\n        const attachmentsData =\n          attachmentsResult.status === 'fulfilled'\n            ? attachmentsResult.value\n            : { res: { attachments: [] } };\n        const videoInterviewData =\n          videoInterviewResult.status === 'fulfilled' ? videoInterviewResult.value : null;\n\n        const categorizedAttachments = categorizeAttachments(attachmentsData.res.attachments);\n\n        return {\n          attachments: categorizedAttachments,\n          videoInterview: videoInterviewData?.res || null\n        };\n      }\n      return { attachments: { files: [], videos: [] }, videoInterview: null };\n    },\n    onError: (error) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error fetching data: ${error}`,\n          state: 'error'\n        }\n      });\n    },\n    enabled: !!application\n  });\n\n  function AttachmentTableRow({\n    id,\n    name,\n    publicUrl,\n    attachmentTitle,\n    attachedBy,\n    createdAt,\n    format,\n    url,\n    attachmentType,\n    item\n  }: {\n    id: number | string;\n    name: string;\n    publicUrl: string;\n    attachmentTitle?: string;\n    attachedBy: string;\n    createdAt?: string;\n    format?: string;\n    url?: string;\n    attachmentType: 'files' | 'video';\n    item: IAttachment | IVideoInterview;\n  }) {\n    const timeZoneString = Intl.DateTimeFormat().resolvedOptions().timeZone;\n    const handleCopy = () => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: 'Link copied to clipboard',\n          state: 'success'\n        }\n      });\n    };\n\n    const handleOpenItem = (Item: IAttachment | IVideoInterview) => {\n      dispatch({\n        type: 'SET_SELECTED_ATTACHMENT_ACTION',\n        payload: { ...ApplicationState.selectedAttachmentAction, preview: Item }\n      });\n    };\n\n    return (\n      <TableRow key={id}>\n        <TableCell>\n          <Box\n            id={`${attachmentType === 'video' ? 'video' : 'file'}-details-button`}\n            sx={styles.fileIconContainer}\n          >\n            <Box sx={styles.fileIcon} onClick={() => handleOpenItem(item)}>\n              {DocTypeIcon(format)}\n            </Box>\n            <Box>\n              <Stack direction={'row'} alignItems={'center'}>\n                <Box sx={styles.fileName} onClick={() => handleOpenItem(item)}>\n                  {name}\n                </Box>\n              </Stack>\n              <Box sx={styles.fileDate}>\n                {createdAt\n                  ? dayjs(createdAt)\n                      .tz(userTimeZone || timeZoneString)\n                      .format('Do MMMM YYYY[,] h:mma')\n                  : '-'}\n              </Box>\n            </Box>\n          </Box>\n        </TableCell>\n        <TableCell sx={styles.fileAttachedBy}>\n          {attachmentTitle === 'N/A' ? '-' : attachmentTitle}\n        </TableCell>\n        <TableCell sx={styles.fileAttachedBy}>{attachedBy}</TableCell>\n        <TableCell align={'right'}>\n          <Tooltip title={'Preview'} placement={'top'} arrow>\n            <IconButton\n              id={`view-${attachmentType === 'video' ? 'video' : 'file'}-button`}\n              onClick={() => handleOpenItem(item)}\n            >\n              <Visibility sx={styles.preview} />\n            </IconButton>\n          </Tooltip>\n          {permissions?.Applications?.['Download Attachments'] && (\n            <Tooltip title={'Download'} placement={'top'} arrow>\n              <IconButton\n                id={`download-${attachmentType === 'video' ? 'video' : 'file'}-button`}\n                sx={styles.tableActionIcon}\n                href={url}\n              >\n                <Download sx={{ fontSize: 16, color: theme.palette.common.grey }} />\n              </IconButton>\n            </Tooltip>\n          )}\n          {attachmentType === 'video' && (\n            <>\n              <CopyToClipboard\n                id=\"copy-video-link-button\"\n                text={BASE_URL + publicUrl}\n                onCopy={handleCopy}\n              >\n                <Tooltip title={'Copy link'} placement={'top'} arrow>\n                  <IconButton sx={styles.tableActionIcon}>\n                    <CopyLinkSVG />\n                  </IconButton>\n                </Tooltip>\n              </CopyToClipboard>\n              <Tooltip title={'Open video in new tab'} placement={'top'} arrow>\n                <IconButton\n                  id=\"open-video-in-new-tab-button\"\n                  href={publicUrl}\n                  target=\"_blank\"\n                  rel=\"noreferrer\"\n                >\n                  <OpenInNew sx={{ fontSize: 16, color: theme.palette.common.grey }} />\n                </IconButton>\n              </Tooltip>\n            </>\n          )}\n          {permissions?.Applications['Delete Application Attachments'] && (\n            <Tooltip title={'Delete'} placement={'top'} arrow>\n              <IconButton\n                id={`delete-${attachmentType === 'video' ? 'video' : 'file'}-button`}\n                sx={styles.tableActionIcon}\n                onClick={() => {\n                  dispatch({\n                    type: 'SET_SELECTED_ATTACHMENT_ACTION',\n                    payload: { ...ApplicationState.selectedAttachmentAction, delete: item }\n                  });\n                }}\n              >\n                <Delete sx={{ color: theme.palette.error.main, fontSize: 16 }} />\n              </IconButton>\n            </Tooltip>\n          )}\n        </TableCell>\n      </TableRow>\n    );\n  }\n\n  function AttachmentTable({\n    attachmentsList,\n    attachmentType\n  }: {\n    attachmentsList: IAttachment[];\n    attachmentType: 'files' | 'video';\n  }) {\n    return (\n      <>\n        {attachmentsList.map((attachment: IAttachment) => (\n          <AttachmentTableRow\n            key={attachment.id}\n            id={attachment.id}\n            name={attachment.attached_file_name}\n            publicUrl={attachment.public_url}\n            attachmentTitle={attachment.attachment_title}\n            attachedBy={attachment.attached_by}\n            createdAt={attachment.created_at}\n            format={attachment.attached_file_name.split('.').pop()}\n            url={\n              attachmentType === 'video'\n                ? attachment.attached_url\n                : `${BASE_URL}/admin/assets/${attachment.id}`\n            }\n            attachmentType={attachmentType}\n            item={attachment}\n          />\n        ))}\n      </>\n    );\n  }\n\n  const getAttachmentAvailable = () => {\n    let hasVideo = false;\n    let hasFile = false;\n    let hasVideoInterview = false;\n\n    if (!isLoading && combinedData) {\n      hasVideo = combinedData.attachments?.videos.length > 0;\n      hasFile = combinedData.attachments?.files.length > 0;\n      hasVideoInterview = !!combinedData.videoInterview;\n    }\n\n    return {\n      hasVideo,\n      hasFile,\n      hasVideoInterview\n    };\n  };\n  const { hasVideo, hasFile, hasVideoInterview } = getAttachmentAvailable();\n\n  function AttachmentTableHead() {\n    return (\n      <TableHead>\n        <TableRow>\n          <TableCell>File Name</TableCell>\n          <TableCell>Attachment Title</TableCell>\n          <TableCell>Attached by</TableCell>\n        </TableRow>\n      </TableHead>\n    );\n  }\n\n  return (\n    <Stack sx={styles.attachmentsContainer}>\n      <Stack sx={{ fontSize: '16px', fontWeight: 600 }}>Attachments</Stack>\n      {isLoading && (\n        <TableSkeleton size={4} borderType={'none'} height={'60px'} padding={'5px 0px'} />\n      )}\n      {!isLoading && combinedData && !hasVideo && !hasFile && !hasVideoInterview && (\n        <Box sx={styles.noAttachments}>\n          <NoAttachmentsSVG />\n          <Box sx={sharedClasses.emptyStateText}>No attachments added</Box>\n        </Box>\n      )}\n      {!isLoading && combinedData && (\n        <TableContainer sx={{ boxShadow: 'none' }} component={Paper}>\n          <Table sx={styles.tableWrapper} aria-label=\"application attachments\">\n            <AttachmentTableHead />\n            {(hasVideo || hasVideoInterview) && (\n              <>\n                <TableBody>\n                  {combinedData.videoInterview && (\n                    <AttachmentTableRow\n                      id={combinedData.videoInterview.id}\n                      name={VIDEO_INTERVIEW_DISPLAY_NAME}\n                      publicUrl={combinedData.videoInterview.watch_interview_link}\n                      attachedBy=\"-\"\n                      format={\n                        combinedData.videoInterview.sources[VIDEO_INTERVIEW_SOURCE_INDEX]?.format\n                      }\n                      url={combinedData.videoInterview.sources[VIDEO_INTERVIEW_SOURCE_INDEX]?.url}\n                      attachmentType=\"video\"\n                      item={combinedData.videoInterview}\n                    />\n                  )}\n                  <AttachmentTable\n                    attachmentsList={combinedData.attachments.videos}\n                    attachmentType=\"video\"\n                  />\n                </TableBody>\n              </>\n            )}\n            {hasFile && (\n              <>\n                <TableBody>\n                  <AttachmentTable\n                    attachmentsList={combinedData.attachments.files}\n                    attachmentType=\"files\"\n                  />\n                </TableBody>\n              </>\n            )}\n          </Table>\n        </TableContainer>\n      )}\n      {permissions?.Applications?.['Upload File'] && application && (\n        <AttachmentSelector\n          heightOverride={'100px'}\n          apiKey={apiKey}\n          performUpload={true}\n          maxSize={50000000}\n          uploadUrl={`${BASE_URL}/api/v4/jobs/${application.job.id}/applications/${application.id}/attachments`}\n          onUploadComplete={() => {\n            dispatch({\n              type: 'SET_SNACKBAR',\n              payload: {\n                message: 'File successfully uploaded',\n                state: 'success'\n              }\n            });\n            queryClient.removeQueries(['attachments']);\n          }}\n          attachment={true}\n          compact={true}\n          maxVideoSize={500000000}\n          buttonId=\"choose-file-button\"\n        />\n      )}\n    </Stack>\n  );\n}\n\nexport default AttachmentsTab;\n","import React from 'react';\n\nexport function ExternalEmailSVG() {\n  return (\n    <svg width=\"20\" height=\"20\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g id=\"icons\">\n        <path\n          id=\"Vector\"\n          d=\"M8.66732 12.6665C8.66732 10.4598 10.4607 8.6665 12.6673 8.6665C13.4007 8.6665 14.0807 8.8665 14.6673 9.2065V3.99984C14.6673 3.64622 14.5268 3.30708 14.2768 3.05703C14.0267 2.80698 13.6876 2.6665 13.334 2.6665H2.66732C1.92732 2.6665 1.33398 3.25984 1.33398 3.99984V11.9998C1.33398 12.3535 1.47446 12.6926 1.72451 12.9426C1.97456 13.1927 2.3137 13.3332 2.66732 13.3332H8.72732C8.69398 13.1132 8.66732 12.8932 8.66732 12.6665ZM2.66732 5.33317V3.99984L8.00065 7.33317L13.334 3.99984V5.33317L8.00065 8.6665L2.66732 5.33317ZM13.334 14.6665V13.3332H10.6673V11.9998H13.334V10.6665L15.334 12.6665L13.334 14.6665Z\"\n          fill=\"#5BC4BF\"\n        />\n      </g>\n    </svg>\n  );\n}\n\nexport function SendFormSVG() {\n  return (\n    <svg width=\"18\" height=\"18\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g id=\"icons\">\n        <path\n          id=\"Path / file-send\"\n          d=\"M9.15462 1.00003H3.43544C3.24657 0.998751 3.05933 1.03418 2.88458 1.10426C2.70984 1.17433 2.55108 1.27767 2.41753 1.40825C2.28398 1.53883 2.1783 1.69407 2.10663 1.86493C2.03495 2.03579 1.99872 2.21887 2.00003 2.40354V13.5965C2.00003 13.7808 2.03716 13.9633 2.1093 14.1336C2.18143 14.3039 2.28716 14.4586 2.42045 14.5889C2.55374 14.7193 2.71198 14.8226 2.88613 14.8932C3.06028 14.9637 3.24694 15 3.43544 15H12.0209C12.2094 15 12.3961 14.9637 12.5702 14.8932C12.7444 14.8226 12.9026 14.7193 13.0359 14.5889C13.1692 14.4586 13.2749 14.3039 13.3471 14.1336C13.4192 13.9633 13.4563 13.7808 13.4563 13.5965V5.19739L9.15462 1.00003ZM8.11037 13.1518V11.7483H5.24853V10.3605H8.11037V8.95703L10.2536 11.0597L8.10678 13.1518M8.43602 5.89739V2.05266L12.3708 5.90002L8.43602 5.89739Z\"\n          fill=\"#5BC4BF\"\n        />\n      </g>\n    </svg>\n  );\n}\n\nexport function FelixSurveySVG() {\n  return (\n    <svg\n      width=\"400\"\n      height=\"300\"\n      viewBox=\"0 0 600 300\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <rect width=\"600\" height=\"300\" rx=\"18.75\" fill=\"#EBF8F7\" />\n      <path\n        d=\"M131.213 149.086C113.817 136.018 112.889 126.315 118.15 119.153C123.404 111.992 132.856 110.088 150.253 123.163C167.649 136.231 186.397 159.33 181.135 166.484C175.881 173.645 148.609 162.153 131.213 149.086Z\"\n        fill=\"url(#paint0_linear_24589_17118)\"\n      />\n      <path\n        d=\"M49.5886 145.061C52.199 111.884 75.6378 103.714 103.594 105.845C131.55 107.976 153.433 119.599 150.823 152.777C148.213 185.954 122.101 228.109 94.1449 225.978C66.1888 223.847 46.9783 178.231 49.5886 145.061Z\"\n        fill=\"url(#paint1_linear_24589_17118)\"\n      />\n      <path\n        d=\"M46.8464 138.6C55.803 118.861 65.0878 115.876 73.2472 119.461C81.4066 123.045 85.3456 131.846 76.389 151.584C67.4325 171.323 48.98 194.539 40.8128 190.954C32.6456 187.37 37.8898 158.346 46.8464 138.6Z\"\n        fill=\"url(#paint2_linear_24589_17118)\"\n      />\n      <path\n        d=\"M61.6752 71.0271C61.0159 91.5804 85.0074 98.4528 114.844 99.3696C144.681 100.286 169.069 94.8961 169.728 74.3505C170.388 53.8049 147.07 25.8635 117.233 24.9467C87.3969 24.0299 62.3345 50.4738 61.6751 71.0194L61.6752 71.0271Z\"\n        fill=\"url(#paint3_linear_24589_17118)\"\n      />\n      <path\n        d=\"M74.1728 67.0036C72.946 82.7812 91.1552 88.8762 114.064 90.5894C136.974 92.3027 155.911 88.9835 157.137 73.2059C158.364 57.4283 141.406 35.1629 118.497 33.4496C95.588 31.7364 75.3997 51.226 74.1728 67.0036Z\"\n        fill=\"url(#paint4_linear_24589_17118)\"\n      />\n      <path\n        d=\"M101.305 76.724C103.208 76.7568 104.777 75.2648 104.81 73.3915C104.842 71.5182 103.326 69.973 101.423 69.9402C99.5194 69.9074 97.9502 71.3994 97.9177 73.2727C97.8851 75.146 99.4017 76.6912 101.305 76.724Z\"\n        fill=\"white\"\n      />\n      <path\n        d=\"M138.49 73.972C140.394 74.0048 141.963 72.5128 141.995 70.6395C142.028 68.7663 140.511 67.2211 138.608 67.1883C136.705 67.1555 135.136 68.6475 135.103 70.5208C135.071 72.394 136.587 73.9392 138.49 73.972Z\"\n        fill=\"white\"\n      />\n      <path\n        d=\"M109.515 79.3736C110.47 80.2363 120.34 88.9309 128.653 83.3117C129.926 82.4488 131.554 80.992 133.099 78.4182\"\n        stroke=\"white\"\n        stroke-width=\"3.44856\"\n        stroke-miterlimit=\"10\"\n      />\n      <rect x=\"194\" y=\"72\" width=\"366\" height=\"194\" rx=\"10.5464\" fill=\"white\" />\n      <rect\n        x=\"229.697\"\n        y=\"105.782\"\n        width=\"62.268\"\n        height=\"27.7982\"\n        rx=\"1.11193\"\n        fill=\"#FED500\"\n        fill-opacity=\"0.12\"\n      />\n      <rect\n        x=\"300.861\"\n        y=\"105.782\"\n        width=\"62.268\"\n        height=\"27.7982\"\n        rx=\"1.11193\"\n        fill=\"#3EAA3E\"\n        fill-opacity=\"0.12\"\n      />\n      <rect\n        x=\"372.023\"\n        y=\"105.782\"\n        width=\"62.2681\"\n        height=\"27.4276\"\n        rx=\"1.11193\"\n        fill=\"#E6A052\"\n        fill-opacity=\"0.12\"\n      />\n      <rect\n        x=\"443.188\"\n        y=\"105.782\"\n        width=\"62.2681\"\n        height=\"27.4276\"\n        rx=\"1.11193\"\n        fill=\"#E37D7A\"\n        fill-opacity=\"0.12\"\n      />\n      <rect\n        x=\"524.601\"\n        y=\"105.968\"\n        width=\"20.3854\"\n        height=\"14.4551\"\n        rx=\"2.03854\"\n        stroke=\"#EAEEF0\"\n        stroke-width=\"0.370643\"\n      />\n      <rect width=\"336.544\" height=\"20.756\" transform=\"translate(208.629 85.0254)\" fill=\"white\" />\n      <path d=\"M208.764 96.8521H545.308\" stroke=\"#DDDDDD\" stroke-width=\"0.370643\" />\n      <rect x=\"241.459\" y=\"86.4038\" width=\"32.694\" height=\"7.38251\" rx=\"1.48257\" fill=\"#D9D9D9\" />\n      <rect x=\"208.766\" y=\"86.4038\" width=\"24.2568\" height=\"7.38251\" rx=\"1.48257\" fill=\"#084D6D\" />\n      <rect x=\"282.59\" y=\"86.4038\" width=\"35.8579\" height=\"7.38251\" rx=\"1.48257\" fill=\"#D9D9D9\" />\n      <rect x=\"326.887\" y=\"86.4038\" width=\"35.8579\" height=\"7.38251\" rx=\"1.48257\" fill=\"#D9D9D9\" />\n      <rect x=\"371.182\" y=\"86.4038\" width=\"35.8579\" height=\"7.38251\" rx=\"1.48257\" fill=\"#D9D9D9\" />\n      <rect x=\"415.477\" y=\"86.4038\" width=\"35.8579\" height=\"7.38251\" rx=\"1.48257\" fill=\"#D9D9D9\" />\n      <rect x=\"460.826\" y=\"86.4038\" width=\"48.5137\" height=\"7.38251\" rx=\"1.48257\" fill=\"#D9D9D9\" />\n      <rect x=\"515.851\" y=\"85.5476\" width=\"12.9725\" height=\"9.26608\" rx=\"2.03854\" fill=\"white\" />\n      <rect\n        x=\"515.851\"\n        y=\"85.5476\"\n        width=\"12.9725\"\n        height=\"9.26608\"\n        rx=\"2.03854\"\n        stroke=\"#E3E3E3\"\n        stroke-width=\"0.370643\"\n      />\n      <rect x=\"532.16\" y=\"85.5476\" width=\"12.9725\" height=\"9.26608\" rx=\"2.03854\" fill=\"white\" />\n      <rect\n        x=\"532.16\"\n        y=\"85.5476\"\n        width=\"12.9725\"\n        height=\"9.26608\"\n        rx=\"2.03854\"\n        stroke=\"#E3E3E3\"\n        stroke-width=\"0.370643\"\n      />\n      <rect\n        x=\"209.871\"\n        y=\"138.82\"\n        width=\"336.173\"\n        height=\"117.907\"\n        rx=\"1.66789\"\n        fill=\"white\"\n        stroke=\"#E3E3E3\"\n        stroke-width=\"0.370643\"\n      />\n      <rect x=\"218.256\" y=\"146.518\" width=\"47.459\" height=\"7.38251\" rx=\"1.48257\" fill=\"#939393\" />\n      <rect x=\"221.547\" y=\"191.159\" width=\"47.459\" height=\"7.38251\" rx=\"1.48257\" fill=\"#939393\" />\n      <rect x=\"221.547\" y=\"204.472\" width=\"172.72\" height=\"7.41286\" rx=\"1.48257\" fill=\"#D9D9D9\" />\n      <rect x=\"221.547\" y=\"215.049\" width=\"172.72\" height=\"7.41286\" rx=\"1.48257\" fill=\"#D9D9D9\" />\n      <rect\n        x=\"468.207\"\n        y=\"204.502\"\n        width=\"11.1193\"\n        height=\"11.1193\"\n        rx=\"1.11193\"\n        fill=\"#E37D7A\"\n        fill-opacity=\"0.12\"\n      />\n      <rect\n        x=\"482.291\"\n        y=\"204.502\"\n        width=\"11.1193\"\n        height=\"11.1193\"\n        rx=\"1.11193\"\n        fill=\"#E6A052\"\n        fill-opacity=\"0.12\"\n      />\n      <rect\n        x=\"496.375\"\n        y=\"204.502\"\n        width=\"11.1193\"\n        height=\"11.1193\"\n        rx=\"1.11193\"\n        fill=\"#FED500\"\n        fill-opacity=\"0.12\"\n      />\n      <rect\n        x=\"510.461\"\n        y=\"204.502\"\n        width=\"11.1193\"\n        height=\"11.1193\"\n        rx=\"1.11193\"\n        fill=\"#8CCF95\"\n        fill-opacity=\"0.12\"\n      />\n      <rect\n        x=\"524.545\"\n        y=\"204.502\"\n        width=\"11.1193\"\n        height=\"11.1193\"\n        rx=\"1.11193\"\n        fill=\"#3EAA3E\"\n        fill-opacity=\"0.12\"\n      />\n      <rect x=\"509.525\" y=\"231.965\" width=\"29.6515\" height=\"14.7954\" rx=\"2.22386\" fill=\"#5BC4C0\" />\n      <rect x=\"222.547\" y=\"163.724\" width=\"312.082\" height=\"17.4202\" rx=\"3.52111\" fill=\"white\" />\n      <rect\n        x=\"222.547\"\n        y=\"163.724\"\n        width=\"312.082\"\n        height=\"17.4202\"\n        rx=\"3.52111\"\n        stroke=\"#5BC4BF\"\n        stroke-width=\"0.370643\"\n      />\n      <rect x=\"228.291\" y=\"169.469\" width=\"5.93029\" height=\"5.93029\" rx=\"1\" fill=\"#5BC4BF\" />\n      <rect\n        width=\"4.44772\"\n        height=\"4.44772\"\n        rx=\"1\"\n        transform=\"matrix(1 0 0 -1 521.471 174.658)\"\n        fill=\"#5BC4BF\"\n      />\n      <rect x=\"241\" y=\"169\" width=\"48\" height=\"7\" rx=\"1.48257\" fill=\"#D9D9D9\" />\n      <rect x=\"468.207\" y=\"190.813\" width=\"47.459\" height=\"7.38251\" rx=\"1.48257\" fill=\"#939393\" />\n      <defs>\n        <linearGradient\n          id=\"paint0_linear_24589_17118\"\n          x1=\"190.109\"\n          y1=\"172.098\"\n          x2=\"99.032\"\n          y2=\"125.553\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop offset=\"0.19\" stop-color=\"#92ADF4\" />\n          <stop offset=\"0.46\" stop-color=\"#88A1F2\" />\n          <stop offset=\"0.78\" stop-color=\"#798DF0\" />\n        </linearGradient>\n        <linearGradient\n          id=\"paint1_linear_24589_17118\"\n          x1=\"149.466\"\n          y1=\"169.521\"\n          x2=\"48.1708\"\n          y2=\"161.548\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop stop-color=\"#CDD7F2\" />\n          <stop offset=\"0.35\" stop-color=\"#AABFFB\" />\n          <stop offset=\"0.72\" stop-color=\"#849BF1\" />\n          <stop offset=\"1\" stop-color=\"#798DF0\" />\n        </linearGradient>\n        <linearGradient\n          id=\"paint2_linear_24589_17118\"\n          x1=\"37.5373\"\n          y1=\"201.013\"\n          x2=\"63.1816\"\n          y2=\"102.368\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop offset=\"0.19\" stop-color=\"#92ADF4\" />\n          <stop offset=\"0.46\" stop-color=\"#88A1F2\" />\n          <stop offset=\"0.78\" stop-color=\"#798DF0\" />\n        </linearGradient>\n        <linearGradient\n          id=\"paint3_linear_24589_17118\"\n          x1=\"170.065\"\n          y1=\"63.8191\"\n          x2=\"62.0203\"\n          y2=\"60.3484\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop stop-color=\"#92ADF4\" />\n          <stop offset=\"0.35\" stop-color=\"#8EA8F3\" />\n          <stop offset=\"0.72\" stop-color=\"#849BF1\" />\n          <stop offset=\"1\" stop-color=\"#798DF0\" />\n        </linearGradient>\n        <linearGradient\n          id=\"paint4_linear_24589_17118\"\n          x1=\"115.021\"\n          y1=\"33.3496\"\n          x2=\"116.017\"\n          y2=\"91.1537\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop stop-color=\"#5656DB\" />\n          <stop offset=\"1\" stop-color=\"#4949BB\" />\n        </linearGradient>\n      </defs>\n    </svg>\n  );\n}\n\nexport function CopyLinkSVG() {\n  return (\n    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n      <g id=\"icons\">\n        <path\n          d=\"M7.05969 8.94005C7.33302 9.20005 7.33302 9.62672 7.05969 9.88672C6.79969 10.1467 6.37302 10.1467 6.11302 9.88672C5.4886 9.26137 5.13789 8.41377 5.13789 7.53005C5.13789 6.64633 5.4886 5.79874 6.11302 5.17338L8.47302 2.81338C9.09837 2.18897 9.94597 1.83826 10.8297 1.83826C11.7134 1.83826 12.561 2.18897 13.1864 2.81338C13.8108 3.43874 14.1615 4.28633 14.1615 5.17005C14.1615 6.05377 13.8108 6.90137 13.1864 7.52672L12.193 8.52005C12.1997 7.97338 12.113 7.42672 11.9264 6.90672L12.2397 6.58672C12.4267 6.40193 12.5753 6.18186 12.6766 5.93925C12.778 5.69664 12.8302 5.43632 12.8302 5.17338C12.8302 4.91045 12.778 4.65013 12.6766 4.40752C12.5753 4.16491 12.4267 3.94483 12.2397 3.76005C12.0549 3.573 11.8348 3.42449 11.5922 3.32312C11.3496 3.22176 11.0893 3.16957 10.8264 3.16957C10.5634 3.16957 10.3031 3.22176 10.0605 3.32312C9.81788 3.42449 9.5978 3.573 9.41302 3.76005L7.05969 6.11338C6.87263 6.29817 6.72412 6.51825 6.62276 6.76086C6.5214 7.00347 6.4692 7.26378 6.4692 7.52672C6.4692 7.78965 6.5214 8.04997 6.62276 8.29258C6.72412 8.53519 6.87263 8.75527 7.05969 8.94005ZM8.93968 6.11338C9.19968 5.85338 9.62635 5.85338 9.88635 6.11338C10.5108 6.73874 10.8615 7.58633 10.8615 8.47005C10.8615 9.35377 10.5108 10.2014 9.88635 10.8267L7.52635 13.1867C6.901 13.8111 6.0534 14.1618 5.16969 14.1618C4.28597 14.1618 3.43837 13.8111 2.81302 13.1867C2.1886 12.5614 1.83789 11.7138 1.83789 10.8301C1.83789 9.94633 2.1886 9.09874 2.81302 8.47338L3.80635 7.48005C3.79969 8.02672 3.88635 8.57338 4.07302 9.10005L3.75968 9.41338C3.57263 9.59817 3.42412 9.81825 3.32276 10.0609C3.2214 10.3035 3.1692 10.5638 3.1692 10.8267C3.1692 11.0897 3.2214 11.35 3.32276 11.5926C3.42412 11.8352 3.57263 12.0553 3.75968 12.2401C3.94447 12.4271 4.16455 12.5756 4.40716 12.677C4.64977 12.7783 4.91008 12.8305 5.17302 12.8305C5.43595 12.8305 5.69627 12.7783 5.93888 12.677C6.18149 12.5756 6.40157 12.4271 6.58635 12.2401L8.93968 9.88672C9.12674 9.70193 9.27525 9.48186 9.37661 9.23925C9.47797 8.99664 9.53017 8.73632 9.53017 8.47338C9.53017 8.21045 9.47797 7.95013 9.37661 7.70752C9.27525 7.46491 9.12674 7.24484 8.93968 7.06005C8.87494 6.99938 8.82333 6.92607 8.78804 6.84465C8.75276 6.76324 8.73455 6.67545 8.73455 6.58672C8.73455 6.49799 8.75276 6.4102 8.78804 6.32878C8.82333 6.24737 8.87494 6.17406 8.93968 6.11338Z\"\n          fill=\"#666666\"\n        />\n      </g>\n    </svg>\n  );\n}\n\nexport default function NoAttachmentsSVG() {\n  return (\n    <svg\n      width=\"104\"\n      height=\"104\"\n      viewBox=\"0 0 104 104\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path\n        d=\"M95.0237 41.2065H8.02917C6.77541 41.2065 5.75903 42.2229 5.75903 43.4767V100.016C5.75903 101.27 6.77541 102.286 8.02917 102.286H95.0237C96.2775 102.286 97.2938 101.27 97.2938 100.016V43.4767C97.2938 42.2229 96.2775 41.2065 95.0237 41.2065Z\"\n        fill=\"white\"\n      />\n      <path\n        d=\"M96.7358 42.9186H9.74133C8.48757 42.9186 7.47119 43.935 7.47119 45.1887V101.728C7.47119 102.982 8.48757 103.998 9.74133 103.998H96.7358C97.9896 103.998 99.006 102.982 99.006 101.728V45.1887C99.006 43.935 97.9896 42.9186 96.7358 42.9186Z\"\n        fill=\"#E3E3E3\"\n      />\n      <path\n        d=\"M94.4708 102.629H8.58056C6.83601 102.629 5.41675 101.209 5.41675 99.4648V44.0297C5.41675 43.8413 5.57083 43.6873 5.75915 43.6873C5.94747 43.6873 6.10156 43.8413 6.10156 44.0297V99.4648C6.10156 100.833 7.21437 101.944 8.58056 101.944H94.4708C95.8387 101.944 96.9498 100.831 96.9498 99.4648V44.0297C96.9498 42.6618 95.837 41.5507 94.4708 41.5507H47.5718C47.3835 41.5507 47.2294 41.3966 47.2294 41.2082C47.2294 41.0199 47.3835 40.8658 47.5718 40.8658H94.4708C96.2154 40.8658 97.6346 42.2851 97.6346 44.0297V99.4648C97.6346 101.209 96.2154 102.629 94.4708 102.629Z\"\n        fill=\"#CFCFCF\"\n      />\n      <path\n        d=\"M45.4598 9.36829L37.7763 55.3805C37.5897 56.5002 38.3481 57.5599 39.4729 57.7482L80.9294 64.6699C82.0525 64.8582 83.1157 64.1015 83.3023 62.9819L84.499 55.8102L85.1256 51.852L92.4222 8.15789C92.6088 7.03823 91.8504 5.97849 90.7256 5.79017L58.1031 0.342529L45.4615 9.35802V9.36829H45.4598Z\"\n        fill=\"white\"\n      />\n      <path\n        d=\"M81.2711 65.0396C81.1393 65.0396 81.0075 65.0293 80.8722 65.007L39.4157 58.0853C38.1077 57.8662 37.2209 56.6284 37.4383 55.3239L45.1236 9.31164C45.1236 9.31164 45.1236 9.30822 45.1236 9.30651V9.29624C45.1407 9.20892 45.1903 9.13017 45.2639 9.07881L57.9055 0.0633176C57.9791 0.010245 58.0716 -0.0102993 58.1606 0.00510891L90.7831 5.45275C91.4166 5.5589 91.9712 5.90473 92.3445 6.42518C92.7177 6.94735 92.8649 7.5825 92.7605 8.21424L85.4639 51.9084L84.839 55.8631L83.6406 63.0365C83.4454 64.2075 82.425 65.0396 81.2711 65.0396ZM45.7776 9.55475L38.1163 55.4351C37.9605 56.3665 38.5956 57.2533 39.5304 57.4091L80.9869 64.3308C81.9234 64.4883 82.8102 63.8549 82.966 62.9235L84.1627 55.7519L84.7876 51.7971L92.0842 8.09953C92.1596 7.64756 92.0534 7.19388 91.7881 6.82237C91.521 6.44915 91.1238 6.20262 90.6701 6.12729L58.188 0.703613L45.7776 9.55475Z\"\n        fill=\"#CFCFCF\"\n      />\n      <path\n        d=\"M54.5363 11.2188C54.3994 11.2188 54.2607 11.2069 54.122 11.1846L45.401 9.72768C45.264 9.70542 45.1545 9.6027 45.1236 9.46745C45.0928 9.3322 45.1459 9.19182 45.2589 9.11135L57.9278 0.0667586C58.0408 -0.0137063 58.1915 -0.0188424 58.3079 0.0547744C58.426 0.128391 58.4877 0.265353 58.4637 0.402314L57.0068 9.12334C56.803 10.3474 55.7364 11.2188 54.5346 11.2188H54.5363ZM46.3289 9.18839L54.235 10.5084C54.7144 10.5888 55.1972 10.4775 55.5943 10.1933C55.9898 9.91087 56.2535 9.48971 56.3339 9.01034L57.6539 1.10424L46.3306 9.18668L46.3289 9.18839Z\"\n        fill=\"#CFCFCF\"\n      />\n      <path\n        d=\"M73.745 36.6303C73.7176 36.6303 73.6885 36.6286 73.6594 36.6235L54.555 33.4323C54.276 33.3861 54.0859 33.1207 54.1339 32.8416C54.1801 32.5626 54.4437 32.3726 54.7245 32.4205L73.8289 35.6117C74.108 35.6579 74.298 35.9233 74.2501 36.2023C74.2073 36.454 73.9899 36.6321 73.7433 36.6321L73.745 36.6303Z\"\n        fill=\"#E3E3E3\"\n      />\n      <path\n        d=\"M80.0572 50.5216C80.0384 50.5216 80.0196 50.5216 80.0007 50.5165L44.0432 44.5107C43.8566 44.4799 43.7299 44.3036 43.7624 44.117C43.7932 43.9304 43.9696 43.8054 44.1562 43.8362L80.1137 49.842C80.3003 49.8728 80.427 50.0491 80.3945 50.2357C80.3671 50.4035 80.2216 50.5216 80.0572 50.5216Z\"\n        fill=\"#CFCFCF\"\n      />\n      <path\n        d=\"M80.9029 45.4592C80.8841 45.4592 80.8653 45.4592 80.8464 45.4541L44.8889 39.4483C44.7023 39.4175 44.5756 39.2412 44.6081 39.0545C44.6389 38.8679 44.8153 38.7412 45.0019 38.7738L80.9594 44.7795C81.146 44.8104 81.2727 44.9867 81.2402 45.1733C81.2128 45.3411 81.0673 45.4592 80.9029 45.4592Z\"\n        fill=\"#CFCFCF\"\n      />\n      <path\n        d=\"M61.3689 52.6035C61.35 52.6035 61.3312 52.6035 61.3124 52.5983L43.1975 49.5732C43.0109 49.5424 42.8842 49.366 42.9167 49.1794C42.9475 48.9928 43.1239 48.8661 43.3105 48.8987L61.4254 51.9238C61.612 51.9546 61.7387 52.1309 61.7061 52.3176C61.6787 52.4853 61.5332 52.6035 61.3689 52.6035Z\"\n        fill=\"#CFCFCF\"\n      />\n      <path\n        d=\"M65.4422 20.1814C66.038 20.1814 66.668 20.2293 67.3271 20.3389C71.864 21.0973 74.1084 23.9872 74.2009 24.1087C74.3156 24.2594 74.2865 24.4734 74.1358 24.5881C73.9852 24.7028 73.7712 24.6737 73.6565 24.523C73.6359 24.4957 71.4719 21.7239 67.2141 21.0134C62.9615 20.3029 59.9398 22.4344 59.909 22.4549C59.7549 22.5645 59.5409 22.5303 59.4313 22.3779C59.32 22.2255 59.3543 22.0115 59.5084 21.9002C59.6213 21.8181 61.9326 20.1797 65.4405 20.1797L65.4422 20.1814Z\"\n        fill=\"#CFCFCF\"\n      />\n      <path\n        d=\"M59.1689 16.9353C59.2647 16.36 58.8761 15.8156 58.3009 15.7197C57.7256 15.6239 57.1812 16.0125 57.0853 16.5877C56.9895 17.163 57.3781 17.7074 57.9533 17.8033C58.5286 17.8991 59.073 17.5105 59.1689 16.9353Z\"\n        fill=\"#CFCFCF\"\n      />\n      <path\n        d=\"M77.3627 19.9741C77.4586 19.3988 77.07 18.8544 76.4947 18.7585C75.9195 18.6627 75.3751 19.0513 75.2792 19.6265C75.1833 20.2018 75.5719 20.7462 76.1472 20.8421C76.7224 20.9379 77.2668 20.5493 77.3627 19.9741Z\"\n        fill=\"#CFCFCF\"\n      />\n      <path\n        d=\"M96.3849 37.6113C96.3541 37.6113 96.3215 37.6079 96.2907 37.5976C89.0934 35.5432 88.4788 29.7669 88.6551 28.7157C88.6859 28.5291 88.8623 28.4024 89.0489 28.4349C89.2355 28.4657 89.3605 28.6421 89.3297 28.8287C89.3194 28.8869 89.0883 34.8293 96.4773 36.9385C96.6588 36.9899 96.765 37.1799 96.7119 37.3614C96.6691 37.512 96.5321 37.6096 96.3832 37.6096L96.3849 37.6113Z\"\n        fill=\"#CFCFCF\"\n      />\n      <path\n        d=\"M43.4458 21.7734C43.4235 21.7734 43.4013 21.7717 43.3773 21.7666C43.3225 21.7563 37.6284 20.0871 34.2214 12.9565C34.1393 12.7853 34.2129 12.5816 34.3824 12.4994C34.5536 12.4172 34.7573 12.4908 34.8395 12.6603C37.7585 18.7705 42.6685 20.9242 43.5143 21.0954C43.6992 21.1331 43.819 21.3129 43.7814 21.4995C43.7488 21.6621 43.605 21.7734 43.4458 21.7734Z\"\n        fill=\"#CFCFCF\"\n      />\n      <path\n        d=\"M57.5015 66.0873C57.4827 66.0873 57.4639 66.0873 57.445 66.0822C57.2584 66.0514 57.1317 65.8751 57.1643 65.6884L57.9741 60.8366C58.0049 60.65 58.1812 60.525 58.3678 60.5558C58.5544 60.5866 58.6811 60.763 58.6486 60.9496L57.8388 65.8014C57.8114 65.9692 57.6659 66.0873 57.5015 66.0873Z\"\n        fill=\"#CFCFCF\"\n      />\n      <path\n        d=\"M61.2813 66.7174C61.2625 66.7174 61.2437 66.7174 61.2248 66.7123C61.0382 66.6815 60.9115 66.5051 60.9441 66.3185L61.7538 61.4667C61.7847 61.28 61.961 61.1534 62.1476 61.1859C62.3342 61.2167 62.4609 61.393 62.4284 61.5796L61.6186 66.4315C61.5912 66.5993 61.4457 66.7174 61.2813 66.7174Z\"\n        fill=\"#CFCFCF\"\n      />\n      <path\n        d=\"M97.2938 50.6056H54.519C53.6921 50.6056 52.908 50.2427 52.3722 49.6144L41.7183 37.1218C41.1824 36.4934 40.3966 36.1305 39.5714 36.1305H8.58044C7.0225 36.1305 5.75903 37.394 5.75903 38.9519V99.4632C5.75903 101.021 7.0225 102.285 8.58044 102.285H94.4707C96.0286 102.285 97.2921 101.021 97.2921 99.4632V50.6039L97.2938 50.6056Z\"\n        fill=\"white\"\n      />\n      <path\n        d=\"M99.006 52.3175H56.2312C55.4043 52.3175 54.6202 51.9546 54.0843 51.3263L43.4304 38.8337C42.8946 38.2054 42.1088 37.8424 41.2836 37.8424H10.2926C8.73466 37.8424 7.47119 39.1059 7.47119 40.6638V101.175C7.47119 102.733 8.73466 103.997 10.2926 103.997H96.1829C97.7408 103.997 99.0043 102.733 99.0043 101.175V52.3158L99.006 52.3175Z\"\n        fill=\"#EAEAEA\"\n      />\n      <path\n        d=\"M94.4708 102.63H8.58056C6.83601 102.63 5.41675 101.211 5.41675 99.4649V38.9553C5.41675 37.2108 6.83601 35.7915 8.58056 35.7915H39.5698C40.4977 35.7915 41.376 36.1973 41.9769 36.9026L52.6308 49.3952C53.1033 49.9482 53.7898 50.2666 54.5174 50.2666H97.2922C97.4806 50.2666 97.6346 50.4207 97.6346 50.609V99.4683C97.6346 101.213 96.2154 102.632 94.4708 102.632V102.63ZM8.58056 36.4746C7.21266 36.4746 6.10156 37.5874 6.10156 38.9536V99.4649C6.10156 100.833 7.21437 101.944 8.58056 101.944H94.4708C95.8387 101.944 96.9498 100.831 96.9498 99.4649V50.948H54.5174C53.5895 50.948 52.7113 50.5423 52.1103 49.8369L41.4565 37.3443C40.9839 36.7913 40.2974 36.4729 39.5698 36.4729H8.58056V36.4746Z\"\n        fill=\"#CFCFCF\"\n      />\n      <path\n        d=\"M92.6818 89.8228C92.4934 89.8228 92.3394 89.6687 92.3394 89.4804V87.7975C92.3394 87.6092 92.4934 87.4551 92.6818 87.4551C92.8701 87.4551 93.0242 87.6092 93.0242 87.7975V89.4804C93.0242 89.6687 92.8701 89.8228 92.6818 89.8228Z\"\n        fill=\"#CFCFCF\"\n      />\n      <path\n        d=\"M92.6818 92.4764C92.4934 92.4764 92.3394 92.3223 92.3394 92.134V91.1068C92.3394 90.9185 92.4934 90.7644 92.6818 90.7644C92.8701 90.7644 93.0242 90.9185 93.0242 91.1068V92.134C93.0242 92.3223 92.8701 92.4764 92.6818 92.4764Z\"\n        fill=\"#CFCFCF\"\n      />\n      <path\n        d=\"M90.1445 99.2971H87.7596C87.5713 99.2971 87.4172 99.143 87.4172 98.9547C87.4172 98.7663 87.5713 98.6123 87.7596 98.6123H90.1445C91.3549 98.6123 92.3393 97.6279 92.3393 96.4175V93.6748C92.3393 93.4865 92.4934 93.3324 92.6817 93.3324C92.87 93.3324 93.0241 93.4865 93.0241 93.6748V96.4175C93.0241 98.0062 91.7315 99.2971 90.1445 99.2971Z\"\n        fill=\"#CFCFCF\"\n      />\n      <path\n        d=\"M85.4758 99.2971H82.9215C82.7332 99.2971 82.5791 99.143 82.5791 98.9547C82.5791 98.7664 82.7332 98.6123 82.9215 98.6123H85.4758C85.6642 98.6123 85.8182 98.7664 85.8182 98.9547C85.8182 99.143 85.6642 99.2971 85.4758 99.2971Z\"\n        fill=\"#CFCFCF\"\n      />\n      <path\n        d=\"M27.5194 59.0109C33.5885 59.0109 37.1306 62.2791 37.2796 62.4178C37.4165 62.5479 37.4234 62.7636 37.295 62.9023C37.1649 63.0393 36.9492 63.0461 36.8105 62.9177C36.7762 62.8852 33.306 59.6957 27.5194 59.6957C21.7327 59.6957 18.2145 63.1848 18.1786 63.219C18.045 63.3543 17.8293 63.3543 17.6941 63.2207C17.5605 63.0872 17.5588 62.8715 17.6907 62.7362C17.8413 62.5839 21.44 59.0092 27.5176 59.0092L27.5194 59.0109Z\"\n        fill=\"#CFCFCF\"\n      />\n      <path\n        d=\"M15.2804 56.4617C16.0445 56.3303 16.5574 55.6043 16.426 54.8402C16.2945 54.0761 15.5685 53.5632 14.8044 53.6946C14.0403 53.8261 13.5274 54.552 13.6589 55.3162C13.7903 56.0803 14.5163 56.5931 15.2804 56.4617Z\"\n        fill=\"#CFCFCF\"\n      />\n      <path\n        d=\"M39.7898 56.4673C40.5543 56.3383 41.0695 55.6139 40.9404 54.8494C40.8114 54.0849 40.087 53.5697 39.3225 53.6987C38.558 53.8278 38.0428 54.5521 38.1719 55.3167C38.3009 56.0812 39.0253 56.5963 39.7898 56.4673Z\"\n        fill=\"#CFCFCF\"\n      />\n    </svg>\n  );\n}\n\nexport function NoFormResponsesSVG() {\n  return (\n    <svg\n      width=\"101\"\n      height=\"101\"\n      viewBox=\"0 0 101 101\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <g clipPath=\"url(#clip0_19514_18450)\">\n        <path\n          d=\"M85.4799 21.487V94.6849C85.4782 96.551 83.9677 98.0636 82.1053 98.062H13.373C11.5105 98.0603 10 96.5477 10 94.6833V82.7387L10.0573 76.1557V3.37867C10.0589 1.51259 11.5695 0 13.4319 0H80.2134C83.1216 0 85.4799 2.37082 85.4799 5.29243V18.0327V21.4887V21.487Z\"\n          fill=\"#E5E5E5\"\n        />\n        <path\n          d=\"M87.2904 22.5905V95.7884C87.2888 97.6545 85.7782 99.1671 83.9158 99.1655H15.1835C13.3211 99.1638 11.8105 97.6512 11.8105 95.7852V83.8406L11.8678 77.2576V4.48054C11.8695 2.61446 13.38 1.10187 15.2424 1.10352H82.024C84.9321 1.10352 87.2904 3.47434 87.2904 6.39594V19.1346V22.5905Z\"\n          fill=\"#F9F9F9\"\n        />\n        <path\n          d=\"M86.8945 22.6973C86.8945 25.6846 86.8945 28.672 86.8945 31.6594C86.8945 38.5564 86.8945 45.4519 86.8945 52.349C86.8945 60.129 86.8945 67.9089 86.8945 75.6889C86.8945 81.3398 86.8945 86.9906 86.8945 92.6415C86.8945 93.7003 86.9174 94.7607 86.8945 95.8195C86.8585 97.4604 85.7767 98.9204 84.0567 98.9845C83.7605 98.996 83.461 98.9845 83.1648 98.9845C78.5218 98.9845 73.8789 98.9845 69.236 98.9845C61.6669 98.9845 54.0978 98.9845 46.5287 98.9845C39.4129 98.9845 32.2988 98.9845 25.183 98.9845C21.9148 98.9845 18.6237 99.1012 15.3571 98.9845C13.3458 98.9121 12.2067 97.2171 12.2067 95.3411C12.2067 93.845 12.2067 92.3488 12.2067 90.8543C12.2067 88.278 12.1903 85.7 12.2116 83.1236C12.2411 79.7598 12.264 76.3959 12.264 73.032C12.264 67.0885 12.264 61.145 12.264 55.2015C12.264 47.4035 12.264 39.6054 12.264 31.8073C12.264 25.124 12.264 18.4423 12.264 11.7589C12.264 9.82215 12.264 7.88373 12.264 5.94695C12.264 4.19596 12.1871 2.11122 14.2704 1.4174C15.2245 1.10008 16.5076 1.28916 17.4912 1.28916C19.7562 1.28916 22.0195 1.28916 24.2845 1.28916C31.3938 1.28916 38.503 1.28916 45.6122 1.28916C53.1306 1.28916 60.6506 1.28916 68.1689 1.28916C72.5451 1.28916 76.9229 1.28916 81.2991 1.28916C81.8506 1.28916 82.3776 1.28916 82.9258 1.41904C85.3299 1.98462 86.8667 4.18117 86.8961 6.60131C86.9321 9.7383 86.8961 12.8769 86.8961 16.0139C86.8961 18.2433 86.8961 20.4711 86.8961 22.7005C86.8961 22.8682 87.6866 22.7449 87.6866 22.4885C87.6866 17.0925 87.7831 11.6899 87.6866 6.29551C87.6408 3.70602 85.798 1.47659 83.245 1.01788C82.7294 0.925808 82.2156 0.925808 81.6951 0.925808C80.124 0.925808 78.5546 0.925808 76.9835 0.925808C70.4732 0.925808 63.963 0.925808 57.4527 0.925808C49.5842 0.925808 41.7156 0.925808 33.8453 0.925808C28.3776 0.925808 22.9082 0.925808 17.4404 0.925808C16.1852 0.925808 14.8121 0.782769 13.6436 1.32369C12.2934 1.94681 11.4948 3.20292 11.4752 4.6892C11.4703 5.06406 11.4752 5.44056 11.4752 5.81542C11.4752 10.6393 11.4752 15.4631 11.4752 20.2853C11.4752 28.0061 11.4752 35.7253 11.4752 43.4461C11.4752 50.8397 11.4752 58.2333 11.4752 65.6269C11.4752 69.4709 11.4817 73.3132 11.4752 77.1571C11.467 82.0336 11.4179 86.9101 11.4179 91.7882C11.4179 93.1216 11.3917 94.4599 11.4179 95.7932C11.4588 97.8484 13.0004 99.3051 15.0232 99.3511C15.9413 99.3725 16.8627 99.3511 17.7808 99.3511C23.4908 99.3511 29.2008 99.3511 34.9091 99.3511C42.8104 99.3511 50.7117 99.3511 58.6131 99.3511C65.1413 99.3511 71.6696 99.3511 78.1978 99.3511C79.8327 99.3511 81.4693 99.3511 83.1042 99.3511C83.3923 99.3511 83.6852 99.3626 83.9732 99.3445C85.9747 99.2163 87.6293 97.7317 87.685 95.6732C87.7717 92.4474 87.685 89.2085 87.685 85.9828C87.685 78.8473 87.685 71.7102 87.685 64.5747C87.685 56.7174 87.685 48.8618 87.685 41.0045C87.685 35.6118 87.685 30.2175 87.685 24.8248C87.685 24.0454 87.685 23.2678 87.685 22.4885C87.685 22.3208 86.8945 22.4441 86.8945 22.7005V22.6973Z\"\n          fill=\"#CFCFCF\"\n        />\n        <path\n          d=\"M90.5639 24.2346V97.4325C90.5622 99.2986 89.0517 100.811 87.1893 100.81H18.4569C16.5945 100.808 15.084 99.2953 15.084 97.4292V85.4847L15.1413 78.9016V6.12458C15.1429 4.25851 16.6534 2.74592 18.5159 2.74756H85.2974C88.2056 2.74756 90.5639 5.11838 90.5639 8.03999V20.7786V24.2346Z\"\n          fill=\"#F9F9F9\"\n        />\n        <path\n          d=\"M88.4475 23.9186V97.5144C88.4458 99.3344 86.9909 100.809 85.1956 100.809H18.3322C16.5369 100.808 15.082 99.3328 15.082 97.5127V85.8625L15.1377 79.4422V8.454C15.1393 6.63396 16.5942 5.15918 18.3895 5.15918H85.5278C87.1415 5.15918 88.4491 6.45639 88.4491 8.05283V23.917L88.4475 23.9186Z\"\n          fill=\"white\"\n        />\n        <path\n          d=\"M90.1679 24.3413C90.1679 27.3287 90.1679 30.316 90.1679 33.3034C90.1679 40.2005 90.1679 47.0959 90.1679 53.993C90.1679 61.773 90.1679 69.553 90.1679 77.333C90.1679 82.9838 90.1679 88.6347 90.1679 94.2855C90.1679 95.3443 90.1908 96.4048 90.1679 97.4636C90.1319 99.1044 89.0502 100.564 87.3301 100.629C87.0339 100.64 86.7344 100.629 86.4382 100.629C81.7953 100.629 77.1524 100.629 72.5094 100.629C64.9403 100.629 57.3712 100.629 49.8021 100.629C42.6864 100.629 35.5722 100.629 28.4564 100.629C25.1882 100.629 21.8971 100.745 18.6305 100.629C16.6192 100.556 15.4801 98.8611 15.4801 96.9852C15.4801 95.489 15.4801 93.9929 15.4801 92.4983C15.4801 89.922 15.4638 87.344 15.4851 84.7677C15.5145 81.4038 15.5374 78.0399 15.5374 74.6761C15.5374 68.7326 15.5374 62.7891 15.5374 56.8456C15.5374 49.0475 15.5374 41.2494 15.5374 33.4514C15.5374 26.768 15.5374 20.0863 15.5374 13.403C15.5374 11.4662 15.5374 9.52777 15.5374 7.591C15.5374 5.84001 15.4605 3.75526 17.5439 3.06144C18.498 2.74413 19.781 2.9332 20.7646 2.9332C23.0296 2.9332 25.293 2.9332 27.558 2.9332C34.6672 2.9332 41.7764 2.9332 48.8857 2.9332C56.404 2.9332 63.924 2.9332 71.4424 2.9332C75.8186 2.9332 80.1964 2.9332 84.5725 2.9332C85.124 2.9332 85.651 2.9332 86.1993 3.06309C88.6034 3.62866 90.1401 5.82521 90.1696 8.24536C90.2056 11.3823 90.1696 14.521 90.1696 17.658C90.1696 19.8874 90.1696 22.1152 90.1696 24.3446C90.1696 24.5123 90.96 24.389 90.96 24.1325C90.96 18.7365 91.0566 13.3339 90.96 7.93955C90.9142 5.35006 89.0714 3.12063 86.5184 2.66192C86.0029 2.56985 85.489 2.56985 84.9686 2.56985C83.3975 2.56985 81.828 2.56985 80.2569 2.56985C73.7467 2.56985 67.2364 2.56985 60.7262 2.56985C52.8576 2.56985 44.989 2.56985 37.1188 2.56985C31.651 2.56985 26.1816 2.56985 20.7139 2.56985C19.4586 2.56985 18.0856 2.42681 16.917 2.96773C15.5669 3.59085 14.7682 4.84696 14.7486 6.33324C14.7437 6.7081 14.7486 7.08461 14.7486 7.45947C14.7486 12.2833 14.7486 17.1072 14.7486 21.9294C14.7486 29.6502 14.7486 37.3693 14.7486 45.0901C14.7486 52.4837 14.7486 59.8773 14.7486 67.271C14.7486 71.1149 14.7552 74.9572 14.7486 78.8012C14.7404 83.6776 14.6913 88.5541 14.6913 93.4322C14.6913 94.7656 14.6651 96.1039 14.6913 97.4373C14.7322 99.4924 16.2739 100.949 18.2967 100.995C19.2148 101.017 20.1362 100.995 21.0543 100.995C26.7642 100.995 32.4742 100.995 38.1825 100.995C46.0839 100.995 53.9852 100.995 61.8865 100.995C68.4147 100.995 74.943 100.995 81.4712 100.995C83.1062 100.995 84.7427 100.995 86.3777 100.995C86.6657 100.995 86.9586 101.007 87.2467 100.989C89.2482 100.86 90.9027 99.3757 90.9584 97.3173C91.0451 94.0915 90.9584 90.8526 90.9584 87.6268C90.9584 80.4913 90.9584 73.3542 90.9584 66.2187C90.9584 58.3615 90.9584 50.5058 90.9584 42.6486C90.9584 37.2559 90.9584 31.8615 90.9584 26.4688C90.9584 25.6895 90.9584 24.9118 90.9584 24.1325C90.9584 23.9648 90.1679 24.0881 90.1679 24.3446V24.3413Z\"\n          fill=\"#CFCFCF\"\n        />\n        <path\n          d=\"M30.7071 43.3785H83.5681C84.005 43.3785 84.1867 42.8359 83.6483 42.8359H30.7873C30.3504 42.8359 30.1687 43.3785 30.7071 43.3785Z\"\n          fill=\"#CFCFCF\"\n        />\n        <path\n          d=\"M22.1974 48.3108H81.0645C81.8468 48.3108 82.6863 48.3979 83.4653 48.3108C83.4997 48.3075 83.5357 48.3108 83.5701 48.3108C84.007 48.3108 84.1887 47.7682 83.6503 47.7682H24.7831C24.0009 47.7682 23.1613 47.6811 22.3823 47.7682C22.3479 47.7715 22.3119 47.7682 22.2776 47.7682C21.8406 47.7682 21.6589 48.3108 22.1974 48.3108Z\"\n          fill=\"#CFCFCF\"\n        />\n        <path\n          d=\"M22.1974 53.2432H73.9127C74.3497 53.2432 74.5313 52.7007 73.9929 52.7007H22.2776C21.8406 52.7007 21.6589 53.2432 22.1974 53.2432Z\"\n          fill=\"#CFCFCF\"\n        />\n        <path\n          d=\"M30.0372 58.1754H83.5675C84.0045 58.1754 84.1861 57.6328 83.6477 57.6328H30.1174C29.6804 57.6328 29.4988 58.1754 30.0372 58.1754Z\"\n          fill=\"#CFCFCF\"\n        />\n        <path\n          d=\"M22.1974 63.1081H81.0645C81.8468 63.1081 82.6863 63.1953 83.4653 63.1081C83.4997 63.1049 83.5357 63.1081 83.5701 63.1081C84.007 63.1081 84.1887 62.5656 83.6503 62.5656H24.7831C24.0009 62.5656 23.1613 62.4784 22.3823 62.5656C22.3479 62.5689 22.3119 62.5656 22.2776 62.5656C21.8406 62.5656 21.6589 63.1081 22.1974 63.1081Z\"\n          fill=\"#CFCFCF\"\n        />\n        <path\n          d=\"M22.1974 68.0401H73.569C74.006 68.0401 74.1877 67.4976 73.6492 67.4976H22.2776C21.8406 67.4976 21.6589 68.0401 22.1974 68.0401Z\"\n          fill=\"#CFCFCF\"\n        />\n        <path\n          d=\"M67.2159 32.3794H38.941C38.2929 32.3794 37.7676 32.9072 37.7676 33.5582V33.5599C37.7676 34.2109 38.2929 34.7387 38.941 34.7387H67.2159C67.8639 34.7387 68.3893 34.2109 68.3893 33.5599V33.5582C68.3893 32.9072 67.8639 32.3794 67.2159 32.3794Z\"\n          fill=\"#EFEFEF\"\n        />\n      </g>\n      <defs>\n        <clipPath id=\"clip0_19514_18450\">\n          <rect width=\"81\" height=\"101\" fill=\"white\" transform=\"translate(10)\" />\n        </clipPath>\n      </defs>\n    </svg>\n  );\n}\n\nexport function ZoomOutSVG() {\n  return (\n    <svg\n      width=\"24\"\n      height=\"25.5\"\n      viewBox=\"0 0 16 17\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M1.33301 7.50005C1.33308 6.59644 1.54925 5.70596 1.96347 4.90288C2.37769 4.09981 2.97795 3.40744 3.71418 2.88354C4.4504 2.35963 5.30124 2.01939 6.1957 1.89119C7.09017 1.76298 8.00232 1.85055 8.85606 2.14657C9.70981 2.44259 10.4804 2.93848 11.1035 3.59287C11.7266 4.24727 12.1842 5.04118 12.4381 5.90839C12.692 6.7756 12.7348 7.69094 12.563 8.57806C12.3911 9.46518 12.0096 10.2983 11.4503 11.008L13.885 13.4427C14.0064 13.5684 14.0736 13.7369 14.0721 13.9116C14.0706 14.0864 14.0005 14.2537 13.8769 14.3773C13.7533 14.5009 13.5861 14.571 13.4113 14.5725C13.2365 14.574 13.0681 14.5068 12.9423 14.3854L10.5077 11.9507C9.67209 12.6094 8.66794 13.0195 7.61016 13.1341C6.55237 13.2487 5.48369 13.0632 4.5264 12.5989C3.56912 12.1345 2.76191 11.41 2.19716 10.5082C1.63241 9.60653 1.33294 8.56402 1.33301 7.50005ZM4.66634 6.83338C4.48953 6.83338 4.31996 6.90362 4.19494 7.02864C4.06991 7.15367 3.99967 7.32324 3.99967 7.50005C3.99967 7.67686 4.06991 7.84643 4.19494 7.97145C4.31996 8.09648 4.48953 8.16671 4.66634 8.16671H9.33301C9.50982 8.16671 9.67939 8.09648 9.80441 7.97145C9.92944 7.84643 9.99967 7.67686 9.99967 7.50005C9.99967 7.32324 9.92944 7.15367 9.80441 7.02864C9.67939 6.90362 9.50982 6.83338 9.33301 6.83338H4.66634Z\"\n        fill=\"#666666\"\n      />\n    </svg>\n  );\n}\n\nexport function ZoomInSVG() {\n  return (\n    <svg\n      width=\"24\"\n      height=\"25.5\"\n      viewBox=\"0 0 16 17\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M7.00017 1.83337C6.09656 1.83345 5.20608 2.04962 4.40301 2.46384C3.59994 2.87806 2.90756 3.47832 2.38366 4.21454C1.85976 4.95077 1.51951 5.80161 1.39131 6.69607C1.26311 7.59053 1.35067 8.50269 1.64669 9.35643C1.94271 10.2102 2.4386 10.9807 3.09299 11.6039C3.74739 12.227 4.54131 12.6846 5.40851 12.9384C6.27572 13.1923 7.19106 13.2351 8.07818 13.0633C8.9653 12.8915 9.79847 12.51 10.5082 11.9507L12.9428 14.3854C13.0686 14.5068 13.237 14.574 13.4118 14.5725C13.5866 14.571 13.7538 14.5009 13.8774 14.3773C14.001 14.2536 14.0711 14.0864 14.0726 13.9116C14.0741 13.7368 14.0069 13.5684 13.8855 13.4427L11.4508 11.008C12.1095 10.1725 12.5196 9.16831 12.6342 8.11052C12.7489 7.05274 12.5634 5.98405 12.099 5.02677C11.6346 4.06948 10.9101 3.26228 10.0084 2.69753C9.10665 2.13278 8.06415 1.8333 7.00017 1.83337ZM4.00017 7.50004C4.00017 7.32323 4.07041 7.15366 4.19543 7.02864C4.32046 6.90361 4.49002 6.83337 4.66684 6.83337H6.3335V5.16671C6.3335 4.9899 6.40374 4.82033 6.52876 4.6953C6.65379 4.57028 6.82336 4.50004 7.00017 4.50004C7.17698 4.50004 7.34655 4.57028 7.47157 4.6953C7.5966 4.82033 7.66684 4.9899 7.66684 5.16671V6.83337H9.3335C9.51031 6.83337 9.67988 6.90361 9.80491 7.02864C9.92993 7.15366 10.0002 7.32323 10.0002 7.50004C10.0002 7.67685 9.92993 7.84642 9.80491 7.97145C9.67988 8.09647 9.51031 8.16671 9.3335 8.16671H7.66684V9.83337C7.66684 10.0102 7.5966 10.1798 7.47157 10.3048C7.34655 10.4298 7.17698 10.5 7.00017 10.5C6.82336 10.5 6.65379 10.4298 6.52876 10.3048C6.40374 10.1798 6.3335 10.0102 6.3335 9.83337V8.16671H4.66684C4.49002 8.16671 4.32046 8.09647 4.19543 7.97145C4.07041 7.84642 4.00017 7.67685 4.00017 7.50004Z\"\n        fill=\"#666666\"\n      />\n    </svg>\n  );\n}\n","import React, { Dispatch, useState } from 'react';\nimport { Skeleton, Stack } from '@mui/material';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { ApplicationAction, IApplication } from '../types';\nimport { styles } from '../styles';\nimport ModalFooterButtons from '../../Components/GenericModal/ModalFooterButtons';\nimport { UseQueryResult, useMutation } from '@tanstack/react-query';\nimport QuestionFieldGenerator from '../../Components/Utilities/QuestionFieldGenerator';\nimport Api from '../API';\n\nexport default function Questionnaire({\n  hrQuestion,\n  dispatch\n}: {\n  hrQuestion: UseQueryResult<any, unknown>;\n  dispatch: Dispatch<ApplicationAction>;\n}) {\n  const [hrAnswer, setHrAnswer] = useState<string | number | Record<string, boolean | string>>('');\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n\n  const formatSavedAnswer = () => {\n    if (hrQuestion.data.type === 'CheckBoxField') {\n      const answer: { [key: number]: boolean } = {};\n      hrQuestion.data.field_choices.map((c: { id: number }) => {\n        if (hrQuestion.data.answer.map((a: { id: number }) => a.id).includes(c.id)) {\n          answer[c.id] = true;\n        } else {\n          answer[c.id] = false;\n        }\n      });\n      return answer;\n    } else if (\n      hrQuestion.data.type === 'SelectField' ||\n      hrQuestion.data.type === 'RadioButtonField'\n    ) {\n      return hrQuestion.data.answer[0]?.id || '';\n    } else {\n      return hrQuestion.data.answer || '';\n    }\n  };\n\n  const formatHrAnswer = () => {\n    if (hrQuestion.data.type === 'CheckBoxField') {\n      if (typeof hrAnswer === 'object') {\n        return {\n          field_choice_ids: Object.keys(hrAnswer).map((key) => (hrAnswer[key] ? key : ''))\n        };\n      }\n    } else if (\n      hrQuestion.data.type === 'SelectField' ||\n      hrQuestion.data.type === 'RadioButtonField'\n    ) {\n      return { field_choice_id: hrAnswer };\n    } else {\n      return { data: hrAnswer };\n    }\n  };\n\n  const { mutate: saveHrQuestion, isLoading: savingHrQuestion } = useMutation({\n    mutationFn: async () => {\n      if (application) {\n        const { res } = await Api.saveHrQuestion(\n          application.job.id,\n          application.id,\n          hrQuestion.data.id,\n          {\n            answers_attributes: {\n              0: {\n                field_id: hrQuestion.data.question_id,\n                ...formatHrAnswer()\n              }\n            }\n          }\n        );\n        return res;\n      }\n    },\n    onSuccess: (res) => {\n      queryClient.setQueryData(['hr questions'], res.hr_answer[0]);\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `Application questionnaire has been saved successfully`,\n          state: 'success'\n        }\n      });\n    },\n    onError: (error: { error: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error in saving application questionnaire, ${error.error}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n\n  if (!hrQuestion.data) return null;\n\n  return (\n    <Stack sx={styles.questionnaireContainer}>\n      <Stack sx={{ fontSize: '16px', fontWeight: 600 }}>Application Questionnaire</Stack>\n      {hrQuestion.isLoading ? (\n        [...Array(3)].map((_, index) => <Skeleton key={index} height={30} animation=\"wave\" />)\n      ) : (\n        <QuestionFieldGenerator\n          question={hrQuestion.data}\n          answer={formatSavedAnswer()}\n          onChangeCallback={(id, value) => setHrAnswer(value)}\n          fullWidth={hrQuestion.data.type === 'TextAreaField' ? true : undefined}\n        />\n      )}\n      <ModalFooterButtons\n        primaryButtonText=\"Save\"\n        primaryButtonCallback={saveHrQuestion}\n        isLoading={savingHrQuestion}\n        primaryButtonMinWidth=\"75px\"\n        primaryButtonID=\"save-application-questionnaire-button\"\n      />\n    </Stack>\n  );\n}\n","import React, { Dispatch, SetStateAction, MutableRefObject } from 'react';\nimport { Grid, Stack } from '@mui/material';\nimport QuestionFieldGenerator, {\n  IApplicantQuestion\n} from '../../Components/Utilities/QuestionFieldGenerator';\nimport Rating from './Rating';\nimport { styles } from '../styles';\nimport { getAnswerValue } from '../SmartFormsTab/get-answer-value';\nimport { IAnswer } from '../../ApprovalForms/types';\n\nexport default function QuestionsAndRatings({\n  questions,\n  questionErrors,\n  setQuestionErrors,\n  ratings,\n  setRatings,\n  setAnswers,\n  questionsRef,\n  formResponseAnswers\n}: {\n  questions?: IApplicantQuestion[];\n  questionErrors: Record<number, string>;\n  setQuestionErrors: Dispatch<SetStateAction<Record<number, string>>>;\n  ratings: Record<number, number>;\n  setRatings: Dispatch<SetStateAction<Record<number, number>>>;\n  setAnswers: Dispatch<\n    SetStateAction<Record<number, string | number | Record<string, string | boolean>>>\n  >;\n  questionsRef: MutableRefObject<(HTMLDivElement | null)[]>;\n  formResponseAnswers?: IAnswer[];\n}) {\n  return (\n    <Stack sx={styles.questionsAndRatingsContainer}>\n      <Grid container spacing={2}>\n        <Grid item xs={8}>\n          <Stack sx={{ color: '#666666', fontWeight: 'bold' }}>Questions/Answers</Stack>\n        </Grid>\n        <Grid item xs={4}>\n          <Stack sx={{ color: '#666666', fontWeight: 'bold' }}>Rating</Stack>\n        </Grid>\n      </Grid>\n      {questions?.map((q, index) => (\n        <Grid key={q.id} container spacing={2}>\n          <Grid item xs={8}>\n            <QuestionFieldGenerator\n              question={q}\n              questionRef={(el) => (questionsRef.current[index] = el)}\n              questionError={questionErrors[q.id]}\n              onChangeCallback={(id, value) => {\n                setAnswers((prev) => ({ ...prev, [id]: value }));\n                setQuestionErrors((prev) => ({\n                  ...prev,\n                  [id]: value || !q.required ? '' : 'This field is required'\n                }));\n              }}\n              answer={formResponseAnswers && getAnswerValue(q, index, formResponseAnswers)}\n              fullWidth={q.type === 'TextAreaField' ? true : undefined}\n            />\n          </Grid>\n          <Grid item xs={4}>\n            {q.rateable && (\n              <Rating\n                value={ratings[q.id]}\n                setValue={(rate) => setRatings({ ...ratings, [q.id]: rate })}\n              />\n            )}\n          </Grid>\n        </Grid>\n      ))}\n    </Stack>\n  );\n}\n","import React, { useState } from 'react';\nimport { Stack } from '@mui/material';\nimport { styles } from '../styles';\n\nexport default function Rating({\n  value,\n  setValue,\n  disabled = false\n}: {\n  value: number;\n  setValue: (rating: number) => void;\n  disabled?: boolean;\n}) {\n  const [hover, setHover] = useState<number>(0);\n  const ratings: (1 | 2 | 3 | 4 | 5)[] = [1, 2, 3, 4, 5];\n  return (\n    <Stack sx={{ flexDirection: 'row', columnGap: 1 }}>\n      {ratings.map((r) => (\n        <Stack\n          key={r}\n          sx={{\n            ...styles.ratingButton,\n            ...((hover || value) >= r && styles.ratingColor[r]),\n            cursor: disabled ? 'inherit' : 'pointer'\n          }}\n          onClick={() => !disabled && setValue(r)}\n          onMouseEnter={() => !disabled && setHover(r)}\n          onMouseLeave={() => !disabled && setHover(0)}\n        >\n          {r}\n        </Stack>\n      ))}\n    </Stack>\n  );\n}\n","import React from 'react';\nimport { Stack } from '@mui/material';\nimport { styles } from '../styles';\nimport { getApplicationRatingColor } from '../config';\n\nexport default function RatingCard({\n  rating,\n  children\n}: {\n  rating: number | null;\n  children: React.ReactNode;\n}) {\n  return (\n    <Stack\n      sx={{\n        ...styles.ratingCard,\n        ...getApplicationRatingColor(rating)\n      }}\n    >\n      {children}\n    </Stack>\n  );\n}\n","import React, { Dispatch, useState } from 'react';\nimport { Stack, Popover, Button, CircularProgress, Tooltip } from '@mui/material';\nimport {\n  Menu as MenuIcon,\n  Edit as EditIcon,\n  Done as DoneIcon,\n  Close as CloseIcon\n} from '@mui/icons-material';\nimport { useMutation, useQueryClient, UseQueryResult } from '@tanstack/react-query';\nimport { IApplication } from '../types';\nimport { FormNumberField } from '../../Components/CustomUIElements/FormTextField';\nimport { styles } from '../styles';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport {\n  DndContext,\n  closestCenter,\n  KeyboardSensor,\n  PointerSensor,\n  useSensor,\n  useSensors,\n  DragEndEvent\n} from '@dnd-kit/core';\nimport {\n  arrayMove,\n  SortableContext,\n  sortableKeyboardCoordinates,\n  verticalListSortingStrategy\n} from '@dnd-kit/sortable';\nimport SortableSection from './SortableSection';\nimport { ApplicationState, ApplicationAction } from '../types';\nimport { defaultSections } from '../config';\nimport Api from '../API';\nimport { theme } from '../../../../components/ThemeContext/ThemeObject';\nimport { IUserPermissions } from '../../Components/sharedTypes';\nimport RatingCard from './RatingCard';\n\nconst RatingLabel = ({ label }: { label: string }) => (\n  <Tooltip\n    title={`${label} rating`}\n    placement=\"bottom-start\"\n    PopperProps={{ modifiers: [{ name: 'offset', options: { offset: [8, -10] } }] }}\n  >\n    <Stack sx={{ color: '#333333' }}>{label}</Stack>\n  </Tooltip>\n);\n\nexport default function Ratings({\n  ApplicationState,\n  dispatch,\n  hrQuestion\n}: {\n  ApplicationState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n  hrQuestion: UseQueryResult<any, unknown>;\n}) {\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const permissions = queryClient.getQueryData<IUserPermissions>(['permissions']);\n  const { sortableSections } = ApplicationState;\n  const [editRating, setEditRating] = useState<{ interview: boolean; ref: boolean }>({\n    interview: false,\n    ref: false\n  });\n  const [interviewRating, setInterviewRating] = useState<string>(\n    application?.ratings.interview_rating === null\n      ? ''\n      : String(application?.ratings.interview_rating)\n  );\n  const [refRating, setRefRating] = useState<string>(\n    application?.ratings.ref_check_rating === null\n      ? ''\n      : String(application?.ratings.ref_check_rating)\n  );\n  const [ratingErrors, setRatingErrors] = useState<{ ref: boolean; interview: boolean }>({\n    ref: false,\n    interview: false\n  });\n  const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n\n  const { mutate: rateApplication, isLoading: ratingApplication } = useMutation({\n    mutationFn: async () => {\n      if (application) {\n        const { res } = await Api.updateApplicationRating(application.job.id, application.id, {\n          ref_check_rating: refRating ? refRating : null,\n          interview_rating: interviewRating ? interviewRating : null\n        });\n        return res;\n      }\n    },\n    onSuccess: (res) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `${refRating ? 'Ref check' : 'Interview'} rating has been updated successfully`,\n          state: 'success'\n        }\n      });\n      queryClient.setQueryData(['application'], {\n        ...res,\n        surround_application: application?.surround_application\n      });\n      queryClient.invalidateQueries(['application']);\n    },\n    onError: (error: { error: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error in updating ${refRating ? 'ref check' : 'interview'} rating, ${error.error}`,\n          state: 'error'\n        }\n      });\n      setInterviewRating(String(application?.ratings.interview_rating));\n      setRefRating(String(application?.ratings.ref_check_rating));\n    }\n  });\n\n  const { mutate: updateUiPreferences } = useMutation({\n    mutationFn: async (sections: string[]) => {\n      if (application) {\n        await Api.updateUiPreferences({ sorting: { order: sections }, source: 'application' });\n      }\n    },\n    onError: (error: { error: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error saving your preferences, ${error.error}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n\n  const sensors = useSensors(\n    useSensor(PointerSensor),\n    useSensor(KeyboardSensor, {\n      coordinateGetter: sortableKeyboardCoordinates\n    })\n  );\n\n  function handleDragEnd(event: DragEndEvent) {\n    const { active, over } = event;\n\n    if (active.id !== over?.id) {\n      const oldIndex = sortableSections.findIndex((e) => e === active.id);\n      const newIndex = sortableSections.findIndex((e) => e === over?.id);\n      const newArray = arrayMove(sortableSections, oldIndex, newIndex);\n      dispatch({ type: 'SET_SORTABLE_SECTIONS', payload: newArray });\n      updateUiPreferences(newArray);\n    }\n  }\n\n  const RatingValue = ({ value }: { value: number | null }) => {\n    const displayValue = value === null ? 'Unrated' : `${value}%`;\n    return (\n      <Stack sx={{ fontWeight: 'bold', fontSize: '12px' }}>\n        {ratingApplication ? (\n          <CircularProgress size={15} color=\"inherit\" sx={{ marginTop: 0.5 }} />\n        ) : (\n          displayValue\n        )}\n      </Stack>\n    );\n  };\n\n  const filteredSortableSections = hrQuestion.data\n    ? sortableSections\n    : sortableSections.filter((t) => t !== 'Application questionnaire');\n\n  const RatingErrorMessage = () => (\n    <Stack sx={{ color: theme.palette.error.main, fontSize: '8px' }}>\n      Number must be between 0-100\n    </Stack>\n  );\n\n  if (!application) return null;\n\n  return (\n    <Stack sx={{ flexDirection: 'row', columnGap: 1 }}>\n      <Stack sx={{ flexDirection: 'row', width: '100%', justifyContent: 'space-evenly' }}>\n        {!permissions?.Applications?.['Hide Overall Rating'] && (\n          <RatingCard rating={application.ratings.overall_rating}>\n            <RatingLabel label=\"Overall\" />\n            <RatingValue value={application.ratings.overall_rating} />\n          </RatingCard>\n        )}\n        <RatingCard rating={application.ratings.qa_rating}>\n          <RatingLabel label=\"Q/A\" />\n          <RatingValue value={application.ratings.qa_rating} />\n        </RatingCard>\n        <RatingCard rating={application.ratings.interview_rating}>\n          <RatingLabel label=\"Interview\" />\n          <Stack sx={styles.editableRatings}>\n            {editRating.interview ? (\n              <Stack>\n                <Stack sx={styles.ratingInput}>\n                  <FormNumberField\n                    value={interviewRating}\n                    onChange={(e) => setInterviewRating(e.target.value)}\n                    styles={styles.editRating}\n                    onKeyDown={(e) => {\n                      if (e.key === 'Enter') {\n                        if (Number(interviewRating) >= 0 && Number(interviewRating) <= 100) {\n                          rateApplication();\n                          setEditRating({ ...editRating, interview: !editRating.interview });\n                        } else {\n                          setRatingErrors({ ...ratingErrors, interview: true });\n                        }\n                      }\n                    }}\n                    placeholder=\"e.g.100\"\n                  />\n                  {ratingApplication ? (\n                    <CircularProgress size={15} />\n                  ) : (\n                    <DoneIcon\n                      id=\"save-interview-rating-button\"\n                      sx={{ color: '#5BC4C0', cursor: 'pointer', fontSize: '16px' }}\n                      onClick={() => {\n                        if (Number(interviewRating) >= 0 && Number(interviewRating) <= 100) {\n                          rateApplication();\n                          setEditRating({ ...editRating, interview: !editRating.interview });\n                        } else {\n                          setRatingErrors({ ...ratingErrors, interview: true });\n                        }\n                      }}\n                    />\n                  )}\n                  <CloseIcon\n                    sx={{ ...styles.clickableGreyIcon, fontSize: '16px' }}\n                    onClick={() => {\n                      setEditRating({ ...editRating, interview: !editRating.interview });\n                      setRatingErrors({ ...ratingErrors, interview: false });\n                      setInterviewRating(\n                        application.ratings.interview_rating === null\n                          ? ''\n                          : String(application.ratings.interview_rating)\n                      );\n                    }}\n                  />\n                </Stack>\n                {ratingErrors.interview && <RatingErrorMessage />}\n              </Stack>\n            ) : (\n              <Stack sx={{ flexDirection: 'row', columnGap: 1, alignItems: 'center' }}>\n                <RatingValue value={application.ratings.interview_rating} />\n                {permissions?.Applications?.['Add Advanced Ratings'] &&\n                  permissions.Applications?.['Rate Applications'] &&\n                  !editRating.interview &&\n                  !application.original_job && (\n                    <EditIcon\n                      id=\"edit-interview-rating-button\"\n                      sx={{ cursor: 'pointer' }}\n                      onClick={() => {\n                        setEditRating({ ...editRating, interview: !editRating.interview });\n                      }}\n                    />\n                  )}\n              </Stack>\n            )}\n          </Stack>\n        </RatingCard>\n        <RatingCard rating={application.ratings.ref_check_rating}>\n          <RatingLabel label=\"Ref check\" />\n          <Stack sx={styles.editableRatings}>\n            {editRating.ref ? (\n              <Stack>\n                <Stack sx={styles.ratingInput}>\n                  <FormNumberField\n                    value={refRating}\n                    onChange={(e) => setRefRating(e.target.value)}\n                    styles={styles.editRating}\n                    onKeyDown={(e) => {\n                      if (e.key === 'Enter') {\n                        if (Number(refRating) >= 0 && Number(refRating) <= 100) {\n                          rateApplication();\n                          setEditRating({ ...editRating, ref: !editRating.ref });\n                        } else {\n                          setRatingErrors({ ...ratingErrors, ref: true });\n                        }\n                      }\n                    }}\n                    placeholder=\"e.g.100\"\n                  />\n                  {ratingApplication ? (\n                    <CircularProgress size={15} />\n                  ) : (\n                    <DoneIcon\n                      id=\"save-ref-check-rating-button\"\n                      sx={{ color: '#5BC4C0', cursor: 'pointer', fontSize: '16px' }}\n                      onClick={() => {\n                        if (Number(refRating) >= 0 && Number(refRating) <= 100) {\n                          rateApplication();\n                          setEditRating({ ...editRating, ref: !editRating.ref });\n                        } else {\n                          setRatingErrors({ ...ratingErrors, ref: true });\n                        }\n                      }}\n                    />\n                  )}\n                  <CloseIcon\n                    sx={{ ...styles.clickableGreyIcon, fontSize: '16px' }}\n                    onClick={() => {\n                      setEditRating({ ...editRating, ref: !editRating.ref });\n                      setRatingErrors({ ...ratingErrors, ref: false });\n                      setRefRating(\n                        application.ratings.ref_check_rating === null\n                          ? ''\n                          : String(application.ratings.ref_check_rating)\n                      );\n                    }}\n                  />\n                </Stack>\n                {ratingErrors.ref && <RatingErrorMessage />}\n              </Stack>\n            ) : (\n              <Stack sx={{ flexDirection: 'row', columnGap: 1, alignItems: 'center' }}>\n                <RatingValue value={application.ratings.ref_check_rating} />\n                {permissions?.Applications?.['Add Advanced Ratings'] &&\n                  permissions.Applications?.['Rate Applications'] &&\n                  !editRating.ref &&\n                  !application.original_job && (\n                    <EditIcon\n                      id=\"edit-ref-check-rating-button\"\n                      sx={{ cursor: 'pointer' }}\n                      onClick={() => {\n                        setEditRating({ ...editRating, ref: !editRating.ref });\n                      }}\n                    />\n                  )}\n              </Stack>\n            )}\n          </Stack>\n        </RatingCard>\n      </Stack>\n      <Stack\n        id=\"sections-button\"\n        sx={{\n          ...styles.sortableSectionsButton,\n          backgroundColor: anchorEl ? 'rgba(8,77,109,0.121)' : '#FFFFFF'\n        }}\n        onClick={(e) => setAnchorEl(e.currentTarget)}\n      >\n        <MenuIcon />\n      </Stack>\n      <Popover\n        open={!!anchorEl}\n        anchorEl={anchorEl}\n        onClose={() => setAnchorEl(null)}\n        sx={{ marginTop: 1 }}\n        anchorOrigin={{\n          vertical: 'bottom',\n          horizontal: 'right'\n        }}\n        transformOrigin={{\n          vertical: 'top',\n          horizontal: 'right'\n        }}\n      >\n        <Stack sx={{ padding: 3, rowGap: 1 }}>\n          <Stack sx={styles.sortableSectionsHeader}>\n            <Stack sx={{ fontWeight: 'bold' }}>Sections</Stack>\n            <Button\n              id=\"reset-sections-button\"\n              sx={{ ...sharedClasses.genericButton, padding: '2px 12px', borderRadius: '4px' }}\n              onClick={() => {\n                dispatch({ type: 'SET_SORTABLE_SECTIONS', payload: defaultSections });\n                updateUiPreferences(defaultSections);\n              }}\n            >\n              Reset\n            </Button>\n          </Stack>\n          <DndContext\n            sensors={sensors}\n            collisionDetection={closestCenter}\n            onDragEnd={handleDragEnd}\n          >\n            <SortableContext items={sortableSections} strategy={verticalListSortingStrategy}>\n              {filteredSortableSections\n                .filter((s) =>\n                  permissions?.Applications?.['Add Suitability Comment'] ? s : s !== 'Notepad'\n                )\n                .map((section, index) => (\n                  <SortableSection key={index} section={section} />\n                ))}\n            </SortableContext>\n          </DndContext>\n        </Stack>\n      </Popover>\n    </Stack>\n  );\n}\n","import React, { Dispatch, useState } from 'react';\nimport { Collapse, Divider, Grid, Stack, ToggleButtonGroup, ToggleButton } from '@mui/material';\nimport {\n  Info as InfoIcon,\n  ExpandMore as ExpandMoreIcon,\n  ExpandLess as ExpandLessIcon,\n  ContentPaste as ContentPasteIcon\n} from '@mui/icons-material';\nimport { useQueryClient, useMutation, useQuery } from '@tanstack/react-query';\nimport { ApplicationAction, IApplication, IJobQuestion } from '../types';\nimport { styles } from '../styles';\nimport Rating from './Rating';\nimport ModalFooterButtons from '../../Components/GenericModal/ModalFooterButtons';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport Api from '../API';\nimport AvailabilityPreview from '../../ApprovalForms/Questions/Modals/AvailabilityPreview';\nimport dompurify from 'dompurify';\nimport { IUserPermissions } from '../../Components/sharedTypes';\nimport { IAnswer } from '../../ApprovalForms/types';\nimport { IApplicantQuestion } from '../../EditJob/types';\n\nexport default function Responses({ dispatch }: { dispatch: Dispatch<ApplicationAction> }) {\n  const [showRatingInfo, setShowRatingInfo] = useState<boolean>(false);\n  const [ratings, setRatings] = useState<Record<number, number>>({});\n  const [jobQuestions, setJobQuestions] = useState<string>('current');\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const permissions = queryClient.getQueryData<IUserPermissions>(['permissions']);\n\n  const handleToggle = (event: React.MouseEvent<HTMLElement>, newSelected: string) => {\n    if (newSelected !== null) {\n      setJobQuestions(newSelected);\n    }\n  };\n\n  const formatRatings = () => {\n    const ratingsObject: { [key: number]: { field_value_id: number; rating: number } } = {};\n    Object.keys(ratings)\n      .filter((t) => ratings[Number(t)])\n      .map(\n        (m, index) =>\n          (ratingsObject[index] = { field_value_id: Number(m), rating: ratings[Number(m)] })\n      );\n    return ratingsObject;\n  };\n\n  const { mutate: rateResponses, isLoading: ratingResponses } = useMutation({\n    mutationFn: async () => {\n      if (application) {\n        if (Object.keys(formatRatings()).length === 0) {\n          const { res } = await Api.resetRatingForApplication(application.job.id, application.id);\n          return res;\n        } else {\n          const { res } = await Api.rateResponses(application.job.id, application.id, {\n            ratings_attributes: formatRatings()\n          });\n          return res;\n        }\n      }\n    },\n    onSuccess: (res) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `Application responses has been rated successfully`,\n          state: 'success'\n        }\n      });\n      queryClient.setQueryData(['application'], {\n        ...res,\n        surround_application: application?.surround_application\n      });\n    },\n    onError: (error: { error: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error in rating application responses, ${error.error}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n\n  const { isLoading: loadingRatings } = useQuery({\n    queryKey: ['rating set'],\n    queryFn: async () => {\n      if (application) {\n        const { res } = await Api.getRatingSetForApplication(application.job.id, application.id);\n        return res.ratings;\n      }\n    },\n    onSuccess: (res) => {\n      setRatings(res);\n    },\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting rating set for application, ${error}`,\n          state: 'error'\n        }\n      })\n  });\n\n  const questions =\n    jobQuestions === 'current' ? application?.job.questions : application?.original_job?.questions;\n\n  const showRatings = !application?.original_job;\n\n  const renderAnswer = (question: IApplicantQuestion | IJobQuestion, answer?: IAnswer) => {\n    switch (answer?.type) {\n      case 'AvailabilityField':\n        return (\n          <AvailabilityPreview\n            availabilityConfig={question.availability_config}\n            answer={typeof answer.answer === 'object' ? answer.answer : undefined}\n            disabled\n            removePadding\n          />\n        );\n      case 'CheckBoxField':\n        return (\n          <Stack sx={{ rowGap: 1 }}>\n            {answer?.field_choices\n              .filter((choice) => answer.field_choice_ids.includes(choice.id))\n              .map((choice) => <Stack key={choice.id}>{choice.name}</Stack>)}\n          </Stack>\n        );\n      default:\n        return (\n          <Stack\n            sx={{\n              color: answer?.answer ? '#333333' : '#939393',\n              fontStyle: answer?.answer ? 'none' : 'italic',\n              whiteSpace: 'pre-wrap'\n            }}\n          >\n            {answer ? answer.answer || 'Question unanswered' : 'Question unavailable to candidate'}\n          </Stack>\n        );\n    }\n  };\n\n  if (!application) return null;\n\n  return (\n    <Stack\n      sx={{\n        padding: 3,\n        borderRadius: '6px',\n        border: '1px solid #E3E3E3',\n        rowGap: 2\n      }}\n    >\n      <Stack sx={{ fontSize: '16px', fontWeight: 600 }}>Responses</Stack>\n      {application.original_job && (\n        <Stack sx={{ paddingLeft: 1 }}>\n          <ToggleButtonGroup\n            value={jobQuestions}\n            exclusive\n            onChange={handleToggle}\n            aria-label=\"approval forms or templates\"\n          >\n            <ToggleButton value=\"current\" sx={sharedClasses.toggleButton}>\n              Current Job\n            </ToggleButton>\n            <ToggleButton value=\"original\" sx={sharedClasses.toggleButton}>\n              Original Job\n            </ToggleButton>\n          </ToggleButtonGroup>\n        </Stack>\n      )}\n      {questions?.length ? (\n        <>\n          {application.ratings_label && (\n            <Stack sx={styles.ratingInfoContainer}>\n              <Stack\n                sx={styles.ratingInfoClickable}\n                onClick={() => setShowRatingInfo(!showRatingInfo)}\n              >\n                <Stack sx={{ flexDirection: 'row', columnGap: 1 }}>\n                  <InfoIcon fontSize=\"small\" />\n                  <Stack sx={{ color: '#666666', fontWeight: 'bold' }}>Rating information</Stack>\n                </Stack>\n                {showRatingInfo ? (\n                  <ExpandLessIcon fontSize=\"large\" />\n                ) : (\n                  <ExpandMoreIcon fontSize=\"large\" />\n                )}\n              </Stack>\n              <Collapse in={showRatingInfo}>\n                <Stack sx={{ rowGap: 0.5, padding: '0px 0px 8px 30px', color: '#666666' }}>\n                  {Object.keys(application.ratings_label).map((key) => (\n                    <Stack\n                      key={key}\n                      sx={{ flexDirection: 'row', columnGap: 0.5, alignItems: 'center' }}\n                    >\n                      <Stack sx={{ fontWeight: 'bold' }}>{key}</Stack>\n                      <Divider sx={{ width: '8px', border: '1px solid #E5E5E5' }} />\n                      <Stack>{application.ratings_label?.[Number(key)]}</Stack>\n                    </Stack>\n                  ))}\n                </Stack>\n              </Collapse>\n            </Stack>\n          )}\n          <Stack sx={{ rowGap: 2, padding: 1 }}>\n            <Grid container spacing={2}>\n              <Grid item xs={9}>\n                <Stack sx={{ color: '#666666', fontWeight: 'bold' }}>Questions/Answers</Stack>\n              </Grid>\n              {showRatings && (\n                <Grid item xs={3}>\n                  <Stack sx={{ color: '#666666', fontWeight: 'bold' }}>Rating</Stack>\n                </Grid>\n              )}\n            </Grid>\n            {questions?.map((q) => {\n              const answerFound = application.question_answers.find((r) => r.field_id === q.id);\n              return (\n                <Grid key={q.id} container spacing={2}>\n                  <Grid item xs={9}>\n                    <Stack sx={{ rowGap: 1 }}>\n                      <Stack\n                        key={q.id}\n                        sx={{ color: '#084D6D', fontWeight: 'bold' }}\n                        dangerouslySetInnerHTML={{\n                          __html: dompurify.sanitize(q.title)\n                        }}\n                      />\n                      {renderAnswer(q, answerFound)}\n                    </Stack>\n                  </Grid>\n                  {showRatings && !loadingRatings && (\n                    <Grid item xs={3}>\n                      {q.rateable && answerFound && (\n                        <Rating\n                          value={ratings[answerFound?.id]}\n                          setValue={(rate) => {\n                            rate === ratings[answerFound?.id]\n                              ? setRatings({ ...ratings, [answerFound?.id]: 0 })\n                              : setRatings({ ...ratings, [answerFound?.id]: rate });\n                          }}\n                          disabled={!permissions?.Applications?.['Rate Applications']}\n                        />\n                      )}\n                    </Grid>\n                  )}\n                </Grid>\n              );\n            })}\n            {showRatings && permissions?.Applications?.['Rate Applications'] && (\n              <ModalFooterButtons\n                primaryButtonText=\"Rate\"\n                primaryButtonCallback={rateResponses}\n                isLoading={ratingResponses}\n                primaryButtonMinWidth=\"75px\"\n                primaryButtonID=\"rate-responses-button\"\n              />\n            )}\n          </Stack>\n        </>\n      ) : (\n        <Stack sx={{ padding: 5, alignItems: 'center', rowGap: 2 }}>\n          <ContentPasteIcon sx={styles.emptyStateIcon} />\n          <Stack sx={styles.emptyStateMessage}>No questions found for this job</Stack>\n        </Stack>\n      )}\n    </Stack>\n  );\n}\n","/* eslint-disable react/prop-types */\nimport React, { FC } from 'react';\nimport CandidateTags from '../../../Candidate/CandidateTags';\nimport AISummary from '../AISummary';\nimport Responses from '../Responses';\nimport Actions from '../Actions';\nimport Questionnaire from '../Questionnaire';\nimport AttachmentsTab from '../Attachments';\nimport Notepad from '../../../Candidate/Notepad';\nimport { IApplication } from '../../types';\nimport { OverviewTabProps, SectionProps } from './types';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { IUserPermissions } from '../../../Components/sharedTypes';\nimport { SectionName } from '../../config';\n\nconst sectionComponents: Record<SectionName, FC<OverviewTabProps>> = {\n  [SectionName.CandidateTags]: ({ ApplicationState, application, dispatch }) => (\n    <CandidateTags\n      focused={ApplicationState.focused}\n      candidate={application.candidate}\n      dispatch={dispatch}\n      inputId=\"candidate-tags-field\"\n    />\n  ),\n  [SectionName.FelixAISummary]: ({ dispatch, aiSummariesEnabled }) => (\n    <AISummary dispatch={dispatch} aiSummariesEnabled={aiSummariesEnabled} />\n  ),\n  [SectionName.Responses]: ({ dispatch }) => <Responses dispatch={dispatch} />,\n  Notepad: ({\n    ApplicationState,\n    updateApplicationNotepad,\n    updatingApplicationNotepad,\n    dispatch,\n    permissions\n  }) => (\n    <>\n      {permissions?.Applications?.['Add Suitability Comment'] && (\n        <Notepad\n          note={ApplicationState.overviewTab.note}\n          updateNote={updateApplicationNotepad}\n          updatingNote={updatingApplicationNotepad}\n          inputId=\"application-notepad-field\"\n          buttonId=\"save-application-notepad-button\"\n          onChangeCallback={(value) =>\n            dispatch({\n              type: 'SET_OVERVIEW_TAB',\n              payload: { note: value, hasUnsavedChanges: true }\n            })\n          }\n          primaryButtonDisabled={!ApplicationState.overviewTab.hasUnsavedChanges}\n        />\n      )}\n    </>\n  ),\n  [SectionName.Actions]: ({ dispatch }) => <Actions dispatch={dispatch} />,\n  [SectionName.ApplicationQuestionnaire]: ({ hrQuestion, dispatch }) => (\n    <Questionnaire hrQuestion={hrQuestion} dispatch={dispatch} />\n  ),\n  [SectionName.Attachments]: ({ ApplicationState, dispatch }) => (\n    <AttachmentsTab ApplicationState={ApplicationState} dispatch={dispatch} />\n  )\n};\n\nexport const Section = ({ section, ...props }: SectionProps) => {\n  const SectionComponent = sectionComponents[section];\n\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const permissions = queryClient.getQueryData<IUserPermissions>(['permissions']);\n\n  if (!application || !SectionComponent) return null;\n  return <SectionComponent {...props} application={application} permissions={permissions} />;\n};\n","import React from 'react';\nimport { Stack, IconButton } from '@mui/material';\nimport DragIndicatorIcon from '@mui/icons-material/DragIndicator';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\n\nexport default function SortableSection({ section }: { section: string }) {\n  const { attributes, listeners, setNodeRef, setActivatorNodeRef, transform, transition } =\n    useSortable({ id: section });\n\n  const style = {\n    transform: CSS.Translate.toString(transform),\n    transition\n  };\n\n  return (\n    <Stack\n      key={section}\n      style={style}\n      sx={{ flexDirection: 'row', alignItems: 'center', columnGap: 0.5 }}\n      ref={setNodeRef}\n      {...attributes}\n    >\n      <IconButton ref={setActivatorNodeRef} {...listeners} sx={{ padding: 0.5 }}>\n        <DragIndicatorIcon sx={{ fontSize: 16 }} />\n      </IconButton>\n      <Stack sx={{ color: 'rgba(8, 77, 109, 1)', fontWeight: 'bold' }}>{section}</Stack>\n    </Stack>\n  );\n}\n","import React, { Dispatch } from 'react';\nimport { Stack } from '@mui/material';\nimport { UseMutateFunction, useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { ApplicationAction, ApplicationState, IApplication } from '../types';\nimport Ratings from './Ratings';\nimport Api from '../API';\nimport { defaultSections, ModalType } from '../config';\nimport AddRecord from '../../Candidate/AddRecord';\nimport CreateApproval from '../Modals/CreateApproval';\nimport EmailExternal from '../Modals/EmailExternal';\nimport SendSms from '../Modals/SendSms';\nimport { IUserPermissions } from '../../Components/sharedTypes';\nimport { DeleteAttachment } from '../Modals/DeleteAttachment';\nimport AttachmentPreviewModal from '../Modals/AttachmentPreviewModal';\nimport AdditionalInfo from './AdditionalInfo';\nimport { Section } from './Section';\n\nexport default function OverviewTab({\n  aiSummariesEnabled,\n  ApplicationState,\n  dispatch,\n  updateApplicationNotepad,\n  updatingApplicationNotepad\n}: {\n  aiSummariesEnabled: boolean;\n  ApplicationState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n  updateApplicationNotepad: UseMutateFunction<unknown, { error: string }, string, unknown>;\n  updatingApplicationNotepad: boolean;\n}) {\n  const { sortableSections, modalsOpen } = ApplicationState;\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const permissions = queryClient.getQueryData<IUserPermissions>(['permissions']);\n\n  useQuery({\n    queryKey: ['ui preferences'],\n    queryFn: async () => {\n      const { res } = await Api.getUiPreferences();\n      return res.ui_preferences;\n    },\n    onSuccess: (res) =>\n      dispatch({\n        type: 'SET_SORTABLE_SECTIONS',\n        payload:\n          res[0]?.sorting.order && res[0]?.sorting.order.length === defaultSections.length\n            ? res[0]?.sorting.order\n            : defaultSections\n      }),\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting ui preferences data, ${error}`,\n          state: 'error'\n        }\n      })\n  });\n\n  const { mutate: addRecord, isLoading: addingRecord } = useMutation({\n    mutationFn: async ({ subject, body }: { subject: string; body: string }) => {\n      if (application) {\n        const { res } = await Api.addRecord(application.job.id, application?.id, {\n          subject,\n          body\n        });\n        return res;\n      }\n    },\n    onSuccess: () => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `Permanent record successfully added`,\n          state: 'success'\n        }\n      });\n      dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n      queryClient.invalidateQueries(['application']);\n    },\n    onError: (error) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error in adding permanent record, ${error}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n\n  const hrQuestion = useQuery({\n    queryKey: ['hr questions'],\n    queryFn: async () => {\n      if (application) {\n        const { res } = await Api.getHrQuestions(application.job.id, application.id);\n        return res.hr_answers[0] || null;\n      }\n    },\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting application questionnaire data, ${error}`,\n          state: 'error'\n        }\n      }),\n    enabled: !!application && !!permissions?.Jobs?.AnswerApplicationHRQuestions\n  });\n\n  if (!application) return null;\n\n  return (\n    <Stack sx={{ rowGap: 3 }}>\n      <Ratings ApplicationState={ApplicationState} dispatch={dispatch} hrQuestion={hrQuestion} />\n      {sortableSections.map((section, index) => (\n        <Section\n          key={index}\n          aiSummariesEnabled={aiSummariesEnabled}\n          ApplicationState={ApplicationState}\n          dispatch={dispatch}\n          hrQuestion={hrQuestion}\n          section={section}\n          updateApplicationNotepad={updateApplicationNotepad}\n          updatingApplicationNotepad={updatingApplicationNotepad}\n        />\n      ))}\n      <AdditionalInfo />\n      {modalsOpen === ModalType.ADD_RECORD && (\n        <AddRecord\n          isOpen={modalsOpen === ModalType.ADD_RECORD}\n          handleClose={() => dispatch({ type: 'SET_MODALS_OPEN', payload: null })}\n          addRecord={addRecord}\n          addingRecord={addingRecord}\n          styleOverrides={{ maxHeight: '84vh' }}\n        />\n      )}\n      {modalsOpen === ModalType.CREATE_APPROVAL && (\n        <CreateApproval ApplicationState={ApplicationState} dispatch={dispatch} />\n      )}\n      {modalsOpen === ModalType.EMAIL_EXTERNAL && (\n        <EmailExternal\n          ApplicationState={ApplicationState}\n          dispatch={dispatch}\n          aiSummariesEnabled={aiSummariesEnabled}\n        />\n      )}\n      {modalsOpen === ModalType.SEND_SMS && (\n        <SendSms\n          smsTemplatePermissions={true}\n          ApplicationState={ApplicationState}\n          dispatch={dispatch}\n        />\n      )}\n      {ApplicationState.selectedAttachmentAction.delete && (\n        <DeleteAttachment\n          dispatch={dispatch}\n          isDialogOpen={!!ApplicationState.selectedAttachmentAction.delete}\n          selectedAttachment={ApplicationState.selectedAttachmentAction.delete}\n        />\n      )}\n      {ApplicationState.selectedAttachmentAction.preview && (\n        <AttachmentPreviewModal\n          previewOpen={!!ApplicationState.selectedAttachmentAction.preview}\n          selectedAttachment={ApplicationState.selectedAttachmentAction.preview}\n          {...{ dispatch, ApplicationState, permissions }}\n        />\n      )}\n    </Stack>\n  );\n}\n","import { ApplicationAction, IFormResponseListItem } from '../types';\nimport { Box, IconButton, TableCell, Tooltip } from '@mui/material';\nimport { styles } from '../styles';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport { getApplicationRatingColor } from '../config';\nimport { Delete, Edit, ExpandLess, ExpandMore } from '@mui/icons-material';\nimport React, { Dispatch } from 'react';\nimport formatToUserTimeZone from '../../utils/formatToUserTimeZone';\n\nexport default function RenderFormResponseActions({\n  formResponse,\n  dispatch,\n  expandedRows,\n  setExpandedRows\n}: {\n  formResponse: IFormResponseListItem;\n  dispatch: Dispatch<ApplicationAction>;\n  expandedRows: number[];\n  setExpandedRows: React.Dispatch<React.SetStateAction<number[]>>;\n}) {\n  const formattedUpdatedAtTime = formatToUserTimeZone(formResponse.updated_at);\n  const handleExpandClick = (id: number) => {\n    setExpandedRows(() =>\n      expandedRows.includes(id)\n        ? expandedRows.filter((rowId) => rowId !== id)\n        : [...expandedRows, id]\n    );\n  };\n\n  const handleDeleteFormResponse = () => {\n    dispatch({\n      type: 'SET_SELECTED_FORM_RESPONSE_ACTION',\n      payload: { delete: formResponse, edit: null }\n    });\n  };\n\n  const handleEditFormResponse = () => {\n    dispatch({\n      type: 'SET_SELECTED_FORM_RESPONSE_ACTION',\n      payload: { delete: null, edit: formResponse }\n    });\n  };\n\n  return (\n    <>\n      <TableCell sx={styles.fileAttachedBy}>{formResponse.id}</TableCell>\n      <TableCell\n        sx={{\n          color: '#666666',\n          fontSize: '15px',\n          fontWeight: 'bold'\n        }}\n      >\n        {formResponse.form_name}\n      </TableCell>\n\n      <TableCell sx={styles.fileAttachedBy}>{formattedUpdatedAtTime}</TableCell>\n      <TableCell\n        sx={{\n          color: '#000000',\n          fontWeight: '600'\n        }}\n      >\n        <Box sx={{ display: 'flex', justifyContent: 'center' }}>\n          <Box\n            sx={{\n              ...styles.ratingCell,\n              backgroundColor: getApplicationRatingColor(\n                formResponse.rating === 'N/A' ? 101 : Number(formResponse.rating)\n              )\n            }}\n          >\n            {!isNaN(parseFloat(formResponse.rating))\n              ? Math.ceil(parseFloat(formResponse.rating)) + '%'\n              : '-'}\n          </Box>\n        </Box>\n      </TableCell>\n      <TableCell\n        sx={{\n          display: 'flex',\n          alignItems: 'center',\n          justifyContent: 'flex-end'\n        }}\n      >\n        <Tooltip title=\"Edit\" placement=\"top\" arrow>\n          <IconButton\n            id=\"edit-form-button\"\n            onClick={() => handleEditFormResponse()}\n            sx={styles.tableActionIcon}\n          >\n            <Edit sx={{ fontSize: 16 }} />\n          </IconButton>\n        </Tooltip>\n        <Tooltip title=\"Delete\" placement=\"top\" arrow>\n          <IconButton\n            id=\"delete-form-button\"\n            onClick={() => handleDeleteFormResponse()}\n            sx={styles.tableActionIcon}\n          >\n            <Delete sx={{ color: theme.palette.error.main, fontSize: 16 }} />\n          </IconButton>\n        </Tooltip>\n        <Box\n          id=\"show-form-button\"\n          sx={{ width: '30%', maxWidth: '80px', cursor: 'pointer', color: '#333333' }}\n          onClick={() => handleExpandClick(formResponse.id)}\n        >\n          {expandedRows.includes(formResponse.id) ? 'Show less' : 'Show more'}\n        </Box>\n\n        <IconButton\n          id=\"show-form-arrow-button\"\n          sx={styles.tableActionIcon}\n          onClick={() => handleExpandClick(formResponse.id)}\n        >\n          {expandedRows.includes(formResponse.id) ? (\n            <ExpandLess sx={{ fontSize: 16 }} />\n          ) : (\n            <ExpandMore sx={{ fontSize: 16 }} />\n          )}\n        </IconButton>\n      </TableCell>\n    </>\n  );\n}\n","import { ApplicationAction, IApplication } from '../types';\nimport React, { Dispatch, useState } from 'react';\nimport { Box, Grid, Skeleton, Stack } from '@mui/material';\nimport { RenderFormResponseBlocks } from '../Modals/Components/FormResponseInfo';\nimport { styles } from '../styles';\nimport AnswersView from '../../ApprovalForms/ApprovalForm/AnswersView';\nimport Rating from '../OverviewTab/Rating';\nimport { useFormResponse } from '../helper';\n\nexport default function FormResponseDetails({\n  FormResponseId,\n  application,\n  dispatch,\n  created_at,\n  submitted_by,\n  rating,\n  expandedRows,\n  linkToUser\n}: {\n  FormResponseId: number;\n  application: IApplication;\n  dispatch: Dispatch<ApplicationAction>;\n  created_at: string;\n  submitted_by: string;\n  rating: string;\n  expandedRows: number[];\n  linkToUser: string;\n}) {\n  const { data: formResponse, isLoading: loadingFormResponse } = useFormResponse({\n    FormResponseId,\n    dispatch,\n    application\n  });\n  const [ratings, setRatings] = useState<Record<number, number>>({});\n  return (\n    <Stack sx={{ rowGap: 2, padding: 1 }}>\n      <Box margin={1}>\n        <RenderFormResponseBlocks\n          ApplicationId={application.id}\n          name={application.candidate.firstname + ' ' + application.candidate.lastname}\n          created_at={created_at}\n          submitted_by={submitted_by}\n          rating={rating}\n          isLoading={loadingFormResponse}\n          expandedRows={expandedRows}\n          linkToUser={linkToUser}\n        />\n      </Box>\n      <Stack sx={{ rowGap: 2, padding: 1 }}>\n        <Grid container spacing={2}>\n          <Grid item xs={9}>\n            <Stack sx={{ color: '#666666', fontWeight: 'bold', fontSize: '16px' }}>Responses</Stack>\n          </Grid>\n          <Grid item xs={3}>\n            <Stack sx={{ color: '#666666', fontWeight: 'bold', fontSize: '16px' }}>Rating</Stack>\n          </Grid>\n        </Grid>\n        {loadingFormResponse &&\n          Array.from({ length: 3 }).map((_, index) => (\n            <Grid key={index} container spacing={2}>\n              <Grid item xs={9}>\n                <Skeleton animation=\"wave\" height={60} />\n              </Grid>\n              <Grid item xs={3}>\n                <Skeleton animation=\"wave\" height={60} />\n              </Grid>\n            </Grid>\n          ))}\n        {formResponse &&\n          formResponse.map((questionsAndAnswers) => {\n            return (\n              <Grid key={questionsAndAnswers.id} container spacing={2}>\n                <Grid item xs={9}>\n                  <Stack sx={{ rowGap: 1 }}>\n                    <Stack sx={styles.smartFormsAnswersPreviewContainer}>\n                      <AnswersView answer={questionsAndAnswers} />\n                    </Stack>\n                  </Stack>\n                </Grid>\n                <Grid item xs={3} alignContent={'center'}>\n                  {questionsAndAnswers.rateable && (\n                    <Rating\n                      value={questionsAndAnswers.rating}\n                      setValue={(rate) =>\n                        setRatings({ ...ratings, [questionsAndAnswers.id]: rate })\n                      }\n                      disabled={true}\n                    />\n                  )}\n                </Grid>\n              </Grid>\n            );\n          })}\n      </Stack>\n    </Stack>\n  );\n}\n","import React, { Dispatch, useState } from 'react';\nimport { ApplicationAction, ApplicationState, IApplication } from '../types';\nimport {\n  Box,\n  Button,\n  Collapse,\n  Paper,\n  Stack,\n  Table,\n  TableBody,\n  TableCell,\n  TableContainer,\n  TableHead,\n  TableRow\n} from '@mui/material';\nimport { useQuery, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport { styles } from '../styles';\nimport TableSkeleton from '../../Components/Multiposter/TableSkeleton';\nimport { ModalType } from '../config';\nimport EditFormResponseModal from '../Modals/EditFormResponseModal';\nimport { DeleteFormResponse } from '../Modals/DeleteFormResponse';\nimport { NoFormResponsesSVG } from '../OverviewTab/Icons';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport FormResponseDetails from './FormResponseDetails';\nimport RenderFormResponseActions from './FormResponseActions';\nimport { IUserPermissions } from '../../Components/sharedTypes';\n\nfunction SmartFormsTab({\n  ApplicationState,\n  dispatch\n}: {\n  ApplicationState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n}) {\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const permissions = queryClient.getQueryData<IUserPermissions>(['permissions']);\n  const [expandedRows, setExpandedRows] = useState<number[]>([]);\n  const { data: formResponses, isLoading: loadingFormResponses } = useQuery({\n    queryKey: ['formResponses'],\n    queryFn: async () => {\n      if (application?.job) {\n        const { res } = await Api.getFormResponses(application.job.id, application.id);\n        return res.form_responses;\n      }\n    },\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting form responses, ${error}`,\n          state: 'error'\n        }\n      }),\n    enabled: !!application\n  });\n\n  const NoResponses = () => (\n    <TableRow>\n      <TableCell style={{ paddingBottom: 0, paddingTop: 0 }} colSpan={5}>\n        <Box sx={styles.emptyStateContainer}>\n          <NoFormResponsesSVG />\n          <Box sx={sharedClasses.emptyStateText}>No smart forms added</Box>\n        </Box>\n      </TableCell>\n    </TableRow>\n  );\n\n  const TableHeader = () => (\n    <TableHead>\n      <TableRow>\n        <TableCell sx={{ width: '8%' }}>ID</TableCell>\n        <TableCell sx={{ width: '24%' }}>Form Name</TableCell>\n        <TableCell sx={{ width: '16%' }}>Updated At</TableCell>\n        <TableCell sx={{ width: '8%', textAlign: 'center' }}>Rating</TableCell>\n        <TableCell\n          sx={{\n            display: 'flex',\n            alignItems: 'center',\n            justifyContent: 'flex-end',\n            columnGap: 2\n          }}\n        >\n          {permissions?.Applications?.['Add Form Response'] && (\n            <Button\n              id=\"add-form-button\"\n              sx={sharedClasses.genericButtonSecondary}\n              onClick={() => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.ADD_FORM })}\n            >\n              Add form\n            </Button>\n          )}\n          {permissions?.Applications?.['Send Forms'] && (\n            <Button\n              id=\"send-form-button\"\n              sx={sharedClasses.genericButtonSecondary}\n              onClick={() => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.SEND_FORM })}\n            >\n              Send form\n            </Button>\n          )}\n        </TableCell>\n      </TableRow>\n    </TableHead>\n  );\n\n  return (\n    <>\n      <Stack>\n        <TableContainer sx={{ boxShadow: 'none' }} component={Paper}>\n          <Table sx={styles.smartFormsTableContainer}>\n            <TableHeader />\n            {!loadingFormResponses && (\n              <TableBody>\n                {formResponses && formResponses?.length === 0 ? (\n                  <NoResponses />\n                ) : (\n                  formResponses &&\n                  formResponses.map((formResponse, index) => (\n                    <React.Fragment key={index}>\n                      <TableRow>\n                        <RenderFormResponseActions\n                          formResponse={formResponse}\n                          dispatch={dispatch}\n                          expandedRows={expandedRows}\n                          setExpandedRows={setExpandedRows}\n                        />\n                      </TableRow>\n                      <TableRow>\n                        <TableCell style={{ paddingBottom: 0, paddingTop: 0 }} colSpan={5}>\n                          <Collapse\n                            in={expandedRows.includes(formResponse.id)}\n                            timeout=\"auto\"\n                            unmountOnExit\n                          >\n                            <Box margin={1}>\n                              {application?.job && (\n                                <FormResponseDetails\n                                  FormResponseId={formResponse.id}\n                                  application={application}\n                                  dispatch={dispatch}\n                                  created_at={formResponse.created_at}\n                                  submitted_by={formResponse.submitted_by}\n                                  rating={formResponse.rating}\n                                  expandedRows={expandedRows}\n                                  linkToUser={formResponse.link_to_user}\n                                />\n                              )}\n                            </Box>\n                          </Collapse>\n                        </TableCell>\n                      </TableRow>\n                    </React.Fragment>\n                  ))\n                )}\n              </TableBody>\n            )}\n          </Table>\n        </TableContainer>\n      </Stack>\n\n      {loadingFormResponses && <TableSkeleton size={4} borderType={'bottom'} />}\n\n      {ApplicationState.selectedFormResponseAction.edit && (\n        <EditFormResponseModal\n          dispatch={dispatch}\n          ApplicationState={ApplicationState}\n          selectedFormId={ApplicationState.selectedFormResponseAction.edit?.form_id}\n          EditingFormResponseId={ApplicationState.selectedFormResponseAction.edit.id}\n          FormName={ApplicationState.selectedFormResponseAction.edit.form_name}\n        />\n      )}\n      {ApplicationState.selectedFormResponseAction.delete && (\n        <DeleteFormResponse\n          dispatch={dispatch}\n          ApplicationState={ApplicationState}\n          formResponseId={ApplicationState.selectedFormResponseAction.delete.id}\n        />\n      )}\n    </>\n  );\n}\n\nexport default SmartFormsTab;\n","import React, { Dispatch } from 'react';\nimport { Stack, Avatar, Chip, Tooltip, CircularProgress } from '@mui/material';\nimport {\n  Alarm as AlarmIcon,\n  CheckCircleOutline as CheckCircleOutlineIcon,\n  CheckCircle as CheckCircleIcon,\n  Task as TaskIcon\n} from '@mui/icons-material';\nimport dayjs from 'dayjs';\nimport { styles } from '../../../Candidate/styles';\nimport { ApplicationAction, IApplicationTask } from '../../types';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { IApplication } from '../../types';\nimport Api from '../../API';\nimport { ModalType } from '../../config';\n\nexport default function Task({\n  task,\n  dispatch\n}: {\n  task: IApplicationTask;\n  dispatch: Dispatch<ApplicationAction>;\n}) {\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const tasks = queryClient.getQueryData<IApplicationTask[]>(['tasks']);\n\n  const { mutate: completeTask, isLoading: completingTask } = useMutation({\n    mutationFn: async () => {\n      if (application) {\n        const { res } = await Api.updateApplicationTask(\n          application.job.id,\n          application.id,\n          task.id,\n          {\n            completed_at: task.completed_at ? null : dayjs().toISOString()\n          }\n        );\n        return res;\n      }\n    },\n    onSuccess: (res) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: `Task has been successfully updated`, state: 'success' }\n      });\n      if (tasks) {\n        const newTasks = [...tasks];\n        const index = tasks.findIndex((t) => t.id === task?.id);\n        newTasks[index] = res;\n        queryClient.setQueryData(['tasks'], newTasks);\n      }\n    },\n    onError: () => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: `There was an error updating application task`, state: 'error' }\n      });\n    }\n  });\n  return (\n    <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between' }}>\n      <Stack sx={{ flexDirection: 'row', columnGap: 2, alignItems: 'center' }}>\n        <Tooltip\n          placement=\"top\"\n          title={`${task.priority === 'Normal' ? 'Medium' : task.priority} priority`}\n          arrow\n        >\n          <Avatar variant=\"rounded\" sx={{ ...styles[task.priority], borderRadius: '6px' }}>\n            <TaskIcon sx={{ fontSize: '1.1rem' }} />\n          </Avatar>\n        </Tooltip>\n        <Stack\n          id=\"task-subject-link\"\n          sx={{ fontSize: '16px', fontWeight: 'bold', cursor: 'pointer', color: '#333333' }}\n          onClick={() => {\n            dispatch({ type: 'SET_EDITED_TASK', payload: task });\n            dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.ADD_EDIT_TASK });\n          }}\n        >\n          {task.subject}\n        </Stack>\n      </Stack>\n      <Stack sx={{ flexDirection: 'row', columnGap: 2, alignItems: 'center' }}>\n        <Chip\n          label={`Assigned to: ${task.assigned_user}`}\n          sx={{ ...styles.candidateTaskChip, color: '#084D6D', background: '#EDF2F5' }}\n        />\n        <Chip\n          icon={<AlarmIcon sx={{ fontSize: '16px' }} />}\n          label={dayjs(task.due_at).format('ddd, D MMM YYYY, LT')}\n          sx={{ ...styles.candidateTaskChip, color: '#666666', minWidth: '210px' }}\n        />\n        {completingTask ? (\n          <CircularProgress size={24} sx={{ color: '#5BC4BF' }} />\n        ) : (\n          <Stack\n            id=\"application-complete-task-button\"\n            onClick={() => completeTask()}\n            sx={{ cursor: 'pointer' }}\n          >\n            {task.completed_at ? (\n              <CheckCircleIcon sx={{ color: '#5BC4C0' }} />\n            ) : (\n              <CheckCircleOutlineIcon sx={{ color: '#DDDDDD' }} />\n            )}\n          </Stack>\n        )}\n      </Stack>\n    </Stack>\n  );\n}\n","import React, { useState, Dispatch } from 'react';\nimport { Stack, Box, Divider, Skeleton, Tabs, Tab } from '@mui/material';\nimport { useQuery, useQueryClient } from '@tanstack/react-query';\nimport EmptyTab from '../../../Candidate/CandidateTasks/EmptyTab';\nimport { ApplicationAction, IApplication } from '../../types';\nimport { styles } from '../../../Candidate/styles';\nimport Api from '../../API';\nimport Task from './Task';\n\nexport default function TasksTab({ dispatch }: { dispatch: Dispatch<ApplicationAction> }) {\n  const [tabValue, setTabValue] = useState<number>(0);\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n\n  const { data: tasks, isFetching: fetchingTasks } = useQuery({\n    queryKey: ['tasks'],\n    queryFn: async () => {\n      if (application) {\n        const { res } = await Api.getApplicationTasks(application.job.id, application.id);\n        return res.tasks;\n      }\n    },\n    onError: () =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: 'Failed in fetching application tasks', state: 'error' }\n      })\n  });\n\n  const filteredTasks = tabValue\n    ? tasks?.filter((task) => !!task.completed_at) // completed tasks\n    : tasks?.filter((task) => !task.completed_at); // pending tasks\n  return (\n    <>\n      <Tabs\n        value={tabValue}\n        onChange={(e, value) => setTabValue(value)}\n        TabIndicatorProps={{\n          sx: { ...styles.candidateTabIndicator, maxWidth: tabValue ? '5.6em' : '4.3em' }\n        }}\n        sx={styles.candidateTabs}\n      >\n        <Tab label=\"Pending\" id=\"application-tasks-pending-tab\" />\n        <Tab label=\"Completed\" id=\"application-tasks-completed-tab\" />\n      </Tabs>\n      <Divider />\n      {fetchingTasks ? (\n        <>\n          {[...Array(5)].map((_, index) => (\n            <Box key={index}>\n              <Skeleton animation=\"wave\" height={60} />\n            </Box>\n          ))}\n        </>\n      ) : (\n        <>\n          {tasks && filteredTasks?.length ? (\n            <Stack sx={{ paddingTop: 3, rowGap: 3 }}>\n              {filteredTasks.map((task) => {\n                return <Task key={task.id} task={task} dispatch={dispatch} />;\n              })}\n            </Stack>\n          ) : (\n            <EmptyTab tabValue={tabValue} />\n          )}\n        </>\n      )}\n    </>\n  );\n}\n","import React, { Dispatch } from 'react';\nimport { Stack, Button } from '@mui/material';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport { styles } from '../../../Candidate/styles';\nimport { ApplicationAction, ApplicationState } from '../../types';\nimport TasksTab from './TasksTab';\nimport TaskWorkflow from '../../Modals/TaskWorkflow';\nimport { ModalType } from '../../config';\nimport AddEditTask from '../../Modals/AddEditTask';\n\nexport default function Tasks({\n  ApplicationState,\n  dispatch\n}: {\n  ApplicationState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n}) {\n  const { modalsOpen } = ApplicationState;\n  return (\n    <Stack sx={styles.candidateSectionContainer}>\n      <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>\n        <Stack sx={{ fontSize: '18px', fontWeight: 600, color: '#333333' }}>Tasks</Stack>\n        <Stack sx={{ flexDirection: 'row', columnGap: 2 }}>\n          <Button\n            id=\"application-add-task-button\"\n            sx={sharedClasses.genericButtonSecondary}\n            onClick={() => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.ADD_EDIT_TASK })}\n          >\n            Add task\n          </Button>\n          <Button\n            id=\"application-start-workflow-button\"\n            sx={sharedClasses.genericButtonSecondary}\n            onClick={() => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.TASK_WORKFLOW })}\n          >\n            Start workflow\n          </Button>\n        </Stack>\n      </Stack>\n      <TasksTab dispatch={dispatch} />\n      {modalsOpen === ModalType.TASK_WORKFLOW && (\n        <TaskWorkflow ApplicationState={ApplicationState} dispatch={dispatch} />\n      )}\n      {modalsOpen === ModalType.ADD_EDIT_TASK && (\n        <AddEditTask ApplicationState={ApplicationState} dispatch={dispatch} />\n      )}\n    </Stack>\n  );\n}\n","import React, { Dispatch, useEffect, useReducer } from 'react';\nimport { Skeleton, Stack, Table, TableHead, TableBody, TableRow, TableCell } from '@mui/material';\nimport { CalendarMonth as CalendarMonthIcon } from '@mui/icons-material';\nimport { useQuery, useQueryClient } from '@tanstack/react-query';\nimport { ApplicationAction, IApplication, ApplicationState } from '../types';\nimport Api from '../API';\nimport Tasks from './Tasks';\nimport { classes as tableStyles } from '../../../TableStyles';\nimport dayjs from 'dayjs';\nimport { ScoutCalendarReducer, InitialScoutCalendarState } from '../../../ScoutCalendar/reducer';\nimport CreateEvent from '../../../ScoutCalendar/CreateEvent/CreateEvent';\nimport ViewEvent from '../../../ScoutCalendar/ViewEvent';\nimport { IEvent } from 'app/javascript/components/ScoutCalendar/types';\nimport StyledSnackbar from '../../Components/CustomUIElements/StyledSnackbar';\nimport { ISnackbarInput } from '../../Components/CustomUIElements/StyledSnackbar';\nimport { styles } from '../styles';\nimport { ModalType } from '../config';\nimport { ActionButton } from '../OverviewTab/Actions';\nimport { IUserPermissions } from '../../Components/sharedTypes';\n\nexport default function TasksAndEventsTab({\n  ApplicationState,\n  dispatch,\n  currentUserId\n}: {\n  ApplicationState: ApplicationState;\n  dispatch: Dispatch<ApplicationAction>;\n  currentUserId: number;\n}) {\n  const { apiKey, userTimeZone } = ApplicationState;\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const permissions = queryClient.getQueryData<IUserPermissions>(['permissions']);\n\n  const [ScoutCalendarState, eventDispatch] = useReducer(\n    ScoutCalendarReducer,\n    InitialScoutCalendarState\n  );\n  const { createEventObject } = ScoutCalendarState;\n\n  const { data: events, isLoading: loadingEvents } = useQuery({\n    queryKey: ['application events'],\n    queryFn: async () => {\n      if (application) {\n        const { res } = await Api.getApplicationEvents(application.job.id, application.id);\n        return res.events;\n      }\n    },\n    onError: () =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: `There was an error in loading events`, state: 'error' }\n      })\n  });\n\n  useEffect(() => {\n    eventDispatch({ type: 'SET_APIKEY', payload: apiKey });\n    permissions && eventDispatch({ type: 'SET_PERMISSIONS', payload: permissions });\n  }, [eventDispatch, apiKey, permissions]);\n\n  const headerStyle = (name: string) => {\n    switch (name) {\n      case 'Event':\n        return {\n          minWidth: '150px'\n        };\n      case 'Type':\n        return { minWidth: '150px' };\n      case 'Scheduled':\n        return { minWidth: '120px' };\n      case 'Event Owner':\n        return { minWidth: '120px' };\n      default:\n        return { minWidth: '90px' };\n    }\n  };\n\n  function handleSelectEvent(event: IEvent) {\n    eventDispatch({\n      type: 'SET_CREATE_EVENT_OBJECT',\n      payload: {\n        ...createEventObject,\n        eventName: event.subject,\n        eventDescription: event.note || '',\n        maxCandidates: String(event.max_candidates),\n        recruiters: event.attendees\n          .filter((a) => a.type === 'User')\n          .map((a) => ({\n            id: a.id,\n            name: a.name,\n            checked: false,\n            attendeeId: a.attendee_id,\n            state: a.state\n          })),\n        eventType: event.event_type,\n        duration: String(event.duration_in_minutes),\n        eventDate: new Date(event.begins_at),\n        eventId: event.id,\n        candidates: event.attendees.filter((a) => a.type === 'Candidate'),\n        dates: [new Date(event.begins_at)],\n        owner: event.owner\n      }\n    });\n    eventDispatch({ type: 'SET_SHOW_VIEW_EVENT_MODAL', payload: true });\n  }\n\n  const actions = [\n    {\n      label: 'Add to event',\n      icon: <></>,\n      onClick: () => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.ADD_TO_EVENT }),\n      permission: true\n    },\n    {\n      label: 'Invite to timeslot',\n      icon: <></>,\n      onClick: () => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.INVITE_TO_TIMESLOT }),\n      permission: permissions?.Applications?.['Invite To Book In']\n    }\n  ];\n\n  return (\n    <Stack sx={{ rowGap: 3 }}>\n      <Tasks ApplicationState={ApplicationState} dispatch={dispatch} />\n      <Stack\n        sx={{\n          padding: 3,\n          borderRadius: '6px',\n          border: '1px solid #E3E3E3',\n          rowGap: 2\n        }}\n      >\n        <Stack\n          sx={{\n            fontSize: '18px',\n            fontWeight: 600,\n            color: '#333333',\n            flexDirection: 'row',\n            justifyContent: 'space-between',\n            alignItems: 'center'\n          }}\n        >\n          <Stack>Events</Stack>\n          <Stack sx={{ flexDirection: 'row', columnGap: 2 }}>\n            {actions\n              .filter((a) => a.permission)\n              .map((action, i) => (\n                <ActionButton\n                  key={i}\n                  action={action}\n                  boldFont={true}\n                  buttonId={`${action.label.toLowerCase().split(' ').join('-')}-button`}\n                />\n              ))}\n          </Stack>\n        </Stack>\n        {loadingEvents ? (\n          [...Array(5)].map((_, index) => <Skeleton key={index} height={30} animation=\"wave\" />)\n        ) : (\n          <>\n            <Table stickyHeader sx={tableStyles.tableStyling}>\n              <TableHead>\n                <TableRow>\n                  {['Event', 'Type', 'Scheduled', 'Event Owner'].map((title, index) => (\n                    <TableCell\n                      sx={{ ...tableStyles.tableHeader, ...headerStyle(title) }}\n                      key={index}\n                    >\n                      <Stack>{title}</Stack>\n                    </TableCell>\n                  ))}\n                </TableRow>\n              </TableHead>\n              <TableBody>\n                {events?.length ? (\n                  <>\n                    {events?.map((e) => (\n                      <TableRow\n                        id=\"application-event-link\"\n                        key={e.id}\n                        onClick={() => handleSelectEvent(e)}\n                        sx={{ cursor: 'pointer' }}\n                      >\n                        <TableCell sx={{ fontWeight: 'bold', color: '#666666' }}>\n                          {e.subject}\n                        </TableCell>\n                        <TableCell>{e.event_type.name}</TableCell>\n                        <TableCell>\n                          <Stack>\n                            <Stack>{dayjs(e.begins_at).format('ddd, D MMM YYYY')}</Stack>\n                            <Stack>\n                              {dayjs(e.begins_at).format('LT')} - {dayjs(e.ends_at).format('LT')}\n                            </Stack>\n                          </Stack>\n                        </TableCell>\n                        <TableCell>{e.owner}</TableCell>\n                      </TableRow>\n                    ))}\n                  </>\n                ) : (\n                  <TableRow>\n                    <TableCell colSpan={4}>\n                      <Stack sx={{ padding: 7.5, alignItems: 'center', rowGap: 2 }}>\n                        <CalendarMonthIcon sx={styles.emptyStateIcon} />\n                        <Stack sx={styles.emptyStateMessage}>No events added</Stack>\n                      </Stack>\n                    </TableCell>\n                  </TableRow>\n                )}\n              </TableBody>\n            </Table>\n          </>\n        )}\n      </Stack>\n      {ScoutCalendarState.showCreateEventModal && events && (\n        <CreateEvent\n          events={events}\n          ScoutCalendarState={ScoutCalendarState}\n          dispatch={eventDispatch}\n          userTimezone={userTimeZone}\n        />\n      )}\n      {ScoutCalendarState.showViewEventModal && events && (\n        <ViewEvent\n          events={events}\n          ScoutCalendarState={ScoutCalendarState}\n          dispatch={eventDispatch}\n          currentUserId={currentUserId}\n          userTimezone={userTimeZone}\n          newApplicationEnabled={true} // because to see this page, the new application must already be enabled\n        />\n      )}\n      <StyledSnackbar\n        message={ScoutCalendarState.snackbar.message}\n        state={ScoutCalendarState.snackbar.state}\n        setSnackbarState={(snackbarInput: ISnackbarInput) =>\n          eventDispatch({ type: 'SET_SNACKBAR', payload: snackbarInput })\n        }\n      />\n    </Stack>\n  );\n}\n","import React from 'react';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport Application from './Application';\n\nexport interface IApplicationPageProps {\n  applicationId: number;\n  jobId: number;\n  showLinkedInURL: boolean;\n  aiSummariesEnabled: boolean;\n  currentUser: { id: number; api_key: string; admin: boolean; timeZone: string; email: string };\n  newIntegrationEnabled: boolean;\n}\n\nconst queryClient = new QueryClient({\n  defaultOptions: {\n    queries: {\n      refetchOnWindowFocus: false\n    }\n  }\n});\n\nexport default function ApplicationPage({\n  applicationId,\n  jobId,\n  showLinkedInURL,\n  aiSummariesEnabled,\n  currentUser,\n  newIntegrationEnabled\n}: IApplicationPageProps) {\n  return (\n    <QueryClientProvider client={queryClient}>\n      <Application\n        {...{\n          applicationId,\n          jobId,\n          showLinkedInURL,\n          aiSummariesEnabled,\n          currentUser,\n          newIntegrationEnabled\n        }}\n      />\n    </QueryClientProvider>\n  );\n}\n","import React, { useState, Dispatch, SetStateAction } from 'react';\nimport {\n  Autocomplete,\n  Box,\n  CircularProgress,\n  Modal,\n  Button,\n  TextField,\n  FormHelperText\n} from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { styles } from '../styles';\nimport { IApproversData } from '../types';\nimport Api from '../API';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { MultilineFormTextField } from '../../Components/CustomUIElements/FormTextField';\n\nexport default function ActionModal({\n  apiKey,\n  approver,\n  setModalsOpen,\n  modalsOpen,\n  setSnackbar,\n  requisitionId,\n  getApprovalFormData,\n  index\n}: {\n  apiKey: string;\n  approver: IApproversData;\n  modalsOpen: boolean;\n  setModalsOpen: Dispatch<SetStateAction<boolean>>;\n  setSnackbar: Dispatch<\n    SetStateAction<{\n      message: string;\n      state: string;\n    }>\n  >;\n  requisitionId: number;\n  getApprovalFormData: () => void;\n  index: number;\n}) {\n  const [isUpdating, setIsUpdating] = useState<boolean>(false);\n  const [approval, setApproval] = useState<string>('');\n  const [comment, setComment] = useState<string>('');\n\n  const handleClose = () => {\n    setModalsOpen(false);\n    setApproval('');\n    setComment('');\n  };\n\n  const updateApprover = async () => {\n    setIsUpdating(true);\n\n    try {\n      const response = await Api.putApprovalForm(requisitionId, {\n        requisition: {\n          approvers_attributes: {\n            [index]: { id: approver.id, comment: comment }\n          }\n        },\n        approval: approval\n      });\n      if (response.res.success) {\n        setSnackbar({\n          message: response.res.success,\n          state: 'success'\n        });\n      }\n    } catch (err) {\n      setSnackbar({\n        message: `Failed to update approver, ${err}`,\n        state: 'error'\n      });\n    } finally {\n      setIsUpdating(false);\n      setModalsOpen(false);\n      getApprovalFormData();\n    }\n  };\n\n  return (\n    <Modal open={modalsOpen}>\n      <Box sx={{ ...styles.actionsModal, height: '640px' }}>\n        <Box\n          sx={{\n            display: 'flex',\n            flexDirection: 'column',\n            padding: '20px 0',\n            minWidth: '255px'\n          }}\n        >\n          <Box>\n            <CloseIcon onClick={() => handleClose()} sx={styles.closeIcon} />\n          </Box>\n          <Box sx={styles.modalHeader}>Approve/decline Approval</Box>\n        </Box>\n        <Box>\n          <Box sx={{ padding: '32px 0px' }}>\n            <Autocomplete\n              disablePortal\n              options={['Approve', 'Decline']}\n              getOptionLabel={(option) => option}\n              value={approval || null}\n              onChange={(_event, value) => (value ? setApproval(value) : setApproval(''))}\n              sx={{ ...sharedClasses.formAutocomplete, width: '290px' }}\n              ListboxProps={{\n                style: {\n                  fontFamily: 'Source Sans Pro, sans-serif',\n                  color: '#333333',\n                  maxHeight: '200px'\n                }\n              }}\n              renderInput={(params) => (\n                <TextField\n                  {...params}\n                  label=\"Approve/decline\"\n                  InputLabelProps={{ shrink: true }}\n                  placeholder=\"Please select\"\n                />\n              )}\n            />\n            <FormHelperText sx={{ margin: '3px' }}>This action cannot be reversed.</FormHelperText>\n          </Box>\n          <Box>\n            <MultilineFormTextField\n              value={approver.comment || comment}\n              onChange={(e) => {\n                setComment(e.target.value);\n              }}\n              styles={{ width: '680px', margin: '20px, 0px' }}\n              rows={6}\n              label={'Comments'}\n            />\n          </Box>\n        </Box>\n        <Box sx={{ ...styles.modalActions, marginBottom: 2 }}>\n          <Button\n            disableElevation\n            sx={{ ...styles.buttonRedLight }}\n            variant=\"text\"\n            onClick={() => handleClose()}\n          >\n            Cancel\n          </Button>\n          <Button\n            id=\"approval-form-action-button\"\n            type=\"submit\"\n            disabled={isUpdating}\n            sx={styles.modalEditButton}\n            onClick={() => updateApprover()}\n          >\n            {isUpdating ? <CircularProgress size={20} color=\"inherit\" /> : 'Save'}\n          </Button>\n        </Box>\n      </Box>\n    </Modal>\n  );\n}\n","import React from 'react';\nimport { Box, Stack } from '@mui/material';\nimport { styles } from '../styles';\nimport dompurify from 'dompurify';\nimport { IAnswer } from '../types';\nimport AvailabilityAnswer from './AvailabilityAnswer';\n\nfunction parseAnswers(answer: string) {\n  const answers = answer.split(', ');\n  if (answers.length === 1 && answers[0].includes('and')) {\n    return answers[0].split(' and ');\n  }\n  if (answers.length > 1) {\n    answers[answers.length - 1] = answers[answers.length - 1].split('and ')[1];\n  }\n\n  return answers;\n}\n\nconst host = window.location.host;\n\nexport default function AnswersView({ answer }: { answer: IAnswer }) {\n  switch (answer.type) {\n    case 'RadioButtonField':\n    case 'SelectField':\n    case 'TextField':\n    case 'TextAreaField':\n      return (\n        <Box sx={{ padding: 2 }}>\n          <Box\n            sx={styles.questionLabel}\n            dangerouslySetInnerHTML={{ __html: dompurify.sanitize(answer.question) }}\n          />\n          <Box>\n            <Stack sx={{ overflowWrap: 'anywhere' }}>{answer.answer || '-'}</Stack>\n          </Box>\n        </Box>\n      );\n    case 'DateField': {\n      let date = '-';\n      if (answer.answer) {\n        const [year, month, day] = answer.answer?.split('-');\n        date = host.includes('scout') ? `${month}-${day}-${year}` : `${day}-${month}-${year}`;\n      }\n      return (\n        <Box sx={{ padding: 2 }}>\n          <Box\n            sx={styles.questionLabel}\n            dangerouslySetInnerHTML={{ __html: dompurify.sanitize(answer.question) }}\n          />\n          <Box>\n            <Stack>{date}</Stack>\n          </Box>\n        </Box>\n      );\n    }\n    case 'CheckBoxField': {\n      const answers = parseAnswers(answer.answer);\n      return (\n        <Box sx={{ padding: 2 }}>\n          <Box\n            sx={styles.questionLabel}\n            dangerouslySetInnerHTML={{ __html: dompurify.sanitize(answer.question) }}\n          />\n          {answers.map((answer, i) => {\n            return (\n              <Box key={i} sx={{ paddingBottom: 1 }}>\n                <Stack>{answer}</Stack>\n              </Box>\n            );\n          })}\n        </Box>\n      );\n    }\n    case 'RankField': {\n      const answers = answer.answer ? answer.answer.split('; ') : [];\n      return (\n        <Box sx={{ padding: 2 }}>\n          <Box\n            sx={styles.questionLabel}\n            dangerouslySetInnerHTML={{ __html: dompurify.sanitize(answer.question) }}\n          />\n          <Box sx={{ paddingBottom: 1 }}>\n            {answers.length > 0 ? (\n              answers.map((ans, i) => <Stack key={i}>{ans.replace(')', '.')}</Stack>)\n            ) : (\n              <Stack>-</Stack>\n            )}\n          </Box>\n        </Box>\n      );\n    }\n    case 'CsvDataLookupField':\n      return (\n        <Box sx={{ padding: 2 }}>\n          <Box\n            sx={styles.questionLabel}\n            dangerouslySetInnerHTML={{ __html: dompurify.sanitize(answer.question) }}\n          />\n          <Box>\n            <Stack sx={{ textTransform: 'capitalize', marginTop: 1 }}>{answer.answer[0]}</Stack>\n          </Box>\n          <Box>\n            <Stack sx={{ fontWeight: 'bold', marginTop: 2 }}>Position ID</Stack>\n          </Box>\n          <Box>\n            <Stack sx={{ marginTop: 2 }}>{answer.answer[1]}</Stack>\n          </Box>\n        </Box>\n      );\n    case 'AvailabilityField': {\n      return (\n        <Box sx={{ padding: 2 }}>\n          <Box\n            sx={styles.questionLabel}\n            dangerouslySetInnerHTML={{ __html: dompurify.sanitize(answer.question) }}\n          />\n          <AvailabilityAnswer\n            availabilityTableData={answer.answer}\n            config={answer.config}\n            shift={answer.shift}\n            totalTime={answer.total_availability_time}\n          />\n        </Box>\n      );\n    }\n    case 'JobReferenceLookupField':\n      return null;\n    default:\n      return (\n        <Box sx={{ padding: 2 }}>\n          <Box\n            sx={styles.questionLabel}\n            dangerouslySetInnerHTML={{ __html: dompurify.sanitize(answer.question) }}\n          />\n          Invalid question type\n        </Box>\n      );\n  }\n}\n","import React, { useRef, useState, useCallback, useEffect, useMemo } from 'react';\nimport {\n  Box,\n  Button,\n  CircularProgress,\n  IconButton,\n  Skeleton,\n  Stack,\n  Tooltip,\n  Tab,\n  Tabs,\n  Typography\n} from '@mui/material';\nimport {\n  ArrowCircleLeft as ArrowCircleLeftIcon,\n  Edit as EditIcon,\n  FileCopy as FileCopyIcon,\n  AssignmentInd as AssignmentIndIcon\n} from '@mui/icons-material';\nimport { ITabs, IApprovalForm, IAnswer } from '../types';\nimport { styles } from '../styles';\nimport { PDFIcon } from '../../Job/Applications/CustomIcons';\nimport StyledSnackbar from '../../Components/CustomUIElements/StyledSnackbar';\nimport Api from '../API';\nimport AnswersView from './AnswersView';\nimport ApproversTable from './ApproversTable';\nimport NewJob from '../../Jobs/NewJob/NewJob';\nimport DocumentViewer from './DocumentViewer';\nimport { IPermissions } from '../../Jobs/types';\nimport { IUserPermissions } from '../../Components/sharedTypes';\nimport { getPermissions } from '../../../shared/permissionHelpers';\nimport QuestionFieldGenerator, {\n  IApplicantQuestion\n} from '../../Components/Utilities/QuestionFieldGenerator';\n\nconst BASE_URL = window.location.origin;\n\nexport default function ApprovalForm({\n  apiKey,\n  requisitionId,\n  newApplicationEnabled\n}: {\n  apiKey: string;\n  requisitionId: number;\n  newApplicationEnabled: boolean;\n}) {\n  const [indicatorWidth, setIndicatorWidth] = useState(0);\n  const [approvalFormData, setApprovalFormData] = useState<IApprovalForm>({});\n  const [isLoading, setIsLoading] = useState<boolean>(false);\n  const [isLoadingPermissions, setIsLoadingPermissions] = useState<boolean>(false);\n  const [snackbar, setSnackbar] = useState<{\n    message: string;\n    state: string;\n  }>({\n    message: '',\n    state: 'success'\n  });\n  const [isDialogOpen, setIsDialogOpen] = useState<boolean>(false);\n  const [isCloning, setIsCloning] = useState<boolean>(false);\n  const [isGeneratingBulkPdf, setIsGeneratingBulkPdf] = useState<boolean>(false);\n  const [userPermissions, setUserPermissions] = useState<IUserPermissions | null>(null);\n  const [reorderedAnswers, setReorderedAnswers] = useState<IAnswer[]>([]);\n  const [emailTemplateQuestions, setEmailTemplateQuestions] = useState<IApplicantQuestion[]>([]);\n\n  const fieldRefs = {\n    questions: useRef<Array<HTMLDivElement | null>>([])\n  };\n\n  const getUserPermissions = useCallback(async () => {\n    setIsLoadingPermissions(true);\n    try {\n      const data = await getPermissions(apiKey);\n      const allRoles: Record<string, Record<string, boolean>> = {};\n      data.roles.forEach((role: IPermissions) =>\n        role.feature_groups.forEach((group) => {\n          !allRoles[group.name] ? (allRoles[group.name] = {}) : null;\n          group.permissions.forEach((permission) => (allRoles[group.name][permission] = true));\n        })\n      );\n      setUserPermissions(allRoles);\n    } catch (error) {\n      setSnackbar({\n        message: 'There was an error getting permissions',\n        state: 'error'\n      });\n    } finally {\n      setIsLoadingPermissions(false);\n    }\n  }, [apiKey]);\n\n  const getApprovalFormData = useCallback(async () => {\n    setIsLoading(true);\n    try {\n      const data = await Api.getApprovalForm(requisitionId);\n      const answers = data.res.answers;\n\n      const orderedAnswers = answers.sort((a, b) => a.position - b.position);\n      setApprovalFormData(data.res);\n      setReorderedAnswers(orderedAnswers);\n      setEmailTemplateQuestions(data.res.email_template_fields);\n    } catch (err) {\n      setSnackbar({\n        message: `Failed to fetch approval form data, ${err}`,\n        state: 'error'\n      });\n    } finally {\n      setIsLoading(false);\n    }\n  }, [requisitionId]);\n\n  useEffect(() => {\n    getApprovalFormData();\n    getUserPermissions();\n  }, [getApprovalFormData, getUserPermissions]);\n\n  const headerRefs = useRef(null);\n\n  const TabPanel = useCallback((props: ITabs) => {\n    const { children, tabValue, index, ...other } = props;\n\n    return (\n      <div\n        role=\"tabpanel\"\n        hidden={tabValue !== index}\n        id={`approvals-tabpanel-${index}`}\n        aria-labelledby={`approvals-tab-${index}`}\n        {...other}\n      >\n        {tabValue === index && <>{children}</>}\n      </div>\n    );\n  }, []);\n\n  const TabProps = useCallback((index: number) => {\n    return {\n      id: `approvals-tab-${index}`,\n      'aria-controls': `approvals-tabpanel-${index}`\n    };\n  }, []);\n\n  const navigateToEditApproval = () => {\n    window.location.href = `/admin/requisitions/${requisitionId}/edit`;\n  };\n\n  useEffect(() => {\n    setIndicatorWidth(headerRefs?.current.clientWidth - 32);\n  }, []);\n\n  const cloneApprovalForm = async () => {\n    setIsCloning(true);\n    try {\n      const response = await Api.cloneApprovalForm(requisitionId);\n      if (response.res.success === 'Approval cloned') {\n        setSnackbar({\n          message: 'Approval form has been successfully cloned.',\n          state: 'success'\n        });\n        window.location.href = `${BASE_URL}${response.res.url}`;\n      }\n    } catch (error) {\n      setSnackbar({\n        message: `Failed to clone approval form, ${error?.errors}`,\n        state: 'error'\n      });\n    } finally {\n      setIsCloning(false);\n    }\n  };\n\n  const generateBulkPdf = async () => {\n    setIsGeneratingBulkPdf(true);\n    try {\n      const response = await Api.generateBulkPdf(requisitionId);\n      if (response.res.success === 'Report submitted') {\n        setSnackbar({\n          message: 'Bulk pdf has been successfully submitted.',\n          state: 'success'\n        });\n      }\n    } catch (error) {\n      setSnackbar({\n        message: `Failed to generate bulk pdf, ${error?.errors}`,\n        state: 'error'\n      });\n    } finally {\n      setIsGeneratingBulkPdf(false);\n    }\n  };\n\n  const jobDefaults = useMemo(() => {\n    if (!approvalFormData.answers?.length) return {};\n    return approvalFormData.answers\n      .filter((answer) => !!answer.job_field)\n      .filter((answer) =>\n        answer.type === 'RankField' ||\n        (answer.job_field === 'expires_at' && answer.type !== 'DateField') ||\n        !answer.answer\n          ? false\n          : true\n      )\n      .reduce(\n        (acc, cur) => {\n          acc[cur.job_field] = cur.answer;\n          return acc;\n        },\n        { title: approvalFormData.position_title }\n      );\n  }, [approvalFormData.answers, approvalFormData.position_title]);\n\n  return (\n    <Box sx={styles.jobPageContainer}>\n      {isLoading ? (\n        <Skeleton animation=\"wave\" sx={{ marginBottom: '20px' }} width={200} height={56} />\n      ) : (\n        <Box sx={{ ...styles.jobPageHeader, marginBottom: 'unset', alignItems: 'start' }}>\n          <h1>{approvalFormData.position_title}</h1>\n          <Stack>\n            <Stack sx={styles.approvalFormIconsContainer}>\n              {(userPermissions?.['Approval Forms']?.['Edit Approval Form at Any Stage (HR use)'] ||\n                ((approvalFormData.state === 'draft' || approvalFormData.state === 'pending') &&\n                  userPermissions?.['Approval Forms']?.['Edit Previously Submitted Form'])) && (\n                <Tooltip title=\"Edit\">\n                  <IconButton\n                    sx={styles.iconGrey}\n                    id=\"edit-approval-form-button\"\n                    onClick={navigateToEditApproval}\n                  >\n                    <EditIcon />\n                  </IconButton>\n                </Tooltip>\n              )}\n              {userPermissions?.['Approval Forms']?.['Clone Previously Submitted Form'] && (\n                <Tooltip title=\"Clone\">\n                  <IconButton\n                    sx={styles.iconGrey}\n                    id=\"clone-approval-form-button\"\n                    onClick={cloneApprovalForm}\n                  >\n                    {isCloning ? (\n                      <CircularProgress size={24} color={'inherit'} />\n                    ) : (\n                      <FileCopyIcon />\n                    )}\n                  </IconButton>\n                </Tooltip>\n              )}\n              {userPermissions?.['Applications']?.['Bulk PDF'] && (\n                <Tooltip title=\"Bulk PDF\">\n                  <IconButton\n                    sx={styles.iconGrey}\n                    id=\"export-approval-form-pdf-button\"\n                    onClick={generateBulkPdf}\n                  >\n                    {isGeneratingBulkPdf ? (\n                      <CircularProgress size={24} color={'inherit'} />\n                    ) : (\n                      <PDFIcon />\n                    )}\n                  </IconButton>\n                </Tooltip>\n              )}\n              {approvalFormData.state === 'approved' &&\n                userPermissions?.['Approval Forms']?.['Create Job From Approval Form'] && (\n                  <Button\n                    sx={{ ...styles.modalSaveButton, marginLeft: 1, width: '100px' }}\n                    onClick={() => setIsDialogOpen(true)}\n                  >\n                    Create Job\n                  </Button>\n                )}\n            </Stack>\n          </Stack>\n        </Box>\n      )}\n      <Stack sx={styles.approvalFormSubtitle}>{`Approval #${requisitionId}`}</Stack>\n      {isLoading ? (\n        <Skeleton animation=\"wave\" sx={{ marginBottom: '20px' }} width={200} height={56} />\n      ) : (\n        <Box sx={styles.statusContainer}>\n          <Typography\n            sx={{\n              ...styles[approvalFormData.state],\n              fontSize: '13px',\n              fontWeight: 'bold',\n              textTransform: 'uppercase',\n              padding: '6px 16px',\n              borderRadius: (theme) => theme.spacing(0.5)\n            }}\n          >\n            {approvalFormData.state}\n          </Typography>\n        </Box>\n      )}\n      <Box sx={styles.tabsContainer}>\n        <Tabs\n          value={0}\n          variant=\"scrollable\"\n          scrollButtons={false}\n          aria-label=\"Approvals\"\n          sx={{\n            ...styles.tabs,\n            '& .MuiTabs-indicator': { ...styles.tabIndicator, maxWidth: indicatorWidth + 'px' }\n          }}\n        >\n          <Tab ref={headerRefs} label=\"Approval form summary\" {...TabProps(0)} />\n        </Tabs>\n      </Box>\n      <Box>\n        <TabPanel tabValue={0} index={0} />\n      </Box>\n      <Box sx={styles.backToApprovalFormsButton}>\n        <Stack\n          flexDirection=\"row\"\n          alignItems=\"center\"\n          onClick={() => {\n            window.location.href = '/admin/requisitions';\n          }}\n        >\n          <IconButton sx={styles.iconGrey}>\n            <ArrowCircleLeftIcon />\n          </IconButton>\n          <Box>Back to approval forms</Box>\n        </Stack>\n      </Box>\n      {isLoading ? (\n        <Skeleton animation=\"wave\" sx={{ marginBottom: '20px' }} width={200} height={56} />\n      ) : (\n        <>\n          {approvalFormData?.requisition_requester && (\n            <Box sx={{ padding: 2, marginBottom: 2 }}>\n              <Stack sx={{ ...styles.sectionHeader, paddingBottom: 2 }}>\n                Approval created with a public link\n              </Stack>\n              <Stack sx={{ rowGap: 2 }}>\n                <Stack>Requested by: {approvalFormData?.requisition_requester.name}</Stack>\n                <Stack>Email: {approvalFormData?.requisition_requester.email}</Stack>\n                <Stack>Phone: {approvalFormData?.requisition_requester.phone}</Stack>\n              </Stack>\n            </Box>\n          )}\n          <Box>\n            <Stack sx={{ ...styles.sectionHeader, paddingLeft: 2 }}>Form</Stack>\n            {reorderedAnswers?.map((answer) => <AnswersView answer={answer} key={answer.id} />)}\n          </Box>\n          {/* TODO:Hide this section for now */}\n          {/* <Box>\n            {emailTemplateQuestions.length > 0 && (\n              <Stack sx={{ ...styles.sectionHeader, paddingLeft: 2 }}>\n                Email Template Questions\n              </Stack>\n            )}\n            {emailTemplateQuestions?.map((question, index) => (\n              <Box sx={{ paddingLeft: 2 }} key={question.id}>\n                <QuestionFieldGenerator\n                  question={question}\n                  questionRef={(el) => (fieldRefs.questions.current[index] = el)}\n                  questionError={''}\n                  onChangeCallback={() => {}}\n                  answer={''}\n                  disabled={true}\n                />\n              </Box>\n            ))}\n          </Box> */}\n          <Box sx={{ padding: 2 }}>\n            <Stack sx={{ ...styles.sectionHeader, paddingBottom: 2 }}>Documents</Stack>\n            <Stack sx={{ rowGap: 2 }}>\n              {approvalFormData.documents?.map((document) => (\n                <DocumentViewer document={document} key={document.id} />\n              ))}\n            </Stack>\n          </Box>\n          {!Number(approvalFormData?.template_config?.hide_assigned_user) &&\n            userPermissions?.['Approval Forms']?.['Assign User To Requisition'] && (\n              <Box sx={{ padding: 2 }}>\n                <Stack sx={{ ...styles.sectionHeader, paddingBottom: 2 }}>Assigned User</Stack>\n                <Stack>\n                  {approvalFormData.assigned_user ? approvalFormData.assigned_user : '-'}\n                </Stack>\n              </Box>\n            )}\n          {!Number(approvalFormData?.template_config?.hide_approval_administrator) && (\n            <Box sx={{ padding: 2 }}>\n              <Stack sx={{ ...styles.sectionHeader, paddingBottom: 2 }}>\n                Approval Administrator\n              </Stack>\n              <Stack>\n                {approvalFormData.approval_administrator\n                  ? approvalFormData.approval_administrator\n                  : '-'}\n              </Stack>\n            </Box>\n          )}\n          <Box sx={{ padding: 2 }}>\n            <Stack sx={{ ...styles.sectionHeader, paddingBottom: 2 }}>Approvers</Stack>\n            <Stack>\n              {approvalFormData.approvers?.length > 0 ? (\n                <ApproversTable\n                  apiKey={apiKey}\n                  approvers={approvalFormData.approvers}\n                  setSnackbar={setSnackbar}\n                  requisitionId={requisitionId}\n                  approvalFormState={approvalFormData?.state}\n                  getApprovalFormData={getApprovalFormData}\n                  userPermissions={userPermissions}\n                />\n              ) : (\n                'No approvers yet.'\n              )}\n            </Stack>\n          </Box>\n          {userPermissions?.['Approval Forms']?.['Manage Approval Form Notes'] && (\n            <Box sx={{ padding: 2 }}>\n              <Stack sx={{ ...styles.sectionHeader, paddingBottom: 2 }}>Notes</Stack>\n              <Stack>{approvalFormData.note ? approvalFormData.note : '-'}</Stack>\n            </Box>\n          )}\n          {approvalFormData.application && (\n            <Box sx={{ padding: 2 }}>\n              <Stack sx={{ ...styles.sectionHeader, paddingBottom: 2 }}>Application</Stack>\n              <Stack flexDirection=\"row\" alignItems=\"center\">\n                <Box\n                  sx={{ ...styles.fileIcon, ...styles.applicationIcon, cursor: 'pointer' }}\n                  onClick={() => (window.location.href = newApplicationEnabled ? approvalFormData.application.url.replace('/applications/', '/new_applications/') : approvalFormData.application.url)}\n                >\n                  <AssignmentIndIcon />\n                </Box>\n                <Box\n                  sx={{ ...styles.fileName, cursor: 'pointer' }}\n                  onClick={() => (window.location.href = newApplicationEnabled ? approvalFormData.application.url.replace('/applications/', '/new_applications/') : approvalFormData.application.url)}\n                >\n                  {approvalFormData.application.id} - {approvalFormData.application.name}\n                </Box>\n              </Stack>\n            </Box>\n          )}\n          <Box sx={{ padding: 2 }}>\n            <Stack sx={{ ...styles.sectionHeader, paddingBottom: 2 }}>Email Template</Stack>\n            <Stack>{approvalFormData.email_template ? approvalFormData.email_template.name : '(Default)'}</Stack>\n          </Box>\n        </>\n      )}\n      <StyledSnackbar\n        message={snackbar.message}\n        state={snackbar.state}\n        setSnackbarState={setSnackbar}\n      />\n      <NewJob\n        apiKey={apiKey}\n        jobDefaults={jobDefaults}\n        isDialogOpen={isDialogOpen}\n        setIsDialogOpen={setIsDialogOpen}\n        fromApproval\n        approvalFormId={requisitionId}\n      />\n    </Box>\n  );\n}\n","import React, { useEffect, useState, useRef } from 'react';\nimport { Box, ToggleButtonGroup, ToggleButton } from '@mui/material';\nimport { IApprovalTemplate, IApprovalTemplateFields } from '../types';\nimport QuestionFieldGenerator, {\n  IApplicantQuestion\n} from '../../Components/Utilities/QuestionFieldGenerator';\nimport dompurify from 'dompurify';\nimport { MultilineFormTextField } from '../../Components/CustomUIElements/FormTextField';\nimport { styles } from './styles';\nimport InfoIcon from '@mui/icons-material/Info';\nimport LoadingButton from '../../Components/Buttons/LoadingButton';\n\nconst BASE_URL = window.location.origin;\n\nconst createApprovalFormQuestionsObject = (questions: IApplicantQuestion[]) => {\n  const newObject = {};\n  questions.forEach((question: IApplicantQuestion) => {\n    newObject[question.id] = {\n      ...question,\n      data: '',\n      inputText: ''\n    };\n  });\n  return newObject;\n};\n\nconst createQuestionErrorsObject = (questions: IApplicantQuestion[]) => {\n  const errors: Record<number, string> = {};\n  questions.forEach((question: IApplicantQuestion) => {\n    errors[question.id] = '';\n  });\n  return errors;\n};\n\nexport default function ApprovalFormPage({\n  approvalTemplateData,\n  requisitionId,\n  authenticity_token,\n  hash,\n  state\n}: {\n  approvalTemplateData?: IApprovalTemplate;\n  requisitionId: number;\n  authenticity_token: string;\n  hash: string;\n  state: string;\n}) {\n  const [emailTemplateQuestions, setEmailTemplateQuestions] = useState<IApplicantQuestion[]>([]);\n  const [approvalFormQuestions, setApprovalFormQuestions] = useState(() =>\n    createApprovalFormQuestionsObject([])\n  );\n  const [questionErrors, setQuestionErrors] = useState(() =>\n    createQuestionErrorsObject(emailTemplateQuestions || [])\n  );\n  const [selected, setSelected] = useState('approve');\n  const [comment, setComment] = useState('');\n  const [isValid, setIsValid] = useState(false);\n  const [actioned, setActioned] = useState(false);\n\n  const fieldRefs = {\n    questions: useRef<Array<HTMLDivElement | null>>([])\n  };\n\n  const handleToggle = (event: React.MouseEvent<HTMLElement>, newSelected: string) => {\n    if (newSelected !== null) {\n      setSelected(newSelected);\n    }\n  };\n\n  const submitEmailTemplateRequisition = async () => {\n    const coi_response = Object.values(approvalFormQuestions)\n      .map((question) => question.inputText)\n      .join('. ');\n\n    // Approve or decline requisition\n    try {\n      const response = await fetch(`${BASE_URL}/requisition_approval`, {\n        method: 'POST',\n        headers: {\n          'Content-Type': 'application/json'\n        },\n        body: JSON.stringify({\n          authenticity_token: authenticity_token,\n          id: requisitionId,\n          hash: hash,\n          approval: selected,\n          coi_response: coi_response,\n          comment: comment,\n          commit: 'Submit'\n        })\n      });\n      if (response.ok) {\n        setActioned(true);\n      } else {\n        console.log('Error:', response.status, response.statusText);\n      }\n    } catch (error) {\n      console.log(error);\n    }\n  };\n\n  useEffect(() => {\n    if (!approvalTemplateData) return;\n    const questionsData = approvalTemplateData.fields.filter(\n      (question) => question.enabled && question.for_email_template\n    );\n    setEmailTemplateQuestions(questionsData);\n\n    if (Object.keys(approvalFormQuestions).length !== questionsData.length) return;\n    Object.values(approvalFormQuestions).every(\n      (question) => question.index === 0 || question.inputText.length > 0\n    )\n      ? setIsValid(true)\n      : setIsValid(false);\n  }, [approvalTemplateData, approvalFormQuestions]);\n\n  return (\n    <Box>\n      {actioned ? (\n        <Box>\n          <h2>Request {selected === 'approve' ? 'Approved' : 'Declined'}</h2>\n          <p>{`Thank you, this Request has been ${selected}d. It is safe to leave this page.`}</p>\n        </Box>\n      ) : (\n        <>\n          <Box sx={styles.noticeContainer}>\n            <InfoIcon sx={styles.noticeIcon} />\n            <Box sx={{ marginLeft: 1 }}>\n              {state === 'pending'\n                ? `Please note – your request has not yet been submitted! Please check the form that was emailed to you, select approve or decline, and add any comments before submitting your response.`\n                : `This approval was already ${state} by you.`}\n            </Box>\n          </Box>\n          {state === 'pending' && (\n            <Box sx={{ padding: 4 }}>\n              {emailTemplateQuestions?.map((question, index) => (\n                <Box sx={{ paddingBottom: 3 }} key={question.id}>\n                  <QuestionFieldGenerator\n                    question={question}\n                    questionRef={(el) => (fieldRefs.questions.current[index] = el)}\n                    questionError={questionErrors[question.id]}\n                    onChangeCallback={(id, value) => {\n                      const label = question.field_choices.find(\n                        (choice) => choice.id === Number(value)\n                      )?.name;\n                      setApprovalFormQuestions((prev) => ({\n                        ...prev,\n                        [id]: {\n                          ...prev[id],\n                          data: value,\n                          index: question.field_choices.findIndex(\n                            (choice) => choice.id === Number(value)\n                          ),\n                          inputText:\n                            question.field_choices.findIndex(\n                              (choice) => choice.id === Number(value)\n                            ) === 0\n                              ? label\n                              : ''\n                        }\n                      }));\n                      setQuestionErrors((prev) => ({\n                        ...prev,\n                        [id]: value || !question.required ? '' : 'This field is required'\n                      }));\n                    }}\n                    answer={approvalFormQuestions[question.id]?.data}\n                    inputText={approvalFormQuestions[question.id]?.inputText}\n                    setApprovalFormQuestions={setApprovalFormQuestions}\n                    approvalPage={true}\n                  />\n                </Box>\n              ))}\n              <Box sx={styles.toggleButtonsContainer}>\n                <ToggleButtonGroup\n                  value={selected}\n                  exclusive\n                  onChange={handleToggle}\n                  aria-label=\"enabled or disabled questions\"\n                >\n                  <ToggleButton\n                    value=\"approve\"\n                    sx={{\n                      ...styles.toggleButton,\n                      '&.Mui-selected': {\n                        backgroundColor: `#41BF56 !important`,\n                        color: `#FFFFFF !important`\n                      }\n                    }}\n                  >\n                    APPROVE\n                  </ToggleButton>\n                  <ToggleButton\n                    value=\"decline\"\n                    sx={{\n                      ...styles.toggleButton,\n                      '&.Mui-selected': {\n                        backgroundColor: `#E2583e !important`,\n                        color: `#FFFFFF !important`\n                      }\n                    }}\n                  >\n                    DECLINE\n                  </ToggleButton>\n                </ToggleButtonGroup>\n              </Box>\n              <Box sx={{ marginTop: '60px', width: '100%' }}>\n                <Box\n                  sx={styles.label}\n                  dangerouslySetInnerHTML={{\n                    __html: dompurify.sanitize(\n                      'Additionally, you can leave a comment (emojis are not supported):'\n                    )\n                  }}\n                />\n                <MultilineFormTextField\n                  value={comment}\n                  onChange={(e) => setComment(e.target.value)}\n                  required={false}\n                  fullWidth={true}\n                />\n              </Box>\n              <LoadingButton\n                id=\"approve-or-decline-approval\"\n                type=\"submit\"\n                task={submitEmailTemplateRequisition}\n                sx={{ ...styles.saveButton, marginTop: '20px' }}\n                disabled={!isValid}\n              >\n                Submit\n              </LoadingButton>\n            </Box>\n          )}\n        </>\n      )}\n    </Box>\n  );\n}\n","import React, { SetStateAction, useState, Dispatch, useCallback } from 'react';\nimport {\n  Button,\n  Table,\n  TableHead,\n  TableRow,\n  TableCell,\n  TableBody,\n  Stack,\n  IconButton,\n  Box\n} from '@mui/material';\nimport { styles } from '../styles';\nimport { IApproversData } from '../types';\nimport EditApproverModal from './EditApproverModal';\nimport ActionModal from './ActionModal';\nimport moment from 'moment-timezone';\nimport Api from '../API';\nimport { IUserPermissions } from '../../Components/sharedTypes';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport { StylesProvider } from '@material-ui/core';\n\nconst tableHeaders = [\n  'Name',\n  'State',\n  'Sent At',\n  'Actioned At',\n  'Comments',\n  'COI Response',\n  'Actions'\n];\n\nconst TableData = ({\n  apiKey,\n  approver,\n  setSnackbar,\n  requisitionId,\n  approvalFormState,\n  getApprovalFormData,\n  index,\n  previousApproverActioned,\n  userPermissions\n}: {\n  apiKey: string;\n  approver: IApproversData;\n  setSnackbar: Dispatch<\n    SetStateAction<{\n      message: string;\n      state: string;\n    }>\n  >;\n  requisitionId: number;\n  approvalFormState: string;\n  getApprovalFormData: () => void;\n  index: number;\n  previousApproverActioned: boolean;\n  userPermissions: IUserPermissions;\n}) => {\n  const [editModalOpen, setEditModalOpen] = useState<boolean>(false);\n  const [actionModalOpen, setActionModalOpen] = useState<boolean>(false);\n  const timeZoneString = Intl.DateTimeFormat().resolvedOptions().timeZone;\n  const [trashAlertOpen, setTrashAlertOpen] = useState(false);\n  const [selectedApprover, setSelectedApprover] = useState<IApproversData>();\n  const [showMore, setShowMore] = useState([]);\n  const sentAt = approver.sent_at\n    ? moment\n        .tz(approver.sent_at, timeZoneString)\n        .format('DD MMM YYYY,-h:mma z')\n        .split('-')\n        .map((line) => <div key={`${approver.id}-${line}`}>{line}</div>)\n    : '-';\n  const actionAt = approver.action_at\n    ? moment\n        .tz(approver.action_at, timeZoneString)\n        .format('DD MMM YYYY,-h:mma z')\n        .split('-')\n        .map((line) => <div key={`${approver.id}-${line}`}>{line}</div>)\n    : '-';\n\n  const resendEmail = async (approverId: number) => {\n    try {\n      await Api.postResendEmail(requisitionId, { approver_id: approverId });\n      setSnackbar({\n        message: 'Email sent successfully',\n        state: 'success'\n      });\n    } catch (err) {\n      setSnackbar({\n        message: 'Failed to resend email',\n        state: 'error'\n      });\n    } finally {\n      getApprovalFormData();\n    }\n  };\n\n  const removeApprover = async (approver: IApproversData) => {\n    try {\n      const response = await Api.putApprovalForm(requisitionId, {\n        requisition: {\n          approvers_attributes: {\n            [index]: { id: approver.id, _destroy: 1 }\n          }\n        }\n      });\n      if (response.res.success) {\n        setSnackbar({\n          message: response.res.success,\n          state: 'success'\n        });\n      }\n    } catch (err) {\n      setSnackbar({\n        message: `Failed to remove approver, ${err}`,\n        state: 'error'\n      });\n    } finally {\n      setTrashAlertOpen(false);\n      getApprovalFormData();\n    }\n  };\n\n  const handleShowMore = useCallback(\n    (id: number) => {\n      if (!showMore.includes(id)) {\n        const copy = [...showMore];\n        copy.push(id);\n        setShowMore(copy);\n      }\n      const flag = showMore.indexOf(id);\n      if (flag > -1) {\n        const copy = [...showMore];\n        copy.splice(flag, 1);\n        setShowMore(copy);\n      }\n    },\n    [showMore]\n  );\n\n  return (\n    <TableRow>\n      <TableCell sx={{ ...styles.approversTableCell, paddingLeft: 'unset' }}>\n        <Stack>\n          {approver.email === '*' ? 'Please select an approval manager' : approver.name}\n        </Stack>\n      </TableCell>\n      <TableCell sx={{ ...styles.approversTableCell, display: 'flex', justifyContent: 'center' }}>\n        <Stack sx={{ ...styles[approver.state], ...styles.approverTableStateButton }}>\n          {approver.state}\n        </Stack>\n      </TableCell>\n      <TableCell sx={styles.approversTableCell}>\n        <Stack>{sentAt}</Stack>\n      </TableCell>\n      <TableCell sx={styles.approversTableCell}>\n        <Stack>{actionAt}</Stack>\n      </TableCell>\n      <TableCell sx={styles.approversTableCell}>\n        <Stack>{approver.comment ? approver.comment : '-'}</Stack>\n      </TableCell>\n      <TableCell sx={{ ...styles.approversTableCell, minWidth: '140px' }}>\n        <Box sx={!showMore.includes(approver.id) ? styles.coiColumn : {}}>\n          <Box>{approver.coi_response || '-'}</Box>\n        </Box>\n        {approver.coi_response && (\n          <Box\n            key={`show-${approver.id}`}\n            sx={styles.link}\n            onClick={() => handleShowMore(approver.id)}\n          >\n            {showMore.includes(approver.id) ? 'Show less' : 'Show more'}\n          </Box>\n        )}\n      </TableCell>\n      {approvalFormState !== 'declined' &&\n        (approver.state === 'pending' || approver.state === 'failed') && (\n          <TableCell sx={styles.approversTableCell}>\n            <Button\n              disableElevation\n              sx={styles.normalButton}\n              variant=\"text\"\n              onClick={() => setEditModalOpen(true)}\n            >\n              Edit\n            </Button>\n            {!approver.name.includes('deleted') && (\n              <Button\n                disabled={!previousApproverActioned}\n                disableElevation\n                sx={styles.normalButton}\n                variant=\"text\"\n                onClick={() => resendEmail(approver.id)}\n              >\n                Resend\n              </Button>\n            )}\n            {previousApproverActioned && approver.editable && (\n              <Button\n                disableElevation\n                sx={styles.normalButton}\n                variant=\"text\"\n                onClick={() => setActionModalOpen(true)}\n              >\n                Approve/Decline\n              </Button>\n            )}\n            {approvalFormState === 'pending' &&\n              userPermissions?.['Approval Forms']?.['Edit Approval Form at Any Stage (HR use)'] && (\n                <IconButton\n                  sx={{ color: '#D6827D' }}\n                  onClick={() => {\n                    setTrashAlertOpen(true);\n                    setSelectedApprover(approver);\n                  }}\n                >\n                  <DeleteIcon sx={{ fontSize: '18px' }} />\n                </IconButton>\n              )}\n          </TableCell>\n        )}\n      <EditApproverModal\n        apiKey={apiKey}\n        approver={approver}\n        modalsOpen={editModalOpen}\n        setModalsOpen={setEditModalOpen}\n        setSnackbar={setSnackbar}\n        requisitionId={requisitionId}\n        getApprovalFormData={getApprovalFormData}\n        index={index}\n      />\n      <ActionModal\n        apiKey={apiKey}\n        approver={approver}\n        modalsOpen={actionModalOpen}\n        setModalsOpen={setActionModalOpen}\n        setSnackbar={setSnackbar}\n        requisitionId={requisitionId}\n        getApprovalFormData={getApprovalFormData}\n        index={index}\n      />\n      <GenericDialog\n        isDialogOpen={trashAlertOpen}\n        setDialogOpen={setTrashAlertOpen}\n        title={'Remove approver?'}\n        description={'Are you sure want to remove this approver?'}\n        buttonCallback={() => {\n          setTrashAlertOpen(false);\n          if (selectedApprover) {\n            removeApprover(selectedApprover);\n          }\n          setSelectedApprover(undefined);\n        }}\n        callbackLoading={false}\n        buttonText=\"Remove\"\n        url=\"\"\n      />\n    </TableRow>\n  );\n};\n\nexport default function ApproversTable({\n  apiKey,\n  approvers,\n  setSnackbar,\n  requisitionId,\n  approvalFormState,\n  getApprovalFormData,\n  userPermissions\n}: {\n  apiKey: string;\n  approvers: IApproversData[];\n  setSnackbar: Dispatch<\n    SetStateAction<{\n      message: string;\n      state: string;\n    }>\n  >;\n  requisitionId: number;\n  approvalFormState: string;\n  getApprovalFormData: () => void;\n  userPermissions: IUserPermissions;\n}) {\n  return (\n    <Table>\n      <TableHead>\n        <TableRow>\n          {tableHeaders.map((header, i) => (\n            <TableCell\n              sx={{\n                ...styles.approversTableHeader,\n                paddingLeft: `${header === 'Name' ? 'unset' : ''}`\n              }}\n              key={i}\n            >\n              <Stack\n                sx={{\n                  alignItems: `${['State'].includes(header) ? 'center' : ''}`,\n                  marginLeft: `${['Actions'].includes(header) ? '18px' : ''}`\n                }}\n              >\n                {header}\n              </Stack>\n            </TableCell>\n          ))}\n        </TableRow>\n      </TableHead>\n      <TableBody>\n        {approvers.map((approver, i) => (\n          <TableData\n            key={approver.id}\n            approver={approver}\n            apiKey={apiKey}\n            setSnackbar={setSnackbar}\n            requisitionId={requisitionId}\n            approvalFormState={approvalFormState}\n            getApprovalFormData={getApprovalFormData}\n            index={i}\n            previousApproverActioned={i === 0 || approvers[i - 1]?.state === 'approved'}\n            userPermissions={userPermissions}\n          />\n        ))}\n      </TableBody>\n    </Table>\n  );\n}\n","import React from 'react';\nimport {\n  Box,\n  Table,\n  TableHead,\n  TableCell,\n  TableBody,\n  TableRow,\n  Stack,\n  Divider\n} from '@mui/material';\nimport { styles } from '../styles';\nimport { IAvailabilityTableData } from '../types';\n\nconst DayRow = ({\n  payrollDay,\n  day,\n  data,\n  allowBreak\n}: {\n  payrollDay: number;\n  day: string;\n  data: IAvailabilityTableData;\n  allowBreak: boolean;\n}) => (\n  <TableRow>\n    <TableCell sx={styles.availabilityTableBody}>\n      <Stack alignItems=\"center\">{payrollDay}</Stack>\n    </TableCell>\n    <TableCell sx={styles.availabilityTableBody}>\n      <Stack alignItems=\"center\">{day}</Stack>\n    </TableCell>\n    <TableCell sx={styles.availabilityTableBody}>\n      <Stack alignItems=\"center\">{data.heading_1 ? data.heading_1 : '-'}</Stack>\n    </TableCell>\n    <TableCell sx={styles.availabilityTableBody}>\n      <Stack alignItems=\"center\">{data.heading_2 ? data.heading_2 : '-'}</Stack>\n    </TableCell>\n    <TableCell sx={styles.availabilityTableBody}>\n      <Stack flexDirection=\"row\" justifyContent=\"space-around\">\n        <Stack>{data.from_time}</Stack>\n        <Stack>{data.to_time}</Stack>\n      </Stack>\n    </TableCell>\n    {allowBreak && (\n      <TableCell sx={styles.availabilityTableBody}>\n        <Stack alignItems=\"center\">{data.break_time} mins</Stack>\n      </TableCell>\n    )}\n    <TableCell sx={styles.availabilityTableBody}>\n      <Stack alignItems=\"center\">{Math.round(data.total_time * 100) / 100}</Stack>\n    </TableCell>\n  </TableRow>\n);\n\nexport default function AvailabilityAnswer({\n  availabilityTableData,\n  config,\n  shift,\n  totalTime\n}: {\n  availabilityTableData: { [key: string]: IAvailabilityTableData };\n  config: { heading_1: string; heading_2: string; week_start_day: number; allow_break: boolean };\n  shift: number;\n  totalTime: number;\n}) {\n  const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n  return (\n    <Box>\n      <Table>\n        <TableHead>\n          <TableRow>\n            <TableCell sx={styles.availabilityTableHeader}>\n              <Stack alignItems=\"center\">Payroll Day</Stack>\n            </TableCell>\n            <TableCell sx={styles.availabilityTableHeader}>\n              <Stack alignItems=\"center\">Day</Stack>\n            </TableCell>\n            <TableCell sx={styles.availabilityTableHeader}>\n              <Stack alignItems=\"center\">{config.heading_1}</Stack>\n            </TableCell>\n            <TableCell sx={styles.availabilityTableHeader}>\n              <Stack alignItems=\"center\">{config.heading_2}</Stack>\n            </TableCell>\n            <TableCell sx={styles.availabilityTableHeader}>\n              <Stack alignItems=\"center\" height=\"14px\">\n                Shift times\n              </Stack>\n              <Stack flexDirection=\"row\" justifyContent=\"space-around\">\n                <Stack fontSize=\"10px\" height=\"10px\">\n                  From\n                </Stack>\n                <Stack fontSize=\"10px\" height=\"10px\">\n                  To\n                </Stack>\n              </Stack>\n            </TableCell>\n            {config.allow_break && (\n              <TableCell sx={styles.availabilityTableHeader}>\n                <Stack alignItems=\"center\">Break</Stack>\n              </TableCell>\n            )}\n            <TableCell sx={styles.availabilityTableHeader}>\n              <Stack alignItems=\"center\">Paid Hours</Stack>\n            </TableCell>\n          </TableRow>\n        </TableHead>\n        <TableBody>\n          {Object.keys(availabilityTableData).map((key: string, index) => {\n            const data = availabilityTableData[key];\n            return (\n              <React.Fragment key={index}>\n                {index === 7 && (\n                  <TableRow>\n                    {Array(config.allow_break ? 7 : 6)\n                      .fill(0)\n                      .map((e, index) => (\n                        <TableCell sx={{ padding: '4px 0px', border: 'unset' }} key={index}>\n                          <Divider />\n                        </TableCell>\n                      ))}\n                  </TableRow>\n                )}\n                <DayRow\n                  payrollDay={index + 1}\n                  day={days[(index + config.week_start_day) % days.length].slice(0, 3)}\n                  data={data}\n                  allowBreak={config.allow_break}\n                />\n              </React.Fragment>\n            );\n          })}\n          <TableRow>\n            <TableCell sx={styles.availabilityTableBody} colSpan={4}>\n              <Stack alignItems=\"center\">TOTAL</Stack>\n            </TableCell>\n            <TableCell sx={styles.availabilityTableBody} colSpan={config.allow_break ? 2 : 1}>\n              <Stack alignItems=\"center\">{shift} Shifts</Stack>\n            </TableCell>\n            <TableCell sx={styles.availabilityTableBody}>\n              <Stack alignItems=\"center\">{totalTime}</Stack>\n            </TableCell>\n          </TableRow>\n        </TableBody>\n      </Table>\n    </Box>\n  );\n}\n","import React from 'react';\nimport { Box, Stack } from '@mui/material';\nimport { styles } from '../styles';\nimport DocTypeIcon from '../../Components/Utilities/DocTypeIcon';\nimport moment from 'moment';\nimport { IApprovalFormAttachment } from '../types';\n\nconst BASE_URL = window.location.origin;\n\nexport default function DocumentViewer({ document }: { document: IApprovalFormAttachment }) {\n  return (\n    <Stack flexDirection=\"row\">\n      <Stack\n        flexDirection=\"row\"\n        alignItems=\"center\"\n        sx={{ cursor: 'pointer' }}\n        onClick={() => (window.location.href = `${BASE_URL}/admin/assets/${document.id}`)}\n      >\n        <Box sx={styles.fileIcon}>{DocTypeIcon(document.attached_file_name.split('.').pop())}</Box>\n        <Box>\n          <Box sx={styles.fileName}>{document.attached_file_name}</Box>\n          <Box sx={{ color: '#999999' }}>\n            {moment(document.created_at).format('Do MMMM YYYY[,] h:mma')}\n          </Box>\n        </Box>\n      </Stack>\n    </Stack>\n  );\n}\n","import React, { useState, Dispatch, SetStateAction, useEffect } from 'react';\nimport { Autocomplete, Box, CircularProgress, Modal, Button, TextField } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { styles } from '../styles';\nimport { IApprovalManagers, IApproversData } from '../types';\nimport Api from '../API';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\n\nexport default function EditApproverModal({\n  apiKey,\n  approver,\n  setModalsOpen,\n  modalsOpen,\n  setSnackbar,\n  requisitionId,\n  getApprovalFormData,\n  index\n}: {\n  apiKey: string;\n  approver: IApproversData;\n  modalsOpen: boolean;\n  setModalsOpen: Dispatch<SetStateAction<boolean>>;\n  setSnackbar: Dispatch<\n    SetStateAction<{\n      message: string;\n      state: string;\n    }>\n  >;\n  requisitionId: number;\n  getApprovalFormData: () => void;\n  index: number;\n}) {\n  const [approvalManagers, setApprovalManagers] = useState<IApprovalManagers[]>([]);\n  const [newApprover, setNewApprover] = useState<IApprovalManagers | null>(approver);\n  const [isUpdating, setIsUpdating] = useState<boolean>(false);\n\n  const handleClose = () => {\n    setModalsOpen(false);\n    setNewApprover(null);\n  };\n\n  async function getApprovers() {\n    try {\n      const data = await Api.getApprovalManagers({\n        override_limit: true,\n        limit: 2000,\n        sort: 'name',\n        sort_order: 'asc'\n      });\n      setApprovalManagers(data.res.requisition_managers);\n    } catch (err) {\n      setSnackbar({\n        message: 'Failed to fetch approvers list',\n        state: 'error'\n      });\n    }\n  }\n\n  useEffect(() => {\n    getApprovers();\n  }, []);\n\n  const updateApprover = async () => {\n    setIsUpdating(true);\n\n    try {\n      const response = await Api.putApprovalForm(requisitionId, {\n        requisition: {\n          approvers_attributes: {\n            [index]: { email: newApprover?.email, id: approver.id }\n          }\n        }\n      });\n      if (response.res.success) {\n        setSnackbar({\n          message: response.res.success,\n          state: 'success'\n        });\n      }\n    } catch (err) {\n      setSnackbar({\n        message: `Failed to update approver, ${err}`,\n        state: 'error'\n      });\n    } finally {\n      setIsUpdating(false);\n      setModalsOpen(false);\n      getApprovalFormData();\n    }\n  };\n\n  const isMandatoryApprover = approver.email.includes('*');\n  const defaultValue = approvalManagers.find(\n    (manager) => (isMandatoryApprover ? approver.email.slice(1) : approver.email) === manager.email\n  );\n\n  return (\n    <Modal open={modalsOpen}>\n      <Box sx={{ ...styles.actionsModal, height: '640px' }}>\n        <Box\n          sx={{\n            display: 'flex',\n            flexDirection: 'column',\n            padding: '20px 0',\n            minWidth: '255px'\n          }}\n        >\n          <Box>\n            <CloseIcon onClick={() => handleClose()} sx={styles.closeIcon} />\n          </Box>\n          <Box sx={styles.modalHeader}>Edit/change Approver</Box>\n        </Box>\n        <Box sx={{ padding: '32px 0px' }}>\n          <Autocomplete\n            disabled={isMandatoryApprover}\n            disablePortal\n            options={approvalManagers}\n            getOptionLabel={(option) => `${option.name} (${option.email})`}\n            value={newApprover || defaultValue}\n            onChange={(event, value) => (value ? setNewApprover(value) : setNewApprover(null))}\n            sx={sharedClasses.formAutocomplete}\n            ListboxProps={{\n              style: {\n                fontFamily: 'Source Sans Pro, sans-serif',\n                color: '#333333',\n                maxHeight: '200px'\n              }\n            }}\n            renderInput={(params) => (\n              <TextField\n                {...params}\n                label=\"Change approver\"\n                InputLabelProps={{ shrink: true }}\n                placeholder=\"Please select\"\n              />\n            )}\n          />\n        </Box>\n        <Box sx={{ ...styles.modalActions, marginBottom: 2 }}>\n          <Button\n            disableElevation\n            sx={{ ...styles.buttonRedLight }}\n            variant=\"text\"\n            onClick={() => handleClose()}\n          >\n            Cancel\n          </Button>\n          <Button\n            id=\"approval-form-edit-approver-button\"\n            type=\"submit\"\n            disabled={isUpdating}\n            sx={styles.modalEditButton}\n            onClick={() => updateApprover()}\n          >\n            {isUpdating ? <CircularProgress size={20} color=\"inherit\" /> : 'Save'}\n          </Button>\n        </Box>\n      </Box>\n    </Modal>\n  );\n}\n","import React, { useRef, useState, useCallback, useEffect } from 'react';\nimport Box from '@mui/material/Box';\nimport CreateNewApproval from './NewApproval/NewApprovalModal';\nimport { styles } from './styles';\nimport Tabs from '@mui/material/Tabs';\nimport Tab from '@mui/material/Tab';\nimport { ITabs } from './types';\nimport Api from './API';\nimport { IPermissions } from '../Jobs/types';\nimport ApprovalTemplates from './ApprovalTemplates/ApprovalTemplates';\nimport StyledSnackbar from '../Components/CustomUIElements/StyledSnackbar';\nimport ApprovalManagers from './ApprovalManagers/ApprovalManagers';\nimport ApprovalPublicLinks from './ApprovalPublicLinks/ApprovalPublicLinks';\nimport ArchivedFormsAndTemplates from './ArchivedFormsAndTemplates/ArchivedFormsAndTemplates';\nimport ApprovalFormsTab from './ApprovalFormsTab';\nimport Popover from '@mui/material/Popover';\nimport ApprovalTemplateSettings from './ApprovalTemplateSettings/ApprovalTemplateSettings';\nimport { IUserPermissions } from '../Components/sharedTypes';\nimport CreateButton from '../Components/Buttons/CreateButton';\nimport { getPermissions } from '../../shared/permissionHelpers';\n\nconst URL_PARAMS = new URL(window.location.href);\n\nconst getTabNumber = (urlParams: string) => {\n  switch (urlParams) {\n    case '?templates':\n      return 1;\n    case '?managers':\n      return 2;\n    case '?public-links':\n      return 3;\n    case '?archived':\n      return 4;\n    default:\n      return 0;\n  }\n};\n\nexport default function ApprovalForms({\n  apiKey,\n  enableEmailTemplateFields\n}: {\n  apiKey: string;\n  enableEmailTemplateFields: boolean;\n}) {\n  const [indicatorWidth, setIndicatorWidth] = useState(0);\n  const [tabValue, setTabValue] = useState(0);\n  const [newApprovalOptions, setNewApprovalOptions] = useState<string[]>([]);\n  const [snackbar, setSnackbar] = useState<{\n    message: string;\n    state: 'success' | 'warning' | 'error';\n  }>({\n    message: '',\n    state: 'success'\n  });\n  const [userPermissions, setUserPermissions] = useState<IUserPermissions | undefined>(undefined);\n  const [isPublicLinkDialogOpen, setIsPublicLinkDialogOpen] = useState(false);\n  const [isApprovalManagerDialogOpen, setIsApprovalManagerDialogOpen] = useState<boolean>(false);\n  const [actionsAnchorEl, setActionsAnchorEl] = useState<HTMLDivElement | null>(null);\n  const [newApprovalFormModal, setNewApprovalFormModal] = useState<boolean>(false);\n  const [newApprovalTemplateModal, setNewApprovalTemplateModal] = useState<boolean>(false);\n  const [templateArchived, setTemplateArchived] = useState<boolean>(false);\n  const [entityDefaultApprovers, setEntityDefaultApprovers] = useState<string[]>([]);\n\n  const headerRefs = useRef<HTMLDivElement[]>([]);\n\n  const TabPanel = useCallback((props: ITabs) => {\n    const { children, tabValue, index, ...other } = props;\n\n    return (\n      <div\n        role=\"tabpanel\"\n        hidden={tabValue !== index}\n        id={`approvals-tabpanel-${index}`}\n        aria-labelledby={`approvals-tab-${index}`}\n        {...other}\n      >\n        {tabValue === index && <>{children}</>}\n      </div>\n    );\n  }, []);\n\n  const TabProps = useCallback((index: number) => {\n    return {\n      id: `approvals-tab-${index}`,\n      value: index,\n      'aria-controls': `approvals-tabpanel-${index}`\n    };\n  }, []);\n\n  const getUserPermissions = useCallback(async () => {\n    try {\n      const data = await getPermissions(apiKey);\n      const allRoles: Record<string, Record<string, boolean>> = {};\n      data.roles.forEach((role: IPermissions) =>\n        role.feature_groups.forEach((group) => {\n          !allRoles[group.name] ? (allRoles[group.name] = {}) : null;\n          group.permissions.forEach((permission) => (allRoles[group.name][permission] = true));\n        })\n      );\n      setUserPermissions(allRoles);\n    } catch (error) {\n      setSnackbar({\n        message: 'There was an error getting permissions',\n        state: 'error'\n      });\n    } finally {\n      setTabValue(getTabNumber(URL_PARAMS.search));\n    }\n  }, [setUserPermissions, apiKey]);\n\n  const getEntityDefaultApprovers = useCallback(async () => {\n    try {\n      const data = await Api.getEntityApprovers();\n      setEntityDefaultApprovers(data.res.entity_default_approvers);\n    } catch (error) {\n      setSnackbar({\n        message: 'There was an error getting entity default approvers',\n        state: 'error'\n      });\n    }\n  }, []);\n\n  useEffect(() => {\n    setIndicatorWidth(headerRefs.current[tabValue].clientWidth - 32);\n    getUserPermissions();\n    getEntityDefaultApprovers();\n  }, [tabValue, apiKey, getUserPermissions, getEntityDefaultApprovers]);\n\n  const handleTabChange = (event?: React.SyntheticEvent, newValue: number) => {\n    setTabValue(newValue);\n    URL_PARAMS.search = getPageParams(newValue);\n    window.history.pushState(null, null, URL_PARAMS.href);\n  };\n\n  const getPageParams = (tabNo: number) => {\n    switch (tabNo) {\n      case 0:\n        return '';\n      case 1:\n        return '?templates';\n      case 2:\n        return '?managers';\n      case 3:\n        return '?public-links';\n      case 4:\n        return '?archived';\n      default:\n        return '';\n    }\n  };\n\n  return (\n    <Box sx={styles.jobPageContainer}>\n      <Box sx={styles.jobPageHeader}>\n        <h1>Approvals</h1>\n        {(userPermissions?.['Approval Forms']?.['Submit Approval Form'] ||\n          userPermissions?.['Approval Forms']?.['Create / Edit Approval Forms (HR use)'] ||\n          userPermissions?.['Approval Forms']?.['Manage Approval Managers (HR use)'] ||\n          userPermissions?.['Approval Forms']?.['Manage Public Link']) && (\n          <CreateButton\n            id=\"approvals-create-button\"\n            ariaLabel=\"Add new action button\"\n            onClick={(e) => {\n              setActionsAnchorEl(e.currentTarget);\n            }}\n            isOpen={Boolean(actionsAnchorEl)}\n          />\n        )}\n        <Popover\n          id={actionsAnchorEl ? 'actions-menu-popover' : undefined}\n          sx={styles.actionsMenu}\n          open={Boolean(actionsAnchorEl)}\n          anchorEl={actionsAnchorEl}\n          onClose={() => {\n            setActionsAnchorEl(null);\n          }}\n          anchorOrigin={{\n            vertical: 'bottom',\n            horizontal: 'right'\n          }}\n          transformOrigin={{\n            vertical: 'top',\n            horizontal: 'right'\n          }}\n        >\n          {userPermissions?.['Approval Forms']?.['Submit Approval Form'] && (\n            <span\n              onClick={() => {\n                setActionsAnchorEl(null);\n                setNewApprovalFormModal(true);\n              }}\n              className=\"create-approval-form-action-button\"\n            >\n              Approval Form\n            </span>\n          )}\n          {userPermissions?.['Approval Forms']?.['Create / Edit Approval Forms (HR use)'] && (\n            <span\n              onClick={() => {\n                setActionsAnchorEl(null);\n                setNewApprovalTemplateModal(true);\n              }}\n              className=\"create-approval-template-action-button\"\n            >\n              Approval Template\n            </span>\n          )}\n          {userPermissions?.['Approval Forms']?.['Manage Approval Managers (HR use)'] && (\n            <span\n              onClick={() => {\n                setActionsAnchorEl(null);\n                handleTabChange(undefined, 2);\n                setIsApprovalManagerDialogOpen(true);\n              }}\n              className=\"create-approval-manager-action-button\"\n            >\n              Approval Manager\n            </span>\n          )}\n          {userPermissions?.['Approval Forms']?.['Manage Public Link'] && (\n            <span\n              onClick={() => {\n                setActionsAnchorEl(null);\n                handleTabChange(undefined, 3);\n                setIsPublicLinkDialogOpen(true);\n              }}\n              className=\"create-approval-public-link-action-button\"\n            >\n              Approval Public Link\n            </span>\n          )}\n        </Popover>\n      </Box>\n      <Box sx={styles.tabsContainer}>\n        <Tabs\n          value={tabValue}\n          onChange={handleTabChange}\n          variant=\"scrollable\"\n          scrollButtons={false}\n          aria-label=\"Approvals\"\n          sx={{\n            ...styles.tabs,\n            '& .MuiTabs-indicator': { ...styles.tabIndicator, maxWidth: indicatorWidth + 'px' }\n          }}\n        >\n          <Tab ref={(el) => (headerRefs.current[0] = el)} label=\"Approval forms\" {...TabProps(0)} />\n          {userPermissions?.['Approval Forms']?.['Create / Edit Approval Forms (HR use)'] && (\n            <Tab\n              ref={(el) => (headerRefs.current[1] = el)}\n              label=\"Approval templates\"\n              {...TabProps(1)}\n            />\n          )}\n          {userPermissions?.['Approval Forms']?.['Manage Approval Managers (HR use)'] && (\n            <Tab\n              ref={(el) => (headerRefs.current[2] = el)}\n              label=\"Approval managers\"\n              {...TabProps(2)}\n            />\n          )}\n          {userPermissions?.['Approval Forms']?.['Manage Public Link'] && (\n            <Tab\n              ref={(el) => (headerRefs.current[3] = el)}\n              label=\"Approval public links\"\n              {...TabProps(3)}\n            />\n          )}\n          {(userPermissions?.['Approval Forms']?.['Archive Approval Forms (HR use)'] ||\n            userPermissions?.['Approval Forms']?.['Archive Approval Forms']) && (\n            <Tab\n              ref={(el) => (headerRefs.current[4] = el)}\n              label=\"Archived approvals/templates\"\n              {...TabProps(4)}\n            />\n          )}\n        </Tabs>\n      </Box>\n      <Box>\n        <TabPanel tabValue={tabValue} index={0}>\n          <ApprovalFormsTab apiKey={apiKey} userPermissions={userPermissions} archived={false} />\n        </TabPanel>\n        <TabPanel tabValue={tabValue} index={1}>\n          <ApprovalTemplates\n            apiKey={apiKey}\n            userPermissions={userPermissions}\n            archived={false}\n            setTemplateArchived={setTemplateArchived}\n            enableEmailTemplateFields={enableEmailTemplateFields}\n          />\n        </TabPanel>\n        <TabPanel tabValue={tabValue} index={2}>\n          <ApprovalManagers\n            apiKey={apiKey}\n            userPermissions={userPermissions}\n            isApprovalManagerDialogOpen={isApprovalManagerDialogOpen}\n            setIsApprovalManagerDialogOpen={setIsApprovalManagerDialogOpen}\n          />\n        </TabPanel>\n        <TabPanel tabValue={tabValue} index={3}>\n          <ApprovalPublicLinks\n            apiKey={apiKey}\n            userPermissions={userPermissions}\n            isPublicLinkDialogOpen={isPublicLinkDialogOpen}\n            setIsPublicLinkDialogOpen={setIsPublicLinkDialogOpen}\n          />\n        </TabPanel>\n        <TabPanel tabValue={tabValue} index={4}>\n          <ArchivedFormsAndTemplates\n            apiKey={apiKey}\n            userPermissions={userPermissions}\n            setTemplateArchived={setTemplateArchived}\n          />\n        </TabPanel>\n        <StyledSnackbar\n          message={snackbar.message}\n          state={snackbar.state}\n          setSnackbarState={setSnackbar}\n        />\n      </Box>\n      <CreateNewApproval\n        apiKey={apiKey}\n        newApprovalOptions={newApprovalOptions}\n        setNewApprovalOptions={setNewApprovalOptions}\n        isDialogOpen={newApprovalFormModal}\n        setIsDialogOpen={setNewApprovalFormModal}\n        setSnackbar={setSnackbar}\n        templateArchived={templateArchived}\n        setTemplateArchived={setTemplateArchived}\n      />\n      {newApprovalTemplateModal && (\n        <ApprovalTemplateSettings\n          modalsOpen={newApprovalTemplateModal}\n          entityDefaultApprovers={entityDefaultApprovers}\n          setModalsOpen={() => setNewApprovalTemplateModal(false)}\n          setSnackbar={setSnackbar}\n          enableEmailTemplateFields={enableEmailTemplateFields}\n        />\n      )}\n    </Box>\n  );\n}\n","import React, { useState, useEffect, useCallback } from 'react';\nimport Box from '@mui/material/Box';\nimport { styles } from './styles';\nimport Search from './Search';\nimport FilterDropdown from './Dropdowns/FilterDropdown';\nimport DndFieldDropdown from './Dropdowns/DndFieldDropdown';\nimport { defaultFilters, sortableColumnsDefaults } from './config';\nimport Api from './API';\nimport ApprovalFormsTable from './ApprovalFormsTable';\nimport {\n  IFilterDropdownProps,\n  IGetApprovalForms,\n  TSetUserPreferences,\n  IGetAllApprovalForms,\n  IApprovalForm\n} from './types';\nimport StyledSnackbar from '../Components/CustomUIElements/StyledSnackbar';\nimport { IUserPermissions } from '../Components/sharedTypes';\nimport { updateUiSettings, fetchPreferences } from '../helpers/uiPreferencesHelpers';\n\nexport default function ApprovalFormsTab({\n  apiKey,\n  userPermissions,\n  archived\n}: {\n  apiKey: string;\n  userPermissions: IUserPermissions | undefined;\n  archived: boolean;\n}) {\n  const [isLoading, setIsLoading] = useState<boolean>(false);\n  const [snackbar, setSnackbar] = useState<{\n    message: string;\n    state: 'success' | 'warning' | 'error';\n  }>({\n    message: '',\n    state: 'success'\n  });\n  const [selected, setSelected] = useState<number[]>([]);\n  const [approvalForms, setApprovalForms] = useState<IApprovalForm[]>([]);\n  const [globalSelected, setGlobalSelected] = useState([]);\n  const [selectAllIsChecked, setSelectAllIsChecked] = useState(false);\n  const [selectAllIsIndeterminate, setSelectAllIsIndeterminate] = useState(false);\n  const [search, setSearch] = useState('');\n  const [filters, setFilters] = useState<IFilterDropdownProps['filters']>(defaultFilters);\n  const [sortableColumns, setSortableColumns] = useState(sortableColumnsDefaults);\n  const [rowsPerPage, setRowsPerPage] = useState(10);\n  const [totalPages, setTotalPages] = useState(0);\n  const [totalApprovalForms, setTotalApprovalForms] = useState(0);\n  const [sortBy, setSortBy] = useState<string>('created_at');\n  const [sortOrder, setSortOrder] = useState<string>('desc');\n  const [currentPage, setCurrentPage] = useState(1);\n  const [density, setDensity] = useState<string>('Default');\n  const [filterableEntities, setFilterableEntities] = useState([]);\n  const [filterableAssignedUsers, setFilterableAssignedUsers] = useState([]);\n  const [filterableRequesters, setFilterableRequesters] = useState([]);\n\n  const getFirstApprovalFormsAndPreferences = useCallback(async () => {\n    setIsLoading(true);\n    try {\n      const { res: preferenceData } = await fetchPreferences(\n        `approval_forms${archived ? '_archived' : ''}`\n      );\n      const { res: densityData } = await fetchPreferences('universal');\n      const preference = preferenceData?.ui_preferences[0];\n      const densityPreference = densityData?.ui_preferences[0];\n      preference?.sorting?.sortBy && setSortBy(preference.sorting.sortBy);\n      preference?.sorting?.sortOrder && setSortOrder(preference.sorting.sortOrder.toLowerCase());\n      preference?.filters && setFilters(preference.filters);\n      const selectedStates = preference?.filters?.state?.map((state) => state.value);\n      const selectedEntityIds = preference?.filters?.entity_ids?.map((entity) => entity.id);\n      const selectedAssignedUserIds = preference?.filters?.assigned_user_ids?.map(\n        (user) => user.id\n      );\n      const selectedRequesters = preference?.filters?.requested_by_users?.map(\n        (requester) => requester.name\n      );\n      const sessionPage = sessionStorage.getItem(`approvalFormsTablePage`);\n      !archived && sessionPage && setCurrentPage(Number(sessionPage));\n      preference?.row_count && setRowsPerPage(preference.row_count);\n      preference?.sortable_columns && setSortableColumns(preference.sortable_columns);\n      densityPreference?.columns?.density && setDensity(densityPreference?.columns?.density);\n\n      const response = await Api.getApprovalForms(\n        {\n          archived: archived || false,\n          page: !archived && sessionPage ? Number(sessionPage) : 1,\n          limit: preference?.row_count || rowsPerPage,\n          sort: preference?.sorting?.sortBy || 'created_at',\n          sort_order: (preference?.sorting?.sortOrder?.toLowerCase() || 'desc').toUpperCase(),\n          'q[search]': search,\n          'filter[state]': selectedStates?.filters?.length === 0 ? [] : selectedStates,\n          'filter[entity_ids]': selectedEntityIds?.filters?.length === 0 ? [] : selectedEntityIds,\n          'filter[assigned_user_ids]':\n            selectedAssignedUserIds?.filters?.length === 0 ? [] : selectedAssignedUserIds,\n          'filter[requested_by_users]':\n            selectedRequesters?.filters?.length === 0 ? [] : selectedRequesters\n        }\n      );\n      setApprovalForms(response.res.requisitions);\n      setTotalPages(parseInt(response.resHead['x-total-pages']));\n      setTotalApprovalForms(parseInt(response.resHead['x-total-count']));\n    } catch (error) {\n      setSnackbar({\n        message: 'There was an error getting all approval forms',\n        state: 'error'\n      });\n    } finally {\n      setIsLoading(false);\n    }\n  }, [apiKey, search]);\n\n  const setUserPreferences: TSetUserPreferences = useCallback(\n    async (limit, sort, columns, newFilters, density) => {\n      if (density) {\n        await updateUiSettings({ columns: { density }, source: 'universal' }, (errorMessage) => {\n          setSnackbar({\n            message: `There was an error saving your preferences, ${errorMessage}`,\n            state: 'error'\n          });\n        });\n      } else {\n        await updateUiSettings(\n          {\n            sortable_columns: columns || sortableColumns,\n            row_count: limit || rowsPerPage,\n            filters: newFilters || filters,\n            sorting: sort,\n            source: `approval_forms${archived ? '_archived' : ''}`\n          },\n          () => {\n            setSnackbar({\n              message: 'There was an error saving your preferences',\n              state: 'error'\n            });\n          }\n        );\n      }\n    },\n    [apiKey, archived, filters, rowsPerPage, sortBy, sortOrder, sortableColumns]\n  );\n\n  const getAllApprovalForms: IGetAllApprovalForms = async (\n    limit,\n    searchQuery,\n    sort,\n    updatedFilters,\n    archived\n  ) => {\n    setIsLoading(true);\n    try {\n      const selectedStates = (updatedFilters?.state || filters.state)?.map((state) => state.value);\n      const selectedEntityIds = (updatedFilters?.entity_ids || filters.entity_ids)?.map(\n        (entity) => entity.id\n      );\n      const selectedAssignedUserIds = (\n        updatedFilters?.assigned_user_ids || filters.assigned_user_ids\n      )?.map((user) => user.id);\n      const selectedRequesters = (\n        updatedFilters?.requested_by_users || filters.requested_by_users\n      )?.map((requester) => requester.name);\n      const response = await Api.getApprovalForms(\n        {\n          archived: archived || false,\n          override_limit: true,\n          limit: totalApprovalForms,\n          sort: sort?.sortBy || sortBy,\n          sort_order: (sort?.sortOrder || sortOrder).toUpperCase(),\n          'filter[position_title]': searchQuery !== null ? searchQuery : search,\n          'filter[state]': selectedStates?.length === 0 ? [] : selectedStates,\n          'filter[entity_ids]': selectedEntityIds?.length === 0 ? [] : selectedEntityIds,\n          'filter[assigned_user_ids]':\n            selectedAssignedUserIds?.length === 0 ? [] : selectedAssignedUserIds,\n          'filter[requested_by_users]': selectedRequesters?.length === 0 ? [] : selectedRequesters\n        }\n      );\n      return response.res.requisitions;\n    } catch (error) {\n      setSnackbar({\n        message: 'There was an error getting all approval forms',\n        state: 'error'\n      });\n    } finally {\n      setIsLoading(false);\n    }\n  };\n\n  const getApprovalForms: IGetApprovalForms = async (\n    page,\n    limit,\n    searchQuery,\n    sort,\n    updatedFilters,\n    archived\n  ) => {\n    setIsLoading(true);\n    try {\n      const selectedStates = (updatedFilters?.state || filters.state)?.map((state) => state.value);\n      const selectedEntityIds = (updatedFilters?.entity_ids || filters.entity_ids)?.map(\n        (entity) => entity.id\n      );\n      const selectedAssignedUserIds = (\n        updatedFilters?.assigned_user_ids || filters.assigned_user_ids\n      )?.map((user) => user.id);\n      const selectedRequesters = (\n        updatedFilters?.requested_by_users || filters.requested_by_users\n      )?.map((requester) => requester.name);\n      const response = await Api.getApprovalForms(\n        {\n          archived: archived || false,\n          page: page || currentPage,\n          limit: limit || rowsPerPage,\n          sort: sort?.sortBy || sortBy,\n          sort_order: (sort?.sortOrder || sortOrder).toUpperCase(),\n          'q[search]': searchQuery !== null ? searchQuery : search,\n          'filter[state]': selectedStates?.length === 0 ? [] : selectedStates,\n          'filter[entity_ids]': selectedEntityIds?.length === 0 ? [] : selectedEntityIds,\n          'filter[assigned_user_ids]':\n            selectedAssignedUserIds?.length === 0 ? [] : selectedAssignedUserIds,\n          'filter[requested_by_users]': selectedRequesters?.length === 0 ? [] : selectedRequesters\n        }\n      );\n      setApprovalForms(response.res.requisitions);\n      setTotalPages(parseInt(response.resHead['x-total-pages']));\n      setTotalApprovalForms(parseInt(response.resHead['x-total-count']));\n      setSelectAllIsChecked(\n        response.res.requisitions\n          .map((requisition) => requisition.id)\n          .every((id: number) => globalSelected.map((requisition) => requisition.id).includes(id))\n      );\n      setSelectAllIsIndeterminate(\n        response.res.requisitions\n          .map((requisition) => requisition.id)\n          .some((id: number) => globalSelected.map((requisition) => requisition.id).includes(id))\n      );\n    } catch (error) {\n      setSnackbar({\n        message: 'There was an error getting approval forms',\n        state: 'error'\n      });\n    } finally {\n      if (sort || updatedFilters) {\n        setUserPreferences(null, sort, null, updatedFilters, null);\n      } else if (limit) {\n        setUserPreferences(limit, null, null, null, null);\n      }\n      setIsLoading(false);\n    }\n  };\n\n  const getFilterableEntities = useCallback(async () => {\n    try {\n      const response = await Api.getFilters('entities', {});\n      setFilterableEntities(response.res.entities);\n    } catch (error) {\n      setSnackbar({\n        message: 'There was an error getting entities',\n        state: 'error'\n      });\n    }\n  }, []);\n\n  const getFilterableAssignedUsers = useCallback(async () => {\n    try {\n      const response = await Api.getFilters('assigned_users', {});\n      setFilterableAssignedUsers(response.res.assigned_users);\n    } catch (error) {\n      setSnackbar({\n        message: 'There was an error getting assigned users',\n        state: 'error'\n      });\n    }\n  }, []);\n\n  const getFilterableRequesters = useCallback(async () => {\n    try {\n      const response = await Api.getFilters(\n        'requested_by_users',\n        {}\n      );\n      setFilterableRequesters(response.res.requested_by_users);\n    } catch (error) {\n      setSnackbar({\n        message: 'There was an error getting requesters',\n        state: 'error'\n      });\n    }\n  }, []);\n\n  useEffect(() => {\n    getFirstApprovalFormsAndPreferences();\n    getFilterableEntities();\n    getFilterableAssignedUsers();\n    getFilterableRequesters();\n  }, [\n    apiKey,\n    getFirstApprovalFormsAndPreferences,\n    getFilterableEntities,\n    getFilterableAssignedUsers,\n    getFilterableRequesters\n  ]);\n\n  return (\n    <Box>\n      <Box sx={styles.filtersRow}>\n        <Search setSearch={setSearch} getApprovalForms={getApprovalForms} archived={archived} />\n        <FilterDropdown\n          filters={filters}\n          setFilters={setFilters}\n          getApprovalForms={getApprovalForms}\n          entityList={filterableEntities}\n          assignedUserList={filterableAssignedUsers}\n          requesterList={filterableRequesters}\n          setUserPreferences={setUserPreferences}\n          setCurrentPage={setCurrentPage}\n          archived={archived}\n        />\n        <DndFieldDropdown\n          sortableColumns={sortableColumns}\n          setSortableColumns={setSortableColumns}\n          density={density}\n          setDensity={setDensity}\n          setUserPreferences={setUserPreferences}\n          label=\"approval-forms\"\n          userPermissions={userPermissions}\n        />\n      </Box>\n      <ApprovalFormsTable\n        approvalForms={approvalForms}\n        setApprovalForms={setApprovalForms}\n        getApprovalForms={getApprovalForms}\n        getAllApprovalForms={getAllApprovalForms}\n        globalSelected={globalSelected}\n        setGlobalSelected={setGlobalSelected}\n        selectAllIsChecked={selectAllIsChecked}\n        setSelectAllIsChecked={setSelectAllIsChecked}\n        selectAllIsIndeterminate={selectAllIsIndeterminate}\n        setSelectAllIsIndeterminate={setSelectAllIsIndeterminate}\n        setSnackbarState={setSnackbar}\n        isLoading={isLoading}\n        setIsLoading={setIsLoading}\n        selected={selected}\n        setSelected={setSelected}\n        currentPage={currentPage}\n        setCurrentPage={setCurrentPage}\n        rowsPerPage={rowsPerPage}\n        setRowsPerPage={setRowsPerPage}\n        totalPages={totalPages}\n        totalApprovalForms={totalApprovalForms}\n        sortBy={sortBy}\n        setSortBy={setSortBy}\n        sortOrder={sortOrder}\n        setSortOrder={setSortOrder}\n        sortableColumns={sortableColumns}\n        apiKey={apiKey}\n        userPermissions={userPermissions}\n        density={density}\n        archived={archived}\n      />\n      <StyledSnackbar\n        message={snackbar.message}\n        state={snackbar.state}\n        setSnackbarState={setSnackbar}\n      />\n    </Box>\n  );\n}\n","import React, { useState, useRef, useCallback } from 'react';\nimport moment from 'moment-timezone';\nimport Api from './API';\nimport { IApprovalForm, IApprovalFormTableProps } from './types';\nimport { classes } from '../Job/Applications/styles';\nimport GenericDialog from '../Components/Modals/GenericDialog';\nimport NotePopover from './NotePopover';\nimport {\n  Edit as EditIcon,\n  Unarchive as UnarchiveIcon,\n  KeyboardArrowLeft as KeyboardArrowLeftIcon,\n  KeyboardArrowRight as KeyboardArrowRightIcon,\n  MoreVert as MoreVertIcon,\n  NoteAdd as NoteAddIcon\n} from '@mui/icons-material';\nimport { isPermittedOption } from './helper';\nimport {\n  Popover,\n  Button,\n  Skeleton,\n  Checkbox,\n  Select,\n  FormControl,\n  MenuItem,\n  Pagination,\n  Paper,\n  TableSortLabel,\n  TableRow,\n  TableHead,\n  TableContainer,\n  IconButton,\n  TableCell,\n  TableBody,\n  Table,\n  Box,\n  Tooltip\n} from '@mui/material';\n\nconst BASE_URL = window.location.origin;\n\nconst CHECKBOX_CELL_WIDTH = 58;\nconst ID_CELL_WIDTH = 80;\nconst CANDIDATE_CELL_WIDTH = 200;\n\nconst tablePadding = (density: string) => {\n  if (density === 'Default') {\n    return '22px';\n  } else if (density === 'Compact') {\n    return '15px';\n  } else {\n    return '8px';\n  }\n};\n\nexport default function ApprovalFormsTable({\n  approvalForms,\n  setApprovalForms,\n  getApprovalForms,\n  getAllApprovalForms,\n  globalSelected,\n  setGlobalSelected,\n  selectAllIsChecked,\n  setSelectAllIsChecked,\n  selectAllIsIndeterminate,\n  setSelectAllIsIndeterminate,\n  setSnackbarState,\n  isLoading,\n  setIsLoading,\n  selected,\n  setSelected,\n  currentPage,\n  setCurrentPage,\n  rowsPerPage,\n  setRowsPerPage,\n  totalPages,\n  totalApprovalForms,\n  sortBy,\n  setSortBy,\n  sortOrder,\n  setSortOrder,\n  sortableColumns,\n  apiKey,\n  userPermissions,\n  density,\n  archived\n}: IApprovalFormTableProps) {\n  const timeZoneString = Intl.DateTimeFormat().resolvedOptions().timeZone;\n  const [selectedApprovalForm, setSelectedApprovalForm] = useState<{\n    id: null | number;\n    note: null | string;\n  }>({ id: null, note: null });\n  const [selectAllApprovalForms, setSelectAllApprovalForms] = useState<boolean>(false);\n  const [isFetchingAllApprovalForms, setIsFetchingAllApprovalForms] = useState<boolean>(false);\n  const [actionsAnchorEl, setActionsAnchorEl] = useState(null);\n  const [tableHovered, setTableHovered] = useState(false);\n  const [canScroll, setCanScroll] = useState([false, true]);\n  const tableRef = useRef<HTMLDivElement>(null);\n  const actionCellRef = useRef(null);\n  const titleCellRef = useRef(null);\n  const preventLoop = useRef(0);\n  const [trashAlertOpen, setTrashAlertOpen] = useState(false);\n  const [deleteApprovalForms, setDeleteApprovalForms] = useState([]);\n  const firstThreeColumnsWidth = CHECKBOX_CELL_WIDTH + CANDIDATE_CELL_WIDTH + ID_CELL_WIDTH;\n  const [noteAnchorEl, setNoteAnchorEl] = useState<HTMLButtonElement | null>(null);\n\n  const handleSelectAll = (event: React.ChangeEvent<HTMLInputElement>) => {\n    const newGlobalSelected = globalSelected.filter(\n      (currentApp) => !approvalForms.map((app) => app.id).includes(currentApp.id)\n    );\n    if (event.target.checked) {\n      const selectAllGlobalSelected = [...newGlobalSelected, ...approvalForms];\n      setSelected(selectAllGlobalSelected.map((approvalForm) => approvalForm.id));\n      setGlobalSelected(selectAllGlobalSelected);\n      setSelectAllIsChecked(true);\n      setSelectAllIsIndeterminate(false);\n      setSelectAllApprovalForms(true);\n      return;\n    }\n    setSelected(newGlobalSelected.map((approvalForm) => approvalForm.id));\n    setGlobalSelected([]);\n    setSelectAllIsChecked(false);\n    setSelectAllIsIndeterminate(false);\n    setSelectAllApprovalForms(false);\n  };\n\n  const handleSelectAllApprovalForms = async () => {\n    setIsFetchingAllApprovalForms(true);\n    const allApprovalForms = await getAllApprovalForms(\n      totalApprovalForms,\n      null,\n      null,\n      null,\n      archived\n    );\n    setGlobalSelected(allApprovalForms);\n    setSelected(allApprovalForms.map((approvalForm) => approvalForm.id));\n    setSelectAllIsChecked(true);\n    setSelectAllApprovalForms(true);\n    setSelectAllIsIndeterminate(false);\n    setIsFetchingAllApprovalForms(false);\n  };\n\n  const clearAllSelection = () => {\n    setSelectAllApprovalForms(false);\n    setGlobalSelected([]);\n    setSelected([]);\n    setSelectAllIsChecked(false);\n    setSelectAllIsIndeterminate(false);\n  };\n\n  const handleArchiveApprovalForms = async (ids: Array<number>) => {\n    setIsLoading(true);\n    try {\n      const response = await Api.postArchiveApprovalForms(\n        { requisition_ids: ids }\n      );\n      if (response.res?.requisition_ids?.failure?.length) {\n        const message =\n          response.res.requisition_ids.success?.length > 0 ||\n          response.res.requisition_ids.failure?.length > 1\n            ? `${response.res.requisition_ids.failure?.length} ${\n                response.res.requisition_ids.failure?.length > 1\n                  ? 'approval forms were'\n                  : 'approval form was'\n              } unable to be archived.`\n            : `${\n                response.res.requisition_ids.failure?.length === 1\n                  ? 'Unable to archive approval form.'\n                  : ''\n              }`;\n        setSnackbarState({\n          message: message,\n          state: 'error'\n        });\n      }\n    } catch (error) {\n      setSnackbarState({\n        message: error?.errors,\n        state: 'error'\n      });\n      alert('Something went wrong. Please try again.');\n    } finally {\n      setSelected([]);\n      setGlobalSelected([]);\n      setSelectedApprovalForm({ id: null, note: null });\n      setActionsAnchorEl(null);\n      getApprovalForms(null, null, null, null, null, archived);\n    }\n  };\n\n  const handleUnarchiveApprovalForms = async (ids: Array<number>) => {\n    setIsLoading(true);\n    try {\n      const response = await Api.postUnarchiveApprovalForms(\n        { requisition_ids: ids }\n      );\n      if (response.res?.requisition_ids?.failure?.length) {\n        const message =\n          response.res.requisition_ids.success?.length > 0 ||\n          response.res.requisition_ids.failure?.length > 1\n            ? `${response.res.requisition_ids.failure?.length} ${\n                response.res.requisition_ids.failure?.length > 1\n                  ? 'approval forms were'\n                  : 'approval form was'\n              } unable to be unarchived.`\n            : `${\n                response.res.requisition_ids.failure?.length === 1\n                  ? 'Unable to unarchive approval form.'\n                  : ''\n              }`;\n        setSnackbarState({\n          message: message,\n          state: 'error'\n        });\n      }\n    } catch (error) {\n      setSnackbarState({\n        message: error?.errors,\n        state: 'error'\n      });\n      alert('Something went wrong. Please try again.');\n    } finally {\n      setSelected([]);\n      setGlobalSelected([]);\n      setSelectedApprovalForm({ id: null, note: null });\n      setActionsAnchorEl(null);\n      getApprovalForms(null, null, null, null, null, archived);\n    }\n  };\n\n  const handleTrashApprovalForms = async (ids: Array<number>) => {\n    setIsLoading(true);\n    try {\n      const response = await Api.deleteTrashApprovalForms(\n        { requisition_ids: ids }\n      );\n      if (response.res?.requisition_ids?.failure?.length) {\n        const message =\n          response.res.requisition_ids.success?.length > 0 ||\n          response.res.requisition_ids.failure?.length > 1\n            ? `${response.res.requisition_ids.failure?.length} ${\n                response.res.requisition_ids.failure?.length > 1\n                  ? 'approval forms were'\n                  : 'approval form was'\n              } unable to be trashed.`\n            : `${\n                response.res.requisition_ids.failure?.length === 1\n                  ? 'Unable to trash approval form.'\n                  : ''\n              }`;\n        setSnackbarState({\n          message: message,\n          state: 'error'\n        });\n      }\n    } catch (error) {\n      setSnackbarState({\n        message: error?.errors,\n        state: 'error'\n      });\n      alert('Something went wrong. Please try again.');\n    } finally {\n      setSelected([]);\n      setGlobalSelected([]);\n      setSelectedApprovalForm({ id: null, note: null });\n      setActionsAnchorEl(null);\n      getApprovalForms(null, null, null, null, null, archived);\n    }\n  };\n\n  const cloneApprovalForm = async (id: number) => {\n    setIsLoading(true);\n\n    try {\n      const response = await fetch(`/api/v4/requisitions/${id}/clone`, {\n        method: 'POST',\n        headers: {\n          'X-api-authenticate': apiKey,\n          'Content-Type': 'application/json'\n        }\n      }).then((response) => response.json());\n      if (response.url) {\n        window.location.href = `${BASE_URL}${response.url}`;\n      }\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsLoading(false);\n    }\n  };\n\n  const handleSelectOne = (\n    event: React.ChangeEvent<HTMLInputElement>,\n    approvalForm: IApprovalForm\n  ) => {\n    let newGlobalSelected = [...globalSelected];\n    event.target.checked\n      ? newGlobalSelected.push(approvalForm)\n      : (newGlobalSelected = newGlobalSelected.filter((app) => app.id !== approvalForm.id));\n    const newSelected = newGlobalSelected.map((app) => app.id);\n    setSelected(newSelected);\n    setGlobalSelected(newGlobalSelected);\n    setSelectAllIsChecked(\n      approvalForms.map((app) => app.id).every((id) => newSelected.includes(id))\n    );\n    setSelectAllIsIndeterminate(\n      approvalForms.map((app) => app.id).some((id) => newSelected.includes(id))\n    );\n  };\n\n  const handleRowsPerPageChange = (selection: number) => {\n    if (selection === rowsPerPage) return;\n    setRowsPerPage(selection);\n    getApprovalForms(null, selection, null, null, null, archived);\n  };\n\n  const handlePageChange = (event: React.ChangeEvent<unknown>, newPage: number) => {\n    if (newPage === currentPage) return;\n    setCurrentPage(newPage);\n    sessionStorage.setItem(`approvalFormsTablePage`, newPage);\n    getApprovalForms(newPage, null, null, null, null, archived);\n  };\n\n  const handleSortChange = (\n    event: React.MouseEvent<HTMLSpanElement, MouseEvent>,\n    columnValue: string\n  ) => {\n    const isAsc = sortBy === columnValue && sortOrder === 'asc';\n    const newSortOrder = isAsc ? 'desc' : 'asc';\n    setSortOrder(newSortOrder);\n    setSortBy(columnValue);\n    getApprovalForms(\n      null,\n      null,\n      null,\n      { sortBy: columnValue, sortOrder: newSortOrder },\n      null,\n      archived\n    );\n  };\n\n  const handleScroll = () => {\n    if (tableRef.current.scrollLeft < 10) {\n      setCanScroll([false, true]);\n    } else if (\n      tableRef.current.scrollLeft >\n      tableRef.current.scrollWidth - tableRef.current.clientWidth - 10\n    ) {\n      setCanScroll([true, false]);\n    } else {\n      setCanScroll([true, true]);\n    }\n  };\n\n  const handleScrollLeft = () => {\n    tableRef.current.scrollLeft > 360\n      ? (tableRef.current.scrollLeft -= 300)\n      : (tableRef.current.scrollLeft = 0);\n  };\n\n  const handleScrollRight = () => {\n    tableRef.current.scrollWidth - tableRef.current.clientWidth > 360\n      ? (tableRef.current.scrollLeft += 300)\n      : (tableRef.current.scrollLeft = tableRef.current.scrollWidth - tableRef.current.clientWidth);\n  };\n\n  function isScrollable(element: HTMLElement) {\n    return element && element.scrollWidth > element.clientWidth + 20;\n  }\n\n  const handleScrollableEnter = () => {\n    if (isScrollable(tableRef?.current) && !isLoading) setTableHovered(true);\n  };\n\n  const handleScrollableExit = () => {\n    setTableHovered(false);\n  };\n\n  const handleOpenNote = (\n    event: React.MouseEvent<HTMLElement>,\n    id: number,\n    note: string | null\n  ) => {\n    setSelectedApprovalForm({ id, note });\n    setNoteAnchorEl(event.currentTarget);\n  };\n\n  const handleCloseNote = () => {\n    setNoteAnchorEl(null);\n    setSelectedApprovalForm({ id: null, note: null });\n    preventLoop.current = 0;\n  };\n\n  const headerStyle = (name: string) => {\n    switch (name) {\n      case 'position_title':\n        return {\n          ...classes.sticky,\n          ...classes.scrollShadowLeft,\n          ...(tableHovered && classes.scrollShadowVisible),\n          minWidth: `${CANDIDATE_CELL_WIDTH}px`,\n          left: '138px'\n        };\n      case 'id':\n        return { ...classes.sticky, minWidth: `${ID_CELL_WIDTH}px`, left: '58px' };\n      case 'note':\n        return { minWidth: '300px' };\n      case 'created_at':\n        return { minWidth: '120px' };\n      case 'updated_at':\n        return { minWidth: '120px' };\n      case 'requested_by':\n        return { minWidth: '140px' };\n      case 'form_template':\n        return { minWidth: '145px' };\n      case 'assigned_user':\n        return { minWidth: '135px' };\n      case 'state':\n        return { minWidth: '120px', textAlign: 'center' };\n      default:\n        return { minWidth: '90px' };\n    }\n  };\n\n  const displaySelectAll =\n    selectAllApprovalForms &&\n    globalSelected.length !== totalApprovalForms &&\n    totalApprovalForms > rowsPerPage;\n\n  const renderTableCell = useCallback(\n    (\n      column: IApprovalFormTableProps['sortableColumns'][0],\n      approvalForm: IApprovalForm,\n      createdAt: JSX.Element[] | '-',\n      updatedAt: JSX.Element[] | '-'\n    ) => {\n      switch (column.id) {\n        case 'id':\n          return (\n            <TableCell\n              key={approvalForm.id + column.id}\n              sx={{\n                ...classes.noLinkStyling,\n                ...classes.sticky,\n                minWidth: '80px',\n                left: '58px'\n              }}\n            >\n              <a href={approvalForm.requisition_link} className=\"approval-form-id-link\">\n                {approvalForm.id || '-'}\n              </a>\n            </TableCell>\n          );\n        case 'position_title':\n          return (\n            <TableCell\n              key={approvalForm.id + column.id}\n              sx={{\n                ...classes.sticky,\n                minWidth: '200px',\n                left: '138px',\n                ...classes.scrollShadowLeft,\n                ...(tableHovered && classes.scrollShadowVisible)\n              }}\n            >\n              <Box\n                sx={{\n                  '& a': {\n                    color: '#666666',\n                    fontWeight: 'bold',\n                    '&:hover': {\n                      textDecoration: 'none'\n                    }\n                  }\n                }}\n              >\n                <a href={approvalForm.requisition_link} className=\"approval-form-title-link\">\n                  {approvalForm.position_title || '-'}\n                </a>\n              </Box>\n            </TableCell>\n          );\n        case 'created_at':\n          return <TableCell key={approvalForm.id + column.id}>{createdAt}</TableCell>;\n        case 'updated_at':\n          return <TableCell key={approvalForm.id + column.id}>{updatedAt}</TableCell>;\n        case 'requested_by':\n          return (\n            <TableCell key={approvalForm.id + column.id}>\n              {approvalForm.requested_by || '-'}\n            </TableCell>\n          );\n        case 'state':\n          return (\n            <TableCell>\n              <Box\n                sx={{\n                  ...classes[approvalForm.state],\n                  width: '112px',\n                  textAlign: 'center'\n                }}\n              >\n                {approvalForm.state}\n              </Box>\n            </TableCell>\n          );\n        case 'entity':\n          return <TableCell>{approvalForm.entity_name || '-'}</TableCell>;\n        case 'form_template':\n          return <TableCell>{approvalForm.form_template || '-'}</TableCell>;\n        case 'assigned_user':\n          return <TableCell>{approvalForm.assigned_user || '-'}</TableCell>;\n        case 'note':\n          return <TableCell>{approvalForm.note || '-'}</TableCell>;\n        default:\n          return <TableCell></TableCell>;\n      }\n    },\n    [currentPage, rowsPerPage, selectedApprovalForm.id, tableHovered, userPermissions]\n  );\n\n  return (\n    <Box>\n      <Box sx={{ position: 'relative' }}>\n        {\n          <Box\n            onMouseEnter={handleScrollableEnter}\n            sx={{\n              ...classes.arrowsContainer,\n              position: 'absolute !important',\n              left: `${firstThreeColumnsWidth}px`,\n              top: 0\n            }}\n          >\n            <Box\n              onClick={handleScrollLeft}\n              sx={{\n                ...classes.leftArrow,\n                ...(tableHovered && canScroll[0] && classes.showArrows),\n                top: 0\n              }}\n              id=\"left-arrow\"\n            >\n              <KeyboardArrowLeftIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n            </Box>\n          </Box>\n        }\n        <Box\n          onMouseEnter={handleScrollableEnter}\n          sx={{\n            ...classes.arrowsContainer,\n            position: 'absolute !important',\n            right: `${actionCellRef.current?.offsetWidth}px`,\n            top: 0\n          }}\n        >\n          <Box\n            onClick={handleScrollRight}\n            sx={{\n              ...classes.rightArrow,\n              ...(tableHovered && canScroll[1] && classes.showArrows),\n              top: 0\n            }}\n            id=\"right-arrow\"\n          >\n            <KeyboardArrowRightIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n          </Box>\n        </Box>\n        <TableContainer\n          sx={{ boxShadow: 'none', scrollBehavior: 'smooth' }}\n          component={Paper}\n          onMouseEnter={handleScrollableEnter}\n          onMouseLeave={handleScrollableExit}\n          ref={tableRef}\n          onScroll={handleScroll}\n        >\n          <Table\n            sx={{\n              ...classes.tableWrapper,\n              'th, td, tr, thead': { padding: `${tablePadding(density)} 10px` }\n            }}\n            aria-label=\"approval forms\"\n          >\n            <TableHead>\n              <TableRow>\n                <TableCell sx={{ ...classes.sticky, width: `${CHECKBOX_CELL_WIDTH}px` }}>\n                  <Checkbox\n                    id=\"select-all-checkbox\"\n                    sx={classes.checkbox}\n                    indeterminate={!selectAllIsChecked && selectAllIsIndeterminate}\n                    checked={selectAllIsChecked}\n                    onChange={handleSelectAll}\n                    inputProps={{\n                      'aria-label': 'select all approval forms'\n                    }}\n                  />\n                </TableCell>\n                {sortableColumns.map(\n                  (column) =>\n                    column.enabled &&\n                    isPermittedOption(column.id, userPermissions) && (\n                      <TableCell\n                        key={column.id}\n                        sx={headerStyle(column.id)}\n                        ref={column.id === 'position_title' ? titleCellRef : null}\n                      >\n                        <TableSortLabel\n                          active={sortBy === column.id}\n                          direction={sortBy === column.id ? (sortOrder as 'asc' | 'desc') : 'asc'}\n                          onClick={(event) => handleSortChange(event, column.id)}\n                          sx={column.sortable ? classes.sortable : null}\n                          disabled={!column.sortable}\n                          id={`${column.id}-sort-label-approval-forms`}\n                        >\n                          {column.label}\n                        </TableSortLabel>\n                      </TableCell>\n                    )\n                )}\n                {(userPermissions?.['Approval Forms']?.['Archive Approval Forms'] ||\n                  userPermissions?.['Approval Forms']?.['Manage Approval Form Notes'] ||\n                  userPermissions?.['Approval Forms']?.[\n                    'Edit Approval Form at Any Stage (HR use)'\n                  ] ||\n                  userPermissions?.['Approval Forms']?.['Edit Previously Submitted Form'] ||\n                  userPermissions?.['Approval Forms']?.['Clone Previously Submitted Form']) && (\n                  <TableCell\n                    sx={{\n                      zIndex: '4',\n                      ...classes.attachmentsHeader,\n                      ...classes.stickyRight,\n                      ...classes.scrollShadowRight,\n                      ...(tableHovered && classes.scrollShadowVisible)\n                    }}\n                  />\n                )}\n              </TableRow>\n            </TableHead>\n            <TableBody>\n              {approvalForms &&\n                !isLoading &&\n                approvalForms.map((approvalForm: IApprovalForm, index) => {\n                  const createdAt = approvalForm.created_at\n                    ? moment\n                        .tz(approvalForm.created_at, timeZoneString)\n                        .format('DD MMM YYYY,-h:mma z')\n                        .split('-')\n                        .map((line) => <div key={`${approvalForm.id}-${line}`}>{line}</div>)\n                    : '-';\n                  const updatedAt = approvalForm.updated_at\n                    ? moment\n                        .tz(approvalForm.updated_at, timeZoneString)\n                        .format('DD MMM YYYY,-h:mma z')\n                        .split('-')\n                        .map((line) => <div key={`${approvalForm.id}-${line}`}>{line}</div>)\n                    : '-';\n                  return (\n                    <TableRow key={approvalForm.id}>\n                      <TableCell sx={{ ...classes.sticky, width: '58px' }}>\n                        <Checkbox\n                          id={`select-checkbox-${approvalForm.id}`}\n                          sx={classes.checkbox}\n                          checked={selected.includes(approvalForm.id)}\n                          onChange={(event) => handleSelectOne(event, approvalForm)}\n                          inputProps={{\n                            'aria-label': `select approval form ${approvalForm.position_title}`\n                          }}\n                        />\n                      </TableCell>\n                      {sortableColumns.map((column) => {\n                        if (column.enabled && isPermittedOption(column.id, userPermissions)) {\n                          return renderTableCell(column, approvalForm, createdAt, updatedAt);\n                        }\n                      })}\n                      {userPermissions?.['Approval Forms']?.['Archive Approval Forms'] ||\n                      userPermissions?.['Approval Forms']?.['Manage Approval Form Notes'] ||\n                      userPermissions?.['Approval Forms']?.[\n                        'Edit Approval Form at Any Stage (HR use)'\n                      ] ||\n                      userPermissions?.['Approval Forms']?.['Edit Previously Submitted Form'] ||\n                      userPermissions?.['Approval Forms']?.['Clone Previously Submitted Form'] ? (\n                        <TableCell\n                          sx={{\n                            zIndex: '4',\n                            ...classes.attachmentsCell,\n                            ...classes.stickyRight,\n                            ...classes.scrollShadowRight,\n                            ...(tableHovered && classes.scrollShadowVisible)\n                          }}\n                          ref={actionCellRef}\n                        >\n                          <Box sx={classes.actionItems}>\n                            {archived ? (\n                              <>\n                                {userPermissions?.['Approval Forms']?.[\n                                  'Archive Approval Forms'\n                                ] && (\n                                  <Tooltip placement=\"right\" title=\"Unarchive\" arrow>\n                                    <IconButton\n                                      className=\"unarchive-button\"\n                                      onClick={(e) =>\n                                        handleUnarchiveApprovalForms([approvalForm.id])\n                                      }\n                                    >\n                                      <UnarchiveIcon />\n                                    </IconButton>\n                                  </Tooltip>\n                                )}\n                              </>\n                            ) : (\n                              <>\n                                {userPermissions?.['Approval Forms']?.[\n                                  'Manage Approval Form Notes'\n                                ] && (\n                                  <Tooltip placement=\"top\" title=\"Add note\" arrow>\n                                    <IconButton\n                                      className=\"note-button\"\n                                      onClick={(e) =>\n                                        handleOpenNote(e, approvalForm.id, approvalForm.note)\n                                      }\n                                    >\n                                      <NoteAddIcon />\n                                    </IconButton>\n                                  </Tooltip>\n                                )}\n                                {(userPermissions?.['Approval Forms']?.[\n                                  'Edit Approval Form at Any Stage (HR use)'\n                                ] ||\n                                  ((approvalForm.state === 'draft' ||\n                                    approvalForm.state === 'pending') &&\n                                    userPermissions?.['Approval Forms']?.[\n                                      'Edit Previously Submitted Form'\n                                    ])) && (\n                                  <Tooltip placement=\"top\" title=\"Edit\" arrow>\n                                    <IconButton\n                                      onClick={() => {\n                                        window.location.href =\n                                          BASE_URL + `/admin/requisitions/${approvalForm.id}/edit`;\n                                      }}\n                                      className=\"edit-approval-form-action-button\"\n                                    >\n                                      <EditIcon sx={{ color: '#666666' }} />\n                                    </IconButton>\n                                  </Tooltip>\n                                )}\n                                {(userPermissions?.['Approval Forms']?.[\n                                  'Clone Previously Submitted Form'\n                                ] ||\n                                  userPermissions?.['Approval Forms']?.['Archive Approval Forms'] ||\n                                  userPermissions?.['Approval Forms']?.[\n                                    'Edit Approval Form at Any Stage (HR use)'\n                                  ] ||\n                                  userPermissions?.['Approval Forms']?.[\n                                    'Edit Previously Submitted Form'\n                                  ]) && (\n                                  <Tooltip placement=\"top\" title=\"More options\" arrow>\n                                    <IconButton\n                                      onClick={(e) => {\n                                        setActionsAnchorEl(e.currentTarget);\n                                        setSelectedApprovalForm({\n                                          id: approvalForm.id,\n                                          note: null\n                                        });\n                                      }}\n                                      className=\"approval-form-action-dropdown-button\"\n                                    >\n                                      <MoreVertIcon sx={{ color: '#666666' }} />\n                                    </IconButton>\n                                  </Tooltip>\n                                )}\n                              </>\n                            )}\n                          </Box>\n                        </TableCell>\n                      ) : (\n                        <TableCell ref={actionCellRef}></TableCell>\n                      )}\n                    </TableRow>\n                  );\n                })}\n            </TableBody>\n          </Table>\n          {!isLoading && approvalForms?.length === 0 && (\n            <Box sx={classes.noApplications}>No Approval Forms found</Box>\n          )}\n          {isLoading && (\n            <>\n              {[...Array(10)].map((_, index) => (\n                <Box key={index} sx={classes.skeletonContainer}>\n                  <Skeleton animation=\"wave\" height={60} />\n                </Box>\n              ))}\n            </>\n          )}\n        </TableContainer>\n      </Box>\n      <Box sx={classes.paginationParent}>\n        <Box sx={classes.rowSelectContainer}>\n          <span>Rows per page: </span>\n          <FormControl>\n            <Select\n              id=\"rows-per-page\"\n              sx={classes.rowSelect}\n              value={rowsPerPage}\n              onChange={(e) => handleRowsPerPageChange(Number(e.target.value))}\n              displayEmpty\n              MenuProps={{ sx: classes.paginationMenuItems }}\n            >\n              <MenuItem id=\"first-rpp-item\" value={10}>\n                10\n              </MenuItem>\n              <MenuItem id=\"second-rpp-item\" value={20}>\n                20\n              </MenuItem>\n              <MenuItem value={30}>30</MenuItem>\n              <MenuItem value={40}>40</MenuItem>\n              <MenuItem value={50}>50</MenuItem>\n            </Select>\n          </FormControl>\n        </Box>\n        <Box sx={classes.paginationContainer}>\n          <Pagination\n            id=\"pagination-menu\"\n            count={totalPages}\n            page={currentPage}\n            siblingCount={0}\n            onChange={handlePageChange}\n            sx={classes.pagination}\n          />\n          <span id=\"total-jobs\">{totalApprovalForms} Total</span>\n        </Box>\n      </Box>\n      <Box\n        id=\"selected-tooltip\"\n        sx={\n          globalSelected?.length > 0\n            ? { ...classes.selectedTooltip, ...classes.fadeIn }\n            : { ...classes.selectedTooltip, ...classes.fadeOut }\n        }\n      >\n        <Box\n          id=\"selected-tooltip-text\"\n          sx={{\n            display: 'flex',\n            alignItems: 'center',\n            ...classes.selectedTooltipText\n          }}\n        >\n          {globalSelected.length === totalApprovalForms\n            ? `All ${globalSelected?.length} approval forms are selected`\n            : `${globalSelected?.length} selected`}\n          <IconButton\n            size=\"small\"\n            sx={{\n              ...classes.selectedTooltipText,\n              ...classes.selectedAllTooltipText,\n              marginLeft: 1,\n              color: '#666666'\n            }}\n            onClick={clearAllSelection}\n          >\n            Clear selection\n          </IconButton>\n        </Box>\n        {displaySelectAll && (\n          <IconButton\n            disabled={isFetchingAllApprovalForms}\n            size=\"small\"\n            sx={{ ...classes.selectedTooltipText, ...classes.selectedAllTooltipText }}\n            onClick={handleSelectAllApprovalForms}\n          >\n            Select all {totalApprovalForms} approval forms\n          </IconButton>\n        )}\n        {!archived && (\n          <NotePopover\n            setApprovalForms={setApprovalForms}\n            anchorEl={noteAnchorEl}\n            handleCloseNote={handleCloseNote}\n            approvalFormId={selectedApprovalForm?.id}\n            approvalFormNote={selectedApprovalForm?.note}\n            apiKey={apiKey}\n            setSnackbarState={setSnackbarState}\n          />\n        )}\n        {!archived && (\n          <Popover\n            id={actionsAnchorEl ? 'actions-menu-popover' : undefined}\n            sx={classes.actionsMenu}\n            open={Boolean(actionsAnchorEl)}\n            anchorEl={actionsAnchorEl}\n            onClose={() => {\n              setActionsAnchorEl(null);\n              setSelectedApprovalForm({ id: null, note: null });\n            }}\n            anchorOrigin={{\n              vertical: 'bottom',\n              horizontal: 'right'\n            }}\n            transformOrigin={{\n              vertical: 'top',\n              horizontal: 'right'\n            }}\n          >\n            {userPermissions?.['Approval Forms']?.['Clone Previously Submitted Form'] && (\n              <span\n                onClick={() => {\n                  setActionsAnchorEl(null);\n                  cloneApprovalForm(selectedApprovalForm.id);\n                }}\n                className=\"clone-approval-form-action-button\"\n              >\n                Clone\n              </span>\n            )}\n            {userPermissions?.['Approval Forms']?.['Archive Approval Forms'] && (\n              <span\n                onClick={() => handleArchiveApprovalForms([selectedApprovalForm.id])}\n                className=\"archive-approval-form-action-button\"\n              >\n                Archive\n              </span>\n            )}\n            {(userPermissions?.['Approval Forms']?.['Edit Approval Form at Any Stage (HR use)'] ||\n              userPermissions?.['Approval Forms']?.['Edit Previously Submitted Form']) && (\n              <span\n                onClick={() => {\n                  setActionsAnchorEl(null);\n                  setTimeout(() => setTrashAlertOpen(true), 100);\n                  setDeleteApprovalForms([selectedApprovalForm.id]);\n                }}\n                className=\"trash-approval-form-action-button\"\n              >\n                Trash\n              </span>\n            )}\n          </Popover>\n        )}\n        {(userPermissions?.['Approval Forms']?.['Archive Approval Forms'] ||\n          userPermissions?.['Approval Forms']?.['Edit Approval Form at Any Stage (HR use)'] ||\n          userPermissions?.['Approval Forms']?.['Edit Previously Submitted Form']) && (\n          <Box sx={classes.selectedTooltipButtonsContainer}>\n            {userPermissions?.['Approval Forms']?.['Archive Approval Forms'] &&\n              (archived ? (\n                <Button\n                  variant=\"contained\"\n                  sx={classes.selectedTooltipButton}\n                  onClick={() => handleUnarchiveApprovalForms(selected)}\n                >\n                  Unarchive\n                </Button>\n              ) : (\n                <Button\n                  variant=\"contained\"\n                  sx={classes.selectedTooltipButton}\n                  onClick={() => handleArchiveApprovalForms(selected)}\n                >\n                  Archive\n                </Button>\n              ))}\n            {(userPermissions?.['Approval Forms']?.['Edit Approval Form at Any Stage (HR use)'] ||\n              userPermissions?.['Approval Forms']?.['Edit Previously Submitted Form']) && (\n              <Button\n                variant=\"contained\"\n                sx={classes.selectedTooltipButton}\n                onClick={() => {\n                  setDeleteApprovalForms(selected);\n                  setTrashAlertOpen(true);\n                }}\n              >\n                Trash\n              </Button>\n            )}\n          </Box>\n        )}\n      </Box>\n      <GenericDialog\n        isDialogOpen={trashAlertOpen}\n        setDialogOpen={setTrashAlertOpen}\n        title={deleteApprovalForms.length > 1 ? 'Trash approval forms?' : 'Trash approval form?'}\n        description={\n          deleteApprovalForms.length > 1\n            ? 'Are you sure want to trash these approval forms?'\n            : 'Are you sure want to trash this approval form?'\n        }\n        buttonCallback={() => {\n          setTrashAlertOpen(false);\n          handleTrashApprovalForms(deleteApprovalForms);\n          setDeleteApprovalForms([]);\n        }}\n        callbackLoading={false}\n        buttonText=\"Trash\"\n        url=\"\"\n      />\n    </Box>\n  );\n}\n","import React, { Dispatch, useState, useEffect, useCallback, SetStateAction } from 'react';\nimport Box from '@mui/material/Box';\nimport ApprovalManagersTable from './ApprovalManagersTable';\nimport Api from '../API';\nimport { IApprovalManagers } from '../types';\nimport StyledSnackbar from '../../Components/CustomUIElements/StyledSnackbar';\nimport Search from './Search';\nimport { IUserPermissions } from '../../Components/sharedTypes';\nimport { fetchPreferences, updateUiSettings } from '../../helpers/uiPreferencesHelpers';\n\nexport default function ApprovalManagers({\n  apiKey,\n  userPermissions,\n  isApprovalManagerDialogOpen,\n  setIsApprovalManagerDialogOpen\n}: {\n  apiKey: string;\n  userPermissions: IUserPermissions | undefined;\n  isApprovalManagerDialogOpen: boolean;\n  setIsApprovalManagerDialogOpen: Dispatch<SetStateAction<boolean>>;\n}) {\n  const [approvalManagers, setApprovalManagers] = useState<IApprovalManagers[]>([]);\n  const [isLoading, setIsLoading] = useState<boolean>(false);\n  const [snackbar, setSnackbar] = useState<{\n    message: string;\n    state: 'success' | 'warning' | 'error';\n  }>({\n    message: '',\n    state: 'success'\n  });\n  const [selected, setSelected] = useState<number[]>([]);\n  const [globalSelected, setGlobalSelected] = useState<IApprovalManagers[]>([]);\n  const [selectAllIsChecked, setSelectAllIsChecked] = useState(false);\n  const [selectAllIsIndeterminate, setSelectAllIsIndeterminate] = useState(false);\n  const [search, setSearch] = useState('');\n  const [rowsPerPage, setRowsPerPage] = useState(10);\n  const [totalPages, setTotalPages] = useState(0);\n  const [totalApprovalManagers, setTotalApprovalManagers] = useState(0);\n  const [sortBy, setSortBy] = useState<string>('created_at');\n  const [sortOrder, setSortOrder] = useState<string>('desc');\n  const [currentPage, setCurrentPage] = useState(1);\n  const [density, setDensity] = useState<string>('Default');\n\n  const getFirstApprovalManagersAndPreferences = useCallback(async () => {\n    setIsLoading(true);\n    try {\n      const { res: preferenceData } = await fetchPreferences('approval_managers');\n      const { res: densityData } = await fetchPreferences('universal');\n      const preference = preferenceData?.ui_preferences[0];\n      const densityPreference = densityData?.ui_preferences[0];\n      preference?.sorting?.sortBy && setSortBy(preference.sorting.sortBy);\n      preference?.sorting?.sortOrder && setSortOrder(preference.sorting.sortOrder.toLowerCase());\n      const sessionPage = sessionStorage.getItem(`approvalManagersTablePage`);\n      sessionPage && setCurrentPage(Number(sessionPage));\n      preference?.row_count && setRowsPerPage(preference.row_count);\n      densityPreference?.columns?.density && setDensity(densityPreference?.columns?.density);\n\n      const response = await Api.getApprovalManagers({\n        page: sessionPage ? Number(sessionPage) : 1,\n        limit: preference?.row_count || rowsPerPage,\n        sort: preference?.sorting?.sortBy || 'name',\n        sort_order: (preference?.sorting?.sortOrder?.toLowerCase() || 'desc').toUpperCase(),\n        'q[search]': search\n      });\n      setApprovalManagers(response.res.requisition_managers);\n      setTotalPages(parseInt(response.resHead['x-total-pages']));\n      setTotalApprovalManagers(parseInt(response.resHead['x-total-count']));\n    } catch (error) {\n      setSnackbar({\n        message: `There was an error getting approval managers, ${error?.errors}`,\n        state: 'error'\n      });\n    } finally {\n      setIsLoading(false);\n    }\n  }, []);\n\n  const setUserPreferences = async (\n    limit: number | null,\n    sort: { sortBy: string; sortOrder: string } | null\n  ) => {\n    await updateUiSettings(\n      {\n        row_count: limit || rowsPerPage,\n        sorting: sort,\n        source: `approval_managers`\n      },\n      () => {\n        setSnackbar({\n          message: 'There was an error saving your preferences',\n          state: 'error'\n        });\n      }\n    );\n  };\n\n  const getApprovalManagers = async (\n    page: number | null,\n    limit: number | null,\n    searchQuery: string | null,\n    sort: { sortBy: string; sortOrder: string } | null\n  ) => {\n    setIsLoading(true);\n    try {\n      const response = await Api.getApprovalManagers({\n        page: page || currentPage,\n        limit: limit || rowsPerPage,\n        sort: sort?.sortBy || sortBy,\n        sort_order: (sort?.sortOrder || sortOrder).toUpperCase(),\n        'q[search]': searchQuery !== null ? searchQuery : search\n      });\n      setApprovalManagers(response.res.requisition_managers);\n      setTotalPages(parseInt(response.resHead['x-total-pages']));\n      setTotalApprovalManagers(parseInt(response.resHead['x-total-count']));\n    } catch (error) {\n      setSnackbar({\n        message: `There was an error getting approval managers, ${error}`,\n        state: 'error'\n      });\n    } finally {\n      if (sort) {\n        setUserPreferences(null, sort);\n      } else if (limit) {\n        setUserPreferences(limit, null);\n        setCurrentPage(1);\n      }\n      setIsLoading(false);\n    }\n  };\n\n  const getAllApprovalManagers = async () => {\n    setIsLoading(true);\n    try {\n      const response = await Api.getApprovalManagers({\n        override_limit: true,\n        limit: totalApprovalManagers,\n        sort: sortBy,\n        sort_order: sortOrder.toUpperCase(),\n        'q[search]': search\n      });\n      return response.res.requisition_managers;\n    } catch (error) {\n      setSnackbar({\n        message: `There was an error getting all approval managers, ${error.errors}`,\n        state: 'error'\n      });\n    } finally {\n      setIsLoading(false);\n    }\n  };\n\n  useEffect(() => {\n    getFirstApprovalManagersAndPreferences();\n  }, [getFirstApprovalManagersAndPreferences]);\n\n  return (\n    <Box>\n      <Box sx={{ marginBottom: 3, paddingTop: '6px' }}>\n        <Search setSearch={setSearch} getApprovalManagers={getApprovalManagers} />\n      </Box>\n      <ApprovalManagersTable\n        apiKey={apiKey}\n        approvalManagers={approvalManagers}\n        density={density}\n        isLoading={isLoading}\n        setIsLoading={setIsLoading}\n        sortBy={sortBy}\n        setSortBy={setSortBy}\n        sortOrder={sortOrder}\n        setSortOrder={setSortOrder}\n        rowsPerPage={rowsPerPage}\n        setRowsPerPage={setRowsPerPage}\n        totalPages={totalPages}\n        currentPage={currentPage}\n        setCurrentPage={setCurrentPage}\n        totalApprovalManagers={totalApprovalManagers}\n        selected={selected}\n        setSelected={setSelected}\n        globalSelected={globalSelected}\n        setGlobalSelected={setGlobalSelected}\n        selectAllIsChecked={selectAllIsChecked}\n        setSelectAllIsChecked={setSelectAllIsChecked}\n        selectAllIsIndeterminate={selectAllIsIndeterminate}\n        setSelectAllIsIndeterminate={setSelectAllIsIndeterminate}\n        getApprovalManagers={getApprovalManagers}\n        userPermissions={userPermissions}\n        setSnackbar={setSnackbar}\n        isApprovalManagerDialogOpen={isApprovalManagerDialogOpen}\n        setIsApprovalManagerDialogOpen={setIsApprovalManagerDialogOpen}\n        getAllApprovalManagers={getAllApprovalManagers}\n      />\n      <StyledSnackbar\n        message={snackbar.message}\n        state={snackbar.state}\n        setSnackbarState={setSnackbar}\n      />\n    </Box>\n  );\n}\n","import React, { useState } from 'react';\nimport {\n  Box,\n  Button,\n  FormControl,\n  IconButton,\n  Select,\n  Skeleton,\n  MenuItem,\n  Pagination,\n  TableContainer,\n  Table,\n  TableBody,\n  TableHead,\n  TableRow,\n  TableCell,\n  TableSortLabel,\n  Checkbox,\n  Tooltip\n} from '@mui/material';\nimport { Delete as DeleteIcon, Edit as EditIcon } from '@mui/icons-material';\nimport { IApprovalManagers, IApprovalManagersTableProps } from '../types';\nimport { approvalManagersTableHeaders } from '../config';\nimport { classes } from '../../Job/Applications/styles';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport NewApprovalManager from './NewApprovalManager';\nimport Api from '../API';\n\nconst tablePadding = (density: string) => {\n  if (density === 'Default') {\n    return '22px';\n  } else if (density === 'Compact') {\n    return '15px';\n  } else {\n    return '8px';\n  }\n};\n\nexport default function ApprovalManagersTable({\n  apiKey,\n  approvalManagers,\n  density,\n  isLoading,\n  sortBy,\n  setSortBy,\n  sortOrder,\n  setSortOrder,\n  rowsPerPage,\n  setRowsPerPage,\n  totalPages,\n  currentPage,\n  setCurrentPage,\n  totalApprovalManagers,\n  selected,\n  setSelected,\n  globalSelected,\n  setGlobalSelected,\n  selectAllIsChecked,\n  setSelectAllIsChecked,\n  selectAllIsIndeterminate,\n  setSelectAllIsIndeterminate,\n  getApprovalManagers,\n  userPermissions,\n  setSnackbar,\n  isApprovalManagerDialogOpen,\n  setIsApprovalManagerDialogOpen,\n  getAllApprovalManagers\n}: IApprovalManagersTableProps) {\n  const [selectAllApprovalManagers, setSelectAllApprovalManagers] = useState<boolean>(false);\n  const [isDialogOpen, setIsDialogOpen] = useState<boolean>(false);\n  const [deleteApprovalManagers, setDeleteApprovalManagers] = useState<number[]>([]);\n  const [editedManager, setEditedManager] = useState<IApprovalManagers | null>(null);\n  const [isDeleting, setIsDeleting] = useState<boolean>(false);\n  const [isFetchingAllApprovalManagers, setIsFetchingAllApprovalManagers] =\n    useState<boolean>(false);\n\n  const handleDeleteApprovalManager = async (id: number) => {\n    setIsDeleting(true);\n    const approvalManagerId = id;\n    try {\n      const { res } = await Api.deleteApprovalManager(approvalManagerId);\n      if (res.success) {\n        setSnackbar({\n          message: `Approval manager has been successfully deleted.`,\n          state: 'success'\n        });\n        getApprovalManagers(null, null, null, null);\n      }\n    } catch (error) {\n      setSnackbar({\n        message: `Failed to delete approval manager, ${error?.errors}`,\n        state: 'error'\n      });\n    } finally {\n      setIsDeleting(false);\n      setIsDialogOpen(false);\n      setSelected([]);\n      setGlobalSelected([]);\n    }\n  };\n\n  const handleDeleteMultipleManagers = async (ids: number[]) => {\n    setIsDeleting(true);\n    try {\n      const { res } = await Api.deleteApprovalManagers(\n        { requisition_manager_ids: ids }\n      );\n      if (res.requisition_manager_ids.failure.length) {\n        setSnackbar({\n          message: `Failed to delete the approval manager id(s): ${res.requisition_manager_ids.failure.join(\n            ', '\n          )}`,\n          state: 'error'\n        });\n      } else {\n        setSnackbar({\n          message: `Approval managers have been successfully deleted.`,\n          state: 'success'\n        });\n        getApprovalManagers(null, null, null, null);\n      }\n    } catch (error) {\n      setSnackbar({\n        message: `Failed to delete the approval managers, ${error?.errors}`,\n        state: 'error'\n      });\n    } finally {\n      setIsDeleting(false);\n      setIsDialogOpen(false);\n      setSelected([]);\n      setGlobalSelected([]);\n    }\n  };\n\n  const handleSortChange = (\n    event: React.MouseEvent<HTMLSpanElement, MouseEvent>,\n    columnValue: string\n  ) => {\n    const isAsc = sortBy === columnValue && sortOrder === 'asc';\n    const newSortOrder = isAsc ? 'desc' : 'asc';\n    setSortOrder(newSortOrder);\n    setSortBy(columnValue);\n    getApprovalManagers(null, null, null, { sortBy: columnValue, sortOrder: newSortOrder });\n  };\n\n  const handleSelectOne = (\n    event: React.ChangeEvent<HTMLInputElement>,\n    approvalManager: IApprovalManagers\n  ) => {\n    let newGlobalSelected = [...globalSelected];\n    event.target.checked\n      ? newGlobalSelected.push(approvalManager)\n      : (newGlobalSelected = newGlobalSelected.filter((app) => app.id !== approvalManager.id));\n    const newSelected = newGlobalSelected.map((app) => app.id);\n    setSelected(newSelected);\n    setGlobalSelected(newGlobalSelected);\n    setSelectAllIsChecked(\n      approvalManagers.map((app) => app.id).every((id) => newSelected.includes(id))\n    );\n    setSelectAllIsIndeterminate(\n      approvalManagers.map((app) => app.id).some((id) => newSelected.includes(id))\n    );\n  };\n\n  const handleSelectAll = (event: React.ChangeEvent<HTMLInputElement>) => {\n    const newGlobalSelected = globalSelected.filter(\n      (currentApp) => !approvalManagers.map((app) => app.id).includes(currentApp.id)\n    );\n    if (event.target.checked) {\n      const selectAllGlobalSelected = [...newGlobalSelected, ...approvalManagers];\n      setSelected(selectAllGlobalSelected.map((approvalManager) => approvalManager.id));\n      setGlobalSelected(selectAllGlobalSelected);\n      setSelectAllIsChecked(true);\n      setSelectAllIsIndeterminate(false);\n      setSelectAllApprovalManagers(true);\n      return;\n    }\n    setSelected(newGlobalSelected.map((approvalManager) => approvalManager.id));\n    setGlobalSelected(newGlobalSelected);\n    setSelectAllIsChecked(false);\n    setSelectAllIsIndeterminate(false);\n    setSelectAllApprovalManagers(false);\n  };\n\n  const handleSelectAllApprovalManagers = async () => {\n    setIsFetchingAllApprovalManagers(true);\n    const allApprovalManagers = await getAllApprovalManagers();\n    if (allApprovalManagers) {\n      setGlobalSelected(allApprovalManagers);\n      setSelected(allApprovalManagers.map((manager) => manager.id));\n      setSelectAllIsChecked(true);\n      setSelectAllApprovalManagers(true);\n      setSelectAllIsIndeterminate(false);\n    }\n    setIsFetchingAllApprovalManagers(false);\n  };\n\n  const handleRowsPerPageChange = (selection: number) => {\n    if (selection === rowsPerPage) return;\n    setRowsPerPage(selection);\n    getApprovalManagers(1, selection, null, null);\n  };\n\n  const handlePageChange = (event: React.ChangeEvent<unknown>, newPage: number) => {\n    if (newPage === currentPage) return;\n    setCurrentPage(newPage);\n    sessionStorage.setItem(`approvalManagersTablePage`, newPage);\n    getApprovalManagers(newPage, null, null, null);\n  };\n\n  const clearAllSelection = () => {\n    setSelectAllApprovalManagers(false);\n    setGlobalSelected([]);\n    setSelected([]);\n    setSelectAllIsChecked(false);\n    setSelectAllIsIndeterminate(false);\n  };\n\n  const handleEditManager = (manager: IApprovalManagers) => {\n    setIsApprovalManagerDialogOpen(true);\n    setEditedManager(manager);\n  };\n\n  const displaySelectAll =\n    selectAllApprovalManagers &&\n    globalSelected.length !== totalApprovalManagers &&\n    totalApprovalManagers > rowsPerPage;\n\n  return (\n    <Box>\n      <Box sx={{ position: 'relative' }}>\n        <TableContainer sx={{ boxShadow: 'none', scrollBehavior: 'smooth' }}>\n          <Table\n            sx={{\n              ...classes.tableWrapper,\n              minWidth: 'unset',\n              'th, td, tr, thead': { padding: `${tablePadding(density)} 10px` }\n            }}\n            aria-label=\"approval managers\"\n          >\n            <TableHead>\n              <TableRow>\n                <TableCell sx={{ ...classes.sticky, width: '58px' }}>\n                  <Checkbox\n                    id=\"select-all-checkbox\"\n                    sx={classes.checkbox}\n                    indeterminate={!selectAllIsChecked && selectAllIsIndeterminate}\n                    checked={selectAllIsChecked}\n                    onChange={handleSelectAll}\n                    inputProps={{\n                      'aria-label': 'select all approval managers'\n                    }}\n                  />\n                </TableCell>\n                {approvalManagersTableHeaders.map((header) => (\n                  <TableCell key={header.name}>\n                    <TableSortLabel\n                      active={sortBy === header.name}\n                      direction={sortBy === header.name ? (sortOrder as 'asc' | 'desc') : 'asc'}\n                      onClick={(event) => handleSortChange(event, header.name)}\n                      sx={header.sortable ? classes.sortable : null}\n                      disabled={!header.sortable}\n                      id={`${header.name}-sort-label-approval-managers`}\n                    >\n                      {header.label}\n                    </TableSortLabel>\n                  </TableCell>\n                ))}\n                <TableCell />\n              </TableRow>\n            </TableHead>\n            <TableBody>\n              {approvalManagers &&\n                !isLoading &&\n                approvalManagers.map((manager) => (\n                  <TableRow key={manager.id}>\n                    <TableCell sx={{ ...classes.sticky, width: '58px' }}>\n                      <Checkbox\n                        id={`select-checkbox-${manager.id}`}\n                        sx={classes.checkbox}\n                        checked={selected.includes(manager.id)}\n                        onChange={(event) => handleSelectOne(event, manager)}\n                        inputProps={{\n                          'aria-label': `select approval managers ${manager.name}`\n                        }}\n                      />\n                    </TableCell>\n                    <TableCell sx={{ minWidth: '150px' }}>{manager.name}</TableCell>\n                    <TableCell sx={{ minWidth: '200px' }}>{manager.email}</TableCell>\n                    <TableCell>\n                      <Box sx={classes.actionItems}>\n                        <Tooltip placement=\"top\" title=\"Edit\" arrow>\n                          <IconButton\n                            className=\"approval-manager-edit-button\"\n                            onClick={() => handleEditManager(manager)}\n                          >\n                            <EditIcon sx={{ fontSize: '18px' }} />\n                          </IconButton>\n                        </Tooltip>\n                        <Tooltip placement=\"top\" title=\"Delete\" arrow>\n                          <IconButton\n                            className=\"approval-manager-delete-button\"\n                            sx={{ color: '#E37D7A' }}\n                            onClick={() => {\n                              setIsDialogOpen(true);\n                              setDeleteApprovalManagers([manager.id]);\n                            }}\n                          >\n                            <DeleteIcon sx={{ fontSize: '18px' }} />\n                          </IconButton>\n                        </Tooltip>\n                      </Box>\n                    </TableCell>\n                  </TableRow>\n                ))}\n            </TableBody>\n          </Table>\n          {!isLoading && approvalManagers?.length === 0 && (\n            <Box sx={classes.noApplications}>No Approval Managers found</Box>\n          )}\n          {isLoading && (\n            <>\n              {[...Array(10)].map((_, index) => (\n                <Box key={index} sx={classes.skeletonContainer}>\n                  <Skeleton animation=\"wave\" height={60} />\n                </Box>\n              ))}\n            </>\n          )}\n        </TableContainer>\n      </Box>\n      <Box sx={classes.paginationParent}>\n        <Box sx={classes.rowSelectContainer}>\n          <span>Rows per page: </span>\n          <FormControl>\n            <Select\n              id=\"rows-per-page\"\n              sx={classes.rowSelect}\n              value={rowsPerPage}\n              onChange={(e) => handleRowsPerPageChange(Number(e.target.value))}\n              displayEmpty\n              MenuProps={{ sx: classes.paginationMenuItems }}\n            >\n              <MenuItem id=\"first-rpp-item\" value={10}>\n                10\n              </MenuItem>\n              <MenuItem id=\"second-rpp-item\" value={20}>\n                20\n              </MenuItem>\n              <MenuItem value={30}>30</MenuItem>\n              <MenuItem value={40}>40</MenuItem>\n              <MenuItem value={50}>50</MenuItem>\n            </Select>\n          </FormControl>\n        </Box>\n        <Box sx={classes.paginationContainer}>\n          <Pagination\n            id=\"pagination-menu\"\n            count={totalPages}\n            page={currentPage}\n            siblingCount={0}\n            onChange={handlePageChange}\n            sx={classes.pagination}\n          />\n          <span id=\"total-jobs\">{totalApprovalManagers} Total</span>\n        </Box>\n      </Box>\n      <Box\n        id=\"selected-tooltip\"\n        sx={\n          globalSelected?.length > 0\n            ? { ...classes.selectedTooltip, ...classes.fadeIn }\n            : { ...classes.selectedTooltip, ...classes.fadeOut }\n        }\n      >\n        <Box\n          id=\"selected-tooltip-text\"\n          sx={{\n            display: 'flex',\n            alignItems: 'center',\n            ...classes.selectedTooltipText\n          }}\n        >\n          {globalSelected.length === totalApprovalManagers\n            ? `All ${globalSelected?.length} approval managers are selected`\n            : `${globalSelected?.length} selected`}\n          <IconButton\n            size=\"small\"\n            sx={{\n              ...classes.selectedTooltipText,\n              ...classes.selectedAllTooltipText,\n              marginLeft: 1,\n              color: '#666666'\n            }}\n            onClick={clearAllSelection}\n          >\n            Clear selection\n          </IconButton>\n        </Box>\n        {displaySelectAll && (\n          <IconButton\n            disabled={isFetchingAllApprovalManagers}\n            size=\"small\"\n            sx={{ ...classes.selectedTooltipText, ...classes.selectedAllTooltipText }}\n            onClick={handleSelectAllApprovalManagers}\n          >\n            Select all {totalApprovalManagers} approval managers\n          </IconButton>\n        )}\n        <Box sx={classes.selectedTooltipButtonsContainer}>\n          <Button\n            variant=\"contained\"\n            sx={classes.selectedTooltipButton}\n            onClick={() => {\n              setIsDialogOpen(true);\n              setDeleteApprovalManagers(selected);\n            }}\n          >\n            Delete\n          </Button>\n        </Box>\n      </Box>\n      <NewApprovalManager\n        apiKey={apiKey}\n        setSnackbar={setSnackbar}\n        isApprovalManagerDialogOpen={isApprovalManagerDialogOpen}\n        setIsApprovalManagerDialogOpen={setIsApprovalManagerDialogOpen}\n        editedManager={editedManager}\n        setEditedManager={setEditedManager}\n        getApprovalManagers={getApprovalManagers}\n      />\n      <GenericDialog\n        isDialogOpen={isDialogOpen}\n        setDialogOpen={setIsDialogOpen}\n        title={`Are you sure you want to delete ${\n          deleteApprovalManagers.length > 1 ? 'these' : 'this'\n        } approval ${deleteApprovalManagers.length > 1 ? 'managers' : 'manager'}?`}\n        description=\"\"\n        buttonCallback={() => {\n          deleteApprovalManagers.length > 1\n            ? handleDeleteMultipleManagers(deleteApprovalManagers)\n            : handleDeleteApprovalManager(deleteApprovalManagers[0]);\n        }}\n        callbackLoading={isDeleting}\n        buttonText=\"Delete\"\n        url=\"\"\n      />\n    </Box>\n  );\n}\n","import React, { Dispatch, SetStateAction, useState } from 'react';\nimport { Box, Button, Modal, CircularProgress } from '@mui/material';\nimport { Close as CloseIcon } from '@mui/icons-material';\nimport { DebouncedFormTextField } from '../../Components/CustomUIElements/FormTextField';\nimport { styles } from '../styles';\nimport Api from '../API';\nimport { IApprovalManagers, IGetApprovalManagers } from '../types';\nimport LoadingButton from '../../Components/Buttons/LoadingButton';\n\nexport default function NewApprovalManager({\n  apiKey,\n  setSnackbar,\n  isApprovalManagerDialogOpen,\n  setIsApprovalManagerDialogOpen,\n  editedManager,\n  setEditedManager,\n  getApprovalManagers\n}: {\n  apiKey: string;\n  setSnackbar: Dispatch<\n    SetStateAction<{ message: string; state: 'success' | 'warning' | 'error' }>\n  >;\n  isApprovalManagerDialogOpen: boolean;\n  setIsApprovalManagerDialogOpen: Dispatch<SetStateAction<boolean>>;\n  editedManager: IApprovalManagers | null;\n  setEditedManager: Dispatch<SetStateAction<IApprovalManagers | null>>;\n  getApprovalManagers: IGetApprovalManagers;\n}) {\n  const [nameError, setNameError] = useState<string>('');\n  const [emailError, setEmailError] = useState<string>('');\n\n  const createApprovalManager = async () => {\n    if (!validateInputs()) return;\n    try {\n      const name = editedManager.name;\n      const email = editedManager.email;\n      const { res } = await Api.createApprovalManager(\n        { requisition_manager: { name, email } }\n      );\n      if (res.success) {\n        setSnackbar({\n          message: `Approval manager has been successfully created.`,\n          state: 'success'\n        });\n        getApprovalManagers(null, null, null, null);\n        handleClose();\n      }\n    } catch (error) {\n      setSnackbar({\n        message: `Failed to create approval manager. ${error.error}`,\n        state: 'error'\n      });\n    }\n  };\n\n  const updateApprovalManager = async () => {\n    const approvalManagerId = editedManager?.id;\n    if (!approvalManagerId) return;\n    if (!validateInputs()) return;\n    try {\n      const name = editedManager.name;\n      const email = editedManager.email;\n      const { res } = await Api.updateApprovalManager(\n        { requisition_manager: { name, email } },\n        approvalManagerId\n      );\n      if (res.success) {\n        setSnackbar({\n          message: `Approval manager has been successfully updated.`,\n          state: 'success'\n        });\n        getApprovalManagers(null, null, null, null);\n        handleClose();\n      }\n    } catch (error) {\n      setSnackbar({\n        message: `Failed to update approval manager. ${error.error}`,\n        state: 'error'\n      });\n    }\n  };\n\n  const handleClose = () => {\n    setIsApprovalManagerDialogOpen(false);\n    setEditedManager(null);\n    setNameError('');\n    setEmailError('');\n  };\n\n  const validateEmail = () => {\n    if (!editedManager || !editedManager.email) return false;\n    return String(editedManager.email)\n      .toLowerCase()\n      .match(\n        /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|.(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n      );\n  };\n\n  const validateInputs = () => {\n    setNameError('');\n    setEmailError('');\n    if (!editedManager || !editedManager.name)\n      setNameError(`Name is required, please enter a name`);\n    if (!validateEmail()) setEmailError(`Please enter a proper email address`);\n    if (!editedManager || !editedManager.name || !validateEmail()) {\n      return false;\n    } else {\n      return true;\n    }\n  };\n\n  return (\n    <Box>\n      <Modal\n        open={isApprovalManagerDialogOpen}\n        onClose={handleClose}\n        aria-labelledby=\"new-approval-manager-modal\"\n      >\n        <Box sx={styles.actionsModal}>\n          <Box sx={{ padding: '30px 0px' }}>\n            <Box id=\"new-approval-manager-modal-title\" sx={styles.modalHeader}>\n              {editedManager?.id ? 'Edit' : 'New'} approval manager\n            </Box>\n          </Box>\n          <Box sx={{ ...styles.modalFormLine, paddingTop: 2 }}>\n            <Box sx={{ position: 'relative' }}>\n              <DebouncedFormTextField\n                onDebouncedChange={(value: string) => {\n                  const newEditedManager = { ...editedManager };\n                  newEditedManager.name = value;\n                  setEditedManager(newEditedManager);\n                }}\n                id=\"approval_manager_name\"\n                label=\"Name\"\n                defaultValue={editedManager?.name}\n                required\n                styles={{ width: '250px' }}\n                error={nameError}\n              />\n            </Box>\n          </Box>\n          <Box sx={{ ...styles.modalFormLine, paddingTop: 1 }}>\n            <Box sx={{ position: 'relative' }}>\n              <DebouncedFormTextField\n                onDebouncedChange={(value: string) => {\n                  const newEditedManager = { ...editedManager };\n                  newEditedManager.email = value;\n                  setEditedManager(newEditedManager);\n                }}\n                id=\"approval_manager_email\"\n                label=\"Email\"\n                defaultValue={editedManager?.email}\n                required\n                styles={{ width: '250px' }}\n                error={emailError}\n              />\n            </Box>\n          </Box>\n          <Box sx={{ marginTop: 5 }}>\n            <CloseIcon onClick={handleClose} sx={styles.closeIcon} />\n            <Box sx={styles.modalActions}>\n              <Button\n                disableElevation\n                sx={{ ...styles.buttonRedLight }}\n                variant=\"text\"\n                onClick={handleClose}\n              >\n                Cancel\n              </Button>\n              <LoadingButton\n                id=\"submit-new-approval-manager-button\"\n                type=\"submit\"\n                sx={styles.modalEditButton}\n                task={() => (editedManager?.id ? updateApprovalManager() : createApprovalManager())}\n              >\n                Submit\n              </LoadingButton>\n            </Box>\n          </Box>\n        </Box>\n      </Modal>\n    </Box>\n  );\n}\n","import React, { useState } from 'react';\nimport {Box, FormControl, OutlinedInput, InputAdornment} from '@mui/material';\nimport {Search as SearchIcon} from '@mui/icons-material';\nimport { IGetApprovalManagers } from '../types';\nimport { styles } from '../styles';\nimport { useDebouncedCallback } from 'use-debounce';\n\nexport default function Search({\n  setSearch,\n  getApprovalManagers\n}: {\n  setSearch: (query: string) => void;\n  getApprovalManagers: IGetApprovalManagers;\n}) {\n  const [tempSearch, setTempSearch] = useState('');\n  const debouncedAPICall = useDebouncedCallback((searchQuery) => {\n    getApprovalManagers(null, null, searchQuery, null);\n    setSearch(searchQuery);\n  }, 600);\n\n  const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    setTempSearch(event.target.value);\n    debouncedAPICall(event.target.value);\n  };\n\n  return (\n    <Box sx={{ width: '100%'}}>\n      <FormControl fullWidth>\n        <OutlinedInput\n          id=\"approval-manager-search\"\n          sx={styles.searchInput}\n          placeholder={'Search by name or email'}\n          value={tempSearch}\n          onChange={handleChange}\n          startAdornment={\n            <InputAdornment sx={{ padding: '0px 0px 0px 14px' }} position=\"start\">\n              <SearchIcon />\n            </InputAdornment>\n          }\n        />\n      </FormControl>\n    </Box>\n  );\n}\n","import React, { useRef, useState, useEffect } from 'react';\nimport { Autocomplete, Box, Button, IconButton, Stack, Skeleton, TextField } from '@mui/material';\nimport { Close as CloseIcon } from '@mui/icons-material';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport { IApprovalTemplate, IApprovalManagers, IApprovers } from '../types';\nimport { classes } from '../NewApproval/styles';\nimport Api from '../API';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport StyledSnackbar from '../../Components/CustomUIElements/StyledSnackbar';\nimport { DebouncedFormTextField } from '../../Components/CustomUIElements/FormTextField';\nimport QuestionFieldGenerator, {\n  IApplicantQuestion,\n  IFieldChoice\n} from '../../Components/Utilities/QuestionFieldGenerator';\nimport { FileWithPath } from 'react-dropzone';\nimport DocTypeIcon from '../../Components/Utilities/DocTypeIcon';\nimport { serialize } from 'object-to-formdata';\nimport moment from 'moment';\nimport LoadingButton from '../../Components/Buttons/LoadingButton';\nimport { scrollToElement } from '../../utils/scroll-to-element';\nimport AttachmentSelector from '../../Components/Utilities/AttachmentSelector';\n\nconst BASE_URL = window.location.origin;\n\nconst createApprovalFormQuestionsObject = (questions: IApplicantQuestion[]) => {\n  const newObject = {};\n  questions.forEach((question: IApplicantQuestion) => {\n    if (question.type === 'RankField') {\n      newObject[question.id] = {\n        ...question,\n        data: {}\n      };\n      question.field_choices.forEach((choice: IFieldChoice, index: number) => {\n        newObject[question.id]['data'][choice.id] = index + 1;\n      });\n    } else if (question.type === 'JobReferenceLookupField') {\n      newObject[question.id] = {\n        ...question,\n        data: 'validation bypass'\n      };\n    } else {\n      newObject[question.id] = {\n        ...question,\n        data: ''\n      };\n    }\n  });\n  return newObject;\n};\n\nconst createQuestionErrorsObject = (questions: IApplicantQuestion[]) => {\n  const errors: Record<number, string> = {};\n  questions.forEach((question: IApplicantQuestion) => {\n    errors[question.id] = '';\n  });\n  return errors;\n};\n\nconst getAnswerAttributes = (id: number, value: any) => {\n  if (value.type === 'RadioButtonField' || value.type === 'SelectField') {\n    return {\n      field_id: id,\n      field_choice_id: value.data\n    };\n  } else if (value.type === 'CheckBoxField') {\n    return {\n      field_id: id,\n      field_choice_ids: Object.entries(value.data)\n        .filter(([_, value]) => value)\n        .map(([id]) => id)\n    };\n  } else {\n    return {\n      field_id: id,\n      data: value.data\n    };\n  }\n};\n\nexport default function ApprovalPublicLink({\n  apiKey,\n  templateId,\n  token,\n  approvalTemplateData,\n  approvalManagers\n}: {\n  apiKey: string;\n  templateId: number;\n  token: string;\n  approvalTemplateData?: IApprovalTemplate;\n  approvalManagers?: IApprovalManagers[];\n}) {\n  const [loadingData, setLoadingData] = useState<boolean>(false);\n  const [loadingApprovers, setLoadingApprovers] = useState<boolean>(false);\n  const [approvers, setApprovers] = useState<\n    { email: string; id?: number; destroyed?: boolean; error?: string; mandatoryBlank?: boolean }[]\n  >([]);\n  const [snackbar, setSnackbar] = useState<{\n    message: string;\n    state: 'success' | 'warning' | 'error';\n  }>({\n    message: '',\n    state: 'success'\n  });\n  const [approvalAdministrator, setApprovalAdministrator] = useState<string>('');\n  const [administratorList, setAdministratorList] = useState<IApprovers[]>([]);\n  const [fileList, setFileList] = useState<FileWithPath[]>([]);\n  const [questions, setQuestions] = useState<IApplicantQuestion[]>([]);\n  const [approvalFormQuestions, setApprovalFormQuestions] = useState(() =>\n    createApprovalFormQuestionsObject([])\n  );\n  const [questionErrors, setQuestionErrors] = useState(() =>\n    createQuestionErrorsObject(questions || [])\n  );\n\n  const fieldRefs = {\n    positionTitle: useRef<HTMLDivElement>(null),\n    approvalManagers: useRef<HTMLDivElement>(null),\n    requesterAttributes: useRef<HTMLDivElement>(null),\n    questions: useRef<Array<HTMLDivElement | null>>([])\n  };\n\n  const [fetchingCSV, setFetchingCSV] = useState<boolean>(false);\n  const [positionTitle, setPositionTitle] = useState<string>('');\n  const [positionTitleError, setPositionTitleError] = useState<string>('');\n  const [name, setName] = useState<string>('');\n  const [email, setEmail] = useState<string>('');\n  const [phone, setPhone] = useState<string>('');\n  const [requesterAttributesErrors, setRequesterAttributesErrors] = useState<{\n    name: string;\n    email: string;\n    phone: string;\n  }>({ name: '', email: '', phone: '' });\n  const [requisitionId, setRequisitionId] = useState<number | null>(null);\n\n  const containsDuplicates = (array: string[]) => {\n    return new Set(array).size !== array.length;\n  };\n\n  // Validate approval question fields\n  const validateQuestions = () => {\n    let isValid = true;\n    let questionError: number | undefined = undefined;\n\n    questions.forEach((question: IApplicantQuestion, index: number) => {\n      let tempErrorMessage = '';\n      if (question.type === 'CheckBoxField') {\n        const isChecked = Object.values(approvalFormQuestions?.[question.id]?.data).some(\n          (value) => value === true\n        );\n        if (question.required && !isChecked) {\n          tempErrorMessage = 'Must select at least one option';\n          if (questionError === undefined) {\n            questionError = index;\n          }\n          isValid = false;\n        }\n      } else if (question.type === 'RankField') {\n        const duplicates = containsDuplicates(\n          Object.values(approvalFormQuestions?.[question.id]?.data)\n        );\n        if (duplicates) {\n          tempErrorMessage = 'Ranked choices must be unique';\n          if (questionError === undefined) {\n            questionError = index;\n          }\n          isValid = false;\n        }\n      } else if (question.required && !approvalFormQuestions?.[question.id]?.data) {\n        tempErrorMessage =\n          question.type !== 'RadioButtonField' ? 'This field is required' : 'Must select an option';\n        if (questionError === undefined) {\n          questionError = index;\n        }\n        isValid = false;\n      }\n      setQuestionErrors((prev) => ({\n        ...prev,\n        [question.id]: tempErrorMessage\n      }));\n    });\n\n    if (questionError !== undefined) {\n      scrollToElement(fieldRefs.questions.current[questionError]);\n    }\n    return isValid;\n  };\n\n  const validatePositionTitle = () => {\n    if (approvalTemplateData?.config.hide_position_title) return true;\n    setPositionTitleError('');\n    if (positionTitle) {\n      return true;\n    } else {\n      setPositionTitleError('Position title is required to create an approval form.');\n      scrollToElement(fieldRefs.positionTitle);\n      return false;\n    }\n  };\n\n  const validateApprovalManagers = () => {\n    const newApprovers = [...approvers];\n    let isValid = true;\n    newApprovers.map((approver, i) => {\n      approver.error = '';\n      if (!approver.email) {\n        newApprovers[i].error = 'Please choose an approver or delete the row.';\n        isValid = false;\n      } else if (!validateEmail(approver.email)) {\n        newApprovers[i].error = 'Please enter a valid email address.';\n        isValid = false;\n      }\n    });\n    if (!isValid) {\n      scrollToElement(fieldRefs.approvalManagers);\n    }\n    setApprovers(newApprovers);\n    return isValid;\n  };\n\n  const validateEmail = (email: string) => {\n    return String(email)\n      .toLowerCase()\n      .match(\n        /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|.(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n      );\n  };\n\n  const validateRequesterAttributes = () => {\n    const errors = { name: '', email: '', phone: '' };\n    let isValid = true;\n    if (!name) {\n      errors.name = 'Please fill in the name field.';\n      isValid = false;\n    }\n    if (!email) {\n      errors.email = 'Please fill in the email field.';\n      isValid = false;\n    } else if (!validateEmail(email)) {\n      errors.email = 'Please enter a proper email address';\n      isValid = false;\n    }\n    if (\n      phone !== '' &&\n      !/^[\\+]?[(]?[0-9]{3}[)]?[-\\s\\.]?[0-9]{3}[-\\s\\.]?[0-9]{4,6}$/im.test(phone)\n    ) {\n      errors.phone = 'Please enter a proper phone number.';\n      isValid = false;\n    }\n    if (!isValid) {\n      scrollToElement(fieldRefs.requesterAttributes);\n    }\n    setRequesterAttributesErrors(errors);\n    return isValid;\n  };\n\n  const answers_attributes = {};\n  Object.entries(approvalFormQuestions).forEach(([id, value], index) => {\n    answers_attributes[index] = getAnswerAttributes(id, value);\n  });\n\n  const approvers_attributes = {};\n  approvers.map((approver, i) => {\n    approvers_attributes[i] = {\n      id: approver.id,\n      email: approver.email.includes('*') ? approver.email.slice(1) : approver.email,\n      position: 0,\n      required: approver.email.includes('*'),\n      _destroy: approver.destroyed\n    };\n  });\n\n  const documents_attributes = {};\n  fileList.map((document, i) => {\n    documents_attributes[i] = {\n      attached: document\n    };\n  });\n\n  const requisition_requester_attributes = {\n    name,\n    email,\n    phone\n  };\n\n  const approvalAttributes = {\n    requisition_form_id: templateId,\n    position_title: positionTitle,\n    documents_attributes,\n    to_email: approvalAdministrator,\n    approvers_attributes\n  };\n\n  const approvalData = {\n    requisition: {\n      ...approvalAttributes,\n      answers_attributes,\n      requisition_requester_attributes\n    }\n  };\n\n  const handleSubmitApproval = async () => {\n    if (\n      !validateRequesterAttributes() ||\n      !validatePositionTitle() ||\n      !validateQuestions() ||\n      !validateApprovalManagers()\n    )\n      return;\n    const formData = serialize(approvalData);\n\n    try {\n      const response = await fetch(\n        `${BASE_URL}/api/v4/requisitions/submit_public_requisition?token=${token}`,\n        {\n          method: 'POST',\n          body: formData\n        }\n      ).then((res) => res.json());\n      if (response.success) {\n        setRequisitionId(response.requisition_id);\n      } else {\n        throw response.errors;\n      }\n    } catch (error) {\n      setSnackbar({\n        message: `Something went wrong: ${error}. Please try again.`,\n        state: 'error'\n      });\n    }\n  };\n\n  const handleLookUpButton = async (questionId: number, positionId: number) => {\n    setFetchingCSV(true);\n    try {\n      const data = await Api.getCSVData(questionId, positionId);\n      setApprovers(\n        data.res.approvers.map((approver: string) => ({\n          email: approver.toLowerCase(),\n          destroyed: false\n        }))\n      );\n      questions?.map((question) => {\n        const answerExist = data.res.fields[0][question.original_title];\n        if (answerExist) {\n          setApprovalFormQuestions((prev) => ({\n            ...prev,\n            [question.id]: {\n              ...prev[question.id],\n              data:\n                question.type === 'SelectField' || question.type === 'RadioButtonField'\n                  ? question.field_choices.find((e) => e.name === answerExist)?.id\n                  : answerExist\n            }\n          }));\n        }\n      });\n    } catch (err) {\n      setSnackbar({\n        message: `Failed to fetch csv data, ${err}`,\n        state: 'error'\n      });\n    } finally {\n      setFetchingCSV(false);\n    }\n  };\n\n  useEffect(() => {\n    if (!approvalTemplateData) return;\n    const questionsData = approvalTemplateData.fields.filter((question) => question.enabled);\n    setAdministratorList(approvalTemplateData.approvers);\n    setQuestions(questionsData);\n    questionsData && setApprovalFormQuestions(createApprovalFormQuestionsObject(questionsData));\n    // If no default approvers set in approval template but has default approvers in entity level\n    if (approvalTemplateData.config.default_approvers) {\n      setApprovers(\n        approvalTemplateData.config.default_approvers.split(',').map((approver) => ({\n          email: approver,\n          destroyed: false,\n          mandatoryBlank: approver === '*'\n        }))\n      );\n    } else if (approvalTemplateData.entity_default_approver) {\n      setApprovers(\n        approvalTemplateData.entity_default_approver.map((approver) => ({\n          email: approver.required ? `*${approver.email}` : approver.email,\n          destroyed: false,\n          mandatoryBlank: approver.required\n        }))\n      );\n    }\n  }, [approvalTemplateData]);\n\n  const handleAddApprover = () => {\n    setApprovers([...approvers, { email: '', destroyed: false }]);\n  };\n\n  const removeApprover = (i: number) => {\n    if (approvers.length > 1) {\n      const newApprovers = [...approvers];\n      if (newApprovers[i].id) {\n        newApprovers[i].destroyed = true;\n      } else {\n        newApprovers.splice(i, 1);\n      }\n      setApprovers(newApprovers);\n    }\n  };\n\n  const handleEmailChange = (i: number, value: IApprovalManagers) => {\n    const newApprovers = [...approvers];\n    newApprovers[i].email = value ? value.email : '';\n    setApprovers(newApprovers);\n  };\n\n  const handleDeleteAttachment = (index: number) => {\n    const updatedFileList = fileList.filter((file, i) => i !== index);\n\n    setFileList(updatedFileList);\n  };\n\n  return (\n    <Box>\n      {requisitionId ? (\n        <Stack sx={{ rowGap: 2, fontSize: '16px' }}>\n          <Stack sx={{ fontSize: '22px', fontWeight: 'bold' }}>\n            Your request was successfully submitted.\n          </Stack>\n          <Stack>Your requisition number is {requisitionId}.</Stack>\n          <Stack>\n            You will receive a notification when your requisition is approved or declined.\n          </Stack>\n          <Stack>It is safe to leave this page.</Stack>\n        </Stack>\n      ) : (\n        <Box>\n          <Box sx={{ padding: 2, paddingLeft: 'unset' }} ref={fieldRefs.requesterAttributes}>\n            <Box sx={{ paddingBottom: 3 }}>\n              <DebouncedFormTextField\n                onDebouncedChange={(value: string) => {\n                  setName(value);\n                }}\n                label=\"Your full name\"\n                styles={{ width: '300px' }}\n                required\n                id=\"full-name\"\n                defaultValue={name}\n                error={requesterAttributesErrors.name}\n              />\n            </Box>\n            <Box sx={{ paddingBottom: 3 }}>\n              <DebouncedFormTextField\n                onDebouncedChange={(value: string) => {\n                  setEmail(value);\n                }}\n                label=\"Your email\"\n                styles={{ width: '300px' }}\n                required\n                id=\"email\"\n                defaultValue={email}\n                error={requesterAttributesErrors.email}\n              />\n            </Box>\n            <Box sx={{ paddingBottom: 3 }}>\n              <DebouncedFormTextField\n                onDebouncedChange={(value: string) => {\n                  setPhone(value);\n                }}\n                label=\"Your phone number\"\n                styles={{ width: '300px' }}\n                // eslint-disable-next-line max-lines\n                id=\"phone-number\"\n                defaultValue={phone}\n                error={requesterAttributesErrors.phone}\n              />\n            </Box>\n          </Box>\n          <Box sx={{ padding: 2, paddingLeft: 'unset' }}>\n            {loadingData ? (\n              <Skeleton animation=\"wave\" width={600} height={56} />\n            ) : (\n              <>\n                {!Number(approvalTemplateData?.config.hide_position_title) && (\n                  <Box sx={{ paddingBottom: 3 }}>\n                    <DebouncedFormTextField\n                      onDebouncedChange={(value: string) => {\n                        setPositionTitle(value);\n                      }}\n                      label=\"Vacancy position title\"\n                      defaultValue={positionTitle}\n                      styles={{ width: '300px' }}\n                      required\n                      innerRef={fieldRefs.positionTitle}\n                      error={positionTitleError}\n                    />\n                  </Box>\n                )}\n                {questions?.map((question, index) => (\n                  <Box sx={{ paddingBottom: 3 }} key={question.id}>\n                    <QuestionFieldGenerator\n                      question={question}\n                      questionRef={(el) => (fieldRefs.questions.current[index] = el)}\n                      questionError={questionErrors[question.id]}\n                      onChangeCallback={(id, value) => {\n                        setApprovalFormQuestions((prev) => ({\n                          ...prev,\n                          [id]: {\n                            ...prev[id],\n                            data: value\n                          }\n                        }));\n                        setQuestionErrors((prev) => ({\n                          ...prev,\n                          [id]: value || !question.required ? '' : 'This field is required'\n                        }));\n                      }}\n                      handleLookUpButton={handleLookUpButton}\n                      answer={approvalFormQuestions[question.id]?.data}\n                      fetchingCSV={fetchingCSV}\n                    />\n                  </Box>\n                ))}\n              </>\n            )}\n          </Box>\n          <Box sx={{ padding: 2, paddingLeft: 'unset' }}>\n            <Stack sx={{ ...classes.sectionHeader, paddingBottom: 2 }}>Documents</Stack>\n            <AttachmentSelector\n              performUpload={false}\n              apiKey={apiKey}\n              setFileList={(file) => {\n                setFileList((previous) => [...previous, ...file]);\n              }}\n              maxSize={50000000}\n            />\n            {fileList &&\n              fileList.map(\n                (file, index) =>\n                  file.name && (\n                    <Box key={index} sx={classes.fileContainer}>\n                      <Box sx={classes.fileIconContainer}>\n                        <Box sx={classes.fileIcon}>{DocTypeIcon(file.name.split('.').pop())}</Box>\n                        <Box>\n                          <Box sx={classes.fileName}>{file.name}</Box>\n                          <Box sx={classes.fileSize}>\n                            {moment(file.lastModified).format('Do MMMM YYYY[,] h:mma')}\n                          </Box>\n                        </Box>\n                      </Box>\n                      <IconButton onClick={() => handleDeleteAttachment(index)}>\n                        <DeleteIcon sx={{ color: '#D6827D' }} />\n                      </IconButton>\n                    </Box>\n                  )\n              )}\n          </Box>\n          {loadingData ? (\n            <Skeleton animation=\"wave\" width={600} height={56} />\n          ) : (\n            <>\n              {!Number(approvalTemplateData?.config.hide_approval_administrator) &&\n                administratorList && (\n                  <Box sx={{ padding: 2, paddingLeft: 'unset' }}>\n                    <Stack sx={{ ...classes.sectionHeader, paddingBottom: 2 }}>\n                      Approval Administrator\n                    </Stack>\n                    <Autocomplete\n                      disablePortal\n                      options={administratorList}\n                      getOptionLabel={(option) => option.label}\n                      value={\n                        administratorList.find(\n                          (manager) => manager.value === approvalAdministrator\n                        ) || null\n                      }\n                      onChange={(event, value) =>\n                        value ? setApprovalAdministrator(value.value) : setApprovalAdministrator('')\n                      }\n                      sx={{ width: '300px', paddingTop: 3, ...sharedClasses.formAutocomplete }}\n                      ListboxProps={{\n                        style: {\n                          fontFamily: 'Source Sans Pßro, sans-serif',\n                          color: '#333333',\n                          maxHeight: '200px'\n                        }\n                      }}\n                      renderInput={(params) => (\n                        <TextField\n                          {...params}\n                          label=\"Send to\"\n                          InputLabelProps={{ shrink: true }}\n                          placeholder=\"Please select\"\n                        />\n                      )}\n                    />\n                  </Box>\n                )}\n            </>\n          )}\n          {loadingApprovers ? (\n            <Skeleton animation=\"wave\" width={600} height={56} />\n          ) : (\n            <Box sx={{ padding: 2, paddingLeft: 'unset' }}>\n              <Stack sx={classes.sectionHeader} ref={fieldRefs.approvalManagers}>\n                Approvers\n              </Stack>\n              {approvers.map((approver, index) => {\n                const mandatory = approver.email.includes('*');\n                const mandatoryBlank = approver.mandatoryBlank;\n                const value = approvalManagers.find(\n                  (manager) =>\n                    (mandatory ? approver.email.slice(1) : approver.email) === manager.email\n                );\n                return (\n                  <React.Fragment key={`${value?.id}-${index}`}>\n                    {!approver.destroyed && (\n                      <Box sx={classes.approversContainer}>\n                        <Autocomplete\n                          disablePortal\n                          disabled={!mandatoryBlank && mandatory}\n                          options={approvalManagers}\n                          getOptionLabel={(option) => `${option.name} (${option.email})`}\n                          value={value || null}\n                          onChange={(event, value) => handleEmailChange(index, value)}\n                          sx={{ width: '300px', ...sharedClasses.formAutocomplete }}\n                          ListboxProps={{\n                            style: {\n                              fontFamily: 'Source Sans Pro, sans-serif',\n                              color: '#333333',\n                              maxHeight: '200px'\n                            }\n                          }}\n                          renderInput={(params) => (\n                            <>\n                              <TextField\n                                {...params}\n                                label=\"Email\"\n                                InputLabelProps={{ shrink: true }}\n                                placeholder=\"Please select\"\n                              />\n                              {approver.error && (\n                                <Stack sx={{ color: '#E37D7A', fontSize: '13px', paddingLeft: 1 }}>\n                                  {approver.error}\n                                </Stack>\n                              )}\n                            </>\n                          )}\n                        />\n                        {!mandatoryBlank && !mandatory && (\n                          <Button\n                            sx={{ '&:hover': { backgroundColor: 'inherit' } }}\n                            onClick={() => removeApprover(index)}\n                          >\n                            <CloseIcon color=\"warning\" sx={{ cursor: 'pointer' }} />\n                          </Button>\n                        )}\n                      </Box>\n                    )}\n                  </React.Fragment>\n                );\n              })}\n              <Box sx={{ paddingTop: 1 }}>\n                <Button\n                  sx={{\n                    ...classes.draftButton,\n                    fontSize: '12px',\n                    padding: '4px 12px',\n                    height: '30px'\n                  }}\n                  onClick={handleAddApprover}\n                >\n                  Add approver\n                </Button>\n              </Box>\n            </Box>\n          )}\n          <Box\n            sx={{ ...classes.footerButtons, justifyContent: 'flex-start', paddingLeft: 'unset' }}\n          >\n            <LoadingButton\n              id=\"submit-new-approval\"\n              type=\"submit\"\n              sx={{ ...sharedClasses.saveButton, width: 'auto' }}\n              task={handleSubmitApproval}\n            >\n              Submit Requisition for Approval\n            </LoadingButton>\n          </Box>\n          <StyledSnackbar\n            message={snackbar.message}\n            state={snackbar.state}\n            setSnackbarState={setSnackbar}\n          />\n        </Box>\n      )}\n    </Box>\n  );\n}\n","import React, { useState, useCallback, useEffect, SetStateAction, Dispatch } from 'react';\nimport Box from '@mui/material/Box';\nimport ApprovalPublicLinksTable from './ApprovalPublicLinksTable';\nimport Api from '../API';\nimport { IApprovalPublicLink, IGetApprovalPublicLinks, TSetApprovalPublicLinkPreferences } from '../ApprovalTemplates/types';\nimport { styles } from '../styles';\nimport StyledSnackbar from '../../Components/CustomUIElements/StyledSnackbar';\nimport { IUserPermissions } from '../../Components/sharedTypes';\nimport { fetchPreferences, updateUiSettings } from '../../helpers/uiPreferencesHelpers';\n\nexport default function ApprovalPublicLinks({\n  apiKey,\n  userPermissions,\n  isPublicLinkDialogOpen,\n  setIsPublicLinkDialogOpen\n}: {\n  apiKey: string;\n  userPermissions: IUserPermissions | undefined;\n  isPublicLinkDialogOpen: boolean;\n  setIsPublicLinkDialogOpen: Dispatch<SetStateAction<boolean>>;\n}) {\n  const [approvalPublicLinks, setApprovalPublicLinks] = useState<IApprovalPublicLink[]>([]);\n  const [isLoading, setIsLoading] = useState<boolean>(false);\n  const [snackbar, setSnackbar] = useState<{\n    message: string;\n    state: 'success' | 'warning' | 'error';\n  }>({\n    message: '',\n    state: 'success'\n  });\n  const [selected, setSelected] = useState<number[]>([]);\n  const [globalSelected, setGlobalSelected] = useState([]);\n  const [selectAllIsChecked, setSelectAllIsChecked] = useState(false);\n  const [selectAllIsIndeterminate, setSelectAllIsIndeterminate] = useState(false);\n  const [rowsPerPage, setRowsPerPage] = useState(10);\n  const [totalPages, setTotalPages] = useState(0);\n  const [totalApprovalPublicLinks, setTotalApprovalPublicLinks] = useState(0);\n  const [sortBy, setSortBy] = useState<string>('created_at');\n  const [sortOrder, setSortOrder] = useState<string>('desc');\n  const [currentPage, setCurrentPage] = useState(1);\n  const [density, setDensity] = useState<string>('Default');\n\n  const getFirstApprovalPublicLinksAndPreferences = useCallback(async () => {\n    setIsLoading(true);\n    try {\n      const { res: preferenceData } = await fetchPreferences('approval_public_links');\n      const { res: densityData } = await fetchPreferences('universal');\n      const preference = preferenceData?.ui_preferences[0];\n      const densityPreference = densityData?.ui_preferences[0];\n      preference?.sorting?.sortBy && setSortBy(preference.sorting.sortBy);\n      preference?.sorting?.sortOrder && setSortOrder(preference.sorting.sortOrder.toLowerCase());\n      const sessionPage = sessionStorage.getItem(`approvalPublicLinksTablePage`);\n      sessionPage && setCurrentPage(Number(sessionPage));\n      preference?.row_count && setRowsPerPage(preference.row_count);\n      densityPreference?.columns?.density && setDensity(densityPreference?.columns?.density);\n\n      const response = await Api.getApprovalPublicLinks(\n        {\n          page: sessionPage ? Number(sessionPage) : 1,\n          limit: preference?.row_count || rowsPerPage,\n          sort: preference?.sorting?.sortBy || 'updated_at',\n          sort_order: (preference?.sorting?.sortOrder?.toLowerCase() || 'desc').toUpperCase()\n        }\n      );\n      setApprovalPublicLinks(response.res.requisition_public_links);\n      setTotalPages(parseInt(response.resHead['x-total-pages']));\n      setTotalApprovalPublicLinks(parseInt(response.resHead['x-total-count']));\n    } catch (error) {\n      setSnackbar({\n        message: 'There was an error getting approval public links',\n        state: 'error'\n      });\n    } finally {\n      setIsLoading(false);\n    }\n  }, []);\n\n  const setUserPreferences: TSetApprovalPublicLinkPreferences = async (limit, sort) => {\n    await updateUiSettings(\n      {\n        source: 'approval_public_links',\n        row_count: limit || rowsPerPage,\n        sorting: sort\n      },\n      () => alertError('There was an error saving your preferences')\n    );\n  };\n\n  const alertError = (message: string) => {\n    setSnackbar({ message, state: 'error' });\n  };\n\n  const getApprovalPublicLinks: IGetApprovalPublicLinks = async (page, limit, sort) => {\n    setIsLoading(true);\n    try {\n      const response = await Api.getApprovalPublicLinks(\n        {\n          page: page || currentPage,\n          limit: limit || rowsPerPage,\n          sort: sort?.sortBy || sortBy,\n          sort_order: (sort?.sortOrder || sortOrder).toUpperCase()\n        }\n      );\n      setApprovalPublicLinks(response.res.requisition_public_links);\n      setTotalPages(parseInt(response.resHead['x-total-pages']));\n      setTotalApprovalPublicLinks(parseInt(response.resHead['x-total-count']));\n      setSelectAllIsChecked(\n        response.res.requisition_public_links\n          .map((requisitionPublicLink) => requisitionPublicLink.created_by)\n          .every((id: number) =>\n            globalSelected\n              .map((requisitionPublicLink) => requisitionPublicLink.created_by)\n              .includes(id)\n          )\n      );\n      setSelectAllIsIndeterminate(\n        response.res.requisition_public_links\n          .map((requisitionPublicLink) => requisitionPublicLink.created_by)\n          .some((id: number) =>\n            globalSelected\n              .map((requisitionPublicLink) => requisitionPublicLink.created_by)\n              .includes(id)\n          )\n      );\n    } catch (error) {\n      setSnackbar({\n        message: 'There was an error getting approval templates',\n        state: 'error'\n      });\n    } finally {\n      if (sort) {\n        setUserPreferences(null, sort);\n      } else if (limit) {\n        setUserPreferences(limit, null);\n      }\n      setIsLoading(false);\n    }\n  };\n\n  useEffect(() => {\n    getFirstApprovalPublicLinksAndPreferences();\n  }, [apiKey, getFirstApprovalPublicLinksAndPreferences]);\n\n  return (\n    <Box>\n      <ApprovalPublicLinksTable\n        approvalPublicLinks={approvalPublicLinks}\n        setApprovalPublicLinks={setApprovalPublicLinks}\n        getApprovalPublicLinks={getApprovalPublicLinks}\n        globalSelected={globalSelected}\n        setGlobalSelected={setGlobalSelected}\n        selectAllIsChecked={selectAllIsChecked}\n        setSelectAllIsChecked={setSelectAllIsChecked}\n        selectAllIsIndeterminate={selectAllIsIndeterminate}\n        setSelectAllIsIndeterminate={setSelectAllIsIndeterminate}\n        setSnackbarState={setSnackbar}\n        isLoading={isLoading}\n        setIsLoading={setIsLoading}\n        selected={selected}\n        setSelected={setSelected}\n        currentPage={currentPage}\n        setCurrentPage={setCurrentPage}\n        rowsPerPage={rowsPerPage}\n        setRowsPerPage={setRowsPerPage}\n        totalPages={totalPages}\n        totalApprovalPublicLinks={totalApprovalPublicLinks}\n        sortBy={sortBy}\n        setSortBy={setSortBy}\n        sortOrder={sortOrder}\n        setSortOrder={setSortOrder}\n        apiKey={apiKey}\n        userPermissions={userPermissions}\n        density={density}\n        isPublicLinkDialogOpen={isPublicLinkDialogOpen}\n        setIsPublicLinkDialogOpen={setIsPublicLinkDialogOpen}\n      />\n      <StyledSnackbar\n        message={snackbar.message}\n        state={snackbar.state}\n        setSnackbarState={setSnackbar}\n      />\n    </Box>\n  );\n}\n","import React, { useState, useRef } from 'react';\nimport Box from '@mui/material/Box';\nimport { IApprovalPublicLinkTableProps, IApprovalPublicLink } from '../ApprovalTemplates/types';\nimport Table from '@mui/material/Table';\nimport TableBody from '@mui/material/TableBody';\nimport TableCell from '@mui/material/TableCell';\nimport TableContainer from '@mui/material/TableContainer';\nimport TableHead from '@mui/material/TableHead';\nimport TableRow from '@mui/material/TableRow';\nimport TableSortLabel from '@mui/material/TableSortLabel';\nimport Paper from '@mui/material/Paper';\nimport Pagination from '@mui/material/Pagination';\nimport MenuItem from '@mui/material/MenuItem';\nimport FormControl from '@mui/material/FormControl';\nimport Select from '@mui/material/Select';\nimport Checkbox from '@mui/material/Checkbox';\nimport Button from '@mui/material/Button';\nimport Skeleton from '@mui/material/Skeleton';\nimport IconButton from '@mui/material/IconButton';\nimport EditIcon from '@mui/icons-material/Edit';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport KeyboardArrowLeftIcon from '@mui/icons-material/KeyboardArrowLeft';\nimport KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight';\nimport moment from 'moment-timezone';\nimport { classes } from '../../Job/Applications/styles';\nimport { approvalPublicLinkHeaders } from '../config';\nimport Api from '../API';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport NewApprovalPublicLink from '../NewApprovalPublicLink/NewApprovalPublicLinkModal';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\nimport Tooltip from '@mui/material/Tooltip';\n\nconst tablePadding = (density: string) => {\n  if (density === 'Default') {\n    return '22px';\n  } else if (density === 'Compact') {\n    return '15px';\n  } else {\n    return '8px';\n  }\n};\n\nexport default function ApprovalPublicLinksTable({\n  approvalPublicLinks,\n  setApprovalPublicLinks,\n  getApprovalPublicLinks,\n  globalSelected,\n  setGlobalSelected,\n  selectAllIsChecked,\n  setSelectAllIsChecked,\n  selectAllIsIndeterminate,\n  setSelectAllIsIndeterminate,\n  setSnackbarState,\n  isLoading,\n  setIsLoading,\n  selected,\n  setSelected,\n  currentPage,\n  setCurrentPage,\n  rowsPerPage,\n  setRowsPerPage,\n  totalPages,\n  totalApprovalPublicLinks,\n  sortBy,\n  setSortBy,\n  sortOrder,\n  setSortOrder,\n  apiKey,\n  userPermissions,\n  density,\n  isPublicLinkDialogOpen,\n  setIsPublicLinkDialogOpen\n}: IApprovalPublicLinkTableProps) {\n  const timeZoneString = Intl.DateTimeFormat().resolvedOptions().timeZone;\n  const [selectedApprovalPublicLink, setSelectedApprovalPublicLink] = useState<{\n    id: null | number;\n  }>({ id: null });\n  const [selectAllApprovalPublicLinks, setSelectAllApprovalPublicLinks] = useState<boolean>(false);\n  const [actionsAnchorEl, setActionsAnchorEl] = useState(null);\n  const [tableHovered, setTableHovered] = useState(false);\n  const [canScroll, setCanScroll] = useState([false, true]);\n  const tableRef = useRef<HTMLDivElement>(null);\n  const actionCellRef = useRef(null);\n  const titleCellRef = useRef(null);\n  const [deleteAlertOpen, setDeleteAlertOpen] = useState(false);\n  const [deleteApprovalPublicLinks, setDeleteApprovalPublicLinks] = useState([]);\n  const [newApprovalOptions, setNewApprovalOptions] = useState<string[]>([]);\n  const [editingApprovalPublicLink, setEditingApprovalPublicLink] =\n    useState<IApprovalPublicLink | null>(null);\n  const [copied, setCopied] = useState<number>(0);\n\n  const handleSelectAll = (event: React.ChangeEvent<HTMLInputElement>) => {\n    const newGlobalSelected = globalSelected.filter(\n      (currentApp) => !approvalPublicLinks.map((app) => app.id).includes(currentApp.id)\n    );\n    if (event.target.checked) {\n      const selectAllGlobalSelected = [...newGlobalSelected, ...approvalPublicLinks];\n      setSelected(selectAllGlobalSelected.map((approvalPublicLink) => approvalPublicLink.id));\n      setGlobalSelected(selectAllGlobalSelected);\n      setSelectAllIsChecked(true);\n      setSelectAllIsIndeterminate(false);\n      setSelectAllApprovalPublicLinks(true);\n      return;\n    }\n    setSelected(newGlobalSelected.map((approvalPublicLink) => approvalPublicLink.id));\n    setGlobalSelected([]);\n    setSelectAllIsChecked(false);\n    setSelectAllIsIndeterminate(false);\n    setSelectAllApprovalPublicLinks(false);\n  };\n\n  const clearAllSelection = () => {\n    setSelectAllApprovalPublicLinks(false);\n    setGlobalSelected([]);\n    setSelected([]);\n    setSelectAllIsChecked(false);\n    setSelectAllIsIndeterminate(false);\n  };\n\n  const handleDeleteApprovalPublicLinks = async (ids: Array<number>) => {\n    setIsLoading(true);\n    try {\n      const response = await Api.deleteApprovalPublicLinks(\n        { requisition_public_link_ids: ids }\n      );\n\n      if (response.res?.requisition_public_link_ids?.failure?.length) {\n        const message =\n          response.res.requisition_public_link_ids.success?.length > 0 ||\n          response.res.requisition_public_link_ids.failure?.length > 1\n            ? `${response.res.requisition_public_link_ids.failure?.length} ${\n                response.res.requisition_public_link_ids.failure?.length > 1\n                  ? 'approval public links were'\n                  : 'approval public link was'\n              } unable to be trashed.`\n            : `${\n                response.res.requisition_public_link_ids.failure?.length === 1\n                  ? `Unable to trash approval public link.`\n                  : ''\n              }`;\n        setSnackbarState({\n          message: message,\n          state: 'error'\n        });\n      } else {\n        setSnackbarState({\n          message: `Approval public ${\n            ids.length > 1 ? 'links were' : 'link was'\n          } successfully removed.`,\n          state: 'success'\n        });\n      }\n    } catch (error) {\n      setSnackbarState({\n        message: error?.errors,\n        state: 'error'\n      });\n    } finally {\n      setSelected([]);\n      setGlobalSelected([]);\n      setSelectedApprovalPublicLink({ id: null });\n      setActionsAnchorEl(null);\n      getApprovalPublicLinks();\n    }\n  };\n\n  const handleSelectOne = (\n    event: React.ChangeEvent<HTMLInputElement>,\n    approvalPublicLink: IApprovalPublicLink\n  ) => {\n    let newGlobalSelected = [...globalSelected];\n    event.target.checked\n      ? newGlobalSelected.push(approvalPublicLink)\n      : (newGlobalSelected = newGlobalSelected.filter((app) => app.id !== approvalPublicLink.id));\n    const newSelected = newGlobalSelected.map((app) => app.id);\n    setSelected(newSelected);\n    setGlobalSelected(newGlobalSelected);\n    setSelectAllIsChecked(\n      approvalPublicLinks.map((app) => app.id).every((id) => newSelected.includes(id))\n    );\n    setSelectAllIsIndeterminate(\n      approvalPublicLinks.map((app) => app.id).some((id) => newSelected.includes(id))\n    );\n  };\n\n  const handleRowsPerPageChange = (selection: number) => {\n    if (selection === rowsPerPage) return;\n    setRowsPerPage(selection);\n    getApprovalPublicLinks(null, selection, null, null, null);\n  };\n\n  const handlePageChange = (event: React.ChangeEvent<unknown>, newPage: number) => {\n    if (newPage === currentPage) return;\n    setCurrentPage(newPage);\n    sessionStorage.setItem(`approvalPublicLinksTablePage`, newPage);\n    getApprovalPublicLinks(newPage, null, null, null, null);\n  };\n\n  const handleSortChange = (\n    event: React.MouseEvent<HTMLSpanElement, MouseEvent>,\n    columnValue: string\n  ) => {\n    const isAsc = sortBy === columnValue && sortOrder === 'asc';\n    const newSortOrder = isAsc ? 'desc' : 'asc';\n    setSortOrder(newSortOrder);\n    setSortBy(columnValue);\n    getApprovalPublicLinks(null, null, { sortBy: columnValue, sortOrder: newSortOrder });\n  };\n\n  const handleScroll = () => {\n    if (tableRef.current.scrollLeft < 10) {\n      setCanScroll([false, true]);\n    } else if (\n      tableRef.current.scrollLeft >\n      tableRef.current.scrollWidth - tableRef.current.clientWidth - 10\n    ) {\n      setCanScroll([true, false]);\n    } else {\n      setCanScroll([true, true]);\n    }\n  };\n\n  const handleScrollLeft = () => {\n    tableRef.current.scrollLeft > 360\n      ? (tableRef.current.scrollLeft -= 300)\n      : (tableRef.current.scrollLeft = 0);\n  };\n\n  const handleScrollRight = () => {\n    tableRef.current.scrollWidth - tableRef.current.clientWidth > 360\n      ? (tableRef.current.scrollLeft += 300)\n      : (tableRef.current.scrollLeft = tableRef.current.scrollWidth - tableRef.current.clientWidth);\n  };\n\n  function isScrollable(element: HTMLElement) {\n    return element && element.scrollWidth > element.clientWidth + 20;\n  }\n\n  const handleScrollableEnter = () => {\n    if (isScrollable(tableRef.current)) setTableHovered(true);\n  };\n\n  const handleScrollableExit = () => {\n    setTableHovered(false);\n  };\n\n  const handleEditApprovalPublicLink = (publicLink: IApprovalPublicLink) => {\n    setIsPublicLinkDialogOpen(true);\n    setEditingApprovalPublicLink(publicLink);\n  };\n\n  const handleCopy = (id: number) => {\n    setCopied(id);\n    setTimeout(() => setCopied(0), 3000);\n  };\n\n  const headerStyle = (name: string) => {\n    switch (name) {\n      case 'name':\n        return {\n          ...classes.sticky,\n          ...classes.scrollShadowLeft,\n          ...(tableHovered && classes.scrollShadowVisible),\n          minWidth: '200px',\n          left: '58px'\n        };\n      case 'approval_template_name':\n        return { minWidth: '210px' };\n      case 'created_by':\n        return { minWidth: '140px' };\n      default:\n        return { minWidth: '90px' };\n    }\n  };\n\n  return (\n    <Box>\n      <Box sx={{ position: 'relative' }}>\n        <Box sx={classes.arrowsContainer}>\n          <Box\n            onClick={handleScrollLeft}\n            onMouseEnter={handleScrollableEnter}\n            sx={{\n              ...classes.leftArrow,\n              ...(tableHovered && canScroll[0] && classes.showArrows),\n              left: `${titleCellRef.current?.getBoundingClientRect().right}px`,\n              top: 0\n            }}\n            id=\"left-arrow\"\n          >\n            <KeyboardArrowLeftIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n          </Box>\n        </Box>\n        <Box sx={classes.arrowsContainer}>\n          <Box\n            onMouseEnter={handleScrollableEnter}\n            onClick={handleScrollRight}\n            sx={{\n              ...classes.rightArrow,\n              ...(tableHovered && canScroll[1] && classes.showArrows),\n              left: `${actionCellRef.current?.getBoundingClientRect().left - 40}px`,\n              top: 0\n            }}\n            id=\"right-arrow\"\n          >\n            <KeyboardArrowRightIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n          </Box>\n        </Box>\n        <TableContainer\n          sx={{ boxShadow: 'none', scrollBehavior: 'smooth' }}\n          component={Paper}\n          onMouseEnter={handleScrollableEnter}\n          onMouseLeave={handleScrollableExit}\n          ref={tableRef}\n          onScroll={handleScroll}\n        >\n          <Table\n            sx={{\n              ...classes.tableWrapper,\n              'th, td, tr, thead': { padding: `${tablePadding(density)} 10px` }\n            }}\n            aria-label=\"approval PublicLinks\"\n          >\n            <TableHead>\n              <TableRow>\n                <TableCell sx={{ ...classes.sticky, width: '58px' }}>\n                  <Checkbox\n                    id=\"select-all-checkbox\"\n                    sx={classes.checkbox}\n                    indeterminate={!selectAllIsChecked && selectAllIsIndeterminate}\n                    checked={selectAllIsChecked}\n                    onChange={handleSelectAll}\n                    inputProps={{\n                      'aria-label': 'select all approval PublicLinks'\n                    }}\n                  />\n                </TableCell>\n                {approvalPublicLinkHeaders.map((header) => (\n                  <TableCell\n                    key={header.name}\n                    sx={headerStyle(header.name)}\n                    ref={header.name === 'name' ? titleCellRef : null}\n                  >\n                    <TableSortLabel\n                      active={sortBy === header.name}\n                      direction={sortBy === header.name ? (sortOrder as 'asc' | 'desc') : 'asc'}\n                      onClick={(event) => handleSortChange(event, header.name)}\n                      sx={header.sortable ? classes.sortable : null}\n                      disabled={!header.sortable}\n                      id={`${header.name}-sort-label-approval-public-links`}\n                    >\n                      {header.label}\n                    </TableSortLabel>\n                  </TableCell>\n                ))}\n                <TableCell\n                  sx={{\n                    ...classes.attachmentsHeader,\n                    ...classes.stickyRight,\n                    ...classes.scrollShadowRight,\n                    ...(tableHovered && classes.scrollShadowVisible)\n                  }}\n                />\n              </TableRow>\n            </TableHead>\n            <TableBody>\n              {approvalPublicLinks &&\n                !isLoading &&\n                approvalPublicLinks.map((approvalPublicLink: IApprovalPublicLink, index) => {\n                  const updatedAt = approvalPublicLink.updated_at\n                    ? moment\n                        .tz(approvalPublicLink.updated_at, timeZoneString)\n                        .format('DD MMM YYYY,-h:mma z')\n                        .split('-')\n                        .map((line) => <div key={`${approvalPublicLink.id}-${line}`}>{line}</div>)\n                    : '-';\n                  return (\n                    <TableRow key={approvalPublicLink.id}>\n                      <TableCell sx={{ ...classes.sticky, width: '58px' }}>\n                        <Checkbox\n                          id={`select-checkbox-${approvalPublicLink.id}`}\n                          sx={classes.checkbox}\n                          checked={selected.includes(approvalPublicLink.id)}\n                          onChange={(event) => handleSelectOne(event, approvalPublicLink)}\n                          inputProps={{\n                            'aria-label': `select approval public link ${approvalPublicLink.name}`\n                          }}\n                        />\n                      </TableCell>\n                      <TableCell\n                        sx={{\n                          ...classes.sticky,\n                          minWidth: '200px',\n                          left: '58px',\n                          ...classes.scrollShadowLeft,\n                          ...(tableHovered && classes.scrollShadowVisible)\n                        }}\n                      >\n                        <Box\n                          sx={{\n                            '& a': {\n                              color: '#666666',\n                              fontWeight: 'bold',\n                              '&:hover': {\n                                textDecoration: 'none'\n                              }\n                            }\n                          }}\n                        >\n                          <a className=\"approval-public-link-title-link\">\n                            {approvalPublicLink.name || '-'}\n                          </a>\n                        </Box>\n                      </TableCell>\n                      <TableCell>\n                        <Box sx={classes.linkContainer}>\n                          <>\n                            <a\n                              href={approvalPublicLink?.public_link}\n                              target=\"_blank\"\n                              rel=\"noopener noreferrer\"\n                            >\n                              <Box id=\"public-link-external-link\" sx={classes.link}>\n                                {approvalPublicLink.public_link}\n                              </Box>\n                            </a>\n                            <CopyToClipboard\n                              text={approvalPublicLink?.public_link}\n                              onCopy={() => handleCopy(approvalPublicLink.id)}\n                            >\n                              <Button sx={classes.copyButton} id=\"copy-link-public-link-button\">\n                                {copied === approvalPublicLink?.id ? 'Copied!' : 'Copy'}\n                              </Button>\n                            </CopyToClipboard>\n                          </>\n                        </Box>\n                      </TableCell>\n                      <TableCell>{approvalPublicLink.approval_template_name}</TableCell>\n                      <TableCell>{approvalPublicLink.created_by}</TableCell>\n                      <TableCell\n                        sx={{\n                          ...classes.attachmentsCell,\n                          ...classes.stickyRight,\n                          ...classes.scrollShadowRight,\n                          ...(tableHovered && classes.scrollShadowVisible)\n                        }}\n                        ref={actionCellRef}\n                      >\n                        <Box sx={classes.actionItems}>\n                          <Tooltip placement=\"top\" title=\"Edit\" arrow>\n                            <IconButton\n                              onClick={() => handleEditApprovalPublicLink(approvalPublicLink)}\n                              className=\"approval-public-link-edit-button\"\n                            >\n                              <EditIcon />\n                            </IconButton>\n                          </Tooltip>\n                          <Tooltip placement=\"top\" title=\"Trash\" arrow>\n                            <IconButton\n                              onClick={(e) => {\n                                setDeleteApprovalPublicLinks([approvalPublicLink.id]);\n                                setDeleteAlertOpen(true);\n                              }}\n                              className=\"approval-public-link-delete-button\"\n                            >\n                              <DeleteIcon sx={{ color: '#E37D7A !important' }} />\n                            </IconButton>\n                          </Tooltip>\n                        </Box>\n                      </TableCell>\n                    </TableRow>\n                  );\n                })}\n            </TableBody>\n          </Table>\n          {!isLoading && approvalPublicLinks?.length === 0 && (\n            <Box sx={classes.noApplications}>No Approval PublicLinks found</Box>\n          )}\n          {isLoading && (\n            <>\n              {[...Array(10)].map((_, index) => (\n                <Box key={index} sx={classes.skeletonContainer}>\n                  <Skeleton animation=\"wave\" height={60} />\n                </Box>\n              ))}\n            </>\n          )}\n        </TableContainer>\n      </Box>\n      <Box sx={classes.paginationParent}>\n        <Box sx={classes.rowSelectContainer}>\n          <span>Rows per page: </span>\n          <FormControl>\n            <Select\n              id=\"rows-per-page\"\n              sx={classes.rowSelect}\n              value={rowsPerPage}\n              onChange={(e) => handleRowsPerPageChange(Number(e.target.value))}\n              displayEmpty\n              MenuProps={{ sx: classes.paginationMenuItems }}\n            >\n              <MenuItem id=\"first-rpp-item\" value={10}>\n                10\n              </MenuItem>\n              <MenuItem id=\"second-rpp-item\" value={20}>\n                20\n              </MenuItem>\n              <MenuItem value={30}>30</MenuItem>\n              <MenuItem value={40}>40</MenuItem>\n              <MenuItem value={50}>50</MenuItem>\n            </Select>\n          </FormControl>\n        </Box>\n        <Box sx={classes.paginationContainer}>\n          <Pagination\n            id=\"pagination-menu\"\n            count={totalPages}\n            page={currentPage}\n            siblingCount={0}\n            onChange={handlePageChange}\n            sx={classes.pagination}\n          />\n          <span id=\"total-jobs\">{totalApprovalPublicLinks} Total</span>\n        </Box>\n      </Box>\n      <Box\n        id=\"selected-tooltip\"\n        sx={\n          globalSelected?.length > 0\n            ? { ...classes.selectedTooltip, ...classes.fadeIn }\n            : { ...classes.selectedTooltip, ...classes.fadeOut }\n        }\n      >\n        <Box\n          id=\"selected-tooltip-text\"\n          sx={{\n            display: 'flex',\n            alignItems: 'center',\n            ...classes.selectedTooltipText\n          }}\n        >\n          {globalSelected.length === totalApprovalPublicLinks\n            ? `All ${globalSelected?.length} approval public links are selected`\n            : `${globalSelected?.length} selected`}\n          <IconButton\n            size=\"small\"\n            sx={{\n              ...classes.selectedTooltipText,\n              ...classes.selectedAllTooltipText,\n              marginLeft: 1,\n              color: '#666666'\n            }}\n            onClick={clearAllSelection}\n          >\n            Clear selection\n          </IconButton>\n        </Box>\n        <Box sx={classes.selectedTooltipButtonsContainer}>\n          <Button\n            variant=\"contained\"\n            sx={classes.selectedTooltipButton}\n            onClick={() => {\n              setDeleteApprovalPublicLinks(selected);\n              setDeleteAlertOpen(true);\n            }}\n          >\n            Trash\n          </Button>\n        </Box>\n      </Box>\n      <GenericDialog\n        isDialogOpen={deleteAlertOpen}\n        setDialogOpen={setDeleteAlertOpen}\n        title={\n          deleteApprovalPublicLinks.length > 1\n            ? 'Trash approval public links?'\n            : 'Trash approval public link?'\n        }\n        description={\n          deleteApprovalPublicLinks.length > 1\n            ? 'Are you sure want to trash these approval public links?'\n            : 'Are you sure want to trash this approval public link?'\n        }\n        buttonCallback={() => {\n          setDeleteAlertOpen(false);\n          handleDeleteApprovalPublicLinks(deleteApprovalPublicLinks);\n          setDeleteApprovalPublicLinks([]);\n        }}\n        callbackLoading={false}\n        buttonText=\"Trash\"\n        url=\"\"\n      />\n      <NewApprovalPublicLink\n        apiKey={apiKey}\n        newApprovalOptions={newApprovalOptions}\n        setNewApprovalOptions={setNewApprovalOptions}\n        isPublicLinkDialogOpen={isPublicLinkDialogOpen}\n        setIsPublicLinkDialogOpen={setIsPublicLinkDialogOpen}\n        getApprovalPublicLinks={getApprovalPublicLinks}\n        setSnackbarState={setSnackbarState}\n        editingApprovalPublicLink={editingApprovalPublicLink}\n        setEditingApprovalPublicLink={setEditingApprovalPublicLink}\n      />\n    </Box>\n  );\n}\n","import React, { useRef, useState, useEffect, useCallback } from 'react';\nimport { styles } from '../styles';\nimport { Box, Skeleton, Stack, IconButton, Tabs, Tab } from '@mui/material';\nimport { ArrowCircleLeft as ArrowCircleLeftIcon } from '@mui/icons-material';\nimport Questions from '../Questions/Questions';\nimport { IApprovalTemplate } from '../types';\nimport StyledSnackbar from '../../Components/CustomUIElements/StyledSnackbar';\nimport { getPermissions } from '../../../shared/permissionHelpers';\nimport Api from '../API';\nimport { IPermissions } from '../../Jobs/types';\n\nconst getTabNumber = () => {\n  return 0;\n};\n\nconst BASE_URL = window.location.origin;\n\nexport default function ApprovalTemplate({\n  apiKey,\n  approvalTemplateId,\n  entityId,\n  enableEmailTemplateFields\n}: {\n  apiKey: string;\n  approvalTemplateId: number;\n  entityId: number;\n  enableEmailTemplateFields?: boolean;\n}) {\n  const [indicatorWidth, setIndicatorWidth] = useState(0);\n  const [tabValue, setTabValue] = useState(getTabNumber());\n  const [isLoading, setIsLoading] = useState<boolean>(false);\n  const [approvalTemplateData, setApprovalTemplateData] = useState<IApprovalTemplate>({});\n  const [snackbar, setSnackbar] = useState<{\n    message: string;\n    state: 'success' | 'warning' | 'error';\n  }>({\n    message: '',\n    state: 'success'\n  });\n  const [userPermissions, setUserPermissions] = useState<Record<string, Record<string, boolean>>>(\n    {}\n  );\n\n  const headerRefs = useRef<HTMLDivElement[]>([]);\n\n  const getUserPermissions = useCallback(async () => {\n    try {\n      const data = await getPermissions(apiKey);\n      const allRoles: Record<string, Record<string, boolean>> = {};\n      data.roles.forEach((role: IPermissions) =>\n        role.feature_groups.forEach((group) => {\n          !allRoles[group.name] ? (allRoles[group.name] = {}) : null;\n          group.permissions.forEach((permission) => (allRoles[group.name][permission] = true));\n        })\n      );\n      setUserPermissions(allRoles);\n    } catch (error) {\n      setSnackbar({\n        message: 'There was an error getting permissions',\n        state: 'error'\n      });\n    }\n  }, [apiKey]);\n\n  const getApprovalTemplate = useCallback(async () => {\n    setIsLoading(true);\n    try {\n      const data = await Api.getApprovalTemplate(approvalTemplateId);\n      setApprovalTemplateData(data.res);\n    } catch (err) {\n      setSnackbar({\n        message: `Failed to fetch approval template data, ${err}`,\n        state: 'error'\n      });\n    } finally {\n      setIsLoading(false);\n    }\n  }, [approvalTemplateId]);\n\n  useEffect(() => {\n    setIndicatorWidth(headerRefs.current[tabValue].clientWidth - 32);\n  }, [tabValue]);\n\n  useEffect(() => {\n    getApprovalTemplate();\n    getUserPermissions();\n  }, [getApprovalTemplate, getUserPermissions]);\n\n  return (\n    <Box sx={styles.jobPageContainer}>\n      {isLoading ? (\n        <Skeleton animation=\"wave\" sx={{ marginBottom: '20px' }} width={200} height={56} />\n      ) : (\n        <Box sx={styles.jobPageHeader}>\n          <h1>{approvalTemplateData.name}</h1>\n        </Box>\n      )}\n      <Box sx={styles.tabsContainer}>\n        <Tabs\n          value={0}\n          aria-label=\"Edit Approval Template Fields\"\n          sx={{\n            ...styles.tabs,\n            '& .MuiTabs-indicator': { ...styles.tabIndicator, maxWidth: indicatorWidth + 'px' }\n          }}\n        >\n          <Tab ref={(el) => (headerRefs.current[0] = el)} label=\"Add/Edit fields\" />\n        </Tabs>\n      </Box>\n      {isLoading ? (\n        <Skeleton animation=\"wave\" sx={{ marginBottom: '20px' }} width={200} height={56} />\n      ) : (\n        <Box sx={styles.backButton}>\n          <Stack\n            flexDirection=\"row\"\n            alignItems=\"center\"\n            onClick={() => {\n              window.location.href = `${BASE_URL}/admin/requisitions?templates`;\n            }}\n          >\n            <IconButton>\n              <ArrowCircleLeftIcon />\n            </IconButton>\n            <Box>Back to approval templates</Box>\n          </Stack>\n        </Box>\n      )}\n      <Box>\n        {isLoading ? (\n          <Skeleton animation=\"wave\" sx={{ marginBottom: '20px' }} width={200} height={56} />\n        ) : (\n          <Questions\n            apiKey={apiKey}\n            entityId={entityId}\n            approvalTemplateId={approvalTemplateId}\n            approvalTemplateData={approvalTemplateData}\n            setApprovalTemplateData={setApprovalTemplateData}\n            getApprovalTemplate={getApprovalTemplate}\n            userPermissions={userPermissions}\n            enableEmailTemplateFields={enableEmailTemplateFields}\n          />\n        )}\n      </Box>\n      <StyledSnackbar\n        message={snackbar.message}\n        state={snackbar.state}\n        setSnackbarState={setSnackbar}\n      />\n    </Box>\n  );\n}\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { Autocomplete, Box, TextField } from '@mui/material';\nimport { styles } from './styles';\nimport FormCheckboxGroup from '../../Components/CustomUIElements/FormCheckboxGroup';\nimport { approvalTemplateFormOptions } from '../config';\nimport { IApprovalTemplateOptions } from '../types';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\n\nexport default function AdvancedTab({\n  options,\n  setOptions,\n  emailTemplates,\n  approvalTemplateEmail,\n  setApprovalTemplateEmail,\n  enableEmailTemplateFields\n}: {\n  options: IApprovalTemplateOptions | null;\n  setOptions: Dispatch<SetStateAction<IApprovalTemplateOptions | null>>;\n  emailTemplates: [string, Array<{ id: number; name: string }>][];\n  approvalTemplateEmail: number | null;\n  setApprovalTemplateEmail: Dispatch<SetStateAction<number | null>>;\n  enableEmailTemplateFields?: boolean;\n}) {\n  const templates = emailTemplates.reduce(\n    (acc, currVal) => {\n      const entity: string = currVal[0];\n      const arrayOfTemplates: { id: number; name: string }[] = currVal[1];\n      return [...acc, ...arrayOfTemplates.map((template) => ({ ...template, entity }))];\n    },\n    [] as { id: number; name: string; entity: string }[]\n  );\n\n  const updatedApprovalTemplateFormOptions = enableEmailTemplateFields\n    ? [\n        ...approvalTemplateFormOptions,\n        {\n          id: 'enable_declaration_of_conflict_of_interest',\n          name: 'Enable Declaration of Conflict of Interest'\n        }\n      ]\n    : approvalTemplateFormOptions;\n\n  return (\n    <Box sx={styles.tabContent}>\n      <Box sx={styles.tabContentTitle}>Advanced settings</Box>\n      <Box sx={styles.tabContentBody}>\n        <FormCheckboxGroup\n          options={updatedApprovalTemplateFormOptions}\n          defaultValues={options}\n          onChange={(value: IApprovalTemplateOptions) => setOptions(value)}\n          color={'#838383'}\n        />\n      </Box>\n      <Box sx={{ ...styles.tabContentBody, marginTop: 3 }}>\n        <Autocomplete\n          disablePortal\n          options={templates}\n          groupBy={(option) => option.entity}\n          getOptionLabel={(option) => option.name || ''}\n          value={templates.find((e) => e.id === approvalTemplateEmail) || null}\n          onChange={(event, value) =>\n            value ? setApprovalTemplateEmail(value.id) : setApprovalTemplateEmail(null)\n          }\n          sx={{ width: '290px', ...sharedClasses.formAutocomplete }}\n          ListboxProps={{\n            style: {\n              fontFamily: 'Source Sans Pro, sans-serif',\n              color: '#333333',\n              maxHeight: '200px'\n            }\n          }}\n          renderInput={(params) => (\n            <TextField\n              sx={{ input: { '&::placeholder': { opacity: 1 } } }}\n              {...params}\n              label=\"Selected default email template\"\n              InputLabelProps={{ shrink: true }}\n              placeholder=\"(Use default template)\"\n            />\n          )}\n        />\n      </Box>\n    </Box>\n  );\n}\n","import React, { useState, useEffect } from 'react';\nimport { Box, Modal, Divider, Stack, Button } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { styles } from './styles';\nimport TemplateTitleTab from './TemplateTitleTab';\nimport DefaultApproversTab from './DefaultApproversTab';\nimport AdvancedTab from './AdvancedTab';\nimport FormTitleTab from './FormTitleTab';\nimport {\n  IApprovalTemplate,\n  IApprovalTemplateOptions,\n  IApprovalManagers,\n  IApprovalTemplateFields\n} from '../types';\nimport { optionsBooleanValues, optionsNumericValues, settingTabs } from '../config';\nimport Api from '../API';\nimport LoadingButton from '../../Components/Buttons/LoadingButton';\nimport { StyledSnackbarProps } from '../../Components/CustomUIElements/StyledSnackbar';\nimport { emailIsValid } from '../../Components/Utilities/emailIsValid';\n\nconst BASE_URL = window.location.origin;\n\nexport default function ApprovalTemplateSettings({\n  setModalsOpen,\n  modalsOpen,\n  approvalTemplateData,\n  getApprovalTemplate,\n  entityDefaultApprovers,\n  questions,\n  setSnackbar,\n  action,\n  enableEmailTemplateFields\n}: {\n  modalsOpen: boolean;\n  setModalsOpen: () => void;\n  approvalTemplateData?: IApprovalTemplate;\n  getApprovalTemplate?: () => Promise<void>;\n  entityDefaultApprovers?: string[];\n  questions?: IApprovalTemplateFields[];\n  setSnackbar: StyledSnackbarProps['setSnackbarState'];\n  action?: string;\n  enableEmailTemplateFields?: boolean;\n}) {\n  const [templateName, setTemplateName] = useState<string>(approvalTemplateData?.name || '');\n  const [approvalManagers, setApprovalManagers] = useState<IApprovalManagers[]>([]);\n  const [selectedQuestion, setSelectedQuestion] = useState<number | null>(null);\n  const [tabNumber, setTabNumber] = useState<number>(0);\n  const [templateApprovers, setTemplateApprovers] = useState<string[]>(['']);\n  const [approvalTemplateEmail, setApprovalTemplateEmail] = useState<number | null>(null);\n  const [options, setOptions] = useState<IApprovalTemplateOptions | null>(null);\n  const [emailTemplates, setEmailTemplates] = useState<\n    [string, Array<{ id: number; name: string }>][]\n  >([]);\n  const [tempErrorMessage, setTempErrorMessage] = useState<string | null>(null);\n  const [invalidEmailIndex, setInvalidEmailIndex] = useState<number[]>([]);\n\n  useEffect(() => {\n    const isMounted = { current: true };\n    getApprovers(isMounted);\n    getEmailTemplates(isMounted);\n    return () => {\n      isMounted.current = false;\n    };\n  }, [modalsOpen]);\n\n  useEffect(() => {\n    setTemplateName(approvalTemplateData?.name || '');\n    setOptions(optionsBooleanValues(approvalTemplateData?.config) || null);\n    setApprovalTemplateEmail(approvalTemplateData?.email_template_id || null);\n    setSelectedQuestion(\n      approvalTemplateData?.config?.approval_form_title_position === null\n        ? null\n        : Number(approvalTemplateData?.config?.approval_form_title_position)\n    );\n    if (approvalTemplateData?.config?.default_approvers) {\n      setTemplateApprovers(\n        approvalTemplateData.config.default_approvers.split(',').map((email) => email.trim())\n      );\n    } else if (approvalTemplateData?.entity_default_approver) {\n      setTemplateApprovers(\n        approvalTemplateData.entity_default_approver.map((approver) => {\n          return approver.required ? `*${approver.email}` : approver.email;\n        })\n      );\n    } else if (entityDefaultApprovers) {\n      setTemplateApprovers(entityDefaultApprovers);\n    } else {\n      setTemplateApprovers(['']);\n    }\n  }, [approvalTemplateData, entityDefaultApprovers]);\n\n  async function getApprovers(isMounted: { current: boolean }) {\n    try {\n      const data = await Api.getApprovalManagers({\n        override_limit: true,\n        limit: 2000,\n        sort: 'name',\n        sort_order: 'asc'\n      });\n      let defaultApprovers;\n      if (entityDefaultApprovers) {\n        defaultApprovers = entityDefaultApprovers?.map((approver, index) => {\n          return { email: approver, name: approver, id: index };\n        });\n      } else\n        defaultApprovers = approvalTemplateData?.entity_default_approver?.map((approver, index) => {\n          return {\n            email: approver.required ? `*${approver.email}` : approver.email,\n            name: approver.email,\n            id: index\n          };\n        });\n\n      const approvalOptions = defaultApprovers?.length\n        ? [...data.res.requisition_managers, ...defaultApprovers]\n        : data.res.requisition_managers;\n\n      if (isMounted.current) setApprovalManagers(approvalOptions);\n    } catch (err) {\n      if (isMounted.current)\n        setSnackbar({\n          message: 'Failed to fetch approvers list',\n          state: 'error'\n        });\n    }\n  }\n\n  const validateEmail = () => {\n    if (!templateApprovers) return false;\n    const invalid = [];\n    templateApprovers.map((approver, index) => {\n      if (!emailIsValid(approver) && approver !== '' && approver !== '*') {\n        invalid.push(index);\n      }\n    });\n    if (invalid.length > 0) {\n      setTabNumber(1);\n      setInvalidEmailIndex(invalid);\n      return false;\n    } else {\n      return true;\n    }\n  };\n\n  async function getEmailTemplates(isMounted: { current: boolean }) {\n    try {\n      const data = await Api.getEmailTemplates();\n      if (isMounted.current) setEmailTemplates(data.res.email_templates);\n    } catch (err) {\n      if (isMounted.current)\n        setSnackbar({\n          message: 'Failed to fetch email templates',\n          state: 'error'\n        });\n    }\n  }\n\n  const approvalTemplateObj = {\n    name: templateName,\n    default_approvers: templateApprovers.join(','),\n    ...(options?.hide_position_title\n      ? { approval_form_title_position: selectedQuestion || 0 }\n      : {}),\n    email_template_id: approvalTemplateEmail,\n    for_application: 1,\n    ...optionsNumericValues(options)\n  };\n\n  const handleSubmitAction = async () => {\n    if (!handleValidateTitle() || !validateEmail()) return;\n\n    try {\n      if (approvalTemplateData) {\n        if (action === 'Clone') {\n          // for cloning\n          const response = await Api.cloneApprovalTemplate(approvalTemplateData?.id, {\n            requisition_form: approvalTemplateObj\n          });\n          if (response.res.success) {\n            setSnackbar({\n              message: response.res.success,\n              state: 'success'\n            });\n          }\n          if (response.res.redirect_url) {\n            const fieldsUrl = response.res.redirect_url.replace('edit', 'fields');\n            window.location.href = `${BASE_URL}${fieldsUrl}`;\n          }\n        } else {\n          // for editing and settings\n          const approvalTemplateId = approvalTemplateData?.id;\n          await Api.updateApprovalTemplate(approvalTemplateId, {\n            requisition_form: approvalTemplateObj\n          });\n          setSnackbar({\n            message: 'Approval template updated',\n            state: 'success'\n          });\n          setModalsOpen();\n        }\n      } else {\n        // for new approval template\n        const response = await Api.createApprovalTemplate({\n          requisition_form: approvalTemplateObj\n        });\n        if (response.res.id) {\n          setSnackbar({\n            message: 'Approval template has been created',\n            state: 'success'\n          });\n        }\n        const path = response.res.link;\n        window.location.href = `${BASE_URL}${path}`;\n      }\n      // }\n    } catch (error) {\n      setSnackbar({\n        message: `Failed to ${buttonName().toLowerCase()} approval template, ${error}`,\n        state: 'error'\n      });\n    } finally {\n      getApprovalTemplate && getApprovalTemplate();\n    }\n  };\n\n  const handleNextAction = () => {\n    switch (tabNumber) {\n      case 0:\n        if (!handleValidateTitle()) return;\n        break;\n      case 1:\n        if (!validateEmail()) return;\n        break;\n    }\n    if (tabNumber === 1) {\n      setInvalidEmailIndex([]);\n    }\n    setTabNumber((prev) => prev + 1);\n  };\n\n  const handleValidateTitle = () => {\n    setTempErrorMessage(null);\n    if (tabNumber === 0 && !templateName) {\n      setTempErrorMessage('This field is required');\n      return false;\n    } else {\n      return true;\n    }\n  };\n\n  const modalTitle = () => {\n    if (action) {\n      return action;\n    } else if (approvalTemplateData) {\n      return 'Settings';\n    } else {\n      return 'Create';\n    }\n  };\n\n  const buttonName = () => {\n    if (!approvalTemplateData && !action) {\n      return 'Create';\n    } else if (action === 'Clone') {\n      return 'Clone';\n    } else {\n      return 'Save';\n    }\n  };\n\n  return (\n    <Modal\n      open={modalsOpen}\n      aria-labelledby=\"approval-template-settings-modal\"\n      onClose={setModalsOpen}\n    >\n      <Box sx={styles.actionsModal}>\n        <Box sx={styles.modalTabsContainer}>\n          <Box id=\"approval-template-settings-modal-title\" sx={styles.modalHeader}>\n            {modalTitle()}\n          </Box>\n          {settingTabs.map((tab, index) => {\n            if (tab === 'Approval form title' && !options?.hide_position_title) {\n              return;\n            } else {\n              return (\n                <Stack\n                  sx={{\n                    ...styles.tabTitle,\n                    backgroundColor: index === tabNumber ? 'rgba(8,77,109,0.07)' : 'transparent',\n                    fontWeight: index === tabNumber ? 'bold' : ''\n                  }}\n                  key={index}\n                >\n                  <Stack sx={styles.hoverTabTitle} onClick={() => setTabNumber(index)}>\n                    {tab}\n                  </Stack>\n                </Stack>\n              );\n            }\n          })}\n        </Box>\n        <Divider orientation=\"vertical\" flexItem />\n        <Box sx={styles.modalFormContainer}>\n          <Box sx={styles.closeIconContainer}>\n            <CloseIcon onClick={setModalsOpen} sx={styles.closeIcon} />\n          </Box>\n          {tabNumber === 0 && (\n            <TemplateTitleTab\n              templateName={templateName}\n              setTemplateName={setTemplateName}\n              tempErrorMessage={tempErrorMessage}\n            />\n          )}\n          {tabNumber === 1 && (\n            <DefaultApproversTab\n              approvalManagers={approvalManagers}\n              templateApprovers={templateApprovers}\n              setTemplateApprovers={setTemplateApprovers}\n              invalidEmailIndex={invalidEmailIndex}\n              setInvalidEmailIndex={setInvalidEmailIndex}\n            />\n          )}\n          {tabNumber === 2 && (\n            <AdvancedTab\n              options={options}\n              setOptions={setOptions}\n              emailTemplates={emailTemplates}\n              approvalTemplateEmail={approvalTemplateEmail}\n              setApprovalTemplateEmail={setApprovalTemplateEmail}\n              enableEmailTemplateFields={enableEmailTemplateFields}\n            />\n          )}\n          {tabNumber === 3 && options?.hide_position_title && (\n            <FormTitleTab\n              questionsList={questions?.filter((question) => question.enabled)}\n              selectedQuestion={selectedQuestion}\n              setSelectedQuestion={setSelectedQuestion}\n              action={buttonName()}\n            />\n          )}\n          <Box sx={styles.modalActions}>\n            {modalTitle() === 'Create' || modalTitle() === 'Clone' ? (\n              (options?.hide_position_title && tabNumber === 3) ||\n              (!options?.hide_position_title && tabNumber === 2) ? (\n                <LoadingButton\n                  id=\"save-approval-template-settings-button\"\n                  type=\"submit\"\n                  task={handleSubmitAction}\n                  sx={styles.modalSaveButton}\n                >\n                  {buttonName()}\n                </LoadingButton>\n              ) : (\n                <Button\n                  id=\"next-approval-template-settings-button\"\n                  type=\"button\"\n                  onClick={handleNextAction}\n                  sx={styles.modalSaveButton}\n                >\n                  Next\n                </Button>\n              )\n            ) : (\n              <LoadingButton\n                id=\"save-approval-template-settings-button\"\n                type=\"submit\"\n                task={handleSubmitAction}\n                sx={styles.modalSaveButton}\n              >\n                {buttonName()}\n              </LoadingButton>\n            )}\n          </Box>\n        </Box>\n      </Box>\n    </Modal>\n  );\n}\n","import React from 'react';\nimport { Autocomplete, Box, FormControlLabel, Switch, TextField, Typography } from '@mui/material';\nimport { Close as CloseIcon } from '@mui/icons-material';\nimport { styles } from '../styles';\nimport { IApprovalManagers } from '../types';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\n\nexport default function ApproversListAutoComplete({\n  approvalManagers,\n  approver,\n  index,\n  handleEmailChange,\n  removeApprover,\n  handleMandatoryButton\n}: {\n  approvalManagers: IApprovalManagers[];\n  approver: string;\n  index: number;\n  handleEmailChange: (index: number, value: IApprovalManagers | null) => void;\n  removeApprover: (index: number) => void;\n  handleMandatoryButton: (index: number) => void;\n}) {\n  const mandatory = approver.includes('*');\n  let value = approvalManagers.find((manager) => approver === manager.email);\n  if (!value) {\n    const email = mandatory ? approver : `*${approver}`;\n    value = approvalManagers.find((manager) => email === `*${manager.email}`);\n    if (!value) value = approvalManagers.find((manager) => email === manager.email);\n  }\n\n  return (\n    <Box sx={styles.approverItemList}>\n      <Autocomplete\n        disablePortal\n        options={approvalManagers}\n        getOptionLabel={(option) => option.email}\n        id=\"default-approvers\"\n        value={value || null}\n        onChange={(event, value) => handleEmailChange(index, value)}\n        sx={{ width: '290px', marginTop: '24px', ...sharedClasses.formAutocomplete }}\n        ListboxProps={{\n          style: {\n            fontFamily: 'Source Sans Pro, sans-serif',\n            color: '#333333',\n            maxHeight: '200px'\n          }\n        }}\n        renderInput={(params) => (\n          <TextField {...params} label=\"Email\" InputLabelProps={{ shrink: true }} />\n        )}\n      />\n      <CloseIcon\n        color=\"warning\"\n        onClick={() => removeApprover(index)}\n        sx={{ cursor: 'pointer', marginRight: 'auto' }}\n      />\n      <FormControlLabel\n        control={\n          <Switch\n            sx={mandatory ? styles.switchActive : styles.switch}\n            checked={mandatory}\n            onChange={() => handleMandatoryButton(index)}\n          />\n        }\n        label={\n          <Typography\n            sx={{ ...styles.mandatoryLabel, color: `${mandatory ? 'black' : '#939393'}` }}\n          >\n            Mandatory\n          </Typography>\n        }\n      />\n    </Box>\n  );\n}\n","import React from 'react';\nimport { Box, FormControlLabel, Switch, Typography } from '@mui/material';\nimport { Close as CloseIcon } from '@mui/icons-material';\nimport { styles } from '../styles';\nimport { FormTextField } from '../../Components/CustomUIElements/FormTextField';\n\nexport default function ApproversListText({\n  approver,\n  index,\n  handleEmailInput,\n  removeApprover,\n  handleMandatoryButton,\n  invalidEmail\n}: {\n  approver: string;\n  index: number;\n  handleEmailInput: (index: number, value: string) => void;\n  removeApprover: (index: number) => void;\n  handleMandatoryButton: (index: number) => void;\n  invalidEmail?: boolean;\n}) {\n  const mandatory = approver.includes('*');\n\n  return (\n    <Box sx={styles.approverItemList}>\n      <FormTextField\n        label=\"Email\"\n        onChange={(e) => {\n          handleEmailInput(index, e.target.value);\n        }}\n        value={mandatory ? approver.slice(1) : approver}\n        styles={{ width: '290px' }}\n        error={invalidEmail ? 'Please enter a proper email address' : ''}\n      />\n      <CloseIcon\n        color=\"warning\"\n        onClick={() => removeApprover(index)}\n        sx={{ cursor: 'pointer', marginRight: 'auto' }}\n      />\n      {approver && (\n        <FormControlLabel\n          control={\n            <Switch\n              sx={mandatory ? styles.switchActive : styles.switch}\n              checked={mandatory}\n              onChange={() => handleMandatoryButton(index)}\n            />\n          }\n          label={\n            <Typography\n              sx={{ ...styles.mandatoryLabel, color: `${mandatory ? 'black' : '#939393'}` }}\n            >\n              Mandatory\n            </Typography>\n          }\n        />\n      )}\n    </Box>\n  );\n}\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { Box, Button, Stack } from '@mui/material';\nimport { styles } from './styles';\nimport { IApprovalManagers } from '../types';\nimport ApproversListAutoComplete from './ApproversListAutoComplete';\nimport ApproversListText from './ApproversListText';\n\nexport default function DefaultApproversTab({\n  approvalManagers,\n  templateApprovers,\n  setTemplateApprovers,\n  invalidEmailIndex,\n  setInvalidEmailIndex\n}: {\n  approvalManagers: IApprovalManagers[];\n  templateApprovers: string[];\n  setTemplateApprovers: Dispatch<SetStateAction<string[]>>;\n  invalidEmailIndex: number[];\n  setInvalidEmailIndex: Dispatch<SetStateAction<number[]>>;\n}) {\n  const handleAddApprover = () => {\n    setTemplateApprovers([...templateApprovers, '']);\n  };\n  const removeApprover = (i: number) => {\n    const newApprovers = [...templateApprovers];\n    const newInvalidEmailIndex = [...invalidEmailIndex];\n    newApprovers.splice(i, 1);\n    setTemplateApprovers(newApprovers);\n    if (newInvalidEmailIndex.includes(i)) {\n      newInvalidEmailIndex.splice(newInvalidEmailIndex.indexOf(i), 1);\n      setInvalidEmailIndex(newInvalidEmailIndex);\n    }\n  };\n  const handleMandatoryButton = (i: number) => {\n    const newApprovers = [...templateApprovers];\n    const currentApprover = newApprovers[i];\n    if (currentApprover.includes('*')) {\n      newApprovers[i] = currentApprover.slice(1);\n      setTemplateApprovers(newApprovers);\n    } else {\n      newApprovers[i] = '*' + currentApprover;\n      setTemplateApprovers(newApprovers);\n    }\n  };\n\n  const handleEmailChange = (i: number, value: IApprovalManagers | null) => {\n    const newApprovers = [...templateApprovers];\n    newApprovers[i] = value ? value.email : '';\n    setTemplateApprovers(newApprovers);\n  };\n\n  const handleEmailInput = (i: number, value: string) => {\n    const newApprovers = [...templateApprovers];\n    newApprovers[i] = value;\n    setTemplateApprovers(newApprovers);\n  };\n\n  return (\n    <Box sx={styles.tabContent}>\n      <Box sx={styles.tabContentTitle}>Default approvers</Box>\n      {approvalManagers.length === 0 ? (\n        <Stack sx={{ padding: 2, rowGap: 2 }}>\n          {templateApprovers.map((approver, index) => (\n            <ApproversListText\n              key={index}\n              approvalManagers={approvalManagers}\n              approver={approver}\n              index={index}\n              handleEmailInput={handleEmailInput}\n              removeApprover={removeApprover}\n              handleMandatoryButton={handleMandatoryButton}\n              invalidEmail={invalidEmailIndex && invalidEmailIndex.includes(index)}\n            />\n          ))}\n        </Stack>\n      ) : (\n        <Stack sx={{ padding: 2, rowGap: 2 }}>\n          {templateApprovers.map((approver, index) => (\n            <ApproversListAutoComplete\n              key={index}\n              approvalManagers={approvalManagers}\n              approver={approver}\n              index={index}\n              handleEmailChange={handleEmailChange}\n              removeApprover={removeApprover}\n              handleMandatoryButton={handleMandatoryButton}\n            />\n          ))}\n        </Stack>\n      )}\n      <Box sx={{ padding: '10px 0 0 20px' }}>\n        <Button\n          sx={{ ...styles.modalSaveButton, fontSize: '12px', padding: '4px 12px' }}\n          onClick={handleAddApprover}\n        >\n          Add approver\n        </Button>\n      </Box>\n    </Box>\n  );\n}\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { Box, Button } from '@mui/material';\nimport { styles } from './styles';\nimport { IApprovalTemplateFields } from '../types';\nimport DoneIcon from '@mui/icons-material/Done';\n\nexport default function FormTitleTab({\n  questionsList,\n  selectedQuestion,\n  setSelectedQuestion,\n  action\n}: {\n  questionsList?: IApprovalTemplateFields[];\n  selectedQuestion: number | null;\n  setSelectedQuestion: Dispatch<SetStateAction<number | null>>;\n  action: string;\n}) {\n  return (\n    <Box sx={styles.tabContent}>\n      <Box sx={styles.tabContentTitle}>Approval form title selection</Box>\n      {action === 'Create' ? (\n        <Box sx={styles.tabContentBody}>\n          Once an approval form has been created from this template, the title of the form will be\n          selectable from your created questions.\n          <br />\n          <br />\n          All approval forms using this template will use the response to your selected question as\n          the title.\n          <br />\n          <br />\n          When you a ready, please press &apos;create&apos; below to create your approval template.\n          <br />\n          <br />\n          You will see a selectable checkbox underneath any question you create allowing you to make\n          that question the title for the approval form.\n        </Box>\n      ) : (\n        <Box sx={styles.tabContentBody}>\n          All approvals using this approval template will use your selected question&apos;s response\n          as the title.\n        </Box>\n      )}\n      <Box sx={{ marginTop: 1 }}>\n        {questionsList && questionsList.length > 0 ? (\n          questionsList.map(\n            (question, index) =>\n              question.enabled && (\n                <Box\n                  key={question.id}\n                  sx={\n                    index === selectedQuestion\n                      ? styles.questionListItemSelected\n                      : styles.questionListItem\n                  }\n                >\n                  Question {index + 1}: {question.title}\n                  <Button\n                    sx={{ ...styles.selectButton, padding: '0px 12px', fontSize: '12px' }}\n                    onClick={() => setSelectedQuestion(index)}\n                  >\n                    {index === selectedQuestion ? 'Selected ' : 'Select'}\n                    {index === selectedQuestion && (\n                      <DoneIcon sx={{ fontSize: '12px', marginLeft: '2px', marginBottom: '2px' }} />\n                    )}\n                  </Button>\n                </Box>\n              )\n          )\n        ) : (\n          <Box sx={{ padding: 6, marginTop: 2, fontWeight: 'bold', color: '#939393' }}>\n            You have no questions set up on this approval template\n          </Box>\n        )}\n      </Box>\n    </Box>\n  );\n}\n","import React, { Dispatch, SetStateAction } from 'react';\nimport Box from '@mui/material/Box';\nimport { styles } from './styles';\nimport { FormTextField } from '../../Components/CustomUIElements/FormTextField';\n\nexport default function TemplateTitleTab({\n  templateName,\n  setTemplateName,\n  tempErrorMessage\n}: {\n  templateName: string;\n  setTemplateName: Dispatch<SetStateAction<string>>;\n  tempErrorMessage: string | null;\n}) {\n  return (\n    <Box sx={styles.tabContent}>\n      <Box sx={styles.tabContentTitle}>Approval template title</Box>\n      <Box sx={styles.tabContentBody}>\n        <FormTextField\n          onChange={(e) => setTemplateName(e.target.value)}\n          label=\"Title\"\n          value={templateName ? templateName : ''}\n          required\n          styles={{ width: '350px' }}\n        />\n        {tempErrorMessage && <Box sx={styles.tabContentError}>{tempErrorMessage}</Box>}\n      </Box>\n    </Box>\n  );\n}\n","import React, { useState, useEffect, useCallback, Dispatch, SetStateAction } from 'react';\nimport Box from '@mui/material/Box';\nimport { defaultFilters, dropdownSetting, dropdownOptions } from './config';\nimport ApprovalTemplatesTable from './ApprovalTemplatesTable';\nimport Api from '../API';\nimport {\n  IFilterDropdownProps,\n  IGetApprovalTemplates,\n  TSetUserPreferences,\n  IApprovalTemplateCreators,\n  IApprovalTemplate\n} from './types';\nimport { styles } from '../styles';\nimport FieldDropdown from '../Dropdowns/FieldDropdown';\nimport FilterDropdown from './FilterDropdown';\nimport Search from './Search';\nimport StyledSnackbar from '../../Components/CustomUIElements/StyledSnackbar';\nimport { IUserPermissions } from '../../Components/sharedTypes';\nimport { fetchPreferences, updateUiSettings } from '../../helpers/uiPreferencesHelpers';\n\nexport default function ApprovalTemplates({\n  apiKey,\n  userPermissions,\n  archived,\n  setTemplateArchived,\n  enableEmailTemplateFields\n}: {\n  apiKey: string;\n  userPermissions: IUserPermissions | undefined;\n  archived: boolean;\n  setTemplateArchived: Dispatch<SetStateAction<boolean>>;\n  enableEmailTemplateFields?: boolean;\n}) {\n  const [approvalTemplates, setApprovalTemplates] = useState<IApprovalTemplate[]>([]);\n  const [isLoading, setIsLoading] = useState<boolean>(false);\n  const [snackbar, setSnackbar] = useState<{\n    message: string;\n    state: 'success' | 'warning' | 'error';\n  }>({\n    message: '',\n    state: 'success'\n  });\n  const [search, setSearch] = useState('');\n  const [filters, setFilters] = useState<IFilterDropdownProps['filters']>(defaultFilters);\n  const [creators, setCreators] = useState<IApprovalTemplateCreators[]>([]);\n  const [activeColumns, setActiveColumns] = useState(dropdownSetting);\n  const [rowsPerPage, setRowsPerPage] = useState(10);\n  const [totalPages, setTotalPages] = useState(0);\n  const [totalApprovalTemplates, setTotalApprovalTemplates] = useState(0);\n  const [sortBy, setSortBy] = useState<string>('created_at');\n  const [sortOrder, setSortOrder] = useState<string>('desc');\n  const [currentPage, setCurrentPage] = useState(1);\n  const [density, setDensity] = useState<string>('Default');\n\n  const getFirstApprovalTemplatesAndPreferences = useCallback(async () => {\n    setIsLoading(true);\n    try {\n      const { res: preferenceData } = await fetchPreferences(\n        `approval_templates${archived ? '_archived' : ''}`\n      );\n      const { res: densityData } = await fetchPreferences('universal');\n      const preference = preferenceData?.ui_preferences[0];\n      const densityPreference = densityData?.ui_preferences[0];\n      preference?.sorting?.sortBy && setSortBy(preference.sorting.sortBy);\n      preference?.sorting?.sortOrder && setSortOrder(preference.sorting.sortOrder.toLowerCase());\n      preference?.filters && setFilters(preference.filters);\n      const selectedCreatedBy = preference?.filters?.created_by?.map((x) => x.id);\n      const sessionPage = sessionStorage.getItem(`approvalTemplatesTablePage`);\n      !archived && sessionPage && setCurrentPage(Number(sessionPage));\n      preference?.row_count && setRowsPerPage(preference.row_count);\n      preference?.columns && setActiveColumns(preference.columns);\n      densityPreference?.columns?.density && setDensity(densityPreference?.columns?.density);\n      const response = await Api.getApprovalTemplates(\n        {\n          archived: archived || false,\n          page: !archived && sessionPage ? Number(sessionPage) : 1,\n          limit: preference?.row_count || rowsPerPage,\n          sort: preference?.sorting?.sortBy || 'updated_at',\n          sort_order: (preference?.sorting?.sortOrder?.toLowerCase() || 'desc').toUpperCase(),\n          'q[search]': search,\n          'filter[user_ids]': selectedCreatedBy?.filters?.length === 0 ? [] : selectedCreatedBy\n        }\n      );\n      setApprovalTemplates(response.res.requisition_forms);\n      setTotalPages(parseInt(response.resHead['x-total-pages']));\n      setTotalApprovalTemplates(parseInt(response.resHead['x-total-count']));\n    } catch (error) {\n      setSnackbar({\n        message: 'There was an error getting approval templates',\n        state: 'error'\n      });\n    } finally {\n      setIsLoading(false);\n    }\n  }, [search]);\n\n  const setUserPreferences: TSetUserPreferences = async (\n    limit,\n    sort,\n    columns,\n    newFilters,\n    density\n  ) => {\n    if (density) {\n      await updateUiSettings({ columns: { density }, source: 'universal' }, (errorMessage) => {\n        setSnackbar({\n          message: `There was an error saving your preferences, ${errorMessage}`,\n          state: 'error'\n        });\n      });\n    } else {\n      await updateUiSettings(\n        {\n          sortable_columns: columns || activeColumns,\n          row_count: limit || rowsPerPage,\n          filters: newFilters || filters,\n          sorting: sort,\n          source: `approval_templates${archived ? '_archived' : ''}`\n        },\n        () => {\n          setSnackbar({\n            message: 'There was an error saving your preferences',\n            state: 'error'\n          });\n        }\n      );\n    }\n  };\n\n  const getApprovalTemplates: IGetApprovalTemplates = async (\n    page,\n    limit,\n    searchQuery,\n    sort,\n    updatedFilters,\n    archived\n  ) => {\n    setIsLoading(true);\n    try {\n      const selectedCreatedBy = (updatedFilters?.created_by || filters.created_by).map((x) => x.id);\n      const response = await Api.getApprovalTemplates(\n        {\n          archived: archived || false,\n          page: page || currentPage,\n          limit: limit || rowsPerPage,\n          sort: sort?.sortBy || sortBy,\n          sort_order: (sort?.sortOrder || sortOrder).toUpperCase(),\n          'q[search]': searchQuery !== null ? searchQuery : search,\n          'filter[user_ids]': selectedCreatedBy?.length === 0 ? [] : selectedCreatedBy\n        }\n      );\n      setApprovalTemplates(response.res.requisition_forms);\n      setTotalPages(parseInt(response.resHead['x-total-pages']));\n      setTotalApprovalTemplates(parseInt(response.resHead['x-total-count']));\n    } catch (error) {\n      setSnackbar({\n        message: 'There was an error getting approval templates',\n        state: 'error'\n      });\n    } finally {\n      if (sort || updatedFilters) {\n        setUserPreferences(null, sort, null, updatedFilters, null);\n      } else if (limit) {\n        setUserPreferences(limit, null, null, null, null);\n      }\n      setIsLoading(false);\n    }\n  };\n\n  const getCreators = useCallback(async () => {\n    try {\n      const response = await Api.getCreators();\n      setCreators(response.res.creators);\n    } catch (error) {\n      setSnackbar({\n        message: 'There was an error getting creators',\n        state: 'error'\n      });\n    }\n  }, [apiKey]);\n\n  const handleChangeActiveColumns = async (columns: Record<string, boolean>) => {\n    setActiveColumns(columns);\n    setUserPreferences(null, null, columns, null, null);\n  };\n\n  useEffect(() => {\n    getFirstApprovalTemplatesAndPreferences();\n    getCreators();\n  }, [apiKey, getFirstApprovalTemplatesAndPreferences, getCreators]);\n\n  return (\n    <Box>\n      <Box sx={styles.filtersRow}>\n        <Search\n          setSearch={setSearch}\n          getApprovalTemplates={getApprovalTemplates}\n          archived={archived}\n        />\n        <FilterDropdown\n          filters={filters}\n          setFilters={setFilters}\n          getApprovalTemplates={getApprovalTemplates}\n          creators={creators}\n          setUserPreferences={setUserPreferences}\n          setCurrentPage={setCurrentPage}\n          archived={archived}\n        />\n        <FieldDropdown\n          options={dropdownOptions}\n          activeColumns={activeColumns}\n          handleChangeActiveColumns={handleChangeActiveColumns}\n          density={density}\n          setDensity={setDensity}\n          userPermissions={userPermissions}\n          setUserPreferences={setUserPreferences}\n          label=\"approval-templates\"\n        />\n      </Box>\n      <ApprovalTemplatesTable\n        approvalTemplates={approvalTemplates}\n        setApprovalTemplates={setApprovalTemplates}\n        getApprovalTemplates={getApprovalTemplates}\n        setSnackbarState={setSnackbar}\n        isLoading={isLoading}\n        setIsLoading={setIsLoading}\n        currentPage={currentPage}\n        setCurrentPage={setCurrentPage}\n        rowsPerPage={rowsPerPage}\n        setRowsPerPage={setRowsPerPage}\n        totalPages={totalPages}\n        totalApprovalTemplates={totalApprovalTemplates}\n        sortBy={sortBy}\n        setSortBy={setSortBy}\n        sortOrder={sortOrder}\n        setSortOrder={setSortOrder}\n        activeColumns={activeColumns}\n        apiKey={apiKey}\n        userPermissions={userPermissions}\n        density={density}\n        archived={archived}\n        setTemplateArchived={setTemplateArchived}\n        enableEmailTemplateFields={enableEmailTemplateFields}\n      />\n      <StyledSnackbar\n        message={snackbar.message}\n        state={snackbar.state}\n        setSnackbarState={setSnackbar}\n      />\n    </Box>\n  );\n}\n","import React, { useState, useRef } from 'react';\nimport {\n  Box,\n  Table,\n  TableBody,\n  TableCell,\n  TableContainer,\n  TableHead,\n  TableRow,\n  TableSortLabel,\n  Paper,\n  Pagination,\n  MenuItem,\n  FormControl,\n  Select,\n  Skeleton,\n  Popover,\n  IconButton,\n  Tooltip\n} from '@mui/material';\nimport {\n  MoreVert as MoreVertIcon,\n  KeyboardArrowLeft as KeyboardArrowLeftIcon,\n  KeyboardArrowRight as KeyboardArrowRightIcon,\n  Edit as EditIcon,\n  FileCopy as FileCopyIcon,\n  Unarchive as UnarchiveIcon,\n  Delete as DeleteIcon\n} from '@mui/icons-material';\nimport { IApprovalTemplateTableProps, IApprovalTemplate } from './types';\nimport moment from 'moment-timezone';\nimport { classes } from '../../Job/Applications/styles';\nimport { approvalTemplateHeaders } from './config';\nimport Api from '../API';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport MoveApprovalTemplate from './MoveApprovalTemplate';\nimport ApprovalTemplateSettings from '../ApprovalTemplateSettings/ApprovalTemplateSettings';\nimport NoteAddIcon from '@mui/icons-material/NoteAdd';\nimport NotePopover from './NotePopover';\n\nconst tablePadding = (density: string) => {\n  if (density === 'Default') {\n    return '22px';\n  } else if (density === 'Compact') {\n    return '15px';\n  } else {\n    return '8px';\n  }\n};\n\nexport default function ApprovalTemplatesTable({\n  approvalTemplates,\n  setApprovalTemplates,\n  getApprovalTemplates,\n  setSnackbarState,\n  isLoading,\n  setIsLoading,\n  currentPage,\n  setCurrentPage,\n  rowsPerPage,\n  setRowsPerPage,\n  totalPages,\n  totalApprovalTemplates,\n  sortBy,\n  setSortBy,\n  sortOrder,\n  setSortOrder,\n  activeColumns,\n  apiKey,\n  userPermissions,\n  density,\n  archived,\n  setTemplateArchived,\n  enableEmailTemplateFields\n}: IApprovalTemplateTableProps) {\n  const timeZoneString = Intl.DateTimeFormat().resolvedOptions().timeZone;\n  const [actionsAnchorEl, setActionsAnchorEl] = useState(null);\n  const [tableHovered, setTableHovered] = useState(false);\n  const [canScroll, setCanScroll] = useState([false, true]);\n  const tableRef = useRef<HTMLDivElement>(null);\n  const actionCellRef = useRef(null);\n  const titleCellRef = useRef(null);\n  const [trashAlertOpen, setTrashAlertOpen] = useState(false);\n  const [editModalOpen, setEditModalOpen] = useState(false);\n  const [deleteApprovalTemplates, setDeleteApprovalTemplates] = useState([]);\n  const [editingApprovalTemplate, setEditingApprovalTemplate] = useState<IApprovalTemplate | null>(\n    null\n  );\n  const [action, setAction] = useState('');\n  const [noteAnchorEl, setNoteAnchorEl] = useState(null);\n\n  const handleArchiveOrTrashApprovalTemplates = async (ids: Array<number>, action: string) => {\n    setIsLoading(true);\n    try {\n      const response =\n        action === 'archive'\n          ? await Api.postArchiveApprovalTemplates(\n              { approval_template_ids: ids }\n            )\n          : await Api.deleteTrashApprovalTemplates(\n              { approval_template_ids: ids }\n            );\n      setSnackbarState({\n        message: response.res.success,\n        state: 'success'\n      });\n    } catch (error) {\n      setSnackbarState({\n        message: error?.errors,\n        state: 'error'\n      });\n    } finally {\n      setActionsAnchorEl(null);\n      getApprovalTemplates(null, null, null, null, null, archived);\n      setTemplateArchived(true);\n    }\n  };\n\n  const handleUnarchiveApprovalTemplates = async (ids: Array<number>) => {\n    setIsLoading(true);\n    try {\n      const response = await Api.postUnarchiveApprovalTemplates(\n        { approval_template_ids: ids }\n      );\n    } catch (error) {\n      setSnackbarState({\n        message: `Unable to unarchive approval template, ${error?.errors.join('. ')}`,\n        state: 'error'\n      });\n    } finally {\n      setActionsAnchorEl(null);\n      getApprovalTemplates(null, null, null, null, null, archived);\n      setTemplateArchived(true);\n    }\n  };\n\n  const handleRowsPerPageChange = (selection: number) => {\n    if (selection === rowsPerPage) return;\n    setRowsPerPage(selection);\n    getApprovalTemplates(null, selection, null, null, null, archived);\n  };\n\n  const handlePageChange = (event: React.ChangeEvent<unknown>, newPage: number) => {\n    if (newPage === currentPage) return;\n    setCurrentPage(newPage);\n    sessionStorage.setItem(`approvalTemplatesTablePage`, newPage);\n    getApprovalTemplates(newPage, null, null, null, null, archived);\n  };\n\n  const handleSortChange = (\n    event: React.MouseEvent<HTMLSpanElement, MouseEvent>,\n    columnValue: string\n  ) => {\n    const isAsc = sortBy === columnValue && sortOrder === 'asc';\n    const newSortOrder = isAsc ? 'desc' : 'asc';\n    setSortOrder(newSortOrder);\n    setSortBy(columnValue);\n    getApprovalTemplates(\n      null,\n      null,\n      null,\n      { sortBy: columnValue, sortOrder: newSortOrder },\n      null,\n      archived\n    );\n  };\n\n  const handleScroll = () => {\n    if (tableRef.current.scrollLeft < 10) {\n      setCanScroll([false, true]);\n    } else if (\n      tableRef.current.scrollLeft >\n      tableRef.current.scrollWidth - tableRef.current.clientWidth - 10\n    ) {\n      setCanScroll([true, false]);\n    } else {\n      setCanScroll([true, true]);\n    }\n  };\n\n  const handleScrollLeft = () => {\n    tableRef.current.scrollLeft > 360\n      ? (tableRef.current.scrollLeft -= 300)\n      : (tableRef.current.scrollLeft = 0);\n  };\n\n  const handleScrollRight = () => {\n    tableRef.current.scrollWidth - tableRef.current.clientWidth > 360\n      ? (tableRef.current.scrollLeft += 300)\n      : (tableRef.current.scrollLeft = tableRef.current.scrollWidth - tableRef.current.clientWidth);\n  };\n\n  function isScrollable(element: HTMLElement) {\n    return element && element.scrollWidth > element.clientWidth + 20;\n  }\n\n  const handleScrollableEnter = () => {\n    if (isScrollable(tableRef.current)) setTableHovered(true);\n  };\n\n  const handleScrollableExit = () => {\n    setTableHovered(false);\n  };\n\n  const handleAction = (template: IApprovalTemplate, action: string) => {\n    setEditModalOpen(true);\n    setEditingApprovalTemplate(template);\n    setAction(action);\n  };\n\n  const handleOpenNote = (event: React.MouseEvent<HTMLElement>, template: IApprovalTemplate) => {\n    setEditingApprovalTemplate(template);\n    setNoteAnchorEl(event.currentTarget);\n  };\n\n  const handleCloseNote = () => {\n    setEditingApprovalTemplate(null);\n    setNoteAnchorEl(null);\n  };\n\n  const headerStyle = (name: string) => {\n    switch (name) {\n      case 'name':\n        return {\n          ...classes.sticky,\n          ...classes.scrollShadowLeft,\n          ...(tableHovered && classes.scrollShadowVisible),\n          width: '200px'\n        };\n      case 'updated_at':\n        return { width: '120px' };\n      case 'created_by':\n        return { width: '140px' };\n      case 'note':\n        return { width: '150px' };\n      default:\n        return { width: '90px' };\n    }\n  };\n\n  return (\n    <Box>\n      <Box sx={{ position: 'relative' }}>\n        <Box sx={classes.arrowsContainer}>\n          <Box\n            onClick={handleScrollLeft}\n            onMouseEnter={handleScrollableEnter}\n            sx={{\n              ...classes.leftArrow,\n              ...(tableHovered && canScroll[0] && classes.showArrows),\n              left: `${titleCellRef.current?.getBoundingClientRect().right}px`,\n              top: 0\n            }}\n            id=\"left-arrow\"\n          >\n            <KeyboardArrowLeftIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n          </Box>\n        </Box>\n        <Box sx={classes.arrowsContainer}>\n          <Box\n            onMouseEnter={handleScrollableEnter}\n            onClick={handleScrollRight}\n            sx={{\n              ...classes.rightArrow,\n              ...(tableHovered && canScroll[1] && classes.showArrows),\n              left: `${actionCellRef.current?.getBoundingClientRect().left - 40}px`,\n              top: 0\n            }}\n            id=\"right-arrow\"\n          >\n            <KeyboardArrowRightIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n          </Box>\n        </Box>\n        <TableContainer\n          sx={{ boxShadow: 'none', scrollBehavior: 'smooth' }}\n          component={Paper}\n          onMouseEnter={handleScrollableEnter}\n          onMouseLeave={handleScrollableExit}\n          ref={tableRef}\n          onScroll={handleScroll}\n        >\n          <Table\n            sx={{\n              ...classes.tableWrapper,\n              'th, td, tr, thead': { padding: `${tablePadding(density)} 10px` }\n            }}\n            aria-label=\"approval templates\"\n          >\n            <TableHead>\n              <TableRow>\n                {approvalTemplateHeaders.map((header, index) => {\n                  if (\n                    header.name === 'note' &&\n                    !userPermissions?.['Approval Forms']?.['Manage Approval Form Notes']\n                  ) {\n                    return;\n                  }\n                  return (\n                    activeColumns[header.name] && (\n                      <TableCell\n                        key={header.name}\n                        sx={headerStyle(header.name)}\n                        ref={header.name === 'name' ? titleCellRef : null}\n                      >\n                        <TableSortLabel\n                          active={sortBy === header.name}\n                          direction={sortBy === header.name ? (sortOrder as 'asc' | 'desc') : 'asc'}\n                          onClick={(event) => handleSortChange(event, header.name)}\n                          sx={{ ...classes.sortable, paddingLeft: `${index === 0 ? '16px' : ''}` }}\n                          disabled={!header.sortable}\n                          id={`${header.name}-sort-label-approval-templates`}\n                        >\n                          {header.label}\n                        </TableSortLabel>\n                      </TableCell>\n                    )\n                  );\n                })}\n                {(userPermissions?.['Approval Forms']?.['Create / Edit Approval Forms (HR use)'] ||\n                  userPermissions?.['Approval Forms']?.['Edit Approval Form (HR use)'] ||\n                  userPermissions?.['Approval Forms']?.['Clone Approval Form (HR use)'] ||\n                  userPermissions?.['Approval Forms']?.['Archive Approval Forms (HR use)'] ||\n                  userPermissions?.['Approval Forms']?.['Move Approval Template']) && (\n                  <TableCell\n                    sx={{\n                      zIndex: '4',\n                      ...classes.attachmentsHeader,\n                      ...classes.stickyRight,\n                      ...classes.scrollShadowRight,\n                      ...(tableHovered && classes.scrollShadowVisible)\n                    }}\n                  />\n                )}\n              </TableRow>\n            </TableHead>\n            <TableBody>\n              {approvalTemplates &&\n                !isLoading &&\n                approvalTemplates.map((approvalTemplate: IApprovalTemplate, index) => {\n                  const updatedAt = approvalTemplate.updated_at\n                    ? moment\n                        .tz(approvalTemplate.updated_at, timeZoneString)\n                        .format('DD MMM YYYY,-h:mma z')\n                        .split('-')\n                        .map((line) => <div key={`${approvalTemplate.id}-${line}`}>{line}</div>)\n                    : '-';\n                  return (\n                    <TableRow key={approvalTemplate.id}>\n                      {activeColumns.name && (\n                        <TableCell\n                          sx={{\n                            ...classes.sticky,\n                            minWidth: '200px',\n                            ...classes.scrollShadowLeft,\n                            ...(tableHovered && classes.scrollShadowVisible)\n                          }}\n                        >\n                          <Box sx={classes.titleLink}>\n                            <a\n                              href={approvalTemplate.requisition_form_fields_link}\n                              className=\"approval-template-title-link\"\n                            >\n                              {approvalTemplate.name || '-'}\n                            </a>\n                          </Box>\n                        </TableCell>\n                      )}\n                      {activeColumns.updated_at && <TableCell>{updatedAt || '-'}</TableCell>}\n                      {activeColumns.created_by && (\n                        <TableCell>{approvalTemplate.created_by || '-'}</TableCell>\n                      )}\n                      {userPermissions?.['Approval Forms']?.['Manage Approval Form Notes'] &&\n                        activeColumns.note && <TableCell>{approvalTemplate.note || '-'}</TableCell>}\n                      {userPermissions?.['Approval Forms']?.[\n                        'Create / Edit Approval Forms (HR use)'\n                      ] ||\n                      userPermissions?.['Approval Forms']?.['Edit Approval Form (HR use)'] ||\n                      userPermissions?.['Approval Forms']?.['Clone Approval Form (HR use)'] ||\n                      userPermissions?.['Approval Forms']?.['Archive Approval Forms (HR use)'] ||\n                      userPermissions?.['Approval Forms']?.['Move Approval Template'] ||\n                      userPermissions?.['Approval Forms']?.['Manage Approval Form Notes'] ? (\n                        <TableCell\n                          sx={{\n                            zIndex: '4 !important',\n                            ...classes.attachmentsCell,\n                            ...classes.stickyRight,\n                            ...classes.scrollShadowRight,\n                            ...(tableHovered && classes.scrollShadowVisible)\n                          }}\n                          ref={actionCellRef}\n                        >\n                          <Box sx={{ ...classes.actionItems, justifyContent: 'end' }}>\n                            {!archived &&\n                              userPermissions?.['Approval Forms']?.[\n                                'Manage Approval Form Notes'\n                              ] && (\n                                <Tooltip placement=\"top\" title=\"Add Note\" arrow>\n                                  <IconButton\n                                    onClick={(e) => handleOpenNote(e, approvalTemplate)}\n                                    className=\"approval-template-add-note-button\"\n                                  >\n                                    <NoteAddIcon />\n                                  </IconButton>\n                                </Tooltip>\n                              )}\n                            {!archived &&\n                              (userPermissions?.['Approval Forms']?.[\n                                'Create / Edit Approval Forms (HR use)'\n                              ] ||\n                                userPermissions?.['Approval Forms']?.[\n                                  'Edit Approval Form (HR use)'\n                                ]) && (\n                                <Tooltip placement=\"top\" title=\"Edit\" arrow>\n                                  <IconButton\n                                    onClick={() => handleAction(approvalTemplate, 'Edit')}\n                                    className=\"approval-template-edit-button\"\n                                  >\n                                    <EditIcon />\n                                  </IconButton>\n                                </Tooltip>\n                              )}\n                            {!archived &&\n                              userPermissions?.['Approval Forms']?.[\n                                'Clone Approval Form (HR use)'\n                              ] && (\n                                <Tooltip placement=\"top\" title=\"Clone\" arrow>\n                                  <IconButton\n                                    onClick={() => handleAction(approvalTemplate, 'Clone')}\n                                    className=\"approval-template-clone-button\"\n                                  >\n                                    <FileCopyIcon />\n                                  </IconButton>\n                                </Tooltip>\n                              )}\n                            {userPermissions?.['Approval Forms']?.[\n                              'Archive Approval Forms (HR use)'\n                            ] || userPermissions?.['Approval Forms']?.['Move Approval Template']\n                              ? !archived && (\n                                  <Tooltip placement=\"top\" title=\"More options\" arrow>\n                                    <IconButton\n                                      onClick={(e) => {\n                                        setActionsAnchorEl(e.currentTarget);\n                                        setEditingApprovalTemplate(approvalTemplate);\n                                      }}\n                                      className=\"approval-template-action-button\"\n                                    >\n                                      <MoreVertIcon sx={{ color: '#666666' }} />\n                                    </IconButton>\n                                  </Tooltip>\n                                )\n                              : !archived &&\n                                (userPermissions?.['Approval Forms']?.[\n                                  'Create / Edit Approval Forms (HR use)'\n                                ] ||\n                                  userPermissions?.['Approval Forms']?.[\n                                    'Edit Approval Form (HR use)'\n                                  ]) && (\n                                  <Tooltip placement=\"top\" title=\"Archive\" arrow>\n                                    <IconButton\n                                      className=\"approval-template-delete-button\"\n                                      onClick={() => {\n                                        setDeleteApprovalTemplates(approvalTemplate.id);\n                                        setTrashAlertOpen(true);\n                                      }}\n                                    >\n                                      <DeleteIcon\n                                        sx={{ fontSize: '18px', color: '#E37D7A !important' }}\n                                      />\n                                    </IconButton>\n                                  </Tooltip>\n                                )}\n                            {archived &&\n                              userPermissions?.['Approval Forms']?.[\n                                'Archive Approval Forms (HR use)'\n                              ] && (\n                                <Tooltip placement=\"top\" title=\"Unarchive\" arrow>\n                                  <IconButton\n                                    className=\"unarchive-button\"\n                                    onClick={(e) =>\n                                      handleUnarchiveApprovalTemplates([approvalTemplate.id])\n                                    }\n                                  >\n                                    <UnarchiveIcon />\n                                  </IconButton>\n                                </Tooltip>\n                              )}\n                          </Box>\n                        </TableCell>\n                      ) : (\n                        <TableCell ref={actionCellRef}></TableCell>\n                      )}\n                    </TableRow>\n                  );\n                })}\n            </TableBody>\n          </Table>\n          {!isLoading && approvalTemplates?.length === 0 && (\n            <Box sx={classes.noApplications}>No Approval Templates found</Box>\n          )}\n          {isLoading && (\n            <>\n              {[...Array(10)].map((_, index) => (\n                <Box key={index} sx={classes.skeletonContainer}>\n                  <Skeleton animation=\"wave\" height={60} />\n                </Box>\n              ))}\n            </>\n          )}\n        </TableContainer>\n      </Box>\n      <Box sx={classes.paginationParent}>\n        <Box sx={classes.rowSelectContainer}>\n          <span>Rows per page: </span>\n          <FormControl>\n            <Select\n              id=\"rows-per-page\"\n              sx={classes.rowSelect}\n              value={rowsPerPage}\n              onChange={(e) => handleRowsPerPageChange(Number(e.target.value))}\n              displayEmpty\n              MenuProps={{ sx: classes.paginationMenuItems }}\n            >\n              <MenuItem id=\"first-rpp-item\" value={10}>\n                10\n              </MenuItem>\n              <MenuItem id=\"second-rpp-item\" value={20}>\n                20\n              </MenuItem>\n              <MenuItem value={30}>30</MenuItem>\n              <MenuItem value={40}>40</MenuItem>\n              <MenuItem value={50}>50</MenuItem>\n            </Select>\n          </FormControl>\n        </Box>\n        <Box sx={classes.paginationContainer}>\n          <Pagination\n            id=\"pagination-menu\"\n            count={totalPages}\n            page={currentPage}\n            siblingCount={0}\n            onChange={handlePageChange}\n            sx={classes.pagination}\n          />\n          <span id=\"total-jobs\">{totalApprovalTemplates} Total</span>\n        </Box>\n      </Box>\n      {!archived && noteAnchorEl && (\n        <NotePopover\n          setApprovalTemplates={setApprovalTemplates}\n          anchorEl={noteAnchorEl}\n          handleCloseNote={handleCloseNote}\n          approvalTemplateId={editingApprovalTemplate?.id}\n          approvalTemplateNote={editingApprovalTemplate?.note}\n          apiKey={apiKey}\n          setSnackbarState={setSnackbarState}\n        />\n      )}\n      {!archived && (\n        <Popover\n          id={actionsAnchorEl ? 'actions-menu-popover' : undefined}\n          sx={classes.actionsMenu}\n          open={Boolean(actionsAnchorEl)}\n          anchorEl={actionsAnchorEl}\n          onClose={() => setActionsAnchorEl(null)}\n          anchorOrigin={{\n            vertical: 'bottom',\n            horizontal: 'right'\n          }}\n          transformOrigin={{\n            vertical: 'top',\n            horizontal: 'right'\n          }}\n        >\n          {userPermissions?.['Approval Forms']?.['Move Approval Template'] && (\n            <span>\n              <MoveApprovalTemplate\n                apiKey={apiKey}\n                approvalTemplateId={editingApprovalTemplate?.id}\n                entity={editingApprovalTemplate?.entity_name}\n                getApprovalTemplates={getApprovalTemplates}\n                setSnackbarState={setSnackbarState}\n                setActionsAnchorEl={setActionsAnchorEl}\n              />\n            </span>\n          )}\n          {userPermissions?.['Approval Forms']?.['Archive Approval Forms (HR use)'] && (\n            <span\n              onClick={() =>\n                handleArchiveOrTrashApprovalTemplates(editingApprovalTemplate.id, 'archive')\n              }\n              className=\"archive-approval-template-action-button\"\n            >\n              Archive\n            </span>\n          )}\n          {(userPermissions?.['Approval Forms']?.['Create / Edit Approval Forms (HR use)'] ||\n            userPermissions?.['Approval Forms']?.['Edit Approval Form (HR use)']) && (\n            <span\n              onClick={() => {\n                setDeleteApprovalTemplates(editingApprovalTemplate.id);\n                setTrashAlertOpen(true);\n                setActionsAnchorEl(null);\n              }}\n              className=\"trash-approval-template-action-button\"\n            >\n              Trash\n            </span>\n          )}\n        </Popover>\n      )}\n      <GenericDialog\n        isDialogOpen={trashAlertOpen}\n        setDialogOpen={setTrashAlertOpen}\n        title=\"Trash approval template?\"\n        description=\"Are you sure want to trash this approval template?\"\n        buttonCallback={() => {\n          setTrashAlertOpen(false);\n          handleArchiveOrTrashApprovalTemplates(deleteApprovalTemplates, 'trash');\n          setDeleteApprovalTemplates([]);\n        }}\n        callbackLoading={false}\n        buttonText=\"Trash\"\n        url=\"\"\n      />\n      {editingApprovalTemplate && editModalOpen && (\n        <ApprovalTemplateSettings\n          modalsOpen={editModalOpen}\n          setModalsOpen={() => setEditModalOpen(false)}\n          setSnackbar={setSnackbarState}\n          approvalTemplateData={editingApprovalTemplate}\n          getApprovalTemplate={async () =>\n            await getApprovalTemplates(null, null, null, null, null, false)\n          }\n          action={action}\n          questions={editingApprovalTemplate.fields.filter(\n            (question) => question.enabled && !question.for_email_template\n          )}\n          enableEmailTemplateFields={enableEmailTemplateFields}\n        />\n      )}\n    </Box>\n  );\n}\n","import React, { useState, useMemo, useCallback, useEffect } from 'react';\nimport MultiSelect, { IOptionType } from '../../Components/CustomUIElements/MultiSelect';\nimport Box from '@mui/material/Box';\nimport Popover from '@mui/material/Popover';\nimport IconButton from '@mui/material/IconButton';\nimport Badge from '@mui/material/Badge';\nimport Button from '@mui/material/Button';\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport SortIcon from '@mui/icons-material/Sort';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { defaultFilters } from './config';\nimport { IFilterDropdownProps } from './types';\nimport { styles } from '../styles';\nimport Tooltip from '@mui/material/Tooltip';\n\nexport default function FilterDropdown({\n  filters,\n  setFilters,\n  getApprovalTemplates,\n  creators,\n  setUserPreferences,\n  setCurrentPage,\n  archived\n}: IFilterDropdownProps) {\n  const [anchorEl, setAnchorEl] = useState(null);\n  const [dropdownOpen, setDropdownOpen] = useState(false);\n  const [loadingFilters, setLoadingFilters] = useState(false);\n  const [tempFilters, setTempFilters] = useState({ ...filters });\n  const [numberOfFilters, setNumberOfFilters] = useState(0);\n\n  const calculateNumberOfFilters = useCallback((newFilters) => {\n    return Number(!!newFilters.created_by.length);\n  }, []);\n\n  const handleDropdownOpen = (event: React.MouseEvent<HTMLButtonElement>) => {\n    setAnchorEl(event.currentTarget);\n    setDropdownOpen(true);\n  };\n\n  const handleFilterChange = (name: string, value: IOptionType[] | number[] | boolean) => {\n    setTempFilters({ ...tempFilters, [name]: value });\n  };\n\n  const handleApplyFilters = () => {\n    setFilters({ ...tempFilters });\n    setCurrentPage(1);\n    sessionStorage.setItem(`approvalTemplatesTablePage`, 1);\n    setUserPreferences(null, null, null, { ...tempFilters }, null);\n    getApprovalTemplates(1, null, null, null, tempFilters, archived);\n    setDropdownOpen(false);\n    setAnchorEl(null);\n    setNumberOfFilters(calculateNumberOfFilters(tempFilters));\n  };\n\n  const handleResetFilters = () => {\n    setTempFilters({ ...defaultFilters });\n    setUserPreferences(null, null, null, { ...defaultFilters }, null);\n    setFilters({ ...defaultFilters });\n    getApprovalTemplates(null, null, null, null, defaultFilters, archived);\n    setDropdownOpen(false);\n    setAnchorEl(null);\n    setNumberOfFilters(0);\n  };\n\n  const creatorOptions = useMemo(() => {\n    return creators?.map((creator) => ({\n      name: creator.name,\n      id: creator.id\n    }));\n  }, [creators]);\n\n  useEffect(() => {\n    setTempFilters({ ...filters });\n    setNumberOfFilters(calculateNumberOfFilters(filters));\n  }, [filters, calculateNumberOfFilters]);\n\n  return (\n    <Tooltip title=\"Filter\" placement=\"top\" arrow>\n      <Box>\n        <Badge\n          badgeContent={numberOfFilters}\n          sx={{ '& .MuiBadge-badge': { backgroundColor: '#E37D7A', color: '#FFF' } }}\n        >\n          <IconButton\n            id=\"filter-approval-templates-button\"\n            sx={\n              dropdownOpen ? { ...styles.iconButton, ...styles.iconButtonOpen } : styles.iconButton\n            }\n            onClick={handleDropdownOpen}\n          >\n            {loadingFilters ? <CircularProgress size={24} /> : <SortIcon />}\n          </IconButton>\n        </Badge>\n        <Popover\n          id=\"filter-dropdown-popover\"\n          sx={{\n            ...styles.popover,\n            background: 'none',\n            '& .MuiBox-root': {\n              marginTop: 0\n            }\n          }}\n          open={dropdownOpen}\n          anchorEl={anchorEl}\n          onClose={() => setDropdownOpen(false)}\n          PaperProps={{\n            sx: {\n              overflow: 'unset',\n              boxShadow: '0px 2px 14px rgba(48,90,111,0.16)'\n            }\n          }}\n          anchorOrigin={{\n            vertical: 'bottom',\n            horizontal: 'right'\n          }}\n          transformOrigin={{\n            vertical: 'top',\n            horizontal: 'right'\n          }}\n        >\n          <Box sx={styles.filterPopoverContent}>\n            <Box sx={styles.scrollableFilters}>\n              <Box sx={styles.filterPopoverHeader}>\n                <Button\n                  id=\"reset-filters-button\"\n                  variant=\"contained\"\n                  endIcon={<CancelIcon />}\n                  sx={styles.clearButton}\n                  onClick={handleResetFilters}\n                >\n                  Clear all\n                </Button>\n                <Button\n                  id=\"apply-filters-button\"\n                  variant=\"contained\"\n                  onClick={handleApplyFilters}\n                  sx={styles.applyButton}\n                >\n                  Apply\n                </Button>\n              </Box>\n              <Box\n                sx={{ ...styles.filterOptionContainer, marginBottom: '20px' }}\n                id=\"created-by-filter\"\n              >\n                Created By\n                <MultiSelect\n                  handleFilterChange={(name, value) => handleFilterChange(name, value)}\n                  selectOptions={creatorOptions}\n                  name={'created_by'}\n                  filters={tempFilters.created_by}\n                />\n              </Box>\n            </Box>\n          </Box>\n        </Popover>\n      </Box>\n    </Tooltip>\n  );\n}\n","import React, { useState, useCallback } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport CloseIcon from '@mui/icons-material/Close';\nimport Button from '@mui/material/Button';\nimport { Virtualize } from '../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport Api from '../API';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { classes } from '../../Job/ActionModals/MoveJob/styles';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { StyledSnackbarProps } from '../../Components/CustomUIElements/StyledSnackbar';\n\nexport default function MoveApprovalTemplate({\n  apiKey,\n  approvalTemplateId,\n  entity,\n  getApprovalTemplates,\n  setSnackbarState,\n  setActionsAnchorEl\n}: {\n  apiKey: string;\n  entity: string | undefined;\n  approvalTemplateId: number;\n  getApprovalTemplates: () => void;\n  setActionsAnchorEl: (value: null) => void;\n  setSnackbarState: StyledSnackbarProps['setSnackBarState'];\n}) {\n  const [isLoading, setIsLoading] = useState<boolean>(false);\n  const [isDialogOpen, setIsDialogOpen] = useState(false);\n  const [hasError, setHasError] = useState(false);\n  const [assignedMoveOptions, setMoveJobOptions] = useState<string[] | null>(null);\n  const [moveTo, setMoveTo] = useState(null);\n\n  const fetchMoveJobData = useCallback(async () => {\n    setIsLoading(true);\n    try {\n      const data = await Api.getTargetEntities();\n      setMoveJobOptions(data?.res?.entities.map((a) => `${a.id} - ${a.name}`));\n    } catch (error) {\n      setSnackbarState({\n        message: error?.error,\n        state: 'error'\n      });\n    } finally {\n      setIsLoading(false);\n    }\n  }, [apiKey]);\n\n  const moveApprovalTemplate = async () => {\n    if (moveTo) {\n      if (typeof moveTo !== 'string') return setHasError(true);\n      else setHasError(false);\n    } else return setHasError(true);\n    try {\n      const entityId = moveTo.split(' -')[0];\n      await Api.moveApprovalTemplate(approvalTemplateId, entityId);\n      setSnackbarState({\n        message: 'Your approval template has been moved',\n        state: 'success'\n      });\n      setMoveTo(null);\n      setIsDialogOpen(false);\n      setActionsAnchorEl(null);\n      getApprovalTemplates();\n    } catch (error) {\n      setSnackbarState({\n        message: error?.error,\n        state: 'error'\n      });\n    } finally {\n      setIsLoading(false);\n    }\n  };\n\n  function setValue(value: string) {\n    setMoveTo(value);\n  }\n\n  return (\n    <Box>\n      <Box\n        onClick={() => {\n          setIsDialogOpen(true);\n          !assignedMoveOptions && fetchMoveJobData();\n        }}\n        id=\"move-approval-template-button\"\n      >\n        Move\n      </Box>\n      <Modal\n        open={isDialogOpen}\n        aria-labelledby=\"modal-modal-title\"\n        onClose={() => setIsDialogOpen(false)}\n      >\n        <Box sx={classes.modalContent}>\n          <CloseIcon onClick={() => setIsDialogOpen(false)} sx={classes.closeIcon} />\n          <Box id=\"modal-modal-title\" sx={classes.modalTitle}>\n            Move Approval Template\n          </Box>\n          <Box sx={{ marginTop: '1rem', display: 'grid' }}>\n            <Box sx={classes.subTitle}>Current entity: </Box>\n            <Box sx={{ margin: '0.75rem 0' }}>{entity}</Box>\n            <Box sx={{ marginTop: '2.25rem' }}>\n              {assignedMoveOptions ? (\n                <Box sx={{ marginTop: '1rem' }}>\n                  {!isLoading ? (\n                    <Box sx={classes.modalFormLine}>\n                      <Virtualize\n                        value={moveTo}\n                        passOptions={assignedMoveOptions}\n                        setValue={setValue}\n                        passedStyles={{ width: '290px', ...sharedClasses.formAutocomplete }}\n                        errorStyles={{ ...sharedClasses.errorBox, top: '-24px', right: '0px' }}\n                        error={!moveTo && hasError}\n                        label=\"Move to\"\n                      />\n                    </Box>\n                  ) : (\n                    <CircularProgress size={20} color=\"inherit\" />\n                  )}\n                </Box>\n              ) : (\n                <Box>\n                  {isLoading ? (\n                    <CircularProgress size={20} color=\"inherit\" />\n                  ) : (\n                    <Box sx={classes.noEntitys}>No Entities are available</Box>\n                  )}\n                </Box>\n              )}\n            </Box>\n          </Box>\n          <Box sx={classes.modalActions}>\n            <Button\n              disableElevation\n              sx={{ ...classes.buttonRedLight }}\n              variant=\"text\"\n              onClick={() => {\n                setIsDialogOpen(false);\n                setActionsAnchorEl(null);\n              }}\n            >\n              Cancel\n            </Button>\n            <Button sx={classes.revertloadButton} onClick={() => moveApprovalTemplate()}>\n              Submit\n            </Button>\n          </Box>\n        </Box>\n      </Modal>\n    </Box>\n  );\n}\n","import React, { useState } from 'react';\nimport Popover from '@mui/material/Popover';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport TextField from '@mui/material/TextField';\nimport DoneIcon from '@mui/icons-material/Done';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { INoteProps } from './types';\nimport { classes } from '../../Job/Applications/styles';\n\nconst NotePopover = ({\n  setApprovalTemplates,\n  anchorEl,\n  handleCloseNote,\n  approvalTemplateId,\n  approvalTemplateNote,\n  apiKey,\n  setSnackbarState\n}: INoteProps) => {\n  const [noteBody, setNoteBody] = useState(approvalTemplateNote || '');\n  const [savingNote, setSavingNote] = useState<boolean>(false);\n\n  async function saveNote() {\n    setSavingNote(true);\n    try {\n      const response = await fetch(`/api/v4/requisition_forms/${approvalTemplateId}`, {\n        method: 'PUT',\n        headers: {\n          'Content-Type': 'application/json',\n          'X-api-authenticate': apiKey\n        },\n        body: JSON.stringify({\n          requisition_form: {\n            note: noteBody\n          }\n        })\n      }).then((res) => res.json());\n      if (response) {\n        setApprovalTemplates((prevApprovalTemplates) => {\n          const newApprovalTemplates = [...prevApprovalTemplates];\n          const approvalTemplateIndex = newApprovalTemplates.findIndex(\n            (approvalTemplate) => approvalTemplate.id === approvalTemplateId\n          );\n          newApprovalTemplates[approvalTemplateIndex].note = noteBody;\n          return newApprovalTemplates;\n        });\n      }\n    } catch (error) {\n      setSnackbarState({\n        message: `Error saving note, ${error}`,\n        state: 'error'\n      });\n    } finally {\n      handleCloseNote();\n    }\n  }\n\n  return (\n    <Popover\n      id={anchorEl ? 'edit-note-popover' : undefined}\n      sx={classes.editNotePopover}\n      open={Boolean(anchorEl)}\n      anchorEl={anchorEl}\n      onClose={handleCloseNote}\n      anchorOrigin={{\n        vertical: 'bottom',\n        horizontal: 'right'\n      }}\n      transformOrigin={{\n        vertical: 'top',\n        horizontal: 'right'\n      }}\n    >\n      <>\n        <Box sx={classes.notesTitle}>Add approval template note</Box>\n        <TextField\n          id=\"note-input\"\n          sx={classes.noteInput}\n          label=\"Note\"\n          multiline\n          fullWidth\n          maxRows={4}\n          variant=\"outlined\"\n          defaultValue={approvalTemplateNote || noteBody}\n          onChange={(e) => setNoteBody(e.target.value)}\n          InputLabelProps={{\n            shrink: true\n          }}\n        />\n        <Box id=\"notes-button-container\" sx={classes.notesButtonContainer}>\n          <Button sx={classes.notesCancelButton} endIcon={<CloseIcon />} onClick={handleCloseNote}>\n            Cancel\n          </Button>\n          <Button\n            id=\"save-note-approval-templates-button\"\n            sx={classes.notesEditSaveButton}\n            endIcon={savingNote ? <CircularProgress size={16} /> : <DoneIcon />}\n            onClick={() => {\n              saveNote();\n            }}\n            disabled={savingNote}\n          >\n            {approvalTemplateNote ? 'Update' : 'Save'}\n          </Button>\n        </Box>\n      </>\n    </Popover>\n  );\n};\n\nexport default NotePopover;\n","import React, { useState } from 'react';\nimport Box from '@mui/material/Box';\nimport FormControl from '@mui/material/FormControl';\nimport OutlinedInput from '@mui/material/OutlinedInput';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport SearchIcon from '@mui/icons-material/Search';\nimport { IGetApprovalTemplates } from './types';\nimport { styles } from '../styles';\nimport { useDebouncedCallback } from 'use-debounce';\n\nexport default function Search({\n  setSearch,\n  getApprovalTemplates,\n  archived\n}: {\n  setSearch: (query: string) => void;\n  getApprovalTemplates: IGetApprovalTemplates;\n  archived: boolean;\n}) {\n  const [tempSearch, setTempSearch] = useState('');\n  const debouncedAPICall = useDebouncedCallback((searchQuery) => {\n    getApprovalTemplates(null, null, searchQuery, null, null, archived);\n    setSearch(searchQuery);\n  }, 600);\n\n  const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    setTempSearch(event.target.value);\n    debouncedAPICall(event.target.value);\n  };\n\n  return (\n    <Box sx={{ width: '100%' }}>\n      <FormControl fullWidth>\n        <OutlinedInput\n          id=\"approval-template-search\"\n          sx={styles.searchInput}\n          placeholder={'Search by title'}\n          value={tempSearch}\n          onChange={handleChange}\n          startAdornment={\n            <InputAdornment sx={{ padding: '0px 0px 0px 14px' }} position=\"start\">\n              <SearchIcon />\n            </InputAdornment>\n          }\n        />\n      </FormControl>\n    </Box>\n  );\n}\n","import React, { Dispatch, useState, SetStateAction } from 'react';\nimport { Box, ToggleButton, ToggleButtonGroup } from '@mui/material';\nimport { styles } from '../styles';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport ApprovalTemplates from '../ApprovalTemplates/ApprovalTemplates';\nimport ApprovalFormsTab from '../ApprovalFormsTab';\nimport { IUserPermissions } from '../../Components/sharedTypes';\n\nexport default function ArchivedFormsAndTemplates({\n  apiKey,\n  userPermissions,\n  setTemplateArchived\n}: {\n  apiKey: string;\n  userPermissions: IUserPermissions | undefined;\n  setTemplateArchived: Dispatch<SetStateAction<boolean>>;\n}) {\n  const [selected, setSelected] = useState(\n    userPermissions?.['Approval Forms']?.['Archive Approval Forms']\n      ? 'approvalForms'\n      : 'approvalTemplates'\n  );\n\n  const handleToggle = (event: React.MouseEvent<HTMLElement>, newSelected: string) => {\n    if (newSelected !== null) {\n      setSelected(newSelected);\n    }\n  };\n\n  return (\n    <Box>\n      <Box sx={styles.automationContainer}>\n        <Box sx={styles.toggleButtonsContainer}>\n          <ToggleButtonGroup\n            value={selected}\n            exclusive\n            onChange={handleToggle}\n            aria-label=\"approval forms or templates\"\n          >\n            {userPermissions?.['Approval Forms']?.['Archive Approval Forms'] && (\n              <ToggleButton value=\"approvalForms\" sx={sharedClasses.toggleButton}>\n                Approval forms\n              </ToggleButton>\n            )}\n            {userPermissions?.['Approval Forms']?.['Archive Approval Forms (HR use)'] && (\n              <ToggleButton value=\"approvalTemplates\" sx={sharedClasses.toggleButton}>\n                Approval templates\n              </ToggleButton>\n            )}\n          </ToggleButtonGroup>\n        </Box>\n        {selected === 'approvalForms' ? (\n          <ApprovalFormsTab apiKey={apiKey} userPermissions={userPermissions} archived={true} />\n        ) : (\n          <ApprovalTemplates\n            apiKey={apiKey}\n            userPermissions={userPermissions}\n            archived={true}\n            setTemplateArchived={setTemplateArchived}\n          />\n        )}\n      </Box>\n    </Box>\n  );\n}\n","import React, { useState } from 'react';\nimport {\n  Box,\n  IconButton,\n  FormControl,\n  FormGroup,\n  FormControlLabel,\n  Switch,\n  Stack,\n  Tooltip,\n  Popper\n} from '@mui/material';\nimport ViewColumnIcon from '@mui/icons-material/ViewColumn';\nimport { IDropdownProps } from '../types';\nimport { styles } from '../styles';\nimport { ClickAwayListener } from '@mui/base/ClickAwayListener';\nimport {\n  DndContext,\n  closestCenter,\n  KeyboardSensor,\n  PointerSensor,\n  useSensor,\n  useSensors\n} from '@dnd-kit/core';\nimport {\n  arrayMove,\n  SortableContext,\n  sortableKeyboardCoordinates,\n  verticalListSortingStrategy\n} from '@dnd-kit/sortable';\nimport SortableField from './SortableField';\nimport { isPermittedOption } from '../helper';\n\nexport default function DndFieldDropdown({\n  sortableColumns,\n  setSortableColumns,\n  density,\n  setDensity,\n  setUserPreferences,\n  label,\n  userPermissions\n}: IDropdownProps) {\n  const [anchorEl, setAnchorEl] = useState<HTMLButtonElement | null>(null);\n  const [dropdownOpen, setDropdownOpen] = useState(false);\n\n  const handleFieldSwitchChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    const newSortableColumns = sortableColumns.map((field) => {\n      if (field.id === event.target.name) {\n        return { ...field, enabled: event.target.checked };\n      } else {\n        return field;\n      }\n    });\n    setSortableColumns(newSortableColumns);\n    setUserPreferences(null, null, newSortableColumns, null, null);\n  };\n\n  const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n    setAnchorEl(event.currentTarget);\n    setDropdownOpen((prev) => !prev);\n  };\n\n  const sensors = useSensors(\n    useSensor(PointerSensor),\n    useSensor(KeyboardSensor, {\n      coordinateGetter: sortableKeyboardCoordinates\n    })\n  );\n\n  function handleDragEnd(event) {\n    const { active, over } = event;\n\n    if (active.id !== over.id) {\n      const oldIndex = sortableColumns.map((c) => c.id).indexOf(active.id);\n      const newIndex = sortableColumns.map((c) => c.id).indexOf(over.id);\n      const newArray = arrayMove(sortableColumns, oldIndex, newIndex);\n\n      setSortableColumns(newArray);\n      setUserPreferences(null, null, newArray, null, null);\n    }\n  }\n\n  return (\n    <ClickAwayListener onClickAway={() => setDropdownOpen(false)}>\n      <Box>\n        <Tooltip title=\"Table settings\" placement=\"top\" arrow>\n          <IconButton\n            id={`field-dropdown-${label}-button`}\n            sx={\n              dropdownOpen ? { ...styles.iconButton, ...styles.iconButtonOpen } : styles.iconButton\n            }\n            onClick={handleClick}\n          >\n            <ViewColumnIcon />\n          </IconButton>\n        </Tooltip>\n        <Popper\n          id=\"field-dropdown-popover\"\n          sx={styles.popover}\n          open={dropdownOpen}\n          anchorEl={anchorEl}\n          placement=\"bottom-end\"\n        >\n          <Box sx={styles.popoverContent}>\n            <FormControl component=\"fieldset\" variant=\"standard\">\n              <Stack sx={styles.tableSettingsHeader}>Column</Stack>\n              <FormGroup id=\"field-dropdown-switches\">\n                <DndContext\n                  sensors={sensors}\n                  collisionDetection={closestCenter}\n                  onDragEnd={handleDragEnd}\n                >\n                  <SortableContext items={sortableColumns} strategy={verticalListSortingStrategy}>\n                    {sortableColumns.map((field, index) => {\n                      if (\n                        field.canToggle === false ||\n                        !isPermittedOption(field.id, userPermissions)\n                      )\n                        return null;\n                      return (\n                        <SortableField\n                          key={index}\n                          field={field}\n                          handleFieldSwitchChange={handleFieldSwitchChange}\n                        />\n                      );\n                    })}\n                  </SortableContext>\n                </DndContext>\n              </FormGroup>\n            </FormControl>\n            <Stack sx={{ ...styles.tableSettingsHeader, paddingTop: 2 }}>Density</Stack>\n            <FormControl>\n              <FormGroup>\n                {['Default', 'Compact', 'Ultra Compact'].map((size, index) => {\n                  const isSwitched = size === density;\n                  return (\n                    <FormControlLabel\n                      sx={\n                        !isSwitched\n                          ? { ...styles.switchLabels, ...styles.labelActive }\n                          : styles.switchLabels\n                      }\n                      key={index}\n                      control={\n                        <Switch\n                          sx={isSwitched ? styles.switchActive : styles.switch}\n                          checked={isSwitched}\n                          onChange={(event) => {\n                            setDensity(size);\n                            setUserPreferences(null, null, null, null, size);\n                          }}\n                          name={'density'}\n                        />\n                      }\n                      label={size}\n                      labelPlacement=\"start\"\n                    />\n                  );\n                })}\n              </FormGroup>\n            </FormControl>\n          </Box>\n        </Popper>\n      </Box>\n    </ClickAwayListener>\n  );\n}\n","import React, { useState } from 'react';\nimport {\n  Box,\n  IconButton,\n  FormControl,\n  FormGroup,\n  FormControlLabel,\n  Switch,\n  Stack,\n  Tooltip,\n  Popper\n} from '@mui/material';\nimport ViewColumnIcon from '@mui/icons-material/ViewColumn';\nimport { IDropdownProps } from '../types';\nimport { styles } from '../styles';\nimport { ClickAwayListener } from '@mui/base/ClickAwayListener';\n\nexport default function FieldDropdown({\n  options,\n  activeColumns,\n  handleChangeActiveColumns,\n  density,\n  setDensity,\n  userPermissions,\n  setUserPreferences,\n  label\n}: IDropdownProps) {\n  const [anchorEl, setAnchorEl] = useState<HTMLButtonElement | null>(null);\n  const [dropdownOpen, setDropdownOpen] = useState(false);\n\n  const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    handleChangeActiveColumns({\n      ...activeColumns,\n      [event.target.name]: event.target.checked\n    });\n    setUserPreferences(\n      null,\n      null,\n      {\n        ...activeColumns,\n        [event.target.name]: event.target.checked\n      },\n      null,\n      null\n    );\n  };\n\n  const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n    setAnchorEl(event.currentTarget);\n    setDropdownOpen((prev) => !prev);\n  };\n\n  return (\n    <ClickAwayListener onClickAway={() => setDropdownOpen(false)}>\n      <Box>\n        <Tooltip title=\"Table settings\" placement=\"top\" arrow>\n          <IconButton\n            id={`field-dropdown-${label}-button`}\n            sx={\n              dropdownOpen ? { ...styles.iconButton, ...styles.iconButtonOpen } : styles.iconButton\n            }\n            onClick={handleClick}\n          >\n            <ViewColumnIcon />\n          </IconButton>\n        </Tooltip>\n        <Popper\n          id=\"field-dropdown-popover\"\n          sx={styles.popover}\n          open={dropdownOpen}\n          anchorEl={anchorEl}\n          placement=\"bottom-end\"\n        >\n          <Box sx={styles.popoverContent}>\n            <FormControl component=\"fieldset\" variant=\"standard\">\n              <Stack sx={styles.tableSettingsHeader}>Column</Stack>\n              <FormGroup id=\"field-dropdown-switches\">\n                {options.map((field, index) => {\n                  if (\n                    field.name === 'note' &&\n                    !userPermissions?.['Approval Forms']?.['Manage Approval Form Notes']\n                  ) {\n                    return;\n                  }\n                  const isSwitched = activeColumns[field.name as keyof typeof activeColumns];\n                  return (\n                    <FormControlLabel\n                      sx={\n                        !isSwitched\n                          ? { ...styles.switchLabels, ...styles.labelActive }\n                          : styles.switchLabels\n                      }\n                      key={index}\n                      control={\n                        <Switch\n                          sx={isSwitched ? styles.switchActive : styles.switch}\n                          checked={isSwitched}\n                          onChange={handleChange}\n                          name={field.name}\n                        />\n                      }\n                      label={field.label}\n                      labelPlacement=\"start\"\n                    />\n                  );\n                })}\n              </FormGroup>\n            </FormControl>\n            <Stack sx={{ ...styles.tableSettingsHeader, paddingTop: 2 }}>Density</Stack>\n            <FormControl>\n              <FormGroup>\n                {['Default', 'Compact', 'Ultra Compact'].map((size, index) => {\n                  const isSwitched = size === density;\n                  return (\n                    <FormControlLabel\n                      sx={\n                        !isSwitched\n                          ? { ...styles.switchLabels, ...styles.labelActive }\n                          : styles.switchLabels\n                      }\n                      key={index}\n                      control={\n                        <Switch\n                          sx={isSwitched ? styles.switchActive : styles.switch}\n                          checked={isSwitched}\n                          onChange={(event) => {\n                            setDensity(size);\n                            setUserPreferences(null, null, null, null, size);\n                          }}\n                          name={'density'}\n                        />\n                      }\n                      label={size}\n                      labelPlacement=\"start\"\n                    />\n                  );\n                })}\n              </FormGroup>\n            </FormControl>\n          </Box>\n        </Popper>\n      </Box>\n    </ClickAwayListener>\n  );\n}\n","import React, { useState, useCallback, useEffect, useMemo } from 'react';\nimport MultiSelect, { IOptionType } from '../../Components/CustomUIElements/MultiSelect';\nimport Box from '@mui/material/Box';\nimport IconButton from '@mui/material/IconButton';\nimport Badge from '@mui/material/Badge';\nimport Button from '@mui/material/Button';\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport SortIcon from '@mui/icons-material/Sort';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { defaultFilters, defaultFilterOptions } from '../config';\nimport { IFilterDropdownProps } from '../types';\nimport { styles } from '../styles';\nimport Tooltip from '@mui/material/Tooltip';\nimport { ClickAwayListener } from '@mui/base/ClickAwayListener';\nimport Popper from '@mui/material/Popper';\n\nexport default function FilterDropdown({\n  filters,\n  setFilters,\n  getApprovalForms,\n  entityList,\n  assignedUserList,\n  requesterList,\n  setUserPreferences,\n  setCurrentPage,\n  archived\n}: IFilterDropdownProps) {\n  const [anchorEl, setAnchorEl] = useState(null);\n  const [dropdownOpen, setDropdownOpen] = useState(false);\n  const [loadingFilters, setLoadingFilters] = useState(false);\n  const [tempFilters, setTempFilters] = useState({ ...filters });\n  const [numberOfFilters, setNumberOfFilters] = useState(0);\n\n  const calculateNumberOfFilters = useCallback((newFilters) => {\n    return (\n      Number(!!newFilters?.state.length) +\n      Number(!!newFilters?.entity_ids?.length) +\n      Number(!!newFilters?.assigned_user_ids?.length) +\n      Number(!!newFilters?.requested_by_users?.length)\n    );\n  }, []);\n\n  const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n    setAnchorEl(event.currentTarget);\n    setDropdownOpen((prev) => !prev);\n  };\n\n  const handleFilterChange = (name: string, value: IOptionType[] | number[] | boolean) => {\n    setTempFilters({ ...tempFilters, [name]: value });\n  };\n\n  const handleApplyFilters = () => {\n    setFilters({ ...tempFilters });\n    setCurrentPage(1);\n    sessionStorage.setItem(`approvalFormsTablePage`, 1);\n    setUserPreferences(null, null, null, { ...tempFilters }, null);\n    getApprovalForms(1, null, null, null, tempFilters, archived);\n    setDropdownOpen(false);\n    setAnchorEl(null);\n    setNumberOfFilters(calculateNumberOfFilters(tempFilters));\n  };\n\n  const handleResetFilters = () => {\n    setTempFilters({ ...defaultFilters });\n    setUserPreferences(null, null, null, { ...defaultFilters }, null);\n    setFilters({ ...defaultFilters });\n    getApprovalForms(null, null, null, null, defaultFilters, archived);\n    setDropdownOpen(false);\n    setAnchorEl(null);\n    setNumberOfFilters(0);\n  };\n\n  const entityOptions = useMemo(() => {\n    return entityList?.map((entity) => ({\n      name: entity.name,\n      id: entity.id\n    }));\n  }, [entityList]);\n\n  const assignedUserOptions = useMemo(() => {\n    return assignedUserList?.map((user) => ({\n      name: user.name,\n      id: user.id\n    }));\n  }, [assignedUserList]);\n\n  const requesterOptions = useMemo(() => {\n    return requesterList?.map((requester) => ({\n      name: requester.name,\n      id: requester.id\n    }));\n  }, [requesterList]);\n\n  useEffect(() => {\n    setTempFilters({ ...filters });\n    setNumberOfFilters(calculateNumberOfFilters(filters));\n  }, [filters, calculateNumberOfFilters]);\n\n  return (\n    <ClickAwayListener onClickAway={() => setDropdownOpen(false)}>\n      <Box>\n        <Tooltip title=\"Filter\" placement=\"top\" arrow>\n          <Badge\n            badgeContent={numberOfFilters}\n            sx={{ '& .MuiBadge-badge': { backgroundColor: '#E37D7A', color: '#FFF' } }}\n          >\n            <IconButton\n              id=\"filter-approval-forms-button\"\n              sx={\n                dropdownOpen ? { ...styles.iconButton, ...styles.iconButtonOpen } : styles.iconButton\n              }\n              onClick={handleClick}\n            >\n              {loadingFilters ? <CircularProgress size={24} /> : <SortIcon />}\n            </IconButton>\n          </Badge>\n        </Tooltip>\n        <Popper\n          id=\"filter-approval-forms-dropdown-popover\"\n          sx={styles.popover}\n          open={dropdownOpen}\n          anchorEl={anchorEl}\n          placement=\"bottom-end\"\n        >\n          <Box sx={styles.filterPopoverContent}>\n            <Box sx={styles.scrollableFilters}>\n              <Box sx={styles.filterPopoverHeader}>\n                <Button\n                  id=\"reset-filters-button\"\n                  variant=\"contained\"\n                  endIcon={<CancelIcon />}\n                  sx={styles.clearButton}\n                  onClick={handleResetFilters}\n                >\n                  Clear all\n                </Button>\n                <Button\n                  id=\"apply-filters-button\"\n                  variant=\"contained\"\n                  onClick={handleApplyFilters}\n                  sx={styles.applyButton}\n                >\n                  Apply\n                </Button>\n              </Box>\n              <Box sx={{ ...styles.filterOptionContainer, marginBottom: '20px' }} id=\"state-filter\">\n                State\n                <MultiSelect\n                  handleFilterChange={(name, value) => handleFilterChange(name, value)}\n                  selectOptions={defaultFilterOptions.state}\n                  name={'state'}\n                  filters={tempFilters.state}\n                />\n              </Box>\n              <Box\n                sx={{ ...styles.filterOptionContainer, marginBottom: '20px' }}\n                id=\"entity-filter\"\n              >\n                Entity\n                <MultiSelect\n                  handleFilterChange={(name, value) => handleFilterChange(name, value)}\n                  selectOptions={entityOptions}\n                  name={'entity_ids'}\n                  filters={tempFilters.entity_ids}\n                />\n              </Box>\n              <Box\n                sx={{ ...styles.filterOptionContainer, marginBottom: '20px' }}\n                id=\"assigned-user-filter\"\n              >\n                Assigned User\n                <MultiSelect\n                  handleFilterChange={(name, value) => handleFilterChange(name, value)}\n                  selectOptions={assignedUserOptions}\n                  name={'assigned_user_ids'}\n                  filters={tempFilters.assigned_user_ids}\n                />\n              </Box>\n              <Box\n                sx={{ ...styles.filterOptionContainer, marginBottom: '20px' }}\n                id=\"requester-filter\"\n              >\n                Requested By\n                <MultiSelect\n                  handleFilterChange={(name, value) => handleFilterChange(name, value)}\n                  selectOptions={requesterOptions}\n                  name={'requested_by_users'}\n                  filters={tempFilters.requested_by_users}\n                />\n              </Box>\n            </Box>\n          </Box>\n        </Popper>\n      </Box>\n    </ClickAwayListener>\n  );\n}\n","import React from 'react';\nimport { Box, IconButton, FormControlLabel, Switch } from '@mui/material';\nimport DragIndicatorIcon from '@mui/icons-material/DragIndicator';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { IDropdownProps } from '../types';\nimport { styles } from '../styles';\n\nconst SortableField = ({\n  field,\n  handleFieldSwitchChange\n}: {\n  field: IDropdownProps['sortableColumns'][0];\n  handleFieldSwitchChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}) => {\n  const { attributes, listeners, setNodeRef, setActivatorNodeRef, transform, transition } =\n    useSortable({ id: field.id });\n\n  const style = {\n    transform: CSS.Translate.toString(transform),\n    transition\n  };\n\n  return (\n    <Box key={field.id} sx={styles.sortableField} style={style} ref={setNodeRef} {...attributes}>\n      <IconButton ref={setActivatorNodeRef} {...listeners}>\n        <DragIndicatorIcon sx={{ fontSize: 16 }} />\n      </IconButton>\n      <FormControlLabel\n        sx={\n          !field.enabled\n            ? { ...styles.sortableSwitchLabels, ...styles.labelActive }\n            : styles.sortableSwitchLabels\n        }\n        control={\n          <Switch\n            sx={field.enabled ? styles.switchActive : styles.switch}\n            checked={field.enabled}\n            onChange={handleFieldSwitchChange}\n            name={field.id}\n          />\n        }\n        label={field.label}\n        labelPlacement=\"start\"\n      />\n    </Box>\n  );\n};\n\nexport default SortableField;\n","import React, { useRef, useState, useCallback, useEffect } from 'react';\nimport {\n  Autocomplete,\n  Box,\n  Button,\n  IconButton,\n  Stack,\n  Skeleton,\n  Tab,\n  Tabs,\n  TextField,\n  Typography\n} from '@mui/material';\nimport { ArrowCircleLeft as ArrowCircleLeftIcon, Close as CloseIcon } from '@mui/icons-material';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport {\n  ITabs,\n  IApprovalTemplate,\n  IApprovalManagers,\n  IApprovers,\n  IAssignableUsers,\n  IApprovalForm,\n  IAnswer,\n  IAttachedDocument\n} from '../types';\nimport { classes } from './styles';\nimport Api from '../API';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport StyledSnackbar from '../../Components/CustomUIElements/StyledSnackbar';\nimport { DebouncedFormTextField } from '../../Components/CustomUIElements/FormTextField';\nimport QuestionFieldGenerator, {\n  IApplicantQuestion,\n  IFieldChoice\n} from '../../Components/Utilities/QuestionFieldGenerator';\nimport { FileWithPath } from 'react-dropzone';\nimport DocTypeIcon from '../../Components/Utilities/DocTypeIcon';\nimport AttachmentSelector from '../../Components/Utilities/AttachmentSelector';\nimport { serialize } from 'object-to-formdata';\nimport moment from 'moment';\nimport { IJob, IPermissions } from '../../Jobs/types';\nimport LoadingButton from '../../Components/Buttons/LoadingButton';\nimport { scrollToElement } from '../../utils/scroll-to-element';\nimport { FormTextField } from '../../Components/CustomUIElements/FormTextField';\nimport { emailIsValid } from '../../Components/Utilities/emailIsValid';\nimport { getPermissions } from '../../../shared/permissionHelpers';\n\nconst urlParams = new URLSearchParams(window.location.search);\nconst template_id = urlParams.get('form_id'); // used for new approval created from the approval forms page\nconst jobId = urlParams.get('job_id'); // used for new approval created from the candidate application\nconst applicationId = urlParams.get('application_id'); // used for new approval created from the candidate application\nconst cognologyRecordId = urlParams.get('cognology_record_id'); // used for new approval created from the application export cognology\nconst newUI = urlParams.get('new_ui'); // used for new approval created from the NEW UI application export cognology\nconst BASE_URL = window.location.origin;\n\nconst createApprovalFormQuestionsObject = (questions: IApplicantQuestion[]) => {\n  const newObject = {};\n  questions.forEach((question: IApplicantQuestion) => {\n    if (question.type === 'RankField') {\n      newObject[question.id] = {\n        ...question,\n        data: {}\n      };\n      question.field_choices.forEach((choice: IFieldChoice, index: number) => {\n        newObject[question.id]['data'][choice.id] = index + 1;\n      });\n    } else if (question.type === 'JobReferenceLookupField') {\n      newObject[question.id] = {\n        ...question,\n        data: 'validation bypass'\n      };\n    } else {\n      newObject[question.id] = {\n        ...question,\n        data: ''\n      };\n    }\n  });\n  return newObject;\n};\n\nexport const createQuestionErrorsObject = (questions: IApplicantQuestion[]) => {\n  const errors: Record<number, string> = {};\n  questions.forEach((question: IApplicantQuestion) => {\n    errors[question.id] = '';\n  });\n  return errors;\n};\n\nexport const containsDuplicates = (array: string[]) => {\n  return new Set(array).size !== array.length;\n};\n\nconst getAnswerAttributes = (id: number, value: any, answers?: IAnswer[]) => {\n  const questionObj = answers?.find((answer: IAnswer) => answer.field_id === value.id);\n  if (value.type === 'RadioButtonField' || value.type === 'SelectField') {\n    return {\n      field_id: id,\n      field_choice_id: value.data,\n      id: questionObj?.id\n    };\n  } else if (value.type === 'CheckBoxField') {\n    return {\n      field_id: id,\n      field_choice_ids: Object.entries(value.data)\n        .filter(([_, value]) => value)\n        .map(([id]) => id),\n      id: questionObj?.id\n    };\n  } else {\n    return {\n      field_id: id,\n      data: value.data,\n      id: questionObj?.id\n    };\n  }\n};\n\nexport default function NewApproval({\n  apiKey,\n  entityApprovalAdmin,\n  requisitionId, // used for editing new approval\n  templateId // used for editing new approval\n}: {\n  apiKey: string;\n  entityApprovalAdmin: string;\n  requisitionId?: number;\n  templateId?: number;\n}) {\n  const [approvalTemplateData, setApprovalTemplateData] = useState<IApprovalTemplate | null>(null);\n  const [loadingData, setLoadingData] = useState<boolean>(false);\n  const [loadingApprovers, setLoadingApprovers] = useState<boolean>(false);\n  const [loadingEmailTemplates, setLoadingEmailTemplates] = useState<boolean>(false);\n  const [loadingAssignableUsers, setLoadingAssignableUsers] = useState<boolean>(false);\n  const [indicatorWidth, setIndicatorWidth] = useState(0);\n  const [approvers, setApprovers] = useState<\n    {\n      email: string;\n      name?: string;\n      id?: number;\n      destroyed?: boolean;\n      error?: string;\n      mandatoryBlank?: boolean;\n    }[]\n  >([]);\n  const [approvalManagers, setApprovalManagers] = useState<IApprovalManagers[]>([]);\n  const [notes, setNotes] = useState<string>('');\n  const [snackbar, setSnackbar] = useState<{\n    message: string;\n    state: 'success' | 'warning' | 'error';\n  }>({\n    message: '',\n    state: 'success'\n  });\n  const [emailTemplates, setEmailTemplates] = useState<\n    [string, Array<{ id: number; name: string }>][]\n  >([]);\n  const [approvalEmailTemplate, setApprovalEmailTemplate] = useState<number | null>(null);\n  const [approvalAdministrator, setApprovalAdministrator] = useState<string>(\n    entityApprovalAdmin || ''\n  );\n  const [administratorList, setAdministratorList] = useState<IApprovers[]>([]);\n  const [fileList, setFileList] = useState<FileWithPath[]>([]);\n  const [attachedDocuments, setAttachedDocuments] = useState<IAttachedDocument[]>([]);\n  const [questions, setQuestions] = useState<IApplicantQuestion[]>([]);\n  const [emailTemplateQuestions, setEmailTemplateQuestions] = useState<IApplicantQuestion[]>([]);\n  const [approvalFormQuestions, setApprovalFormQuestions] = useState(() =>\n    createApprovalFormQuestionsObject([])\n  );\n  const [questionErrors, setQuestionErrors] = useState(() =>\n    createQuestionErrorsObject(questions || [])\n  );\n\n  const fieldRefs = {\n    positionTitle: useRef<HTMLDivElement>(null),\n    approvalManagers: useRef<HTMLDivElement>(null),\n    questions: useRef<Array<HTMLDivElement | null>>([])\n  };\n\n  const [assignableUsers, setAssignableUsers] = useState<IAssignableUsers[]>([]);\n  const [assignedUser, setAssignedUser] = useState<number | null>(null);\n  const [fetchingCSV, setFetchingCSV] = useState<boolean>(false);\n  const [positionTitle, setPositionTitle] = useState<string>('');\n  const [approvalFormData, setApprovalFormData] = useState<IApprovalForm>({});\n  const [loadingFormData, setLoadingFormData] = useState<boolean>(false);\n  const [dataInitialized, setDataInitialized] = useState<boolean>(true);\n  const [jobs, setJobs] = useState<IJob[]>([]);\n  const [job, setJob] = useState<number | null>(null);\n  const [applications, setApplications] = useState<{ id: number; candidate_name: string }[]>([]);\n  const [application, setApplication] = useState<number | null>(null);\n  const [fetchingJobs, setFetchingJobs] = useState<boolean>(false);\n  const [fetchingApplications, setFetchingApplications] = useState<boolean>(false);\n  const [fetchingInitialJobsAndApplications, setFetchingInitialJobsAndApplications] =\n    useState<boolean>(false);\n  const [positionTitleError, setPositionTitleError] = useState<string>('');\n  const [approvalAnsweredIds, setApprovalAnsweredIds] = useState<number[] | null>(null);\n  const [userPermissions, setUserPermissions] = useState<Record<string, Record<string, boolean>>>(\n    {}\n  );\n\n  const showPositionTitle = !Number(approvalTemplateData?.config?.hide_position_title);\n\n  async function getUserPermissions(apiKey: string) {\n    try {\n      const data = await getPermissions(apiKey);\n      const allRoles: Record<string, Record<string, boolean>> = {};\n      data.roles.forEach((role: IPermissions) =>\n        role.feature_groups.forEach((group) => {\n          !allRoles[group.name] ? (allRoles[group.name] = {}) : null;\n          group.permissions.forEach((permission) => (allRoles[group.name][permission] = true));\n        })\n      );\n      setUserPermissions(allRoles);\n    } catch (error) {\n      setSnackbar({\n        message: 'There was an error getting permissions',\n        state: 'error'\n      });\n    }\n  }\n\n  // Validate approval question fields\n  const validateQuestions = () => {\n    let isValid = true;\n    let questionError: number | undefined = undefined;\n\n    questions\n      .filter((question) => (requisitionId ? approvalAnsweredIds?.includes(question.id) : true))\n      .forEach((question: IApplicantQuestion, index: number) => {\n        let tempErrorMessage = '';\n        if (question.type === 'CheckBoxField') {\n          const isChecked = Object.values(approvalFormQuestions[question.id].data).some(\n            (value) => value === true\n          );\n          if (question.required && !isChecked) {\n            tempErrorMessage = 'Must select at least one option';\n            if (questionError === undefined) {\n              questionError = index;\n            }\n            isValid = false;\n          }\n        } else if (question.type === 'RankField') {\n          const duplicates = containsDuplicates(\n            Object.values(approvalFormQuestions[question.id].data)\n          );\n          if (duplicates) {\n            tempErrorMessage = 'Ranked choices must be unique';\n            if (questionError === undefined) {\n              questionError = index;\n            }\n            isValid = false;\n          }\n        } else if (question.required && !approvalFormQuestions[question.id].data) {\n          tempErrorMessage =\n            question.type !== 'RadioButtonField'\n              ? 'This field is required'\n              : 'Must select an option';\n          if (questionError === undefined) {\n            questionError = index;\n          }\n          isValid = false;\n        }\n        setQuestionErrors((prev) => ({\n          ...prev,\n          [question.id]: tempErrorMessage\n        }));\n      });\n\n    if (questionError !== undefined) {\n      scrollToElement(fieldRefs.questions.current[questionError]);\n    }\n\n    return isValid;\n  };\n\n  const validatePositionTitle = () => {\n    if (!showPositionTitle) return true;\n\n    setPositionTitleError('');\n\n    if (!positionTitle) {\n      setPositionTitleError('Position title is required to create an approval form.');\n      scrollToElement(fieldRefs.positionTitle);\n      return false;\n    }\n\n    return true;\n  };\n\n  const validateApprovalManagers = () => {\n    const newApprovers = [...approvers];\n    let isValid = true;\n    newApprovers.map((approver, i) => {\n      approver.error = '';\n      if (!approver.email) {\n        newApprovers[i].error = 'Please choose an approver or delete the row.';\n        isValid = false;\n      }\n      if (!emailIsValid(approver.email)) {\n        newApprovers[i].error = 'Please enter a valid email address.';\n        isValid = false;\n      }\n    });\n    if (!isValid) {\n      scrollToElement(fieldRefs.approvalManagers);\n    }\n    setApprovers(newApprovers);\n    return isValid;\n  };\n\n  const answers_attributes = {};\n  const sorted_questions = Object.entries(approvalFormQuestions).sort(\n    (a, b) => a[1].position - b[1].position\n  );\n  sorted_questions.forEach(([id, value], index) => {\n    if (requisitionId && !approvalAnsweredIds?.includes(value.id)) return;\n    const answers = approvalFormData.answers;\n    answers_attributes[index] = getAnswerAttributes(id, value, answers);\n  });\n\n  const approvers_attributes = {};\n  approvers.map((approver, i) => {\n    approvers_attributes[i] = {\n      id: approver.id,\n      email: approver.email.includes('*') ? approver.email.slice(1) : approver.email,\n      position: 0,\n      required: approver.email.includes('*'),\n      _destroy: approver.destroyed\n    };\n  });\n\n  const documents_attributes = {};\n  fileList.map((document, i) => {\n    documents_attributes[i] = {\n      attached: document\n    };\n  });\n\n  const approvalAttributes = {\n    requisition_form_id: template_id || templateId,\n    cognology_record_id: cognologyRecordId,\n    position_title: positionTitle,\n    note: notes,\n    email_template_id: approvalEmailTemplate,\n    assigned_user_id: assignedUser,\n    documents_attributes,\n    to_email: approvalAdministrator,\n    application_id: application,\n    approvers_attributes\n  };\n\n  const approvalData = {\n    requisition: {\n      ...approvalAttributes,\n      answers_attributes\n    },\n    new_ui: newUI ? true : undefined\n  };\n\n  const handleSaveDraft = async () => {\n    const formData = serialize({ ...approvalData, draft: true });\n\n    try {\n      const response = await fetch(`${BASE_URL}/api/v4/requisitions`, {\n        method: 'POST',\n        headers: {\n          'X-api-authenticate': apiKey\n        },\n        body: formData\n      }).then((res) => res.json());\n      if (response.success === 'Draft created') {\n        window.location.href = response.url;\n        setSnackbar({\n          message: 'Approval form was saved successfully',\n          state: 'success'\n        });\n      } else {\n        throw new Error('Error saving Approval form');\n      }\n    } catch (error) {\n      setSnackbar({\n        message: `Something went wrong. Please try again. ${error}`,\n        state: 'error'\n      });\n    }\n  };\n\n  const handleSubmitApproval = async () => {\n    if (!validatePositionTitle() || !validateQuestions() || !validateApprovalManagers()) return;\n    const formData = serialize(approvalData);\n\n    try {\n      const response = await fetch(`${BASE_URL}/api/v4/requisitions`, {\n        method: 'POST',\n        headers: {\n          'X-api-authenticate': apiKey\n        },\n        body: formData\n      }).then((res) => res.json());\n      if (response.success === 'Approval created') {\n        window.location.href = response.url;\n        setSnackbar({\n          message: 'Approval form created successfully',\n          state: 'success'\n        });\n      } else {\n        throw response.errors;\n      }\n    } catch (error) {\n      setSnackbar({\n        message: error.error || `Something went wrong. Please try again. ${error}`,\n        state: 'error'\n      });\n    }\n  };\n\n  const updateApprovalForm = async (state?: string) => {\n    if (!state && (!validatePositionTitle() || !validateQuestions() || !validateApprovalManagers()))\n      return;\n    const formData = state ? serialize({ ...approvalData, draft: true }) : serialize(approvalData);\n\n    try {\n      const response = await fetch(`${BASE_URL}/api/v4/requisitions/${requisitionId}`, {\n        method: 'PUT',\n        headers: {\n          'X-api-authenticate': apiKey\n        },\n        body: formData\n      }).then((res) => res.json());\n      if (response.success === 'Approval updated') {\n        window.location.href = response.url;\n        setSnackbar({\n          message: 'Approval form updated successfully',\n          state: 'success'\n        });\n      } else {\n        throw response.errors;\n      }\n    } catch (error) {\n      setSnackbar({\n        message: `Something went wrong. Please try again. ${error}`,\n        state: 'error'\n      });\n    }\n  };\n\n  const getApprovalTemplateData = useCallback(async () => {\n    setLoadingData(true);\n    const approvalTemplateId = Number(template_id) || templateId;\n    if (!approvalTemplateId) return;\n    try {\n      const data = await Api.getApprovalTemplate(approvalTemplateId);\n      setApprovalTemplateData(data.res);\n    } catch (err) {\n      setSnackbar({\n        message: `Failed to fetch approval template data, ${err}`,\n        state: 'error'\n      });\n    } finally {\n      setLoadingData(false);\n    }\n  }, [templateId]);\n\n  const handleLookUpButton = async (questionId: number, positionId: number) => {\n    setFetchingCSV(true);\n    try {\n      const data = await Api.getCSVData(questionId, positionId);\n      setApprovers(\n        data.res.approvers.map((approver: string) => ({\n          email: approver.toLowerCase(),\n          destroyed: false\n        }))\n      );\n      questions?.map((question) => {\n        const answerExist = data.res.fields[0][question.original_title];\n        if (answerExist) {\n          setApprovalFormQuestions((prev) => ({\n            ...prev,\n            [question.id]: {\n              ...prev[question.id],\n              data:\n                question.type === 'SelectField' || question.type === 'RadioButtonField'\n                  ? question.field_choices.find((e) => e.name === answerExist)?.id\n                  : answerExist\n            }\n          }));\n        }\n      });\n    } catch (err) {\n      setSnackbar({\n        message: `Failed to fetch csv data, ${err}`,\n        state: 'error'\n      });\n    } finally {\n      setFetchingCSV(false);\n    }\n  };\n\n  async function getEmailTemplates(apiKey: string) {\n    setLoadingEmailTemplates(true);\n    try {\n      const data = await Api.getEmailTemplates();\n      setEmailTemplates(data.res.email_templates);\n    } catch (err) {\n      setSnackbar({\n        message: `Failed to fetch email templates, ${err}`,\n        state: 'error'\n      });\n    } finally {\n      setLoadingEmailTemplates(false);\n    }\n  }\n\n  async function getApproverManagers() {\n    setLoadingApprovers(true);\n    try {\n      const data = await Api.getApprovalManagers({\n        override_limit: true,\n        limit: 2000,\n        sort: 'name',\n        sort_order: 'asc'\n      });\n      setApprovalManagers(data.res.requisition_managers);\n    } catch (err) {\n      setSnackbar({\n        message: `Failed to fetch approval managers, ${err}`,\n        state: 'error'\n      });\n    } finally {\n      setLoadingApprovers(false);\n    }\n  }\n\n  async function getAssignableUsers(apiKey: string) {\n    setLoadingAssignableUsers(true);\n    try {\n      const data = await Api.getAssignableUsers();\n      setAssignableUsers(data.res.assignable_users);\n    } catch (err) {\n      setSnackbar({\n        message: `Failed to fetch assignable users, ${err}`,\n        state: 'error'\n      });\n    } finally {\n      setLoadingAssignableUsers(false);\n    }\n  }\n\n  const getApprovalFormData = useCallback(async () => {\n    if (!requisitionId) return;\n    setLoadingFormData(true);\n    try {\n      const data = await Api.getApprovalForm(requisitionId);\n      setApprovalFormData(data.res);\n\n      // Only previous answered questions will be displayed, newly added questions will not show in edit page\n      const ids = data.res.answers.map((answer) => parseInt(answer.field_id));\n      setApprovalAnsweredIds(ids);\n    } catch (err) {\n      setSnackbar({\n        message: `Failed to fetch approval form data, ${err}`,\n        state: 'error'\n      });\n    } finally {\n      setLoadingFormData(false);\n    }\n  }, [requisitionId]);\n\n  const headerRefs = useRef(null);\n\n  const TabPanel = useCallback((props: ITabs) => {\n    const { children, tabValue, index, ...other } = props;\n\n    return (\n      <div\n        role=\"tabpanel\"\n        hidden={tabValue !== index}\n        id={`approvals-tabpanel-${index}`}\n        aria-labelledby={`approvals-tab-${index}`}\n        {...other}\n      >\n        {tabValue === index && <>{children}</>}\n      </div>\n    );\n  }, []);\n\n  const TabProps = useCallback((index: number) => {\n    return {\n      id: `approvals-tab-${index}`,\n      'aria-controls': `approvals-tabpanel-${index}`\n    };\n  }, []);\n\n  useEffect(() => {\n    setIndicatorWidth(headerRefs?.current.clientWidth - 32);\n    getApprovalTemplateData();\n  }, [getApprovalTemplateData]);\n\n  useEffect(() => {\n    getApprovalFormData();\n  }, [getApprovalFormData]);\n\n  useEffect(() => {\n    setDataInitialized(false);\n    if (!approvalTemplateData) return;\n    const fullAdministratorList = entityApprovalAdmin\n      ? [\n          { label: `Entity Default (${entityApprovalAdmin})`, value: entityApprovalAdmin },\n          ...approvalTemplateData.approvers\n        ]\n      : [...approvalTemplateData.approvers];\n    setAdministratorList(fullAdministratorList);\n    if (template_id) {\n      // Only enabled questions for New approval form\n      const questionsData = approvalTemplateData.fields.filter(\n        (question) => question.enabled && !question.for_email_template\n      );\n      const emailTemplateQuestionsData = approvalTemplateData.fields.filter(\n        (question) => question.enabled && question.for_email_template\n      );\n      setQuestions(questionsData);\n      setEmailTemplateQuestions(emailTemplateQuestionsData);\n\n      // initial data load for NEW approval form\n      questionsData && setApprovalFormQuestions(createApprovalFormQuestionsObject(questionsData));\n\n      // If no default approvers set in approval template but has default approvers in entity level\n      if (approvalTemplateData.config.default_approvers) {\n        setApprovers(\n          approvalTemplateData.config.default_approvers.split(',').map((approver) => ({\n            email: approver,\n            destroyed: false,\n            mandatoryBlank: approver === '*'\n          }))\n        );\n      } else if (approvalTemplateData.entity_default_approver) {\n        setApprovers(\n          approvalTemplateData.entity_default_approver.map((approver) => ({\n            email: approver.required ? `*${approver.email}` : approver.email,\n            destroyed: false,\n            mandatoryBlank: approver.required\n          }))\n        );\n      }\n      setApprovalEmailTemplate(approvalTemplateData?.email_template_id);\n      if (jobId && applicationId) {\n        setFetchingInitialJobsAndApplications(true);\n        getApplications(Number(jobId));\n        setJob(Number(jobId));\n        setApplication(Number(applicationId));\n      }\n    } else {\n      // All questions for EDIT approval form which includes answered but disabled questions\n      const questionsData = approvalTemplateData.fields.filter(\n        (question) => !question.for_email_template\n      );\n      const emailTemplateQuestionsData = approvalTemplateData.fields.filter(\n        (question) => question.for_email_template\n      );\n      setQuestions(questionsData);\n      setEmailTemplateQuestions(emailTemplateQuestionsData);\n\n      // initial data load for EDIT approval form\n      showPositionTitle && setPositionTitle(approvalFormData.position_title);\n      setNotes(approvalFormData.note);\n      setApprovalEmailTemplate(approvalFormData.email_template?.id);\n      fullAdministratorList.some(\n        (approver) => approver.value === approvalFormData.approval_administrator\n      )\n        ? setApprovalAdministrator(approvalFormData.approval_administrator)\n        : setApprovalAdministrator('');\n      const formApprovers =\n        approvalFormData.approvers?.map((approver, index) => ({\n          email: approver.email,\n          id: approver.id,\n          destroyed: false,\n          name: approver.name,\n          mandatoryBlank:\n            approvalTemplateData?.config?.default_approvers?.split(',')?.[index] === '*'\n        })) || [];\n      setApprovers(formApprovers);\n      const formAssignedUser = assignableUsers.find(\n        (user) => `${user.firstname} ${user.lastname}` === approvalFormData.assigned_user\n      );\n      setAssignedUser(formAssignedUser?.id);\n      setAttachedDocuments(approvalFormData.documents);\n      const questionObj = createApprovalFormQuestionsObject(questionsData);\n      approvalFormData.answers?.forEach((answer) => {\n        const questionId = Object.keys(questionObj).find(\n          (key) => questionObj[key].id === answer.field_id\n        );\n        if (questionId) {\n          if (\n            answer.type === 'TextField' ||\n            answer.type === 'TextAreaField' ||\n            answer.type === 'CsvDataLookupField' ||\n            answer.type === 'DateField'\n          ) {\n            questionObj[questionId].data = answer.answer;\n          } else if (answer.type === 'SelectField' || answer.type === 'RadioButtonField') {\n            questionObj[questionId].data = answer.field_choice_ids[0];\n          } else if (answer.type === 'RankField') {\n            const rankObj = {};\n            answer.field_choice_ids.map((id, i) => {\n              rankObj[id] = (i + 1).toString();\n            });\n            questionObj[questionId].data = rankObj;\n          } else if (answer.type === 'CheckBoxField') {\n            const checkBoxObj = {};\n            answer.field_choice_ids.map((id) => (checkBoxObj[id] = true));\n            questionObj[questionId].data = checkBoxObj;\n          } else if (answer.type === 'AvailabilityField') {\n            const convertAnswer = (answer: Record<string, string>) =>\n              Object.keys(answer).reduce(\n                (acc, key, index) => ({ ...acc, [index + 1]: answer[key] }),\n                {}\n              );\n            questionObj[questionId].data = convertAnswer(answer.answer);\n          }\n        }\n      });\n      setApprovalFormQuestions(questionObj);\n      if (approvalFormData.application) {\n        setFetchingInitialJobsAndApplications(true);\n        getApplications(approvalFormData.application.job_id);\n        setJob(approvalFormData.application.job_id);\n        setApplication(approvalFormData.application.id);\n      }\n    }\n  }, [approvalTemplateData, approvalFormData, assignableUsers]);\n\n  useEffect(() => {\n    setDataInitialized(true);\n  }, [approvalFormQuestions]);\n\n  useEffect(() => {\n    if (applications.length > 0) {\n      setFetchingInitialJobsAndApplications(false);\n    }\n  }, [applications]);\n\n  useEffect(() => {\n    getApproverManagers();\n    getEmailTemplates(apiKey);\n    getAssignableUsers(apiKey);\n    getJobs(apiKey);\n    getUserPermissions(apiKey);\n  }, [apiKey]);\n\n  const handleAddApprover = () => {\n    setApprovers([...approvers, { email: '', destroyed: false }]);\n  };\n\n  const removeApprover = (i: number) => {\n    if (approvers.length > 1) {\n      const newApprovers = [...approvers];\n      if (newApprovers[i].id) {\n        newApprovers[i].destroyed = true;\n      } else {\n        newApprovers.splice(i, 1);\n      }\n      setApprovers(newApprovers);\n    }\n  };\n\n  const handleEmailChange = (i: number, value: IApprovalManagers) => {\n    const newApprovers = [...approvers];\n    newApprovers[i].email = value ? value.email : '';\n    setApprovers(newApprovers);\n  };\n\n  const handleDeleteAttachment = (index: number) => {\n    const updatedFileList = fileList.filter((file, i) => i !== index);\n\n    setFileList(updatedFileList);\n  };\n\n  const templates = emailTemplates.reduce(\n    (acc, currVal) => {\n      const entity: string = currVal[0];\n      const arrayOfTemplates: { id: number; name: string }[] = currVal[1];\n      return [...acc, ...arrayOfTemplates.map((template) => ({ ...template, entity }))];\n    },\n    [] as { id: number; name: string; entity: string }[]\n  );\n\n  const handleDeleteDocument = async (i: number, id: number) => {\n    try {\n      await Api.putApprovalForm(requisitionId, {\n        requisition: { documents_attributes: { [i]: { id: id, _destroy: true } } }\n      });\n    } catch (err) {\n      setSnackbar({\n        message: `Failed to delete document, ${err}`,\n        state: 'error'\n      });\n    } finally {\n      const newAttachedDocuments = [...attachedDocuments];\n      newAttachedDocuments.splice(i, 1);\n      setAttachedDocuments(newAttachedDocuments);\n    }\n  };\n\n  async function getJobs(apiKey: string) {\n    setFetchingJobs(true);\n    try {\n      const data = await Api.getJobs();\n      setJobs(data.res.jobs);\n    } catch (err) {\n      setSnackbar({\n        message: `Failed fetching job options. Please try again. ${error}`,\n        state: 'error'\n      });\n    } finally {\n      setFetchingJobs(false);\n    }\n  }\n\n  async function getApplications(jobId: number) {\n    setFetchingApplications(true);\n    try {\n      const data = await Api.getApplications(jobId);\n      setApplications(data.res);\n    } catch (err) {\n      setSnackbar({\n        message: `Failed fetching application options. Please try again. ${error}`,\n        state: 'error'\n      });\n    } finally {\n      setFetchingApplications(false);\n    }\n  }\n\n  const handleJobChange = (id: number) => {\n    if (id === job) return;\n    setApplications([]);\n    setJob(id);\n    getApplications(id);\n    setApplication(null);\n  };\n\n  const handleDeleteJob = () => {\n    setJob(null);\n    setApplication(null);\n    setApplications([]);\n  };\n\n  const handleEmailInput = (i: number, value: string) => {\n    const newApprovers = [...approvers];\n    newApprovers[i].email = value;\n    setApprovers(newApprovers);\n  };\n\n  return (\n    <Box sx={classes.jobPageContainer}>\n      <Box sx={classes.jobPageHeader}>\n        {loadingData ? (\n          <Skeleton animation=\"wave\" width={600} height={56} />\n        ) : (\n          <h1>{approvalFormData?.position_title || approvalTemplateData?.name}</h1>\n        )}\n      </Box>\n      <Box sx={classes.tabsContainer}>\n        <Tabs\n          value={0}\n          variant=\"scrollable\"\n          scrollButtons={false}\n          aria-label=\"Approvals\"\n          sx={{\n            ...classes.tabs,\n            '& .MuiTabs-indicator': { ...classes.tabIndicator, maxWidth: indicatorWidth + 'px' }\n          }}\n        >\n          <Tab\n            ref={headerRefs}\n            label={requisitionId ? 'Edit approval form' : 'New approval form'}\n            {...TabProps(0)}\n          />\n        </Tabs>\n      </Box>\n      <Box>\n        <TabPanel tabValue={0} index={0} />\n      </Box>\n      <Box sx={classes.backToJobButton}>\n        <Stack\n          flexDirection=\"row\"\n          alignItems=\"center\"\n          onClick={() => {\n            window.location.href = '/admin/requisitions';\n          }}\n        >\n          <IconButton sx={classes.iconGrey}>\n            <ArrowCircleLeftIcon />\n          </IconButton>\n          <Box>Back to approval forms</Box>\n        </Stack>\n      </Box>\n      <Box sx={{ padding: 2 }}>\n        {loadingData || !dataInitialized ? (\n          <Skeleton animation=\"wave\" width={600} height={56} />\n        ) : (\n          <>\n            {showPositionTitle && (\n              <Box sx={{ paddingBottom: 3 }}>\n                <DebouncedFormTextField\n                  onDebouncedChange={(value: string) => {\n                    setPositionTitle(value);\n                  }}\n                  label=\"Vacancy position title\"\n                  defaultValue={positionTitle}\n                  styles={{ width: '300px' }}\n                  required\n                  innerRef={fieldRefs.positionTitle}\n                  error={positionTitleError}\n                />\n              </Box>\n            )}\n            {questions?.map(\n              (question, index) =>\n                (!approvalAnsweredIds || approvalAnsweredIds.includes(question.id)) && (\n                  <Box sx={{ paddingBottom: 3 }} key={question.id}>\n                    <QuestionFieldGenerator\n                      question={question}\n                      questionRef={(el) => (fieldRefs.questions.current[index] = el)}\n                      questionError={questionErrors[question.id]}\n                      onChangeCallback={(id, value) => {\n                        setApprovalFormQuestions((prev) => ({\n                          ...prev,\n                          [id]: {\n                            ...prev[id],\n                            data: value\n                          }\n                        }));\n                        setQuestionErrors((prev) => ({\n                          ...prev,\n                          [id]: value || !question.required ? '' : 'This field is required'\n                        }));\n                      }}\n                      handleLookUpButton={handleLookUpButton}\n                      answer={approvalFormQuestions[question.id]?.data}\n                      fetchingCSV={fetchingCSV}\n                    />\n                  </Box>\n                )\n            )}\n            {/* TODO: Hide this section for now */}\n            {/* {emailTemplateQuestions.length > 0 && (\n              <Stack sx={{ ...classes.sectionHeader, paddingBottom: 2 }}>\n                Email Template Questions\n              </Stack>\n            )}\n            {emailTemplateQuestions?.map((question, index) => (\n              <Box sx={{ paddingBottom: 3 }} key={question.id}>\n                <QuestionFieldGenerator\n                  question={question}\n                  questionRef={(el) => (fieldRefs.questions.current[index] = el)}\n                  questionError={questionErrors[question.id]}\n                  onChangeCallback={(id, value) => {\n                    setApprovalFormQuestions((prev) => ({\n                      ...prev,\n                      [id]: {\n                        ...prev[id],\n                        data: value\n                      }\n                    }));\n                    setQuestionErrors((prev) => ({\n                      ...prev,\n                      [id]: value || !question.required ? '' : 'This field is required'\n                    }));\n                  }}\n                  answer={approvalFormQuestions[question.id]?.data}\n                  disabled={true}\n                />\n              </Box>\n            ))} */}\n          </>\n        )}\n      </Box>\n      {userPermissions?.['Approval Forms']?.[\n        `Add/attach documents (complementary to 'Submit Approval Form')`\n      ] && (\n        <Box sx={{ padding: 2 }}>\n          <Stack sx={{ paddingBottom: 1 }}>\n            <Typography sx={{ ...classes.sectionHeader, paddingY: 0 }}>Documents</Typography>\n            <Typography sx={classes.sectionSubtitle}>\n              {/* Please upload a copy of this roles Position Description below */}\n              Please upload required documents below\n            </Typography>\n          </Stack>\n          <AttachmentSelector\n            performUpload={false}\n            apiKey={apiKey}\n            setFileList={(file) => {\n              setFileList((previous) => [...previous, ...file]);\n            }}\n            maxSize={50000000}\n          />\n          {attachedDocuments &&\n            attachedDocuments.map((document, index) => (\n              <Box key={index} sx={classes.fileContainer}>\n                <Box sx={classes.fileIconContainer}>\n                  <Box sx={classes.fileIcon}>\n                    {DocTypeIcon(document?.attached_file_name?.split('.').pop())}\n                  </Box>\n                  <Box>\n                    <Box sx={classes.fileName}>{document.attached_file_name}</Box>\n                    <Box sx={classes.fileSize}>\n                      {moment(document.created_at).format('Do MMMM YYYY[,] h:mma')}\n                    </Box>\n                  </Box>\n                </Box>\n                <IconButton onClick={() => handleDeleteDocument(index, document.id)}>\n                  <DeleteIcon sx={{ color: '#D6827D' }} />\n                </IconButton>\n              </Box>\n            ))}\n          {fileList &&\n            fileList.map(\n              (file, index) =>\n                file.name && (\n                  <Box key={index} sx={classes.fileContainer}>\n                    <Box sx={classes.fileIconContainer}>\n                      <Box sx={classes.fileIcon}>{DocTypeIcon(file?.name?.split('.').pop())}</Box>\n                      <Box>\n                        <Box sx={classes.fileName}>{file.name}</Box>\n                        <Box sx={classes.fileSize}>\n                          {moment(file.lastModified).format('Do MMMM YYYY[,] h:mma')}\n                        </Box>\n                      </Box>\n                    </Box>\n                    <IconButton onClick={() => handleDeleteAttachment(index)}>\n                      <DeleteIcon sx={{ color: '#D6827D' }} />\n                    </IconButton>\n                  </Box>\n                )\n            )}\n        </Box>\n      )}\n      {(requisitionId\n        ? userPermissions?.['Approval Forms']?.['Edit the assigned user of a requisition']\n        : userPermissions?.['Approval Forms']?.['Assign User To Requisition']) &&\n        !approvalTemplateData?.config.hide_assigned_user && (\n          <>\n            {loadingAssignableUsers ? (\n              <Skeleton animation=\"wave\" width={600} height={56} />\n            ) : (\n              <Box sx={{ padding: 2 }}>\n                <Stack sx={{ ...classes.sectionHeader, paddingBottom: 2 }}>Assigned User</Stack>\n                <Autocomplete\n                  disablePortal\n                  options={assignableUsers}\n                  getOptionLabel={(option) => `${option.firstname} ${option.lastname}`}\n                  value={assignableUsers.find((e) => e.id === assignedUser) || null}\n                  onChange={(event, value) =>\n                    value ? setAssignedUser(value.id) : setAssignedUser(null)\n                  }\n                  sx={{ width: '300px', paddingTop: 3, ...sharedClasses.formAutocomplete }}\n                  ListboxProps={{\n                    style: {\n                      fontFamily: 'Source Sans Pßro, sans-serif',\n                      color: '#333333',\n                      maxHeight: '200px'\n                    }\n                  }}\n                  renderInput={(params) => (\n                    <TextField\n                      {...params}\n                      label=\"Assigned user\"\n                      InputLabelProps={{ shrink: true }}\n                      placeholder=\"Please select\"\n                    />\n                  )}\n                />\n              </Box>\n            )}\n          </>\n        )}\n      {loadingData ? (\n        <Skeleton animation=\"wave\" width={600} height={56} />\n      ) : (\n        <>\n          {!Number(approvalTemplateData?.config.hide_approval_administrator) &&\n            administratorList && (\n              <Box sx={{ padding: 2 }}>\n                <Stack sx={{ ...classes.sectionHeader, paddingBottom: 2 }}>\n                  Approval Administrator\n                </Stack>\n                <Autocomplete\n                  disablePortal\n                  options={administratorList}\n                  getOptionLabel={(option) => option.label}\n                  value={\n                    administratorList.find((manager) => manager.value === approvalAdministrator) ||\n                    null\n                  }\n                  onChange={(event, value) =>\n                    value ? setApprovalAdministrator(value.value) : setApprovalAdministrator('')\n                  }\n                  sx={{ width: '300px', paddingTop: 3, ...sharedClasses.formAutocomplete }}\n                  ListboxProps={{\n                    style: {\n                      fontFamily: 'Source Sans Pßro, sans-serif',\n                      color: '#333333',\n                      maxHeight: '200px'\n                    }\n                  }}\n                  renderInput={(params) => (\n                    <TextField\n                      {...params}\n                      label=\"Send to\"\n                      InputLabelProps={{ shrink: true }}\n                      placeholder=\"Please select\"\n                    />\n                  )}\n                />\n              </Box>\n            )}\n        </>\n      )}\n      {userPermissions?.['Approval Forms']?.[\n        `Add approvers (complementary to 'Submit Approval Form')`\n      ] && (\n        <>\n          {loadingApprovers ? (\n            <Skeleton animation=\"wave\" width={600} height={56} />\n          ) : (\n            <Box sx={{ padding: 2 }}>\n              <Stack sx={classes.sectionHeader} ref={fieldRefs.approvalManagers}>\n                Approvers\n              </Stack>\n              {approvers.map((approver, index) => {\n                const deleted = approver?.name?.includes('deleted');\n                const mandatory = approver.email.includes('*');\n                const mandatoryBlank = approver.mandatoryBlank;\n                let value = deleted\n                  ? approver\n                  : approvalManagers.find(\n                      (manager) =>\n                        (mandatory ? approver.email.slice(1) : approver.email) === manager.email\n                    );\n                if (!value) {\n                  value = approvers.find(\n                    (manager) =>\n                      (mandatory ? approver.email.slice(1) : approver.email) === manager.email\n                  );\n                  if (!value) value = mandatory ? approver.email.slice(1) : approver.email;\n                }\n                const approverOptions = [\n                  ...approvalTemplateData?.entity_default_approver,\n                  ...approvalManagers\n                ];\n                return (\n                  <Box>\n                    <React.Fragment key={`${value?.id}-${index}`}>\n                      {!approver.destroyed && (\n                        <Box sx={classes.approversContainer}>\n                          {approverOptions.length === 0 ? (\n                            <FormTextField\n                              label=\"Email\"\n                              onChange={(e) => {\n                                handleEmailInput(index, e.target.value);\n                              }}\n                              draggable={mandatory}\n                              value={mandatory ? approver.email.slice(1) : approver.email}\n                              styles={{ width: '290px' }}\n                              error={approver.error ? 'Please enter a proper email address' : ''}\n                            />\n                          ) : (\n                            <Autocomplete\n                              key={`${value?.id}-${index}`}\n                              disablePortal\n                              disabled={!mandatoryBlank && (mandatory || deleted)}\n                              options={approverOptions}\n                              getOptionLabel={(option) =>\n                                option?.name?.includes('deleted')\n                                  ? approvalFormData.state === 'draft'\n                                    ? 'Please select an approval manager'\n                                    : option.name\n                                  : option.email\n                              }\n                              value={value || null}\n                              onChange={(event, value) => handleEmailChange(index, value)}\n                              sx={{ width: '450px', ...sharedClasses.formAutocomplete }}\n                              ListboxProps={{\n                                style: {\n                                  fontFamily: 'Source Sans Pro, sans-serif',\n                                  color: '#333333',\n                                  maxHeight: '200px'\n                                }\n                              }}\n                              renderInput={(params) => (\n                                <>\n                                  <TextField\n                                    {...params}\n                                    label=\"Email\"\n                                    InputLabelProps={{ shrink: true }}\n                                    placeholder=\"Please select\"\n                                  />\n                                  {approver.error && (\n                                    <Stack\n                                      sx={{ color: '#E37D7A', fontSize: '13px', paddingLeft: 1 }}\n                                    >\n                                      {approver.error}\n                                    </Stack>\n                                  )}\n                                </>\n                              )}\n                              renderOption={(\n                                props: React.HTMLAttributes<HTMLLIElement>,\n                                option: INewApprovalOptions\n                              ) => (\n                                <Box {...props} key={option.id}>\n                                  {option.email}\n                                </Box>\n                              )}\n                            />\n                          )}\n                          {!mandatoryBlank && !mandatory && !deleted && (\n                            <Button\n                              sx={{ '&:hover': { backgroundColor: 'inherit' } }}\n                              onClick={() => removeApprover(index)}\n                            >\n                              <CloseIcon color=\"warning\" sx={{ cursor: 'pointer' }} />\n                            </Button>\n                          )}\n                        </Box>\n                      )}\n                    </React.Fragment>\n                  </Box>\n                );\n              })}\n              <Box sx={{ paddingTop: 1 }}>\n                <Button\n                  sx={{\n                    ...classes.draftButton,\n                    fontSize: '12px',\n                    padding: '4px 12px',\n                    height: '30px'\n                  }}\n                  onClick={handleAddApprover}\n                >\n                  Add approver\n                </Button>\n              </Box>\n            </Box>\n          )}\n        </>\n      )}\n      {userPermissions?.['Approval Forms']?.['Manage Approval Form Notes'] && (\n        <Box sx={{ padding: 2 }}>\n          <Stack sx={{ ...classes.sectionHeader, paddingBottom: 2 }}>Notes</Stack>\n          <DebouncedFormTextField\n            onDebouncedChange={(value: string) => {\n              setNotes(value);\n            }}\n            label=\"Add Note\"\n            defaultValue={notes}\n            styles={{ width: '300px' }}\n          />\n        </Box>\n      )}\n      {loadingEmailTemplates || loadingData || loadingFormData ? (\n        <Skeleton animation=\"wave\" width={600} height={56} />\n      ) : (\n        <>\n          {!approvalTemplateData?.config.hide_email_template && (\n            <Box sx={{ padding: 2 }}>\n              <Stack sx={{ ...classes.sectionHeader, paddingBottom: 2 }}>Email template</Stack>\n              <Autocomplete\n                disablePortal\n                options={templates}\n                groupBy={(option) => option.entity}\n                getOptionLabel={(option) => option.name}\n                value={templates.find((e) => e.id === approvalEmailTemplate) || null}\n                onChange={(event, value) =>\n                  value ? setApprovalEmailTemplate(value.id) : setApprovalEmailTemplate(null)\n                }\n                sx={{ width: '300px', paddingTop: 3, ...sharedClasses.formAutocomplete }}\n                ListboxProps={{\n                  style: {\n                    fontFamily: 'Source Sans Pßro, sans-serif',\n                    color: '#333333',\n                    maxHeight: '200px'\n                  }\n                }}\n                renderInput={(params) => (\n                  <TextField\n                    {...params}\n                    sx={{ input: { '&::placeholder': { opacity: 1 } } }}\n                    label=\"Select email template\"\n                    InputLabelProps={{ shrink: true }}\n                    placeholder=\"(Use default template)\"\n                  />\n                )}\n              />\n            </Box>\n          )}\n        </>\n      )}\n      {fetchingInitialJobsAndApplications ? (\n        <Skeleton animation=\"wave\" width={600} height={56} />\n      ) : (\n        <>\n          {parseInt(approvalTemplateData?.config?.enable_approval_template_for_applications) ===\n            1 && (\n            <Box sx={{ padding: 2 }}>\n              <Stack sx={{ ...classes.sectionHeader, paddingBottom: 2 }}>Application</Stack>\n              <Autocomplete\n                disablePortal\n                options={jobs}\n                getOptionLabel={(option) => `${option.reference} - ${option.title}`}\n                value={jobs.find((e) => e.id === job) || null}\n                onChange={(event, value) => (value ? handleJobChange(value.id) : handleDeleteJob())}\n                sx={{ width: '300px', paddingTop: 3, ...sharedClasses.formAutocomplete }}\n                loading={fetchingJobs}\n                loadingText={'Loading jobs...'}\n                ListboxProps={{\n                  style: {\n                    fontFamily: 'Source Sans Pßro, sans-serif',\n                    color: '#333333',\n                    maxHeight: '200px'\n                  }\n                }}\n                renderInput={(params) => (\n                  <TextField\n                    {...params}\n                    label=\"Job\"\n                    InputLabelProps={{ shrink: true }}\n                    placeholder=\"Select Job\"\n                  />\n                )}\n              />\n              <Autocomplete\n                disablePortal\n                options={applications}\n                getOptionLabel={(option) => `${option.id} - ${option.candidate_name}`}\n                value={applications.find((e) => e.id === application) || null}\n                noOptionsText={job ? 'No applications found for this job' : 'Please choose a job'}\n                onChange={(event, value) => {\n                  value ? setApplication(value.id) : setApplication(null);\n                }}\n                loading={fetchingApplications}\n                loadingText={'Loading applications...'}\n                sx={{ width: '300px', paddingTop: 5, ...sharedClasses.formAutocomplete }}\n                ListboxProps={{\n                  style: {\n                    fontFamily: 'Source Sans Pßro, sans-serif',\n                    color: '#333333',\n                    maxHeight: '200px'\n                  }\n                }}\n                renderInput={(params) => (\n                  <TextField\n                    {...params}\n                    label=\"Application\"\n                    InputLabelProps={{ shrink: true }}\n                    placeholder=\"Select Application\"\n                  />\n                )}\n              />\n            </Box>\n          )}\n        </>\n      )}\n      <Box sx={classes.footerButtons}>\n        <Button\n          sx={classes.cancelButton}\n          onClick={() => {\n            window.location.href = requisitionId\n              ? `/admin/requisitions/${requisitionId}`\n              : '/admin/requisitions';\n          }}\n        >\n          Cancel\n        </Button>\n        {(template_id || approvalFormData.state === 'draft') && (\n          <LoadingButton\n            id=\"save-approval-draft-button\"\n            type=\"submit\"\n            task={() =>\n              approvalFormData.state === 'draft' ? updateApprovalForm('draft') : handleSaveDraft()\n            }\n            sx={{ ...classes.draftButton, minWidth: 100 }}\n          >\n            Save draft\n          </LoadingButton>\n        )}\n\n        <LoadingButton\n          id=\"submit-new-approval\"\n          type=\"submit\"\n          task={() => (template_id ? handleSubmitApproval() : updateApprovalForm())}\n          sx={{ ...sharedClasses.saveButton }}\n        >\n          Submit\n        </LoadingButton>\n      </Box>\n      <StyledSnackbar\n        message={snackbar.message}\n        state={snackbar.state}\n        setSnackbarState={setSnackbar}\n      />\n    </Box>\n  );\n}\n","import React, { Dispatch, SetStateAction, useState, useRef, useEffect, useCallback } from 'react';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { Box, Autocomplete, TextField, Modal, Button, CircularProgress } from '@mui/material';\nimport { classes } from './styles';\nimport { INewApprovalOptions } from '../types';\nimport Api from '../API';\n\nexport default function NewApprovalModal({\n  apiKey,\n  newApprovalOptions,\n  setNewApprovalOptions,\n  isDialogOpen,\n  setIsDialogOpen,\n  setSnackbar,\n  templateArchived,\n  setTemplateArchived\n}: {\n  apiKey: string;\n  newApprovalOptions: INewApprovalOptions;\n  setNewApprovalOptions: (approvals: INewApprovalOptions) => void;\n  isDialogOpen: boolean;\n  setIsDialogOpen: Dispatch<SetStateAction<boolean>>;\n  setSnackbar: Dispatch<\n    SetStateAction<{ message: string; state: 'success' | 'warning' | 'error' }>\n  >;\n  templateArchived: boolean;\n  setTemplateArchived: Dispatch<SetStateAction<boolean>>;\n}) {\n  const [isLoading, setIsLoading] = useState(false);\n  const [approvalTemplate, setApprovalTemplate] = useState(null);\n  const [isNavigating, setIsNavigating] = useState(false);\n\n  const fieldRefs = {\n    approvalTemplate: useRef<HTMLInputElement>(null)\n  };\n\n  const fetchApprovalTemplates = useCallback(async () => {\n    setIsLoading(true);\n    try {\n      const { res } = await Api.getApprovalTemplates(\n        {\n          archived: false,\n          override_limit: true,\n          limit: 500,\n          sort: 'name',\n          sort_order: 'ASC'\n        }\n      );\n      setNewApprovalOptions(res?.requisition_forms.filter((form) => form.name.trim() !== ''));\n    } catch (error) {\n      setSnackbar({\n        message: `There was an error getting approval templates, ${error.errors}`,\n        state: 'error'\n      });\n    } finally {\n      setIsLoading(false);\n    }\n  }, []);\n\n  const navigateToNewApproval = () => {\n    if (approvalTemplate === null) return;\n    window.location.href = `/admin/requisitions/new?form_id=${approvalTemplate.id}`;\n    setIsNavigating(true);\n  };\n\n  const handleClose = () => {\n    setIsDialogOpen(false);\n    setApprovalTemplate(null);\n  };\n\n  useEffect(() => {\n    newApprovalOptions?.length === 0 && !isLoading && fetchApprovalTemplates();\n  }, [fetchApprovalTemplates]);\n\n  useEffect(() => {\n    if (templateArchived) {\n      fetchApprovalTemplates();\n      setTemplateArchived(false);\n    }\n  }, [templateArchived, setTemplateArchived, fetchApprovalTemplates]);\n\n  return (\n    <Box>\n      <Modal open={isDialogOpen} onClose={handleClose} aria-labelledby=\"new-approval-modal\">\n        <Box sx={classes.actionsModal}>\n          <Box sx={{ padding: '12px 0px 30px 0px' }}>\n            <Box id=\"new-approval-modal-title\" sx={classes.modalHeader}>\n              New approval form\n            </Box>\n          </Box>\n          <Box sx={{ marginTop: '1.75rem' }}>\n            <Box sx={classes.modalFormLine}>\n              <Box sx={{ position: 'relative' }}>\n                <Autocomplete\n                  disablePortal\n                  options={newApprovalOptions}\n                  ref={fieldRefs.approvalTemplate}\n                  getOptionLabel={(option) => option?.name}\n                  id=\"state-region-province\"\n                  loading={newApprovalOptions?.length < 1}\n                  loadingText={\n                    isLoading ? 'Loading approval templates...' : 'No approval templates'\n                  }\n                  value={approvalTemplate}\n                  onChange={(event, value) => setApprovalTemplate(value)}\n                  sx={{ width: '290px', ...sharedClasses.formAutocomplete }}\n                  ListboxProps={{\n                    style: {\n                      fontFamily: 'Source Sans Pro, sans-serif',\n                      color: '#333333',\n                      maxHeight: '200px'\n                    }\n                  }}\n                  renderInput={(params) => (\n                    <TextField\n                      {...params}\n                      label=\"Select an approval template\"\n                      InputLabelProps={{ shrink: true }}\n                    />\n                  )}\n                  renderOption={(\n                    props: React.HTMLAttributes<HTMLLIElement>,\n                    option: INewApprovalOptions\n                  ) => (\n                    <Box {...props} key={option.id}>\n                      {option.name}\n                    </Box>\n                  )}\n                />\n              </Box>\n            </Box>\n          </Box>\n          <Box>\n            <CloseIcon onClick={handleClose} sx={classes.closeIcon} />\n            <Box sx={classes.modalActions}>\n              <Button\n                disableElevation\n                sx={{ ...classes.buttonRedLight }}\n                variant=\"text\"\n                onClick={handleClose}\n              >\n                Cancel\n              </Button>\n              <Button\n                id=\"submit-new-approval-button\"\n                type=\"submit\"\n                sx={classes.modalEditButton}\n                disabled={approvalTemplate === null}\n                onClick={navigateToNewApproval}\n              >\n                {isNavigating ? <CircularProgress size={20} color=\"inherit\" /> : 'Confirm'}\n              </Button>\n            </Box>\n          </Box>\n        </Box>\n      </Modal>\n    </Box>\n  );\n}\n","import React, { useState, useRef, useEffect, useCallback } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport Button from '@mui/material/Button';\nimport CloseIcon from '@mui/icons-material/Close';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport TextField from '@mui/material/TextField';\nimport { classes } from './styles';\nimport StyledSnackbar from '../../Components/CustomUIElements/StyledSnackbar';\nimport Api from '../API';\n\nexport default function NewApprovalModalFromCandidate({\n  apiKey,\n  jobId,\n  applicationId\n}: {\n  apiKey: string;\n  jobId: number;\n  applicationId: number;\n}) {\n  const [isLoading, setIsLoading] = useState(false);\n  const [isDialogOpen, setIsDialogOpen] = useState(false);\n  const [approvalTemplate, setApprovalTemplate] = useState(null);\n  const [isNavigating, setIsNavigating] = useState(false);\n  const [templateOptions, setTemplateOptions] = useState([]);\n  const [snackbar, setSnackbar] = useState<{\n    message: string;\n    state: 'success' | 'warning' | 'error';\n  }>({\n    message: '',\n    state: 'success'\n  });\n\n  const fieldRefs = {\n    approvalTemplate: useRef<HTMLInputElement>(null)\n  };\n\n  const fetchEnabledApprovalTemplates = useCallback(async () => {\n    setIsLoading(true);\n    try {\n      const { res } = await Api.getEnabledApprovalTemplates();\n      setTemplateOptions(res?.enabled_requisition_forms);\n    } catch (error) {\n      setSnackbar({\n        message: `There was an error getting approval templates, ${error.errors}`,\n        state: 'error'\n      });\n    } finally {\n      setIsLoading(false);\n    }\n  }, []);\n\n  const navigateToNewApproval = () => {\n    if (approvalTemplate === null) return;\n    window.location.href = `/admin/requisitions/new?form_id=${approvalTemplate.id}&job_id=${jobId}&application_id=${applicationId}`;\n    setIsNavigating(true);\n  };\n\n  useEffect(() => {\n    templateOptions?.length === 0 && !isLoading && fetchEnabledApprovalTemplates();\n  }, [fetchEnabledApprovalTemplates]);\n\n  return (\n    <Box>\n      <Button\n        disableRipple\n        variant=\"contained\"\n        onClick={() => {\n          setIsDialogOpen(true);\n        }}\n        sx={{\n          padding: '0px 4px 1px 4px',\n          fontSize: '10px',\n          background: '#98A4AE',\n          color: 'black',\n          fontWeight: 'bold',\n          fontFamily: 'inherit',\n          margin: '0px 1px',\n          '&:hover': {\n            background: '#88939c'\n          },\n          '&:focus': {\n            outline: 'none'\n          }\n        }}\n      >\n        Create an approval\n      </Button>\n      <Modal\n        open={isDialogOpen}\n        onClose={() => setIsDialogOpen(false)}\n        aria-labelledby=\"new-approval-modal\"\n      >\n        <Box sx={classes.actionsModal}>\n          <Box sx={{ padding: '12px 0px 30px 0px' }}>\n            <Box id=\"new-approval-modal-title\" sx={classes.modalHeader}>\n              New approval\n            </Box>\n          </Box>\n          <Box sx={{ marginTop: '1.75rem' }}>\n            <Box sx={classes.modalFormLine}>\n              <Box sx={{ position: 'relative' }}>\n                <Autocomplete\n                  disablePortal\n                  options={templateOptions}\n                  ref={fieldRefs.approvalTemplate}\n                  getOptionLabel={(option) => option?.name}\n                  id=\"state-region-province\"\n                  loading={templateOptions?.length < 1}\n                  loadingText={\n                    isLoading ? 'Loading approval templates...' : 'No approval templates enabled'\n                  }\n                  value={approvalTemplate}\n                  onChange={(event, value) => setApprovalTemplate(value)}\n                  sx={{ width: '290px', ...sharedClasses.formAutocomplete }}\n                  ListboxProps={{\n                    style: {\n                      fontFamily: 'Source Sans Pro, sans-serif',\n                      color: '#333333',\n                      maxHeight: '200px'\n                    }\n                  }}\n                  renderInput={(params) => (\n                    <TextField\n                      {...params}\n                      label=\"Select an approval template\"\n                      InputLabelProps={{ shrink: true }}\n                      placeholder=\"Please select\"\n                    />\n                  )}\n                />\n              </Box>\n            </Box>\n          </Box>\n          <Box>\n            <CloseIcon onClick={() => setIsDialogOpen(false)} sx={classes.closeIcon} />\n            <Box sx={classes.modalActions}>\n              <Button\n                disableElevation\n                sx={{ ...classes.buttonRedLight }}\n                variant=\"text\"\n                onClick={() => {\n                  setIsDialogOpen(false);\n                }}\n              >\n                Cancel\n              </Button>\n              <Button\n                id=\"submit-new-approval-button\"\n                type=\"submit\"\n                sx={classes.modalEditButton}\n                disabled={approvalTemplate === null}\n                onClick={navigateToNewApproval}\n              >\n                {isNavigating ? <CircularProgress size={20} color=\"inherit\" /> : 'Confirm'}\n              </Button>\n            </Box>\n          </Box>\n        </Box>\n      </Modal>\n      <StyledSnackbar\n        message={snackbar.message}\n        state={snackbar.state}\n        setSnackbarState={setSnackbar}\n      />\n    </Box>\n  );\n}\n","import React, { useState, useRef, useEffect, useCallback, Dispatch, SetStateAction } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport Button from '@mui/material/Button';\nimport CloseIcon from '@mui/icons-material/Close';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport TextField from '@mui/material/TextField';\nimport { classes } from './styles';\nimport { INewApprovalOptions } from '../types';\nimport { IGetApprovalPublicLinks, IApprovalPublicLink } from '../ApprovalTemplates/types';\nimport Api from '../API';\nimport { DebouncedFormTextField } from '../../Components/CustomUIElements/FormTextField';\nimport { StyledSnackbarProps } from '../../Components/CustomUIElements/StyledSnackbar';\n\nexport default function NewApprovalPublicLink({\n  apiKey,\n  newApprovalOptions,\n  setNewApprovalOptions,\n  isPublicLinkDialogOpen,\n  setIsPublicLinkDialogOpen,\n  getApprovalPublicLinks,\n  setSnackbarState,\n  editingApprovalPublicLink,\n  setEditingApprovalPublicLink\n}: {\n  apiKey: string;\n  newApprovalOptions: INewApprovalOptions;\n  setNewApprovalOptions: (approvals: INewApprovalOptions) => void;\n  isPublicLinkDialogOpen: boolean;\n  setIsPublicLinkDialogOpen: Dispatch<SetStateAction<boolean>>;\n  getApprovalPublicLinks: IGetApprovalPublicLinks;\n  setSnackbarState: StyledSnackbarProps['setSnackbarState'];\n  editingApprovalPublicLink?: IApprovalPublicLink;\n  setEditingApprovalPublicLink?: Dispatch<SetStateAction<IApprovalPublicLink | null>>;\n}) {\n  const [isLoading, setIsLoading] = useState(false);\n  const [approvalTemplate, setApprovalTemplate] = useState(null);\n  const [publicLinkName, setPublicLinkName] = useState('');\n  const [isCreating, setIsCreating] = useState(false);\n\n  const fieldRefs = {\n    approvalTemplate: useRef<HTMLInputElement>(null)\n  };\n\n  const fetchApprovalTemplates = useCallback(async () => {\n    setIsLoading(true);\n    try {\n      const { res } = await Api.getApprovalTemplates(\n        {\n          archived: false,\n          override_limit: true,\n          limit: 500,\n          sort: 'name',\n          sort_order: 'ASC'\n        }\n      );\n      setNewApprovalOptions(res?.requisition_forms.filter((form) => form.name.trim() !== ''));\n    } catch (error) {\n      setSnackbarState({\n        message: error?.errors,\n        state: 'error'\n      });\n    } finally {\n      setIsLoading(false);\n    }\n  }, []);\n\n  const handleApprovalPublicLinkAction = async () => {\n    setIsCreating(true);\n    const approvalPublicLinkObj = {\n      name: publicLinkName || editingApprovalPublicLink?.name,\n      requisition_form_id: approvalTemplate?.id || editingApprovalPublicLink?.approval_template_id,\n    };\n    try {\n      const response = editingApprovalPublicLink ? await Api.updateApprovalPublicLink(\n        editingApprovalPublicLink?.id,\n        {\n          requisition_public_link: approvalPublicLinkObj\n        }\n      ) : await Api.createApprovalPublicLink(\n        {\n          requisition_public_link: approvalPublicLinkObj\n        }\n      );\n      if (response.res?.success) {\n        setSnackbarState({\n          message: response.res?.success,\n          state: 'success'\n        });\n      }\n    } catch (error) {\n      setSnackbarState({\n        message: error?.error,\n        state: 'error'\n      });\n    } finally {\n      setIsCreating(false);\n      setIsPublicLinkDialogOpen(false);\n      getApprovalPublicLinks();\n    }\n  };\n\n  useEffect(() => {\n    newApprovalOptions?.length === 0 && !isLoading && fetchApprovalTemplates();\n  }, [fetchApprovalTemplates]);\n\n  useEffect(() => {\n    setPublicLinkName('');\n    setApprovalTemplate(null);\n  }, [isPublicLinkDialogOpen]);\n\n  return (\n    <Box>\n      <Modal\n        open={isPublicLinkDialogOpen}\n        onClose={() => {\n          setIsPublicLinkDialogOpen(false);\n          setEditingApprovalPublicLink(null);\n        }}\n        aria-labelledby=\"new-approval-public-link-modal\"\n      >\n        <Box sx={classes.actionsModal}>\n          <Box sx={{ padding: '12px 0px 30px 0px' }}>\n            <Box id=\"new-approval-modal-title\" sx={classes.modalHeader}>\n              {`${editingApprovalPublicLink ? 'Edit' : 'New'} approval public link`}\n            </Box>\n          </Box>\n          <Box sx={{ marginTop: '1.75rem' }}>\n            <Box sx={{ ...classes.modalFormLine, marginBottom: '40px !important' }}>\n              <Box sx={{ position: 'relative' }}>\n                <DebouncedFormTextField\n                  onDebouncedChange={(value: string) => {\n                    setPublicLinkName(value);\n                  }}\n                  id=\"public_link_name\"\n                  label=\"Name\"\n                  defaultValue={editingApprovalPublicLink?.name}\n                  required\n                  styles={{ width: '250px' }}\n                />\n              </Box>\n            </Box>\n            <Box sx={classes.modalFormLine}>\n              <Autocomplete\n                disablePortal\n                options={newApprovalOptions}\n                ref={fieldRefs.approvalTemplate}\n                getOptionLabel={(option) => option?.name}\n                id=\"approval-templates\"\n                loading={newApprovalOptions?.length < 1}\n                loadingText={\n                  isLoading ? 'Loading approval templates...' : 'No approval templates'\n                }\n                value={approvalTemplate || newApprovalOptions.find(template => template.id === editingApprovalPublicLink?.approval_template_id)}\n                onChange={(event, value) => setApprovalTemplate(value)}\n                sx={{ width: '400px', ...sharedClasses.formAutocomplete }}\n                ListboxProps={{\n                  style: {\n                    fontFamily: 'Source Sans Pro, sans-serif',\n                    color: '#333333',\n                    maxHeight: '200px'\n                  }\n                }}\n                renderInput={(params) => (\n                  <TextField\n                    {...params}\n                    label=\"Select an approval template\"\n                    InputLabelProps={{ shrink: true }}\n                  />\n                )}\n              />\n            </Box>\n          </Box>\n          <Box>\n            <CloseIcon\n              onClick={() => {\n                setIsPublicLinkDialogOpen(false);\n                setEditingApprovalPublicLink(null);\n              }}\n              sx={classes.closeIcon}\n            />\n            <Box sx={classes.modalActions}>\n              <Button\n                disableElevation\n                sx={{ ...classes.buttonRedLight }}\n                variant=\"text\"\n                onClick={() => {\n                  setIsPublicLinkDialogOpen(false);\n                  setEditingApprovalPublicLink(null);\n                }}\n              >\n                Cancel\n              </Button>\n              <Button\n                id=\"submit-new-approval-button\"\n                type=\"submit\"\n                sx={classes.modalEditButton}\n                disabled={approvalTemplate === null && editingApprovalPublicLink === null}\n                onClick={handleApprovalPublicLinkAction}\n              >\n                {isCreating ? <CircularProgress size={20} color=\"inherit\" /> : (editingApprovalPublicLink ? 'Update' : 'Save')}\n              </Button>\n            </Box>\n          </Box>\n        </Box>\n      </Modal>\n    </Box>\n  );\n}\n","import React, { useEffect, useState } from 'react';\nimport Popover from '@mui/material/Popover';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport TextField from '@mui/material/TextField';\nimport DoneIcon from '@mui/icons-material/Done';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { INoteProps } from './types';\nimport { classes } from '../Job/Applications/styles';\n\nconst NotePopover = ({\n  setApprovalForms,\n  anchorEl,\n  handleCloseNote,\n  approvalFormId,\n  approvalFormNote,\n  apiKey,\n  setSnackbarState\n}: INoteProps) => {\n  const [noteBody, setNoteBody] = useState('');\n  const [savingNote, setSavingNote] = useState(0);\n\n  async function saveNote() {\n    setSavingNote((prevValue) => prevValue + 1);\n    try {\n      const response = await fetch(`/api/v4/requisitions/${approvalFormId}`, {\n        method: 'PUT',\n        headers: {\n          'Content-Type': 'application/json',\n          'X-api-authenticate': apiKey\n        },\n        body: JSON.stringify({\n          requisition: {\n            note: noteBody\n          }\n        })\n      }).then((res) => res.json());\n      if (response.success) {\n        setApprovalForms((prevApprovalForms) => {\n          const newApprovalForms = [...prevApprovalForms];\n          const approvalFormIndex = newApprovalForms.findIndex(\n            (approvalForm) => approvalForm.id === approvalFormId\n          );\n          newApprovalForms[approvalFormIndex].note = noteBody\n          return newApprovalForms;\n        });\n        setNoteBody('');\n        handleCloseNote();\n      }\n    } catch (error) {\n      setSnackbarState({\n        message: `Error saving note, ${error}`,\n        state: 'error'\n      });\n    } finally {\n      setSavingNote((prevValue) => prevValue - 1);\n    }\n  }\n\n  useEffect(() => {\n    if (!anchorEl) return;\n    setNoteBody('');\n  }, [anchorEl]);\n\n  return (\n    <Popover\n      id={anchorEl ? 'edit-note-popover' : undefined}\n      sx={classes.editNotePopover}\n      open={Boolean(anchorEl)}\n      anchorEl={anchorEl}\n      onClose={handleCloseNote}\n      anchorOrigin={{\n        vertical: 'bottom',\n        horizontal: 'right'\n      }}\n      transformOrigin={{\n        vertical: 'top',\n        horizontal: 'right'\n      }}\n    >\n      <>\n        <Box sx={classes.notesTitle}>Add approval form note</Box>\n        <TextField\n          id=\"note-input\"\n          sx={classes.noteInput}\n          label=\"Note\"\n          multiline\n          fullWidth\n          maxRows={4}\n          variant=\"outlined\"\n          defaultValue={approvalFormNote || noteBody}\n          onChange={(e) => setNoteBody(e.target.value)}\n          InputLabelProps={{\n            shrink: true\n          }}\n        />\n        <Box id=\"notes-button-container\" sx={classes.notesButtonContainer}>\n          <Button sx={classes.notesCancelButton} endIcon={<CloseIcon />} onClick={handleCloseNote}>\n            Cancel\n          </Button>\n          <Button\n            id=\"save-note-approval-forms-button\"\n            sx={classes.notesEditSaveButton}\n            endIcon={savingNote ? <CircularProgress size={16} /> : <DoneIcon />}\n            onClick={() => {\n              saveNote();\n            }}\n            disabled={!!savingNote}\n          >\n            {approvalFormNote ? \"Update\" : \"Save\"}\n          </Button>\n        </Box>\n      </>\n    </Popover>\n  );\n};\n\nexport default NotePopover;\n","import React, { useState, useEffect, useRef, Dispatch, SetStateAction, useCallback } from 'react';\nimport { Box, Modal, Button } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { Virtualize } from '../../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport { StyledSnackbarProps } from '../../../Components/CustomUIElements/StyledSnackbar';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport Api from '../../API';\n\nexport default function AddSystemField({\n  apiKey,\n  approvalTemplateId,\n  setSnackbar,\n  modalsOpen,\n  setModalsOpen,\n  getQuestions\n}: {\n  apiKey: string;\n  modalsOpen: Record<string, boolean>;\n  setModalsOpen: Dispatch<SetStateAction<Record<string, boolean>>>;\n  approvalTemplateId: number;\n  setSnackbar: StyledSnackbarProps['setSnackbarState'];\n  getQuestions: any;\n}) {\n  const [isCreating, setIsCreating] = useState(false);\n  const [isLoading, setIsLoading] = useState(false);\n  const selectStatusRef = useRef(null);\n  const [systemFields, setSystemFields] = useState([]);\n  const [selectedField, setSelectedField] = useState(null);\n  const [errorField, setErrorField] = useState('');\n\n  const handleClose = () => {\n    setSelectedField(null);\n    setErrorField('');\n    setModalsOpen((prev) => ({ ...prev, addSystemField: false }));\n  };\n\n  const getSystemFields = useCallback(async (isMounted: { current: boolean }) => {\n    if (isMounted.current) setIsLoading(true);\n    try {\n      const response = await fetch(`/api/v4/system_fields?form_type=RequisitionForm`, {\n        method: 'GET',\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      }).then((response) => response.json());\n      if (isMounted.current) setSystemFields(\n        response?.system_fields.map(\n          (field: { id: number; title: string }) => `${field.id} - ${field.title}`\n        )\n      );\n    } catch (error) {\n      if (isMounted.current) setSnackbar({\n        message: `Failed to fetch system fields, ${error}`,\n        state: 'error'\n      });\n    } finally {\n      if (isMounted.current) setIsLoading(false);\n    }\n  }, [apiKey]);\n\n  useEffect(() => {\n    const isMounted = { current: true };\n    getSystemFields(isMounted);\n    return () => { isMounted.current = false };\n  }, [getSystemFields]);\n\n  const handleSubmit = async () => {\n    if (!selectedField) {\n      setErrorField('This field is required');\n      return;\n    }\n    setIsCreating(true);\n    try {\n      const data = await Api.addSystemField(\n        approvalTemplateId,\n        selectedField.split('-')[0]\n      );\n      setSnackbar({\n        message: 'Field has been added',\n        state: 'success'\n      });\n      handleClose();\n      setSelectedField(null);\n      setErrorField('');\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsCreating(false);\n      getQuestions();\n    }\n  };\n\n  return (\n    <Modal\n      open={modalsOpen.addSystemField}\n      onClose={handleClose}\n      aria-labelledby=\"add-system-field-modal\"\n    >\n      <Box sx={classes.actionsModalReducedPadding}>\n        <CloseIcon onClick={handleClose} sx={classes.closeIcon} />\n        <Box id=\"add-system-title\" sx={classes.actionModalHeader}>\n          Add system field\n        </Box>\n        <Box\n          sx={classes.modalContent}\n          id=\"add-system-modal-content\"\n          aria-label=\"Add System Field Modal Content\"\n        >\n          <Box role=\"form\" id=\"add-system-form\" aria-label=\"Add System Field form\">\n            <Box sx={{ ...classes.actionModalFormLine, marginTop: '20px' }} ref={selectStatusRef}>\n              <Virtualize\n                value={selectedField}\n                passOptions={systemFields}\n                setValue={(value: string) => {\n                  setSelectedField(value);\n                  setErrorField('');\n                }}\n                passedStyles={{\n                  ...sharedClasses.formAutocomplete,\n                  width: '700px',\n                  marginTop: '20px'\n                }}\n                label=\"Select a system field\"\n                loading={isLoading}\n                loadingText=\"Loading system fields...\"\n              />\n\n              {errorField && <Box sx={{ ...classes.formError, top: '63px' }}>{errorField}</Box>}\n            </Box>\n          </Box>\n        </Box>\n        <Box sx={classes.modalFooterSmallerSection}>\n          <Button id=\"close-add-system-button\" sx={classes.modalCancelButton} onClick={handleClose}>\n            Cancel\n          </Button>\n          <Button\n            id=\"submit-add-system-button\"\n            type=\"submit\"\n            sx={{ ...classes.modalCreateButton, width: '91px', height: '41px' }}\n            onClick={handleSubmit}\n          >\n            {isCreating ? <CircularProgress size={20} color=\"inherit\" /> : 'Confirm'}\n          </Button>\n        </Box>\n      </Box>\n    </Modal>\n  );\n}\n","import React, { useState } from 'react';\nimport {\n  Box,\n  Table,\n  TableHead,\n  TableCell,\n  TableBody,\n  TableRow,\n  Stack,\n  Divider\n} from '@mui/material';\nimport { IAvailabilityConfig } from '../../../Components/Utilities/QuestionFieldViewer';\nimport { FormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport FormSelectField from '../../../Components/CustomUIElements/FormSelectField';\nimport { classes } from '../styles';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\nimport { TimePicker } from '@mui/x-date-pickers/TimePicker';\nimport dayjs, { Dayjs } from 'dayjs';\nimport duration from 'dayjs/plugin/duration';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport { IAvailabilityTableData } from '../../types';\n\nconst DayRow = ({\n  payrollDay,\n  day,\n  allowBreak,\n  onChange,\n  data,\n  disabled = false\n}: {\n  payrollDay: number;\n  day: string;\n  allowBreak: boolean;\n  onChange: any;\n  data: AvailabilityPreviewData;\n  disabled?: boolean;\n}) => {\n  const [fromTime, setFromTime] = React.useState<Dayjs | null>(\n    dayjs(data?.from_time || '00:00', 'HH:mm')\n  );\n  const [toTime, setToTime] = React.useState<Dayjs | null>(\n    dayjs(data?.to_time || '00:00', 'HH:mm')\n  );\n\n  dayjs.extend(duration);\n\n  const calculateTotalTime = ({\n    from = fromTime,\n    to = toTime,\n    breakTime = data?.break_time\n  }: {\n    from?: Dayjs | null;\n    to?: Dayjs | null;\n    breakTime?: number;\n  }) => {\n    const shiftStart = dayjs(from);\n    let shiftEnd = dayjs(to);\n\n    // Check if the shift is overnight\n    if (shiftEnd.isBefore(shiftStart)) {\n      // If so, add 24 hours to the end time\n      shiftEnd = shiftEnd.add(1, 'day');\n    }\n    const shiftTime = dayjs.duration(shiftEnd.diff(shiftStart)).format('HH:mm');\n    const timeDiff = shiftTime.split(':');\n    const totalTime = Number(timeDiff[0]) + Number(timeDiff[1]) / 60 - (breakTime || 0) / 60;\n    return Math.round(totalTime * 100) / 100;\n  };\n\n  return (\n    <TableRow>\n      <TableCell sx={classes.availabilityTableBody}>\n        <Stack alignItems=\"center\">{payrollDay}</Stack>\n      </TableCell>\n      <TableCell sx={classes.availabilityTableBody}>\n        <Stack alignItems=\"center\">{day}</Stack>\n      </TableCell>\n      <TableCell sx={classes.availabilityTableBody}>\n        <Stack alignItems=\"center\">\n          <FormTextField\n            value={data?.heading_1}\n            onChange={(event) => onChange({ ...data, heading_1: event.target.value })}\n            styles={classes.tableTextfield}\n            draggable={disabled}\n          />\n        </Stack>\n      </TableCell>\n      <TableCell sx={classes.availabilityTableBody}>\n        <Stack alignItems=\"center\">\n          <FormTextField\n            value={data?.heading_2}\n            onChange={(event) => onChange({ ...data, heading_2: event.target.value })}\n            styles={classes.tableTextfield}\n            draggable={disabled}\n          />\n        </Stack>\n      </TableCell>\n      <TableCell sx={classes.availabilityTableBody}>\n        <Stack flexDirection=\"row\" justifyContent=\"space-around\" columnGap=\"8px\">\n          <LocalizationProvider dateAdapter={AdapterDayjs}>\n            <TimePicker\n              views={['hours', 'minutes']}\n              format=\"HH:mm\"\n              mask=\"__:__\"\n              value={dayjs(fromTime)}\n              disableOpenPicker\n              onChange={(newValue) => {\n                const timeString = newValue?.format('HH:mm');\n                setFromTime(dayjs(timeString, 'HH:mm'));\n                const newData = {\n                  ...data,\n                  from_time:\n                    timeString === 'Invalid Date'\n                      ? dayjs('00:00', 'HH:mm').format('HH:mm')\n                      : dayjs(timeString, 'HH:mm').format('HH:mm')\n                };\n                onChange({\n                  ...newData,\n                  total_time: calculateTotalTime({ from: dayjs(timeString, 'HH:mm') })\n                });\n              }}\n              slotProps={{\n                textField: {\n                  InputProps: {\n                    disableUnderline: true,\n                    sx: {\n                      width: '70px',\n                      border: '1px solid #DDDDDD',\n                      padding: '0px 8px',\n                      margin: '2px 0px',\n                      borderRadius: '6px',\n                      '& .MuiInputBase-input': { padding: '6px', fontSize: '12px' }\n                    }\n                  },\n                  variant: 'standard'\n                }\n              }}\n              disabled={disabled}\n            />\n          </LocalizationProvider>\n          <LocalizationProvider dateAdapter={AdapterDayjs}>\n            <TimePicker\n              views={['hours', 'minutes']}\n              format=\"HH:mm\"\n              mask=\"__:__\"\n              value={dayjs(toTime)}\n              disableOpenPicker\n              onChange={(newValue) => {\n                const timeString = newValue?.format('HH:mm');\n                setToTime(dayjs(timeString, 'HH:mm'));\n                const newData = {\n                  ...data,\n                  to_time:\n                    timeString === 'Invalid Date'\n                      ? dayjs('00:00', 'HH:mm').format('HH:mm')\n                      : dayjs(timeString, 'HH:mm').format('HH:mm')\n                };\n                onChange({\n                  ...newData,\n                  total_time: calculateTotalTime({ to: dayjs(timeString, 'HH:mm') })\n                });\n              }}\n              disabled={disabled}\n              slotProps={{\n                textField: {\n                  InputProps: {\n                    disableUnderline: true,\n                    sx: {\n                      width: '70px',\n                      border: '1px solid #DDDDDD',\n                      padding: '0px 8px',\n                      margin: '2px 0px',\n                      borderRadius: '6px',\n                      '& .MuiInputBase-input': { padding: '6px', fontSize: '12px' }\n                    }\n                  },\n                  variant: 'standard'\n                }\n              }}\n            />\n          </LocalizationProvider>\n        </Stack>\n      </TableCell>\n      {allowBreak && (\n        <TableCell sx={classes.availabilityTableBody}>\n          <Stack alignItems=\"center\">\n            <FormSelectField\n              isDisabled={disabled}\n              options={[\n                { value: '0', label: '0 mins' },\n                { value: '15', label: '15 mins' },\n                { value: '30', label: '30 mins' },\n                { value: '45', label: '45 mins' },\n                { value: '60', label: '1 hour' }\n              ]}\n              defaultValue={data?.break_time?.toString()}\n              styles={{\n                minWidth: '80px',\n                '& .MuiInputBase-input': { fontSize: '12px', margin: 'unset' },\n                '& .MuiInputBase-input.MuiSelect-select': {\n                  display: 'flex',\n                  height: '18px',\n                  alignItems: 'center'\n                }\n              }}\n              onChange={(value) => {\n                const newData = { ...data, break_time: Number(value) };\n                onChange({\n                  ...newData,\n                  total_time: calculateTotalTime({ breakTime: Number(value) })\n                });\n              }}\n            />\n          </Stack>\n        </TableCell>\n      )}\n      <TableCell sx={classes.availabilityTableBody}>\n        <Stack alignItems=\"center\">{data?.total_time}</Stack>\n      </TableCell>\n    </TableRow>\n  );\n};\n\ntype AvailabilityPreviewData = {\n  heading_1: string;\n  heading_2: string;\n  from_time: string;\n  to_time: string;\n  break_time?: number;\n  total_time: number;\n};\n\nexport default function AvailabilityPreview({\n  availabilityConfig,\n  onChange,\n  answer,\n  disabled = false,\n  error,\n  innerRef,\n  removePadding\n}: {\n  availabilityConfig: IAvailabilityConfig;\n  onChange?: any;\n  answer?: Record<string, IAvailabilityTableData>;\n  disabled?: boolean;\n  error?: string;\n  innerRef?: React.Ref<HTMLDivElement>;\n  removePadding?: boolean;\n}) {\n  const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n  const weekDuration = availabilityConfig.week_duration === 'weekly' ? 7 : 14;\n\n  const defaultState = Array.from({ length: weekDuration }, (_, index) => ({\n    heading_1: '',\n    heading_2: '',\n    from_time: '00:00',\n    to_time: '00:00',\n    break_time: 0,\n    total_time: 0\n  })).reduce(\n    (acc, val, index) => {\n      acc[index + 1] = val;\n      return acc;\n    },\n    {} as { [key: string]: AvailabilityPreviewData }\n  );\n  const calculateTotalShiftsAndHours = (newState: typeof defaultState | typeof answer) => {\n    if (!newState) return { totalShifts: 0, totalHours: 0 };\n    const totalShifts = Object.values(newState).filter((e) => e.total_time !== 0).length;\n    const totalHours = Object.values(newState)\n      .map((e) => e.total_time)\n      .reduce((acc, val) => acc + val, 0);\n    return { totalShifts, totalHours };\n  };\n  const [state, setState] = useState(answer || defaultState);\n  const [totalShiftsAndHours, setTotalShiftsAndHours] = useState(\n    calculateTotalShiftsAndHours(answer || defaultState)\n  );\n\n  const onRowChange = (index: number) => (value: AvailabilityPreviewData) => {\n    const newState = { ...state };\n    newState[index] = value;\n    setTotalShiftsAndHours(calculateTotalShiftsAndHours(newState));\n    setState(newState);\n    onChange(newState);\n  };\n\n  const tableHeaderStyling = {\n    ...classes.availabilityTableHeader,\n    ...(removePadding && { padding: 'unset' })\n  };\n\n  return (\n    <Box sx={{ padding: removePadding ? 0 : 1, overflow: 'auto' }} ref={innerRef}>\n      <Table sx={{ backgroundColor: 'inherit', tableLayout: 'auto !important' }}>\n        <TableHead>\n          <TableRow>\n            <TableCell sx={tableHeaderStyling}>\n              <Stack alignItems=\"center\" minWidth=\"75px\">\n                Payroll Day\n              </Stack>\n            </TableCell>\n            <TableCell sx={tableHeaderStyling}>\n              <Stack alignItems=\"center\">Day</Stack>\n            </TableCell>\n            <TableCell sx={tableHeaderStyling}>\n              <Stack alignItems=\"center\">{availabilityConfig.heading_1}</Stack>\n            </TableCell>\n            <TableCell sx={tableHeaderStyling}>\n              <Stack alignItems=\"center\">{availabilityConfig.heading_2}</Stack>\n            </TableCell>\n            <TableCell sx={tableHeaderStyling}>\n              <Stack alignItems=\"center\" height=\"14px\">\n                Shift times\n              </Stack>\n              <Stack flexDirection=\"row\" justifyContent=\"space-around\">\n                <Stack fontSize=\"10px\" height=\"16px\">\n                  From\n                </Stack>\n                <Stack fontSize=\"10px\" height=\"16px\">\n                  To\n                </Stack>\n              </Stack>\n            </TableCell>\n            {availabilityConfig.allow_break && (\n              <TableCell sx={tableHeaderStyling}>\n                <Stack alignItems=\"center\">Break</Stack>\n              </TableCell>\n            )}\n            <TableCell sx={tableHeaderStyling}>\n              <Stack alignItems=\"center\" minWidth=\"75px\">\n                Paid Hours\n              </Stack>\n            </TableCell>\n          </TableRow>\n        </TableHead>\n        <TableBody>\n          {Array.from({ length: weekDuration }, (_, index) => (\n            <React.Fragment key={index}>\n              {index === 7 && (\n                <TableRow>\n                  {Array(availabilityConfig.allow_break ? 7 : 6)\n                    .fill(_)\n                    .map((e, index) => (\n                      <TableCell sx={classes.tableDivider} key={index}>\n                        <Divider />\n                      </TableCell>\n                    ))}\n                </TableRow>\n              )}\n              <DayRow\n                payrollDay={index + 1}\n                day={days[(index + availabilityConfig.week_start_day) % days.length].slice(0, 3)}\n                allowBreak={availabilityConfig.allow_break}\n                onChange={onRowChange(index + 1)}\n                data={state[index + 1]}\n                disabled={disabled}\n              />\n            </React.Fragment>\n          ))}\n          <TableRow>\n            <TableCell sx={classes.availabilityTableBody} colSpan={4}>\n              <Stack alignItems=\"center\">TOTAL</Stack>\n            </TableCell>\n            <TableCell\n              sx={classes.availabilityTableBody}\n              colSpan={availabilityConfig.allow_break ? 2 : 1}\n            >\n              <Stack alignItems=\"center\">{totalShiftsAndHours.totalShifts} Shifts</Stack>\n            </TableCell>\n            <TableCell sx={classes.availabilityTableBody}>\n              <Stack alignItems=\"center\">{totalShiftsAndHours.totalHours}</Stack>\n            </TableCell>\n          </TableRow>\n        </TableBody>\n      </Table>\n      {error && <Box sx={{ ...sharedClasses.errorBoxCheckbox, marginLeft: '14px' }}>{error}</Box>}\n    </Box>\n  );\n}\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { Switch, FormControlLabel } from '@mui/material';\nimport { classes } from '../styles';\n\nexport default function BooleanFieldSwitch({\n  fieldValue,\n  setFieldValue,\n  label,\n  isSystemField\n}: {\n  fieldValue: boolean;\n  setFieldValue: Dispatch<SetStateAction<boolean>>;\n  label: string;\n  isSystemField: boolean;\n}) {\n  const labelSx = !fieldValue\n    ? { ...classes.switchLabels, ...classes.labelActive }\n    : classes.switchLabels;\n\n  return (\n    <FormControlLabel\n      sx={labelSx}\n      control={\n        <Switch\n          sx={fieldValue ? classes.switchActive : classes.switch}\n          checked={fieldValue}\n          disabled={isSystemField}\n          onChange={() => setFieldValue(!fieldValue)}\n        />\n      }\n      label={label}\n      labelPlacement=\"end\"\n    />\n  );\n}\n","import React, { useState, useEffect, useRef, Dispatch, SetStateAction, useCallback } from 'react';\nimport { Box, Modal, Button, CircularProgress } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { MultilineFormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport { StyledSnackbarProps } from '../../../Components/CustomUIElements/StyledSnackbar';\nimport { classes } from '../styles';\nimport Api from '../../API';\nimport {\n  DndContext,\n  closestCenter,\n  KeyboardSensor,\n  PointerSensor,\n  useSensor,\n  useSensors\n} from '@dnd-kit/core';\nimport {\n  SortableContext,\n  sortableKeyboardCoordinates,\n  verticalListSortingStrategy\n} from '@dnd-kit/sortable';\nimport SortableChoice from './SortableChoice';\nimport { IUserPermissions } from '../../../Components/sharedTypes';\nimport { useFieldChoiceList } from '../../../hooks/useFieldChoiceList';\n\nexport default function NewEmailTemplateField({\n  apiKey,\n  approvalTemplateId,\n  setSnackbar,\n  modalsOpen,\n  setModalsOpen,\n  editingQuestion,\n  getQuestions,\n  userPermissions\n}: {\n  apiKey: string;\n  modalsOpen: Record<string, boolean>;\n  setModalsOpen: Dispatch<SetStateAction<Record<string, boolean>>>;\n  approvalTemplateId: number;\n  setSnackbar: StyledSnackbarProps['setSnackbarState'];\n  editingQuestion?: any;\n  getQuestions: any;\n  userPermissions: IUserPermissions;\n}) {\n  const [isCreating, setIsCreating] = useState(false);\n  const [label, setLabel] = useState('');\n  const [errorLabel, setErrorLabel] = useState('');\n  const [errorField, setErrorField] = useState('');\n  const [errorChoices, setErrorChoices] = useState('');\n  const {\n    choiceList,\n    setChoiceList,\n    addChoice,\n    removeChoice,\n    clearChoices,\n    updateChoice,\n    switchChoices\n  } = useFieldChoiceList();\n\n  const labelRef = useRef<HTMLInputElement>(null);\n  const fieldTypeRef = useRef<HTMLInputElement>(null);\n  const choicesRef = useRef<HTMLInputElement>(null);\n\n  const sensors = useSensors(\n    useSensor(PointerSensor),\n    useSensor(KeyboardSensor, {\n      coordinateGetter: sortableKeyboardCoordinates\n    })\n  );\n\n  function handleDragEnd(event) {\n    const { active, over } = event;\n    switchChoices(active.id, over.id);\n  }\n\n  const setDefaultValue = useCallback(async () => {\n    if (editingQuestion) {\n      setLabel(editingQuestion.title);\n      setChoiceList(editingQuestion.field_choices);\n    }\n  }, [editingQuestion]);\n\n  const handleClose = () => {\n    setModalsOpen((prev) => ({ ...prev, newEmailTemplateField: false }));\n    clearData();\n  };\n\n  const handleSubmit = async (approvalTemplateId: number) => {\n    if (!label) {\n      labelRef?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n      setErrorLabel('This field is required');\n      return;\n    }\n    setIsCreating(true);\n\n    let fieldObject = {\n      title: label,\n      enabled: true,\n      required: true,\n      rateable: false,\n      field_type: 'radio_button_field',\n      for_email_template: true\n    };\n\n    choiceList.map((choice, index) => {\n      if (!choice?.name) {\n        choicesRef?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n        setErrorChoices('All field choices must each have a value');\n        return;\n      }\n      choice.position = index;\n      if (choice.id.toString().length == 13) {\n        choice.id = '';\n      }\n    });\n\n    const jsonString = JSON.stringify(Object.assign({}, choiceList));\n    const attributes = JSON.parse(jsonString);\n    fieldObject['field_choices_attributes'] = attributes;\n\n    try {\n      if (editingQuestion) {\n        const data = await Api.putQuestion(\n          editingQuestion.id,\n          approvalTemplateId,\n          {\n            field: fieldObject\n          }\n        );\n        setSnackbar({\n          message: 'Field has been updated',\n          state: 'success'\n        });\n      } else {\n        const data = await Api.newField(approvalTemplateId, {\n          field: fieldObject\n        });\n        setSnackbar({\n          message: 'Field has been created',\n          state: 'success'\n        });\n        clearData();\n      }\n      handleClose();\n    } catch (error) {\n      setSnackbar({\n        message: `Field failed to create: ${error}`,\n        state: 'error'\n      });\n    } finally {\n      setIsCreating(false);\n      getQuestions();\n    }\n  };\n\n  const handleChoiceInput = (e, index: number) => {\n    const { value } = e.target;\n    updateChoice(value, index);\n  };\n\n  const clearData = () => {\n    setLabel('');\n    clearChoices();\n    setErrorLabel('');\n    setErrorField('');\n    setErrorChoices('');\n  };\n\n  useEffect(() => {\n    setDefaultValue();\n  }, [setDefaultValue, editingQuestion]);\n\n  return (\n    <Modal\n      open={modalsOpen.newEmailTemplateField}\n      onClose={() => handleClose(true)}\n      aria-labelledby=\"new-email-template-field-modal\"\n    >\n      <Box sx={classes.actionsModalReducedPadding}>\n        <Box sx={classes.modalWrapper}>\n          <CloseIcon onClick={() => handleClose(true)} sx={classes.closeIcon} />\n          <Box id=\"new-email-template-field-title\" sx={classes.actionModalHeader}>\n            New email template field\n          </Box>\n          <Box\n            sx={classes.modalContent}\n            id=\"new-email-template-field-modal-content\"\n            aria-label=\"New Email Template Field Modal Content\"\n          >\n            <Box sx={{ marginLeft: '15px' }}>\n              <Box sx={classes.modalFormLine}>\n                <MultilineFormTextField\n                  value={label}\n                  onChange={(e) => {\n                    setErrorLabel('');\n                    setLabel(e.target.value);\n                  }}\n                  styles={{ width: '600px', marginTop: '20px' }}\n                  rows={6}\n                  innerRef={labelRef}\n                  error={errorLabel}\n                  label={'Field label'}\n                />\n              </Box>\n            </Box>\n            <Box sx={classes.addChoiceContainer} ref={choicesRef}>\n              <Box sx={classes.addChoiceHead}>\n                <Box id=\"add-choice-title\" sx={classes.addChoiceLabel}>\n                  Choices\n                </Box>\n                <Button\n                  id=\"add-choice-button\"\n                  sx={classes.modalAddChoiceButton}\n                  onClick={addChoice}\n                >\n                  Add choice\n                </Button>\n              </Box>\n              <DndContext\n                sensors={sensors}\n                collisionDetection={closestCenter}\n                onDragEnd={handleDragEnd}\n              >\n                <SortableContext items={choiceList} strategy={verticalListSortingStrategy}>\n                  {choiceList.map(\n                    (choice, index) =>\n                      !(choice?._destroy === 1) && (\n                        <SortableChoice\n                          key={choice.id}\n                          id={choice.id}\n                          choice={choice}\n                          index={index}\n                          handleChoiceInput={handleChoiceInput}\n                          onRemoveChoice={removeChoice}\n                        />\n                      )\n                  )}\n                </SortableContext>\n              </DndContext>\n              {errorChoices && <Box sx={{ ...classes.inlineError }}>{errorChoices}</Box>}\n            </Box>\n            <Box sx={classes.modalFooter}>\n              <Button\n                id=\"close-new-email-template-field-button\"\n                sx={classes.modalCancelButton}\n                onClick={() => handleClose(true)}\n              >\n                Cancel\n              </Button>\n              <Button\n                id=\"submit-new-email-template-field-button\"\n                type=\"submit\"\n                sx={{ ...classes.modalCreateButton, width: '91px', height: '41px' }}\n                onClick={() => handleSubmit(approvalTemplateId)}\n              >\n                {isCreating ? <CircularProgress size={20} color=\"inherit\" /> : 'Confirm'}\n              </Button>\n            </Box>\n          </Box>\n        </Box>\n      </Box>\n    </Modal>\n  );\n}\n","import React, { useState, useEffect, useRef, Dispatch, SetStateAction, useCallback } from 'react';\nimport { Box, Modal, Button, CircularProgress } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { Virtualize } from '../../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport {\n  MultilineFormTextField,\n  FormTextField\n} from '../../../Components/CustomUIElements/FormTextField';\nimport FormSelectField from '../../../Components/CustomUIElements/FormSelectField';\nimport { StyledSnackbarProps } from '../../../Components/CustomUIElements/StyledSnackbar';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport Api from '../../API';\nimport {\n  DndContext,\n  closestCenter,\n  KeyboardSensor,\n  PointerSensor,\n  useSensor,\n  useSensors\n} from '@dnd-kit/core';\nimport {\n  SortableContext,\n  sortableKeyboardCoordinates,\n  verticalListSortingStrategy\n} from '@dnd-kit/sortable';\nimport SortableChoice from './SortableChoice';\nimport { IUserPermissions } from '../../../Components/sharedTypes';\nimport { useFieldChoiceList } from '../../../hooks/useFieldChoiceList';\nimport BooleanFieldSwitch from './BooleanFieldSwitch';\n\nconst fieldTypeOptions = [\n  'Availability',\n  'Date',\n  'Text',\n  'Textarea',\n  'Radio Button',\n  'Select',\n  'Rank',\n  'CSV Data Lookup',\n  'Checkbox'\n];\n\nconst fieldTypeValues = {\n  Select: 'select_field',\n  'CSV Data Lookup': 'csv_data_lookup_field',\n  Date: 'date_field',\n  Text: 'text_field',\n  'Radio Button': 'radio_button_field',\n  Rank: 'rank_field',\n  'Job Reference Lookup': 'job_reference_lookup_field',\n  Availability: 'availability_field',\n  Checkbox: 'check_box_field',\n  Textarea: 'text_area_field'\n};\n\nconst DateOptions = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n\nexport default function NewField({\n  apiKey,\n  approvalTemplateId,\n  setSnackbar,\n  modalsOpen,\n  setModalsOpen,\n  editingQuestion,\n  getQuestions,\n  userPermissions\n}: {\n  apiKey: string;\n  modalsOpen: Record<string, boolean>;\n  setModalsOpen: Dispatch<SetStateAction<Record<string, boolean>>>;\n  approvalTemplateId: number;\n  setSnackbar: StyledSnackbarProps['setSnackbarState'];\n  editingQuestion?: any;\n  getQuestions: any;\n  userPermissions: IUserPermissions;\n}) {\n  const [isCreating, setIsCreating] = useState(false);\n  const [fieldType, setFieldType] = useState('');\n  const [label, setLabel] = useState('');\n  const [enabledSwitch, setEnabledSwitch] = useState(true);\n  const [requiredSwitch, setRequiredSwitch] = useState(false);\n  const [confidentialSwitch, setConfidentialSwitch] = useState(false);\n  const [rateableSwitch, setRateableSwitch] = useState(false);\n  const [weekDuration, setWeekDuration] = useState('Weekly');\n  const [weekStartDay, setWeekStartDay] = useState<string>('Sunday');\n  const [headingOne, setHeadingOne] = useState('');\n  const [headingTwo, setHeadingTwo] = useState('');\n  const [allowBreak, setAllowBreak] = useState('No');\n  const [errorLabel, setErrorLabel] = useState('');\n  const [errorField, setErrorField] = useState('');\n  const [errorChoices, setErrorChoices] = useState('');\n  const {\n    choiceList,\n    setChoiceList,\n    addChoice,\n    removeChoice,\n    clearChoices,\n    updateChoice,\n    switchChoices\n  } = useFieldChoiceList();\n\n  const labelRef = useRef<HTMLInputElement>(null);\n  const fieldTypeRef = useRef<HTMLInputElement>(null);\n  const choicesRef = useRef<HTMLInputElement>(null);\n\n  const sensors = useSensors(\n    useSensor(PointerSensor),\n    useSensor(KeyboardSensor, {\n      coordinateGetter: sortableKeyboardCoordinates\n    })\n  );\n\n  const isSystemField = editingQuestion && !editingQuestion.editable;\n\n  function handleDragEnd(event) {\n    const { active, over } = event;\n    switchChoices(active.id, over.id);\n  }\n\n  const getKeyByValue = (object, value) => {\n    return Object.keys(object).find((key) => object[key] === value);\n  };\n\n  const setDefaultValue = useCallback(async () => {\n    if (editingQuestion) {\n      setFieldType(getKeyByValue(fieldTypeValues, editingQuestion.field_type));\n      setLabel(editingQuestion.title);\n      setEnabledSwitch(editingQuestion.enabled);\n      setRequiredSwitch(editingQuestion.required);\n      setConfidentialSwitch(editingQuestion.confidential);\n      setRateableSwitch(editingQuestion.rateable);\n      setChoiceList(editingQuestion.field_choices);\n      if (editingQuestion.availability_config) {\n        const duration = editingQuestion.availability_config.week_duration;\n        setWeekDuration(duration.charAt(0).toUpperCase() + duration.slice(1));\n        setWeekStartDay(DateOptions[editingQuestion.availability_config.week_start_day]);\n        setHeadingOne(editingQuestion.availability_config.heading_1);\n        setHeadingTwo(editingQuestion.availability_config.heading_2);\n        setAllowBreak(editingQuestion.availability_config.allow_break === true ? 'Yes' : 'No');\n      }\n    }\n  }, [editingQuestion]);\n\n  const handleClose = () => {\n    setModalsOpen((prev) => ({ ...prev, newField: false }));\n    clearData();\n  };\n\n  const handleSubmit = async (approvalTemplateId: number) => {\n    if (!fieldType || !label) {\n      if (!fieldType) {\n        fieldTypeRef?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n        setErrorField('This field is required');\n      } else {\n        labelRef?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n        setErrorLabel('This field is required');\n      }\n      return;\n    }\n    setIsCreating(true);\n\n    let fieldObject = {\n      title: label,\n      enabled: enabledSwitch,\n      required: requiredSwitch,\n      confidential: confidentialSwitch,\n      rateable: rateableSwitch,\n      field_type: fieldTypeValues[fieldType]\n    };\n\n    if (['Select', 'Rank', 'Checkbox', 'Radio Button'].includes(fieldType)) {\n      choiceList.map((choice, index) => {\n        if (!choice?.name) {\n          choicesRef?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n          setErrorChoices('All field choices must each have a value');\n          return;\n        }\n        choice.position = index;\n        if (choice.id.toString().length == 13) {\n          choice.id = '';\n        }\n      });\n\n      const jsonString = JSON.stringify(Object.assign({}, choiceList));\n      const attributes = JSON.parse(jsonString);\n      fieldObject['field_choices_attributes'] = attributes;\n    } else if (['Availability'].includes(fieldType)) {\n      fieldObject['availability_config_attributes'] = {\n        week_duration: weekDuration.toLowerCase(),\n        week_start_day: DateOptions.indexOf(weekStartDay),\n        heading_1: headingOne,\n        heading_2: headingTwo,\n        allow_break: allowBreak === 'Yes'\n      };\n    }\n\n    try {\n      if (editingQuestion) {\n        const data = await Api.putQuestion(\n          editingQuestion.id,\n          approvalTemplateId,\n          {\n            field: fieldObject\n          }\n        );\n        setSnackbar({\n          message: 'Field has been updated',\n          state: 'success'\n        });\n      } else {\n        const data = await Api.newField(approvalTemplateId, {\n          field: fieldObject\n        });\n        setSnackbar({\n          message: 'Field has been created',\n          state: 'success'\n        });\n        clearData();\n      }\n      handleClose();\n    } catch (error) {\n      setSnackbar({\n        message: `Field failed to create: ${error}`,\n        state: 'error'\n      });\n    } finally {\n      setIsCreating(false);\n      getQuestions();\n    }\n  };\n\n  const handleChoiceInput = (e, index: number) => {\n    const { value } = e.target;\n    updateChoice(value, index);\n  };\n\n  const clearData = () => {\n    setFieldType('');\n    setLabel('');\n    setEnabledSwitch(true);\n    setRequiredSwitch(false);\n    setConfidentialSwitch(false);\n    setRateableSwitch(false);\n    clearChoices();\n    setWeekDuration('Weekly');\n    setWeekStartDay('Sunday');\n    setHeadingOne('');\n    setHeadingTwo('');\n    setAllowBreak('No');\n    setErrorLabel('');\n    setErrorField('');\n    setErrorChoices('');\n  };\n\n  useEffect(() => {\n    setDefaultValue();\n  }, [setDefaultValue, editingQuestion]);\n\n  return (\n    <Modal\n      open={modalsOpen.newField}\n      onClose={() => handleClose(true)}\n      aria-labelledby=\"new-field-modal\"\n    >\n      <Box sx={classes.actionsModalReducedPadding}>\n        <Box sx={classes.modalWrapper}>\n          <CloseIcon onClick={() => handleClose(true)} sx={classes.closeIcon} />\n          <Box id=\"new-field-title\" sx={classes.actionModalHeader}>\n            New field\n          </Box>\n          <Box\n            sx={classes.modalContent}\n            id=\"new-field-modal-content\"\n            aria-label=\"New Field Modal Content\"\n          >\n            <Box role=\"form\" id=\"new-field-form\" aria-label=\"New Field form\">\n              {!isSystemField && (\n                <Box sx={{ ...classes.actionModalFormLine, marginTop: '20px' }} ref={fieldTypeRef}>\n                  <Virtualize\n                    value={fieldType}\n                    passOptions={\n                      userPermissions?.['Approval Forms']?.['Use Availability Questions']\n                        ? fieldTypeOptions\n                        : fieldTypeOptions.slice(1)\n                    }\n                    setValue={(value: string) => {\n                      setFieldType(value);\n                      setErrorField('');\n                    }}\n                    passedStyles={{\n                      ...sharedClasses.formAutocomplete,\n                      width: '300px',\n                      marginTop: '20px'\n                    }}\n                    label=\"Field type\"\n                  />\n                  {errorField && <Box sx={{ ...classes.formError, top: '63px' }}>{errorField}</Box>}\n                </Box>\n              )}\n            </Box>\n            <Box sx={{ marginLeft: '15px' }}>\n              <Box sx={classes.modalFormLine}>\n                <MultilineFormTextField\n                  value={label}\n                  onChange={(e) => {\n                    setErrorLabel('');\n                    setLabel(e.target.value);\n                  }}\n                  styles={{ width: '600px', marginTop: '20px' }}\n                  rows={6}\n                  innerRef={labelRef}\n                  error={errorLabel}\n                  label={'Field label'}\n                />\n              </Box>\n            </Box>\n            <Box sx={classes.checkboxContainer} id=\"enabled-filter\">\n              <BooleanFieldSwitch\n                fieldValue={enabledSwitch}\n                setFieldValue={setEnabledSwitch}\n                label=\"Enabled\"\n                isSystemField={false}\n              />\n              <BooleanFieldSwitch\n                fieldValue={requiredSwitch}\n                setFieldValue={setRequiredSwitch}\n                label=\"Required\"\n                isSystemField={isSystemField}\n              />\n              <BooleanFieldSwitch\n                fieldValue={confidentialSwitch}\n                setFieldValue={setConfidentialSwitch}\n                label=\"Confidential\"\n                isSystemField={isSystemField}\n              />\n            </Box>\n            {['Select', 'Rank', 'Checkbox', 'Radio Button'].includes(fieldType) && (\n              <Box sx={classes.addChoiceContainer} ref={choicesRef}>\n                <Box sx={classes.addChoiceHead}>\n                  <Box id=\"add-choice-title\" sx={classes.addChoiceLabel}>\n                    Choices\n                  </Box>\n                  <Button\n                    id=\"add-choice-button\"\n                    sx={classes.modalAddChoiceButton}\n                    onClick={addChoice}\n                  >\n                    Add choice\n                  </Button>\n                </Box>\n                <DndContext\n                  sensors={sensors}\n                  collisionDetection={closestCenter}\n                  onDragEnd={handleDragEnd}\n                >\n                  <SortableContext items={choiceList} strategy={verticalListSortingStrategy}>\n                    {choiceList.map(\n                      (choice, index) =>\n                        !(choice?._destroy === 1) && (\n                          <SortableChoice\n                            key={choice.id}\n                            id={choice.id}\n                            choice={choice}\n                            index={index}\n                            handleChoiceInput={handleChoiceInput}\n                            onRemoveChoice={removeChoice}\n                          />\n                        )\n                    )}\n                  </SortableContext>\n                </DndContext>\n                {errorChoices && <Box sx={{ ...classes.inlineError }}>{errorChoices}</Box>}\n              </Box>\n            )}\n            {['Availability'].includes(fieldType) && (\n              <Box sx={classes.availabilityContainer}>\n                <Box id=\"availability-config-title\" sx={classes.addChoiceLabel}>\n                  Availability Config\n                </Box>\n                <Box sx={classes.config}>\n                  <FormSelectField\n                    options={['Weekly', 'Fortnightly']}\n                    defaultValue={weekDuration}\n                    value={weekDuration}\n                    onChange={(value) => setWeekDuration(value)}\n                    label={'How long is your work period?'}\n                    styles={{ width: '290px', marginBottom: '15px' }}\n                    required={true}\n                  />\n                  <FormSelectField\n                    options={DateOptions}\n                    defaultValue={weekStartDay}\n                    value={weekStartDay}\n                    onChange={(value) => {\n                      setWeekStartDay(value);\n                    }}\n                    label={'When does the work period start?'}\n                    styles={{ width: '290px', marginBottom: '15px' }}\n                  />\n                  <FormTextField\n                    label=\"Heading 1\"\n                    value={headingOne}\n                    onChange={(e) => setHeadingOne(e.target.value)}\n                    required={false}\n                    styles={{ width: '290px', marginBottom: '15px' }}\n                  />\n                  <FormTextField\n                    label=\"Heading 2\"\n                    value={headingTwo}\n                    onChange={(e) => setHeadingTwo(e.target.value)}\n                    required={false}\n                    styles={{ width: '290px', marginBottom: '15px' }}\n                  />\n                  <FormSelectField\n                    options={['Yes', 'No']}\n                    defaultValue={allowBreak}\n                    value={allowBreak}\n                    onChange={(value) => setAllowBreak(value)}\n                    label={'Allow break?'}\n                    styles={{ width: '290px', marginBottom: '15px' }}\n                  />\n                </Box>\n              </Box>\n            )}\n            <Box sx={classes.modalFooter}>\n              <Button\n                id=\"close-new-field-button\"\n                sx={classes.modalCancelButton}\n                onClick={() => handleClose(true)}\n              >\n                Cancel\n              </Button>\n              <Button\n                id=\"submit-new-field-button\"\n                type=\"submit\"\n                sx={{ ...classes.modalCreateButton, width: '91px', height: '41px' }}\n                onClick={() => handleSubmit(approvalTemplateId)}\n              >\n                {isCreating ? <CircularProgress size={20} color=\"inherit\" /> : 'Confirm'}\n              </Button>\n            </Box>\n          </Box>\n        </Box>\n      </Box>\n    </Modal>\n  );\n}\n","import React from 'react';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { classes } from '../styles';\nimport IconButton from '@mui/material/IconButton';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport { FormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport DragIndicatorIcon from '@mui/icons-material/DragIndicator';\nimport Box from '@mui/material/Box';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\n\nexport default function SortableChoice({\n  id,\n  choice,\n  index,\n  handleChoiceInput,\n  onRemoveChoice\n}: {\n  id: string;\n  choice: any;\n  index: number;\n  handleChoiceInput: any;\n  onRemoveChoice: any;\n}) {\n  const {\n    attributes,\n    listeners,\n    setNodeRef,\n    setActivatorNodeRef,\n    transform,\n    transition,\n  } = useSortable({ id: id });\n\n  const style = {\n    transform: CSS.Translate.toString(transform),\n    transition,\n  };\n\n  return (\n    <Box\n      key={index}\n      sx={classes.choice}\n      style={style}\n      ref={setNodeRef}\n      {...attributes}\n    >\n      <IconButton ref={setActivatorNodeRef} {...listeners}>\n        <DragIndicatorIcon sx={{ fontSize: 18 }}/>\n      </IconButton>\n      <FormTextField\n        value={choice.name}\n        onChange={(e) => handleChoiceInput(e, index)}\n        required={true}\n        styles={{ width: '150px'}}\n      />\n      <IconButton\n        onClick={() => onRemoveChoice(index)}\n        sx={{ marginLeft: '35px' }}\n      >\n        <DeleteIcon sx={{ color: theme.palette.error.main, fontSize: 18 }} />\n      </IconButton>\n    </Box>\n  );\n}","import React from 'react';\n\nexport default function NewSystemFieldSVG() {\nreturn (<svg id=\"MDI_alpha-s-box\" data-name=\"MDI / alpha-s-box\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20.719\" height=\"20.719\" viewBox=\"0 0 18.719 18.719\">\n<g id=\"Boundary\" fill=\"#666\" stroke=\"rgba(0,0,0,0)\" strokeWidth=\"1\" opacity=\"0\">\n  <rect width=\"19.719\" height=\"19.719\" stroke=\"none\"/>\n  <rect x=\"0.5\" y=\"0.5\" width=\"18.719\" height=\"18.719\" fill=\"none\"/>\n</g>\n<path id=\"Path_alpha-s-box\" data-name=\"Path / alpha-s-box\" d=\"M9.1,6.049A1.524,1.524,0,0,0,7.573,7.573V9.1A1.524,1.524,0,0,0,9.1,10.622h1.524v1.524H7.573V13.67h3.049a1.524,1.524,0,0,0,1.524-1.524V10.622A1.524,1.524,0,0,0,10.622,9.1H9.1V7.573h3.049V6.049H9.1M4.524,3h10.67a1.524,1.524,0,0,1,1.524,1.524v10.67a1.524,1.524,0,0,1-1.524,1.524H4.524A1.524,1.524,0,0,1,3,15.194V4.524A1.524,1.524,0,0,1,4.524,3Z\" transform=\"translate(0)\" fill=\"#666\"/>\n</svg>\n)\n}\n","import type { PointerEvent } from \"react\";\nimport { PointerSensor } from \"@dnd-kit/core\";\n\n/**\n * An extended \"PointerSensor\" that prevent some\n * interactive html element(button, input, textarea, select, option...) from dragging\n */\n\nexport class QuestionCardSensor extends PointerSensor {\n  static activators = [\n    {\n      eventName: \"onPointerDown\" as any,\n      handler: ({ nativeEvent: event }: PointerEvent) => {\n        if (\n          !event.isPrimary ||\n          event.button !== 0 ||\n          isInteractiveElement(event.target as Element)\n        ) {\n          return false;\n        }\n\n        return true;\n      },\n    },\n  ];\n}\n\nfunction isInteractiveElement(element: Element | null) {\n  if (element?.dataset?.testid === \"DragIndicatorIcon\" \n      || element?.className?.baseVal.toLowerCase().includes(\"select\")\n    ) return false; \n\n  const interactiveElements = [\n      \"button\",\n      \"input\",\n      \"textarea\",\n      \"select\",\n      \"option\",\n      \"icon\",\n      \"svg\",\n      \"path\",\n      \"ul\",\n      \"li\",\n      \"span\",\n  ];\n  if (\n      element?.tagName &&\n      interactiveElements.includes(element.tagName.toLowerCase())\n  ) {\n      return true;\n  }\n\n  return false;\n}\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { Box, Button, Stack, Skeleton } from '@mui/material';\nimport LiveHelpIcon from '@mui/icons-material/LiveHelp';\nimport NewSystemFieldSVG from './NewSystemFieldSVG';\nimport NewField from './Modals/NewField';\nimport NewEmailTemplateField from './Modals/NewEmailTemplateField';\nimport AddSystemField from './Modals/AddSystemField';\nimport ApprovalTemplateSettings from '../ApprovalTemplateSettings/ApprovalTemplateSettings';\nimport StyledSnackbar from '../../Components/CustomUIElements/StyledSnackbar';\nimport { IApplicantQuestion } from '../../Components/Utilities/QuestionFieldViewer';\nimport { classes } from './styles';\nimport { DndContext, closestCenter, KeyboardSensor, useSensor, useSensors } from '@dnd-kit/core';\nimport {\n  arrayMove,\n  SortableContext,\n  sortableKeyboardCoordinates,\n  verticalListSortingStrategy\n} from '@dnd-kit/sortable';\n\nimport SortableItem from './SortableItem';\nimport { QuestionCardSensor } from './QuestionCardSensor';\nimport { IApprovalTemplate, IApprovalTemplateFields } from '../types';\nimport Api from '../API';\nimport { IUserPermissions } from '../../Components/sharedTypes';\nimport InfoIcon from '@mui/icons-material/Info';\nimport { OptionToggleGroup } from '../../Components/OptionToggleGroup';\n\nconst toggleButtonOptions = [\n  { value: 'enabledQuestions', label: 'Enabled questions' },\n  { value: 'disabledQuestions', label: 'Disabled questions' }\n];\n\nexport default function Questions({\n  apiKey,\n  entityId,\n  approvalTemplateId,\n  approvalTemplateData,\n  setApprovalTemplateData,\n  getApprovalTemplate,\n  userPermissions,\n  enableEmailTemplateFields\n}: {\n  apiKey: string;\n  entityId: number;\n  approvalTemplateId: number;\n  approvalTemplateData: IApprovalTemplate;\n  setApprovalTemplateData: React.Dispatch<React.SetStateAction<IApprovalTemplate>>;\n  getApprovalTemplate: () => Promise<void>;\n  userPermissions: IUserPermissions;\n  enableEmailTemplateFields?: boolean;\n}) {\n  const [questions, setQuestions] = useState<IApprovalTemplateFields[]>([]);\n  const [emailTemplateQuestions, setEmailTemplateQuestions] = useState<IApprovalTemplateFields[]>(\n    []\n  );\n  const [allQuestions, setAllQuestions] = useState<IApprovalTemplateFields[]>([]);\n  const [isLoading, setIsLoading] = useState(false);\n  const [modalsOpen, setModalsOpen] = useState<Record<string, boolean>>({\n    newField: false,\n    addSystemField: false,\n    approvalTemplateSettings: false,\n    newEmailTemplateField: false\n  });\n  const [snackbar, setSnackbar] = useState<{\n    message: string;\n    state: 'success' | 'warning' | 'error';\n  }>({\n    message: '',\n    state: 'success'\n  });\n\n  const [editingQuestion, setEditingQuestion] = useState<IApplicantQuestion | null>();\n  const [selected, setSelected] = useState('enabledQuestions');\n\n  const sensors = useSensors(\n    useSensor(QuestionCardSensor),\n    useSensor(KeyboardSensor, {\n      coordinateGetter: sortableKeyboardCoordinates\n    })\n  );\n\n  function handleDragEnd(event) {\n    const { active, over } = event;\n\n    if (active.id !== over.id) {\n      // Use full questions list to swap positions\n      const oldIndex = allQuestions.map((question) => question.id).indexOf(active.id);\n      const newIndex = allQuestions.map((question) => question.id).indexOf(over.id);\n      const newArray = arrayMove(allQuestions, oldIndex, newIndex);\n      setAllQuestions(newArray);\n      updateApprovalFormQuestions(newArray);\n    }\n  }\n\n  const updateApprovalFormQuestions = async (questions) => {\n    const fieldObject = {};\n    questions.map(\n      (question, index) =>\n        (fieldObject[question.id] = {\n          position: index\n        })\n    );\n\n    const questionIndex = questions\n      ?.filter((question) => question.enabled)\n      .findIndex((question) => question.is_approval_form_title);\n\n    const newTemplateData = { ...approvalTemplateData };\n    newTemplateData.config.approval_form_title_position = questionIndex;\n    setApprovalTemplateData(newTemplateData);\n\n    try {\n      await Api.updateApprovalTemplate(approvalTemplateId, {\n        requisition_form: {\n          approval_form_title_position: questionIndex\n        }\n      });\n    } catch (error) {\n      setSnackbar({\n        message: `Failed to update approval template, ${error}`,\n        state: 'error'\n      });\n    }\n\n    try {\n      const response = await fetch(\n        `/api/v4/requisition_forms/${approvalTemplateId}/update_questions`,\n        {\n          method: 'PUT',\n          headers: {\n            'X-api-authenticate': apiKey,\n            'Content-Type': 'application/json'\n          },\n          body: JSON.stringify({\n            fields: fieldObject\n          })\n        }\n      ).then((response) => response.json());\n      setAllQuestions(response.fields);\n      setQuestions(response.fields.filter((field) => !field.for_email_template));\n      setEmailTemplateQuestions(response.fields.filter((field) => field.for_email_template));\n      setSnackbar({\n        message: 'Questions have been updated',\n        state: 'success'\n      });\n    } catch (error) {\n      setSnackbar({\n        message: 'There was an error saving your changes',\n        state: 'error'\n      });\n    }\n  };\n\n  const getQuestions = useCallback(async () => {\n    setIsLoading(true);\n    try {\n      const data = await Api.getQuestions(\n        { entity_id: entityId, requisition_form_id: approvalTemplateId }\n      );\n      setAllQuestions(data.res.fields);\n      setQuestions(data.res.fields.filter((field) => !field.for_email_template));\n      setEmailTemplateQuestions(data.res.fields.filter((field) => field.for_email_template));\n    } catch (err) {\n      setSnackbar({\n        message: `Failed to fetch questions, ${err}`,\n        state: 'error'\n      });\n    } finally {\n      setIsLoading(false);\n    }\n  }, [approvalTemplateId, entityId]);\n\n  const handleToggle = (event: React.MouseEvent<HTMLElement>, newSelected: string) => {\n    if (newSelected !== null) {\n      setSelected(newSelected);\n    }\n  };\n\n  useEffect(() => {\n    let isMounted = true;\n    setIsLoading(true);\n    Api.getQuestions(\n      { entity_id: entityId, requisition_form_id: approvalTemplateId }\n    )\n      .then((data) => {\n        if (isMounted) {\n          setAllQuestions(data.res.fields);\n          setQuestions(data.res.fields.filter((field) => !field.for_email_template));\n          setEmailTemplateQuestions(data.res.fields.filter((field) => field.for_email_template));\n        }\n      })\n      .catch((err) => {\n        if (isMounted)\n          setSnackbar({\n            message: `Failed to fetch system fields, ${err}`,\n            state: 'error'\n          });\n      })\n      .finally(() => {\n        if (isMounted) setIsLoading(false);\n      });\n    return () => {\n      isMounted = false;\n    };\n  }, [apiKey, approvalTemplateId, entityId]);\n\n  return (\n    <Box sx={classes.questionsPageContainer}>\n      <Box sx={classes.noticeContainer}>\n        <InfoIcon sx={classes.infoIcon} />\n        <Box sx={{ marginLeft: 1 }}>\n          <b>All changes will be automatically saved and applied immediately. </b>\n          All fields that have been answered by a user are not able to be deleted. To remove a\n          field, you will need to disable it and create a new field.\n        </Box>\n      </Box>\n      {!!approvalTemplateData.config?.enable_declaration_of_conflict_of_interest && (\n        <Box sx={classes.actionsContianer}>\n          {isLoading ? (\n            <Skeleton animation=\"wave\" sx={{ marginBottom: '20px' }} width={200} height={56} />\n          ) : (\n            <Stack sx={{ flexDirection: 'row', gap: '22px' }}>\n              <Button\n                variant=\"outlined\"\n                startIcon={<LiveHelpIcon />}\n                sx={classes.actionButton}\n                onClick={() => {\n                  setEditingQuestion(null);\n                  setModalsOpen((prev) => ({ ...prev, newEmailTemplateField: true }));\n                }}\n              >\n                New email template field\n              </Button>\n            </Stack>\n          )}\n        </Box>\n      )}\n      {!!approvalTemplateData.config?.enable_declaration_of_conflict_of_interest &&\n        emailTemplateQuestions.length > 0 && (\n          <Box sx={{ overflow: 'auto' }}>\n            <Box sx={classes.questionsContainer}>\n              <Box sx={classes.questionsHeader}>Email Template Questions</Box>\n              <DndContext\n                sensors={sensors}\n                collisionDetection={closestCenter}\n                onDragEnd={handleDragEnd}\n              >\n                <SortableContext\n                  items={emailTemplateQuestions}\n                  strategy={verticalListSortingStrategy}\n                >\n                  {emailTemplateQuestions.map((question, index) => (\n                    <SortableItem\n                      allQuestions={emailTemplateQuestions}\n                      questions={emailTemplateQuestions}\n                      setQuestions={setQuestions}\n                      getQuestions={getQuestions}\n                      index={index}\n                      key={question.id}\n                      approvalTemplateId={approvalTemplateId}\n                      approvalTemplateData={approvalTemplateData}\n                      setApprovalTemplateData={setApprovalTemplateData}\n                      apiKey={apiKey}\n                      setModalsOpen={setModalsOpen}\n                      editingQuestion={question}\n                      setEditingQuestion={setEditingQuestion}\n                      setSnackbar={setSnackbar}\n                    />\n                  ))}\n                </SortableContext>\n              </DndContext>\n            </Box>\n          </Box>\n        )}\n      <OptionToggleGroup\n        options={toggleButtonOptions}\n        selected={selected}\n        setSelected={setSelected}\n      />\n      <Box sx={classes.actionsContianer}>\n        {isLoading ? (\n          <Skeleton animation=\"wave\" sx={{ marginBottom: '20px' }} width={200} height={56} />\n        ) : (\n          <Stack sx={{ flexDirection: 'row', gap: '22px' }}>\n            {selected === 'enabledQuestions' && (\n              <>\n                <Button\n                  variant=\"outlined\"\n                  startIcon={<LiveHelpIcon />}\n                  sx={classes.actionButton}\n                  onClick={() => {\n                    setEditingQuestion(null);\n                    setModalsOpen((prev) => ({ ...prev, newField: true }));\n                  }}\n                >\n                  New field\n                </Button>\n                <Button\n                  variant=\"outlined\"\n                  startIcon={<NewSystemFieldSVG />}\n                  sx={classes.actionButton}\n                  onClick={() => {\n                    setEditingQuestion(null);\n                    setModalsOpen((prev) => ({ ...prev, addSystemField: true }));\n                  }}\n                >\n                  Add system field\n                </Button>\n              </>\n            )}\n          </Stack>\n        )}\n        {(userPermissions?.['Approval Forms']?.['Create / Edit Approval Forms (HR use)'] ||\n          userPermissions?.['Approval Forms']?.['Edit Approval Form (HR use)']) && (\n          <>\n            {isLoading ? (\n              <Skeleton animation=\"wave\" sx={{ marginBottom: '20px' }} width={200} height={56} />\n            ) : (\n              <Stack>\n                <Button\n                  sx={classes.settingButton}\n                  onClick={() => {\n                    setModalsOpen((prev) => ({ ...prev, approvalTemplateSettings: true }));\n                  }}\n                >\n                  Settings\n                </Button>\n              </Stack>\n            )}\n          </>\n        )}\n      </Box>\n      {selected === 'enabledQuestions'\n        ? !isLoading &&\n          questions.filter((question) => question.enabled).length > 0 && (\n            <Box sx={{ overflow: 'auto' }}>\n              <Box sx={classes.questionsContainer}>\n                <Box sx={classes.questionsHeader}>Questions</Box>\n                <DndContext\n                  sensors={sensors}\n                  collisionDetection={closestCenter}\n                  onDragEnd={handleDragEnd}\n                >\n                  <SortableContext\n                    items={questions.filter((question) => question.enabled)}\n                    strategy={verticalListSortingStrategy}\n                  >\n                    {questions\n                      .filter((question) => question.enabled)\n                      .map((question, index) => (\n                        <SortableItem\n                          allQuestions={questions}\n                          questions={questions.filter((question) => question.enabled)}\n                          setQuestions={setQuestions}\n                          getQuestions={getQuestions}\n                          index={index}\n                          key={question.id}\n                          approvalTemplateId={approvalTemplateId}\n                          approvalTemplateData={approvalTemplateData}\n                          setApprovalTemplateData={setApprovalTemplateData}\n                          apiKey={apiKey}\n                          setModalsOpen={setModalsOpen}\n                          editingQuestion={question}\n                          setEditingQuestion={setEditingQuestion}\n                          setSnackbar={setSnackbar}\n                          userPermissions={userPermissions}\n                        />\n                      ))}\n                  </SortableContext>\n                </DndContext>\n              </Box>\n            </Box>\n          )\n        : !isLoading &&\n          questions.filter((question) => !question.enabled).length > 0 && (\n            <Box sx={{ overflow: 'auto' }}>\n              <Box sx={classes.questionsContainer}>\n                <Box sx={classes.questionsHeader}>Questions</Box>\n                <DndContext\n                  sensors={sensors}\n                  collisionDetection={closestCenter}\n                  onDragEnd={handleDragEnd}\n                >\n                  <SortableContext\n                    items={questions.filter((question) => !question.enabled)}\n                    strategy={verticalListSortingStrategy}\n                  >\n                    {questions\n                      .filter((question) => !question.enabled)\n                      .map((question, index) => (\n                        <SortableItem\n                          allQuestions={questions}\n                          questions={questions.filter((question) => !question.enabled)}\n                          setQuestions={setQuestions}\n                          getQuestions={getQuestions}\n                          index={index}\n                          key={question.id}\n                          approvalTemplateId={approvalTemplateId}\n                          approvalTemplateData={approvalTemplateData}\n                          setApprovalTemplateData={setApprovalTemplateData}\n                          apiKey={apiKey}\n                          setModalsOpen={setModalsOpen}\n                          editingQuestion={question}\n                          setEditingQuestion={setEditingQuestion}\n                          setSnackbar={setSnackbar}\n                        />\n                      ))}\n                  </SortableContext>\n                </DndContext>\n              </Box>\n            </Box>\n          )}\n      {!isLoading && questions?.length === 0 && (\n        <Box sx={{ ...classes.noQuestionsContainer, margin: '150px 0px' }}>\n          <Box sx={classes.noQuestionsText}>\n            Add questions to your approval template\n            <br />\n            from the above options\n          </Box>\n        </Box>\n      )}\n      <NewField\n        apiKey={apiKey}\n        getQuestions={getQuestions}\n        modalsOpen={modalsOpen}\n        setModalsOpen={setModalsOpen}\n        approvalTemplateId={approvalTemplateId}\n        setSnackbar={setSnackbar}\n        editingQuestion={editingQuestion}\n        userPermissions={userPermissions}\n      />\n      <NewEmailTemplateField\n        apiKey={apiKey}\n        getQuestions={getQuestions}\n        modalsOpen={modalsOpen}\n        setModalsOpen={setModalsOpen}\n        approvalTemplateId={approvalTemplateId}\n        setSnackbar={setSnackbar}\n        editingQuestion={editingQuestion}\n        userPermissions={userPermissions}\n      />\n      <AddSystemField\n        apiKey={apiKey}\n        getQuestions={getQuestions}\n        modalsOpen={modalsOpen}\n        setModalsOpen={setModalsOpen}\n        approvalTemplateId={approvalTemplateId}\n        setSnackbar={setSnackbar}\n      />\n      {modalsOpen.approvalTemplateSettings && (\n        <ApprovalTemplateSettings\n          modalsOpen={modalsOpen.approvalTemplateSettings}\n          setModalsOpen={() => setModalsOpen({ ...modalsOpen, approvalTemplateSettings: false })}\n          approvalTemplateData={approvalTemplateData}\n          getApprovalTemplate={getApprovalTemplate}\n          questions={questions.length ? questions : undefined}\n          setSnackbar={setSnackbar}\n          enableEmailTemplateFields={enableEmailTemplateFields}\n        />\n      )}\n      <StyledSnackbar\n        message={snackbar.message}\n        state={snackbar.state}\n        setSnackbarState={setSnackbar}\n      />\n    </Box>\n  );\n}\n","import React, { useState, Dispatch, SetStateAction } from 'react';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { Box, Stack, Switch, IconButton } from '@mui/material';\nimport { CSS } from '@dnd-kit/utilities';\nimport { classes } from './styles';\nimport QuestionFieldViewer from '../../Components/Utilities/QuestionFieldViewer';\nimport {\n  DragIndicator as DragIndicatorIcon,\n  Edit as EditIcon,\n  Delete as DeleteIcon,\n  ContentCopy as ContentCopyIcon\n} from '@mui/icons-material';\nimport Api from '../API';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport { StyledSnackbarProps } from '../../Components/CustomUIElements/StyledSnackbar';\nimport { IApplicantQuestion } from '../../Components/Utilities/QuestionFieldViewer';\nimport { IApprovalTemplate } from '../types';\nimport AvailabilityFieldQuestion from '../../Components/CustomUIElements/AvailabilityFieldQuestion';\n\nexport default function SortableItem({\n  allQuestions,\n  questions,\n  setQuestions,\n  getQuestions,\n  index,\n  approvalTemplateId,\n  approvalTemplateData,\n  setApprovalTemplateData,\n  apiKey,\n  setModalsOpen,\n  editingQuestion,\n  setEditingQuestion,\n  setSnackbar,\n  userPermissions\n}: {\n  allQuestions: IApplicantQuestion[];\n  questions: IApplicantQuestion[];\n  setQuestions: Dispatch<SetStateAction<IApplicantQuestion[]>>;\n  getQuestions: any;\n  index: number;\n  approvalTemplateId: number;\n  approvalTemplateData: IApprovalTemplate;\n  setApprovalTemplateData: Dispatch<SetStateAction<IApprovalTemplate>>;\n  apiKey: string;\n  setModalsOpen: Dispatch<SetStateAction<Record<string, boolean>>>;\n  editingQuestion: IApplicantQuestion;\n  setEditingQuestion: Dispatch<SetStateAction<Record<IApplicantQuestion, null>>>;\n  setSnackbar: StyledSnackbarProps['setSnackbarState'];\n  userPermissions: Record<string, Record<string, boolean>>;\n}) {\n  const [isDialogOpen, setIsDialogOpen] = useState(false);\n  const [isDeleting, setIsDeleting] = useState(false);\n  const [isCloning, setIsCloning] = useState(false);\n  const [tempEnabled, setTempEnabled] = useState(questions[index].enabled);\n  const [tempRequired, setTempRequired] = useState(questions[index].required);\n  const [tempConfidential, setTempConfidential] = useState(questions[index].confidential);\n  const [tempIsFormTitle, setTempIsFormTitle] = useState(questions[index].is_approval_form_title);\n\n  const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({\n    id: questions[index].id,\n    data: {\n      for_email_template: questions[index].for_email_template\n    }\n  });\n\n  const style = {\n    transform: CSS.Translate.toString(transform),\n    transition,\n    filter: isDragging ? 'brightness(75%)' : 'brightness(100%)',\n    zIndex: isDragging ? 10 : 1\n  };\n\n  const deleteQuestion = async (url: string, questionId: number) => {\n    setIsDeleting(true);\n    try {\n      const response = await Api.deleteQuestion(\n        questionId,\n        approvalTemplateId\n      );\n      if (response.res.errors) {\n        setSnackbar({\n          message: 'You do not have right to delete this field',\n          state: 'error'\n        });\n      } else {\n        setSnackbar({\n          message: 'Field has been deleted',\n          state: 'success'\n        });\n      }\n    } catch (error) {\n      setSnackbar({\n        message: `Field failed to delete: ${error}`,\n        state: 'error'\n      });\n    } finally {\n      setIsDeleting(false);\n      setIsDialogOpen(false);\n      getQuestions();\n    }\n  };\n\n  const cloneQuestion = async (url: string, questionId: number) => {\n    setIsCloning(true);\n    try {\n      const response = await Api.cloneQuestion(\n        questionId,\n        approvalTemplateId\n      );\n    } catch (error) {\n      setSnackbar({\n        message: `Field failed to clone: ${error}`,\n        state: 'error'\n      });\n    } finally {\n      setIsCloning(false);\n      setIsDialogOpen(false);\n      getQuestions();\n    }\n  };\n\n  const handleUpdateActions = async (\n    event?: React.ChangeEvent<HTMLInputElement>,\n    action: keyof (typeof questions)[0]\n  ) => {\n    action === 'enabled' && setTempEnabled(!tempEnabled);\n    action === 'required' && setTempRequired(!tempRequired);\n    action === 'confidential' && setTempConfidential(!tempConfidential);\n    const fieldId = questions[index].id;\n    try {\n      const response = await fetch(\n        `/api/v4/fields/${fieldId}?requisition_form_id=${approvalTemplateId}`,\n        {\n          method: 'PUT',\n          headers: {\n            'X-api-authenticate': apiKey,\n            'Content-Type': 'application/json'\n          },\n          body: JSON.stringify({\n            field: {\n              [action]: event?.target.checked\n            }\n          })\n        }\n      ).then((response) => response.json());\n      if (response.id) {\n        setSnackbar({\n          message: 'The change has been saved',\n          state: 'success'\n        });\n        const newQuestions = [...allQuestions];\n        const indexOfAllquestions = allQuestions.findIndex((item) => item.id === fieldId);\n        newQuestions[indexOfAllquestions][action] = !allQuestions[indexOfAllquestions][action];\n\n        if (action === 'enabled') {\n          // If disabling a position title question, automatically set the next or the first question as the position title question\n          if (!questions[index].enabled && questions[index].is_approval_form_title) {\n            const newApprivalFormTitleQuestionId =\n              questions[index + 1]?.id || questions[0]?.id || 0;\n            handleSelectApprovalFormTitle(null, newApprivalFormTitleQuestionId, true);\n          }\n          // If enabled questions list is empty, automatically set the first enabled question as position title question\n          else if (\n            allQuestions?.filter((question) => question.enabled).length === 1 &&\n            questions[index].enabled\n          ) {\n            const newApprivalFormTitleQuestionId = questions[index]?.id;\n            newApprivalFormTitleQuestionId &&\n              handleSelectApprovalFormTitle(null, newApprivalFormTitleQuestionId, true);\n          } else if (\n            // If enabling questions, update the position title index based on the enabled questions\n            allQuestions?.filter((question) => question.enabled).length > 1 &&\n            questions[index].enabled\n          ) {\n            const newApprivalFormTitleQuestionId =\n              allQuestions\n                ?.filter((question) => question.enabled)\n                .find((question) => question.is_approval_form_title)?.id || 0;\n            handleSelectApprovalFormTitle(null, newApprivalFormTitleQuestionId, true);\n          } else if (!questions[index].enabled) {\n            // If disabling other questions, we still need to update the position title index based on the rest enabled questions\n            const newApprivalFormTitleQuestionId =\n              questions.find((question) => question.is_approval_form_title)?.id || 0;\n            handleSelectApprovalFormTitle(null, newApprivalFormTitleQuestionId, true);\n          }\n        }\n\n        setTimeout(() => {\n          setQuestions(newQuestions);\n        }, 500);\n      } else if (response.errors) {\n        setSnackbar({\n          message: `There was an error saving your changes. ${response.errors}`,\n          state: 'error'\n        });\n        setTimeout(() => {\n          action === 'enabled' && setTempEnabled(!event?.target.checked);\n          action === 'required' && setTempRequired(!event?.target.checked);\n          action === 'confidential' && setTempConfidential(!event?.target.checked);\n        }, 500);\n      }\n    } catch (error) {\n      setSnackbar({\n        message: `There was an error saving your changes. ${error}`,\n        state: 'error'\n      });\n      setTimeout(() => {\n        action === 'enabled' && setTempEnabled(!event?.target.checked);\n        action === 'required' && setTempRequired(!event?.target.checked);\n        action === 'confidential' && setTempConfidential(!event?.target.checked);\n      }, 500);\n    }\n  };\n\n  const handleSelectApprovalFormTitle = async (\n    event: React.ChangeEvent<HTMLInputElement> | null,\n    questionId: number,\n    manual?: boolean\n  ) => {\n    questions.map((question) => {\n      if (question.id === questionId) {\n        question.is_approval_form_title = manual || !!event?.target.checked;\n      } else {\n        question.is_approval_form_title = false;\n      }\n    });\n\n    let questionIndex = allQuestions\n      ?.filter((question) => question.enabled)\n      .findIndex((question) => question.id === questionId);\n\n    if (questionIndex === -1) {\n      questionIndex = 0;\n    }\n\n    const checked = manual || event?.target.checked;\n\n    setTempIsFormTitle(!tempIsFormTitle);\n    const newTemplateData = { ...approvalTemplateData };\n    newTemplateData.config.approval_form_title_position = checked ? questionIndex : null;\n    setApprovalTemplateData(newTemplateData);\n\n    try {\n      await Api.updateApprovalTemplate(approvalTemplateId, {\n        requisition_form: {\n          approval_form_title_position: checked ? questionIndex : null\n        }\n      });\n      setSnackbar({\n        message: 'Approval template updated',\n        state: 'success'\n      });\n    } catch (error) {\n      setSnackbar({\n        message: `Failed to update approval template, ${error}`,\n        state: 'error'\n      });\n    }\n  };\n\n  const [dialogProps, setDialogProps] = useState({\n    url: '',\n    title: 'Permanently delete question?',\n    description: '',\n    buttonText: 'Delete',\n    buttonCallback: deleteQuestion,\n    callbackLoading: false,\n    dialogId: 0\n  });\n\n  const handleDeleteQuestion = (questionId: number) => {\n    setDialogProps((prev) => ({\n      ...prev,\n      url: `/api/v4/fields/${questionId}?requisition_form_id=${approvalTemplateId}`,\n      title: 'Permanently delete question?',\n      description: `Are you sure you want to delete this question? This action cannot be undone.`,\n      buttonText: 'Delete',\n      dialogId: questionId,\n      buttonCallback: deleteQuestion\n    }));\n    setIsDialogOpen(true);\n  };\n\n  const handleEditQuestion = () => {\n    setEditingQuestion({\n      ...editingQuestion,\n      enabled: questions[index].enabled,\n      required: questions[index].required\n    });\n    questions[index].for_email_template\n      ? setModalsOpen((prev) => ({ ...prev, newEmailTemplateField: true }))\n      : setModalsOpen((prev) => ({ ...prev, newField: true }));\n  };\n\n  const handleCloneQuestion = (questionId: number) => {\n    setDialogProps((prev) => ({\n      ...prev,\n      url: `/api/v4/fields/${questionId}/clone?requisition_form_id=${approvalTemplateId}`,\n      title: 'Clone question',\n      description: `Are you sure you want to clone this question?`,\n      buttonText: 'Clone',\n      dialogId: questionId,\n      buttonCallback: cloneQuestion\n    }));\n    setIsDialogOpen(true);\n  };\n\n  return (\n    <Box ref={setNodeRef} style={style}>\n      <Box key={questions[index].id}>\n        {questions[index].type === 'JobReferenceLookupField' ? (\n          <span />\n        ) : (\n          <Box sx={classes.questionsWrapper}>\n            <Box sx={{ display: 'flex' }}>\n              <DragIndicatorIcon\n                sx={{ cursor: isDragging ? 'grabbing' : 'pointer', ...classes.dragHandle }}\n                {...listeners}\n                {...attributes}\n              />\n              <Box sx={{ marginRight: 'auto', ...classes.questionInput }}>\n                <Box sx={{ height: '6px' }} />\n                <Box sx={{ ...classes.modalFormLine, position: 'relative', minWidth: '300px' }}>\n                  <QuestionFieldViewer question={questions[index]} draggable={true} />\n                </Box>\n              </Box>\n              {!questions[index].for_email_template && (\n                <Box\n                  sx={{\n                    ...classes.sortableItemSwitchContainer,\n                    fontWeight: questions[index].enabled ? 'bold' : ''\n                  }}\n                >\n                  <Box sx={{ marginTop: '12px' }}>\n                    <Switch\n                      sx={questions[index].enabled ? classes.switchActive : classes.switch}\n                      checked={tempEnabled}\n                      onChange={(event) => handleUpdateActions(event, 'enabled')}\n                    />\n                    <Stack sx={{ fontSize: '12px' }}>Enabled</Stack>\n                  </Box>\n                </Box>\n              )}\n              {!questions[index].for_email_template && (\n                <Box\n                  sx={{\n                    ...classes.sortableItemSwitchContainer,\n                    fontWeight: questions[index].required ? 'bold' : ''\n                  }}\n                >\n                  <Box sx={{ marginTop: '12px' }}>\n                    <Switch\n                      sx={questions[index].required ? classes.switchActive : classes.switch}\n                      checked={tempRequired}\n                      onChange={(event) => handleUpdateActions(event, 'required')}\n                      disabled={!questions[index].editable}\n                    />\n                    <Stack sx={{ fontSize: '12px' }}>Required</Stack>\n                  </Box>\n                </Box>\n              )}\n              {!questions[index].for_email_template && (\n                <Box\n                  sx={{\n                    ...classes.sortableItemSwitchContainer,\n                    fontWeight: questions[index].confidential ? 'bold' : ''\n                  }}\n                >\n                  <Box sx={{ marginTop: '12px' }}>\n                    <Switch\n                      sx={questions[index].confidential ? classes.switchActive : classes.switch}\n                      checked={tempConfidential}\n                      onChange={(event) => handleUpdateActions(event, 'confidential')}\n                      disabled={!questions[index].editable}\n                    />\n                    <Stack sx={{ fontSize: '12px' }}>Confidential</Stack>\n                  </Box>\n                </Box>\n              )}\n              {Number(approvalTemplateData?.config?.hide_position_title) === 1 &&\n                questions[index].enabled &&\n                !questions[index].for_email_template && (\n                  <Box\n                    sx={{\n                      ...classes.sortableItemSwitchContainer,\n                      fontWeight: questions[index].is_approval_form_title ? 'bold' : ''\n                    }}\n                  >\n                    <Box sx={{ marginTop: '12px' }}>\n                      <Switch\n                        sx={\n                          questions[index].is_approval_form_title\n                            ? classes.switchActive\n                            : classes.switch\n                        }\n                        checked={!!questions[index].is_approval_form_title}\n                        onChange={(event) =>\n                          handleSelectApprovalFormTitle(event, questions[index].id)\n                        }\n                        disabled={!!questions[index].is_approval_form_title}\n                      />\n                      <Stack sx={{ fontSize: '12px' }}>Approval Form Title</Stack>\n                    </Box>\n                  </Box>\n                )}\n              <Box sx={{ padding: '0 6px', minWidth: '120px' }}>\n                <Box\n                  sx={{\n                    display: 'flex',\n                    justifyContent: 'flex-end',\n                    alignItems: 'flex-start',\n                    marginTop: '-8px'\n                  }}\n                >\n                  {!questions[index].answered && (\n                    <IconButton onClick={() => handleEditQuestion()}>\n                      <EditIcon sx={{ fontSize: 16 }} />\n                    </IconButton>\n                  )}\n                  {questions[index].editable && (\n                    <IconButton onClick={() => handleCloneQuestion(questions[index].id)}>\n                      <ContentCopyIcon sx={{ fontSize: 16 }} />\n                    </IconButton>\n                  )}\n                  {questions[index].deletable && (\n                    <IconButton\n                      onClick={() => {\n                        handleDeleteQuestion(questions[index].id);\n                      }}\n                    >\n                      <DeleteIcon sx={{ color: '#E37D7A', fontSize: 16 }} />\n                    </IconButton>\n                  )}\n                </Box>\n              </Box>\n            </Box>\n            {questions[index].type === 'AvailabilityField' && (\n              <AvailabilityFieldQuestion question={questions[index]} />\n            )}\n            {tempConfidential && (\n              <Box sx={{ padding: '0 6px', color: '#838383', fontSize: '12px' }}>\n                <span style={{ fontWeight: 'bold' }}>Confidential Setting Enabled:</span> For DE&I\n                compliance, only authorised users (HR Admins), can view responses. Hiring Managers\n                will not have access.\n              </Box>\n            )}\n          </Box>\n        )}\n      </Box>\n      <GenericDialog\n        url={dialogProps.url}\n        title={dialogProps.title}\n        description={dialogProps.description}\n        buttonText={dialogProps.buttonText}\n        buttonCallback={dialogProps.buttonCallback}\n        callbackLoading={isDeleting || isCloning}\n        isDialogOpen={isDialogOpen}\n        setDialogOpen={setIsDialogOpen}\n        dialogId={dialogProps.dialogId}\n      />\n    </Box>\n  );\n}\n","import React, { useState } from 'react';\nimport Box from '@mui/material/Box';\nimport FormControl from '@mui/material/FormControl';\nimport OutlinedInput from '@mui/material/OutlinedInput';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport SearchIcon from '@mui/icons-material/Search';\nimport { IGetApprovalForms } from './types';\nimport { styles } from './styles';\nimport { useDebouncedCallback } from 'use-debounce';\n\nexport default function Search({\n  setSearch,\n  getApprovalForms,\n  archived\n}: {\n  setSearch: (query: string) => void;\n  getApprovalForms: IGetApprovalForms;\n  archived: boolean;\n}) {\n  const [tempSearch, setTempSearch] = useState('');\n  const debouncedAPICall = useDebouncedCallback((searchQuery) => {\n    getApprovalForms(null, null, searchQuery, null, null, archived);\n    setSearch(searchQuery);\n  }, 600);\n\n  const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    setTempSearch(event.target.value);\n    debouncedAPICall(event.target.value);\n  };\n\n  return (\n    <Box sx={{ width: '100%' }}>\n      <FormControl fullWidth>\n        <OutlinedInput\n          id=\"applicant-search\"\n          sx={styles.searchInput}\n          placeholder={'Search by title or ID'}\n          value={tempSearch}\n          onChange={handleChange}\n          startAdornment={\n            <InputAdornment sx={{ padding: '0px 0px 0px 14px' }} position=\"start\">\n              <SearchIcon />\n            </InputAdornment>\n          }\n        />\n      </FormControl>\n    </Box>\n  );\n}\n","import React, { Dispatch, useState } from 'react';\nimport { Avatar, Box, Button, Collapse, Skeleton, Stack } from '@mui/material';\nimport {\n  EditNote as EditNoteIcon,\n  Email as EmailIcon,\n  ExpandLess as ExpandLessIcon,\n  ExpandMore as ExpandMoreIcon,\n  Monitor as MonitorIcon,\n  Person as PersonIcon\n} from '@mui/icons-material';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from './API';\nimport { CandidateAction, IActivity } from './types';\nimport { sharedClasses } from '../Components/CustomUIElements/sharedClasses';\nimport dayjs from 'dayjs';\nimport dompurify from 'dompurify';\nimport AddRecord from './AddRecord';\nimport { styles } from './styles';\nimport { getStatusColor } from '../../NewEngage/helper';\nimport { ApplicationAction, IApplication } from '../Application/types';\nimport ApplicationApi from '../Application/API';\n\ninterface ActivitiesTabProps {\n  candidateId?: number;\n  dispatch: Dispatch<CandidateAction> | Dispatch<ApplicationAction>;\n}\nconst toTitleCase = (sentence: string) => {\n  return sentence\n    .toLowerCase()\n    .split(' ')\n    .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n    .join(' ');\n};\n\nconst ActivityIcon = ({ activity }: { activity: IActivity }) => {\n  if (\n    (activity.verb.includes('sent') || activity.verb.includes('enqueued')) &&\n    !activity.verb.includes('sms')\n  ) {\n    return (\n      <Avatar sx={{ background: '#B89FFF', width: 20, height: 20 }}>\n        <EmailIcon sx={{ fontSize: '10px' }} />\n      </Avatar>\n    );\n  } else if (activity.actor?.system) {\n    return (\n      <Avatar sx={{ background: '#666666', width: 20, height: 20 }}>\n        <MonitorIcon sx={{ fontSize: '12px' }} />\n      </Avatar>\n    );\n  } else {\n    return (\n      <Avatar sx={{ background: '#6892FF', width: 20, height: 20 }}>\n        <PersonIcon sx={{ fontSize: '14px' }} />\n      </Avatar>\n    );\n  }\n};\n\nexport default function ActivitiesTab({ candidateId, dispatch }: ActivitiesTabProps) {\n  const [addRecord, setAddRecord] = useState<boolean>(false);\n  const [showMore, setShowMore] = useState<number[]>([]);\n\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n\n  const { data: activities, isLoading: loadingActivities } = useQuery({\n    queryKey: ['activities'],\n    queryFn: async () => {\n      if (candidateId) {\n        const { res } = await Api.getCandidateActivities(candidateId);\n        return res;\n      } else if (application) {\n        const { res } = await ApplicationApi.getApplicationActivities(\n          application?.job.id,\n          application?.id\n        );\n        return res;\n      }\n    },\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting ${candidateId ? 'candidate' : 'application'} activities, ${error}`,\n          state: 'error'\n        }\n      })\n  });\n\n  const { mutate: addCandidateNote, isLoading: addingCandidateNote } = useMutation({\n    mutationFn: async ({ subject, body }: { subject: string; body: string }) => {\n      if (candidateId) {\n        const { res } = await Api.addCandidateNote(candidateId, { subject: subject, body: body });\n        return res;\n      }\n    },\n    onSuccess: (res) => {\n      queryClient.invalidateQueries(['activities']);\n      dispatch({ type: 'SET_SNACKBAR', payload: { message: res.success, state: 'success' } });\n      setAddRecord(false);\n    },\n    onError: (error) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error in adding permanent record, ${error}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n\n  return (\n    <Stack>\n      {candidateId && (\n        <Stack sx={{ flexDirection: 'row', padding: '16px 0px', columnGap: 2 }}>\n          <Button\n            id=\"add-record-button\"\n            sx={sharedClasses.genericButtonSecondary}\n            startIcon={<EditNoteIcon />}\n            onClick={() => setAddRecord(true)}\n          >\n            Add record\n          </Button>\n        </Stack>\n      )}\n      {loadingActivities ? (\n        [...Array(5)].map((_, index) => (\n          <Skeleton\n            key={index}\n            sx={{\n              height: '60px',\n              borderRadius: '6px'\n            }}\n            animation=\"wave\"\n          />\n        ))\n      ) : (\n        <Stack sx={{ rowGap: 2 }}>\n          {activities?.activities.map((activity: IActivity, index: number) => {\n            const isSms = activity.verb.includes('sent_sms');\n            const previousActivityIsOnDifferentDate =\n              index === 0 ||\n              dayjs(activity.timestamp).format('L') !==\n                dayjs(activities.activities[index - 1].timestamp).format('L');\n            const activitiesDateHeader = () => {\n              if (dayjs(activity.timestamp).format('L') === dayjs().format('L')) {\n                return 'Today';\n              } else if (\n                dayjs(activity.timestamp).format('L') === dayjs().subtract(1, 'day').format('L')\n              ) {\n                return 'Yesterday';\n              } else {\n                return dayjs(activity.timestamp).format('DD MMM YYYY');\n              }\n            };\n            return (\n              <Stack key={activity.id}>\n                {previousActivityIsOnDifferentDate && (\n                  <Stack sx={{ color: '#666666', fontWeight: 600, padding: '8px 0px' }}>\n                    {activitiesDateHeader()}\n                  </Stack>\n                )}\n                <Stack key={activity.id} sx={{ flexDirection: 'row', columnGap: 2 }}>\n                  <ActivityIcon activity={activity} />\n                  <Stack sx={{ flexGrow: 1 }}>\n                    <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between' }}>\n                      <Box\n                        dangerouslySetInnerHTML={{\n                          __html:\n                            dompurify.sanitize(`<b>${activity.actor?.name || ''}</b>`) +\n                            ' ' +\n                            activity.activity_html\n                              .replace('Added note', 'Added permanent record') // needed to rename the existing note on candidates to permanent record\n                              .replace('with no template', '')\n                        }}\n                        sx={{ color: '#333333' }}\n                      />\n                      <Stack sx={styles.timestamp}>{dayjs(activity.timestamp).format('LT')}</Stack>\n                    </Stack>\n                    {activity.email_status && (\n                      <Stack\n                        sx={{\n                          ...styles.emailStatus,\n                          color: getStatusColor(toTitleCase(activity.email_status))[0],\n                          background: `${getStatusColor(toTitleCase(activity.email_status))[1]}`\n                        }}\n                      >\n                        {activity.email_status}\n                      </Stack>\n                    )}\n                    {!activity.verb.includes('Updated the note') &&\n                      (activity.verb.includes('sent') ||\n                        activity.verb.includes('enqueued') ||\n                        activity.verb.includes('note') ||\n                        activity.verb.includes('permanent record')) && (\n                        <Stack\n                          sx={{\n                            flexDirection: 'row',\n                            color: '#939393',\n                            width: 'fit-content',\n                            cursor: 'pointer'\n                          }}\n                          onClick={() => {\n                            if (showMore.includes(activity.id)) {\n                              setShowMore(showMore.filter((s) => s !== activity.id));\n                            } else {\n                              setShowMore([...showMore, activity.id]);\n                            }\n                          }}\n                        >\n                          <Stack sx={{ fontSize: '12px' }}>Show</Stack>\n                          {showMore.includes(activity.id) ? (\n                            <ExpandLessIcon sx={{ fontSize: '1rem' }} />\n                          ) : (\n                            <ExpandMoreIcon sx={{ fontSize: '1rem' }} />\n                          )}\n                        </Stack>\n                      )}\n                  </Stack>\n                </Stack>\n                <Collapse\n                  in={showMore.includes(activity.id)}\n                  sx={{ padding: '8px 0px', paddingLeft: 4 }}\n                >\n                  {activity.verb.includes('note') ||\n                  activity.verb.includes('permanent record') ||\n                  activity.verb.includes('SMS') ? (\n                    <Stack sx={styles.showNoteContainer}>\n                      {activity.indirect_object.subject && (\n                        <Stack sx={{ fontWeight: 'bold', color: '#333333' }}>\n                          {activity.indirect_object.subject}\n                        </Stack>\n                      )}\n                      <Stack sx={{ color: '#333333' }}>{activity.indirect_object.body}</Stack>\n                    </Stack>\n                  ) : (\n                    <Stack sx={styles.showNoteContainer}>\n                      {!isSms && (\n                        <Stack sx={{ fontWeight: 'bold', color: '#333333' }}>\n                          {activity.indirect_object.subject}\n                        </Stack>\n                      )}\n                      <Box\n                        dangerouslySetInnerHTML={{\n                          __html: dompurify.sanitize(`${activity.indirect_object.body || ''}`)\n                        }}\n                        sx={{ color: '#333333', overflowY: 'auto' }}\n                      />\n                    </Stack>\n                  )}\n                </Collapse>\n              </Stack>\n            );\n          })}\n        </Stack>\n      )}\n      {candidateId && addRecord && (\n        <AddRecord\n          isOpen={addRecord}\n          handleClose={() => setAddRecord(false)}\n          addRecord={addCandidateNote}\n          addingRecord={addingCandidateNote}\n        />\n      )}\n    </Stack>\n  );\n}\n","import React, { useState } from 'react';\nimport { Stack } from '@mui/material';\nimport StyledModal from '../Components/GenericModal/StyledModal';\nimport {\n  FormTextField,\n  MultilineFormTextField\n} from '../Components/CustomUIElements/FormTextField';\nimport ModalFooterButtons from '../Components/GenericModal/ModalFooterButtons';\nimport { styles } from './styles';\n\nexport default function AddRecord({\n  isOpen,\n  handleClose,\n  addRecord,\n  addingRecord,\n  styleOverrides\n}: {\n  isOpen: boolean;\n  handleClose: () => void;\n  addRecord: ({ subject, body }: { subject: string; body: string }) => void;\n  addingRecord: boolean;\n  styleOverrides?: Record<string, string>;\n}) {\n  const [subject, setSubject] = useState<string>('');\n  const [body, setBody] = useState<string>('');\n\n  return (\n    <StyledModal\n      isOpen={isOpen}\n      label=\"Add candidate permanent record\"\n      handleClose={handleClose}\n      styleOverrides={{ ...styles.modalContainer, width: '700px', ...styleOverrides }}\n      closeIconId=\"close-permanent-record-button\"\n    >\n      <Stack sx={styles.modalContent}>\n        <Stack sx={styles.modalTitle}>Permanent record</Stack>\n        <Stack sx={{ rowGap: 3, overflow: 'auto' }}>\n          <FormTextField\n            label=\"Subject\"\n            value={subject}\n            required\n            onChange={(v) => setSubject(v.target.value)}\n            styles={{ width: '35%' }}\n          />\n          <MultilineFormTextField\n            label=\"Body\"\n            value={body}\n            onChange={(e) => setBody(e.target.value)}\n            fullWidth\n            rows={5}\n            required\n          />\n        </Stack>\n        <ModalFooterButtons\n          primaryButtonText=\"Save\"\n          primaryButtonCallback={() => addRecord({ subject, body })}\n          secondaryButtonText=\"Cancel\"\n          secondaryButtonCallback={handleClose}\n          isLoading={addingRecord}\n          primaryButtonDisabled={!subject || !body}\n          primaryButtonID=\"save-permanent-record-button\"\n          secondaryButtonID=\"cancel-permanent-record-button\"\n          primaryButtonMinWidth=\"75px\"\n        />\n      </Stack>\n    </StyledModal>\n  );\n}\n","import React, { useState, useReducer } from 'react';\nimport { Divider, Stack, Tabs, Tab, Skeleton, Tooltip } from '@mui/material';\nimport {\n  Edit as EditIcon,\n  Delete as DeleteIcon,\n  PeopleAlt as PeopleAltIcon\n} from '@mui/icons-material';\nimport { CandidateReducer, InitialCandidateState } from './reducer';\nimport StyledSnackbar from '../Components/CustomUIElements/StyledSnackbar';\nimport { ISnackbarInput } from '../Components/CustomUIElements/StyledSnackbar';\nimport { useQuery } from '@tanstack/react-query';\nimport Api from './API';\nimport ProfileTab from './ProfileTab';\nimport ActivitiesTab from './ActivitiesTab';\nimport { styles } from './styles';\nimport EditCandidate from '../Candidates/EditCandidate';\nimport DeleteCandidate from '../Candidates/DeleteCandidate';\nimport MergeCandidates from './MergeCandidates';\nimport { formatUserPermissions } from '../Components/Utilities/formatUserPermissions';\nimport { getPermissions } from '../../shared/permissionHelpers';\n\nexport default function Candidate({\n  candidateId,\n  isAdminUser\n}: {\n  candidateId: number;\n  isAdminUser: boolean;\n}) {\n  const [CandidateState, dispatch] = useReducer(CandidateReducer, InitialCandidateState);\n  const [tabValue, setTabValue] = useState<number>(0);\n  const [openMergeModal, setOpenMergeModal] = useState<boolean>(false);\n\n  const { data: candidate, isLoading: loadingCandidate } = useQuery({\n    queryKey: ['candidate'],\n    queryFn: async () => {\n      const { res } = await Api.getCandidateData(candidateId);\n      return res;\n    },\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting candidate data, ${error}`,\n          state: 'error'\n        }\n      })\n  });\n\n  const { data: permissions } = useQuery({\n    queryKey: ['permissions'],\n    queryFn: async () => {\n      const res = await getPermissions();\n      return formatUserPermissions(res);\n    },\n    onError: (error) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting user permissions, ${error}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n\n  return (\n    <Stack sx={{ padding: 5 }}>\n      <Stack sx={styles.candidateHeaderContainer}>\n        {loadingCandidate ? (\n          <Skeleton animation=\"wave\" width={500} height={45} />\n        ) : (\n          <Stack sx={styles.candidateNameHeader}>\n            {candidate?.firstname} {candidate?.lastname}\n          </Stack>\n        )}\n        {loadingCandidate ? (\n          <Skeleton animation=\"wave\" width={200} height={45} />\n        ) : (\n          <Stack sx={styles.candidateActionIconsContainer}>\n            {permissions?.Candidates?.['Edit Candidates'] && (\n              <Tooltip placement=\"top\" title=\"Edit\" arrow>\n                <EditIcon\n                  onClick={() => dispatch({ type: 'OPEN_EDIT_MODAL', payload: true })}\n                  id=\"edit-candidate-button\"\n                />\n              </Tooltip>\n            )}\n            {isAdminUser && (\n              <Tooltip placement=\"top\" title=\"Delete\" arrow>\n                <DeleteIcon\n                  sx={{ color: '#E37D7A' }}\n                  onClick={() => dispatch({ type: 'OPEN_DELETE_MODAL', payload: true })}\n                  id=\"delete-candidate-button\"\n                />\n              </Tooltip>\n            )}\n            {candidate?.duplicated_candidates.length > 1 && (\n              <Tooltip placement=\"top\" title=\"Duplicated\" arrow>\n                <PeopleAltIcon\n                  onClick={() => setOpenMergeModal(true)}\n                  id=\"duplicated-candidate-button\"\n                />\n              </Tooltip>\n            )}\n          </Stack>\n        )}\n      </Stack>\n      <Tabs\n        value={tabValue}\n        onChange={(e, value) => setTabValue(value)}\n        TabIndicatorProps={{\n          sx: { ...styles.candidateTabIndicator, maxWidth: tabValue ? '4.8em' : '3.5em' }\n        }}\n        sx={styles.candidateTabs}\n      >\n        <Tab label=\"Profile\" id=\"candidate-profile-tab\" />\n        <Tab label=\"Activities\" id=\"candidate-activities-tab\" />\n      </Tabs>\n      <Divider />\n      {tabValue ? (\n        <ActivitiesTab candidateId={candidateId} dispatch={dispatch} />\n      ) : (\n        candidate && (\n          <ProfileTab\n            candidate={candidate}\n            CandidateState={CandidateState}\n            dispatch={dispatch}\n            permissions={permissions}\n          />\n        )\n      )}\n      {CandidateState.openEditModal && (\n        <EditCandidate\n          CandidateState={CandidateState}\n          editedCandidate={candidate}\n          CandidateDispatch={dispatch}\n        />\n      )}\n      <DeleteCandidate\n        isDialogOpen={CandidateState.openDeleteModal}\n        candidateId={candidateId}\n        CandidateDispatch={dispatch}\n      />\n      <StyledSnackbar\n        message={CandidateState.snackbar.message}\n        state={CandidateState.snackbar.state}\n        setSnackbarState={(snackbarInput: ISnackbarInput) =>\n          dispatch({ type: 'SET_SNACKBAR', payload: snackbarInput })\n        }\n      />\n      <MergeCandidates\n        isOpen={openMergeModal}\n        handleClose={() => setOpenMergeModal(false)}\n        candidateId={candidateId}\n        candidates={candidate?.duplicated_candidates}\n        dispatch={dispatch}\n      />\n    </Stack>\n  );\n}\n","import React, { useState } from 'react';\nimport { CandidateState } from './types';\nimport { TableCell, Stack, Collapse } from '@mui/material';\nimport { Circle as CircleIcon } from '@mui/icons-material';\nimport { classes } from '../../NewUI/Components/GenericTable/styles';\nimport { ICandidateApplication } from './types';\nimport dayjs from 'dayjs';\nimport { styles } from './styles';\nimport { getRatingColor } from '../Job/Applications/SelectedApplicants';\n\nconst CandidateApplicationsTableRows = ({\n  column,\n  item,\n  tableHovered\n}: {\n  column: CandidateState['candidateApplicationsTableState']['columns'][number];\n  item: ICandidateApplication;\n  tableHovered: boolean;\n}) => {\n  const [showMore, setShowMore] = useState<number[]>([]);\n  if (!column.enabled) return null;\n  switch (column.id) {\n    case 'id':\n      return (\n        <TableCell\n          key={item.id + column.id}\n          sx={{\n            ...classes.sticky,\n            ...classes.idTableCell,\n            minWidth: '100px',\n            left: '0px',\n            ...styles.candidateApplicationsTableLink\n          }}\n        >\n          <a\n            href={item.sister_entity_application ? undefined : item.application_link}\n            id=\"application-id-link\"\n          >\n            {item.id || '-'}\n          </a>\n        </TableCell>\n      );\n    case 'job':\n      return (\n        <TableCell\n          key={item.id + column.id}\n          sx={{\n            ...classes.sticky,\n            ...classes.itemTitleTableCell,\n            ...(tableHovered && classes.scrollShadowVisible),\n            left: '100px',\n            minWidth: '150px',\n            ...styles.candidateApplicationsTableLink\n          }}\n        >\n          <a href={item.sister_entity_application ? undefined : item.job_link} id=\"job-name-link\">\n            {item.job_title || '-'}\n          </a>\n        </TableCell>\n      );\n    case 'entity':\n      return (\n        <TableCell key={item.id + column.id} sx={styles.candidateApplicationsTableLink}>\n          <a\n            href={item.sister_entity_application ? undefined : item.entity_link}\n            id=\"entity-name-link\"\n          >\n            {item.entity || '-'}\n          </a>\n        </TableCell>\n      );\n    case 'created_at':\n      return (\n        <TableCell key={item.id + column.id}>\n          {dayjs(item.created_at).format('D MMM YYYY, LT') || '-'}\n        </TableCell>\n      );\n    case 'rating':\n      return (\n        <TableCell key={item.id + column.id}>\n          {item.rating ? (\n            <Stack\n              sx={{\n                ...styles.candidateApplicationsRating,\n                background: getRatingColor(Number(item.rating))\n              }}\n            >\n              {item.rating.replace('.0', '')}%\n            </Stack>\n          ) : (\n            '-'\n          )}\n        </TableCell>\n      );\n    case 'status':\n      return (\n        <TableCell key={item.id + column.id}>\n          {item.status ? (\n            <Stack sx={styles.candidateApplicationsTableStatusContainer}>\n              <CircleIcon sx={{ fontSize: '0.5rem', color: item.status_colour || '#808080' }} />\n              {item.status}\n            </Stack>\n          ) : (\n            '-'\n          )}\n        </TableCell>\n      );\n    case 'attachments':\n      return (\n        <TableCell key={item.id + column.id}>\n          {item.attachments.length ? (\n            <Stack>\n              <Stack>{item.attachments[0]}</Stack>\n              <Collapse in={showMore.includes(item.id)}>\n                {item.attachments.slice(1).map((i, index) => (\n                  <Stack key={index}>{i}</Stack>\n                ))}\n              </Collapse>\n              {item.attachments.length > 1 && (\n                <Stack\n                  sx={{ color: '#084D6D', cursor: 'pointer', width: 'fit-content' }}\n                  onClick={() => {\n                    if (showMore.includes(item.id)) {\n                      setShowMore(showMore.filter((s) => s !== item.id));\n                    } else {\n                      setShowMore([...showMore, item.id]);\n                    }\n                  }}\n                >\n                  Show {showMore.includes(item.id) ? 'less' : 'all'}\n                </Stack>\n              )}\n            </Stack>\n          ) : (\n            '-'\n          )}\n        </TableCell>\n      );\n    default:\n      return <TableCell></TableCell>;\n  }\n};\n\nexport default CandidateApplicationsTableRows;\n","import React, { FC } from 'react';\nimport PersonIcon from '@mui/icons-material/Person';\nimport { SxProps } from '@mui/material';\nimport { theme } from '../../ThemeContext/ThemeObject';\n\ninterface IProps {\n  existingCandidate: boolean;\n  sx?: SxProps;\n}\n\nconst CandidateIcon: FC<IProps> = ({ existingCandidate, sx }) => {\n  return (\n    <PersonIcon\n      sx={{\n        fontSize: '21px',\n        color: existingCandidate ? theme.palette.error.main : theme.palette.success.main,\n        ...sx\n      }}\n    />\n  );\n};\n\nexport default CandidateIcon;\n","import React, { Dispatch, useState, useRef, SyntheticEvent } from 'react';\nimport {\n  Autocomplete,\n  Chip,\n  FilterOptionsState,\n  Stack,\n  TextField,\n  createFilterOptions\n} from '@mui/material';\nimport { sharedClasses } from '../Components/CustomUIElements/sharedClasses';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from './API';\nimport { TCandidate } from '../Candidates/types';\nimport { CandidateAction } from './types';\nimport { ApplicationAction, IApplication } from '../Application/types';\nimport { styles } from './styles';\n\nconst CREATE_TEXT = 'Create \"';\n\nexport default function CandidateTags({\n  focused,\n  candidate,\n  dispatch,\n  inputId\n}: {\n  focused: boolean;\n  candidate: TCandidate;\n  dispatch: Dispatch<CandidateAction> | Dispatch<ApplicationAction>;\n  inputId?: string;\n}) {\n  const [tags, setTags] = useState<string[]>(candidate.tag_list);\n  const queryClient = useQueryClient();\n  const application = queryClient.getQueryData<IApplication>(['application']);\n  const ref = useRef<HTMLDivElement>(null);\n\n  const { mutate: updateCandidateTags } = useMutation({\n    mutationFn: async (value: string[]) => {\n      const { res } = await Api.updateCandidateTags(candidate.id, value);\n      return res;\n    },\n    onSuccess: (res) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: `Candidate tags have been successfully updated`, state: 'success' }\n      });\n      // updating candidate data when the component is called from the individual candidate page\n      queryClient.setQueryData(['candidate'], res);\n      queryClient.invalidateQueries(['candidate'], { exact: true });\n      // updating application candidate data when the component is called from the individual application page\n      queryClient.setQueryData(['application'], { ...application, candidate: res });\n      queryClient.invalidateQueries(['application'], { exact: true });\n      ref.current?.focus();\n    },\n    onError: (error: { error: string }) => {\n      setTags(candidate.tag_list);\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error in updating candidate tags, ${error.error}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n\n  const handleTagsChange = (_e: SyntheticEvent, value: string[]) => {\n    const newTags = value.map((val) =>\n      val.startsWith(CREATE_TEXT) ? val.slice(CREATE_TEXT.length, -1) : val\n    );\n\n    setTags(newTags);\n    updateCandidateTags(newTags);\n    dispatch({ type: 'SET_FOCUSED', payload: true });\n  };\n\n  // function to filter options and suggest creating a new option\n  const filterOptions = (options: string[], state: FilterOptionsState<string>) => {\n    const { inputValue } = state;\n\n    const filtered = options.filter((option) =>\n      option.toLowerCase().includes(inputValue.toLowerCase())\n    );\n\n    const isNew = !options.some((option) => option.toLowerCase() === inputValue.toLowerCase());\n\n    if (inputValue && isNew) {\n      filtered.push(`${CREATE_TEXT}${inputValue}\"`);\n    }\n\n    return filtered;\n  };\n\n  return (\n    <Stack sx={{ ...styles.candidateSectionContainer, rowGap: 1 }}>\n      <Stack sx={styles.candidateSectionHeader}>Candidate Tags</Stack>\n      <Autocomplete\n        id={inputId || 'candidate-tags-input'}\n        clearIcon={false}\n        options={candidate.entity_tags?.map((tag) => tag.value)}\n        value={tags}\n        onChange={handleTagsChange}\n        filterOptions={filterOptions}\n        freeSolo\n        multiple\n        sx={{ ...sharedClasses.formAutocomplete, '.MuiInputBase-root': { margin: 'unset' } }}\n        ListboxProps={{ style: styles.listStyle }}\n        renderTags={(value, props) =>\n          value.map((option, index) => <Chip label={option} {...props({ index })} key={index} />)\n        }\n        slotProps={{ popper: { sx: { zIndex: 1 } } }}\n        renderInput={(params) => (\n          <TextField\n            onBlur={() => dispatch({ type: 'SET_FOCUSED', payload: false })}\n            autoFocus={focused}\n            placeholder=\"Type your tag here...\"\n            {...params}\n            sx={{ '& .MuiOutlinedInput-root': { padding: 0.5 } }}\n            ref={ref}\n          />\n        )}\n      />\n    </Stack>\n  );\n}\n","import React, { Dispatch, useState } from 'react';\nimport {\n  Autocomplete,\n  Button,\n  Checkbox,\n  FormControlLabel,\n  InputLabel,\n  Stack,\n  TextField\n} from '@mui/material';\nimport { Delete as DeleteIcon } from '@mui/icons-material';\nimport { CandidateAction, CandidateState, ICandidateTask } from '../types';\nimport dayjs from 'dayjs';\nimport StyledModal from '../../Components/GenericModal/StyledModal';\nimport { TCandidate } from '../../Candidates/types';\nimport {\n  FormTextField,\n  MultilineFormTextField\n} from '../../Components/CustomUIElements/FormTextField';\nimport { SingleDateTimePicker } from '../../Components/CustomUIElements/SingleDatePicker';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { classes as importClasses } from '../../../ScoutCalendar/CreateEvent/EventProgress/styles';\nimport FormSelectWithIconField from '../../Components/CustomUIElements/FormSelectWithIconField';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport { IAssignableUsers } from '../../ApprovalForms/types';\nimport ModalFooterButtons from '../../Components/GenericModal/ModalFooterButtons';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport { styles } from '../styles';\n\nconst priorities = [\n  { label: 'Low', value: '1', color: '#8CCF95' },\n  { label: 'Normal', value: '0', color: '#E6A052' },\n  { label: 'High', value: '-1', color: '#E37D7A' }\n];\n\nexport default function AddEditTaskModal({\n  tasks,\n  candidate,\n  assignableUsers,\n  loadingAssignableUsers,\n  CandidateState,\n  dispatch\n}: {\n  tasks: ICandidateTask[];\n  candidate: TCandidate;\n  assignableUsers: IAssignableUsers[];\n  loadingAssignableUsers: boolean;\n  CandidateState: CandidateState;\n  dispatch: Dispatch<CandidateAction>;\n}) {\n  const { editedTask } = CandidateState;\n  const [subject, setSubject] = useState<string>(editedTask?.subject || '');\n  const [note, setNote] = useState<string>(editedTask?.note || '');\n  const [date, setDate] = useState<Date>(new Date(editedTask?.due_at || Date.now()));\n  const [priority, setPriority] = useState<{ label: string; value: string; color: string }>(\n    priorities.find((p) => p.label === editedTask?.priority) || priorities[0]\n  );\n  const [assignedUser, setAssignedUser] = useState<IAssignableUsers | null>(null);\n  const [taskCompleted, setTaskCompleted] = useState<boolean>(!!editedTask?.completed_at);\n  const [deleteTaskDialogOpen, setDeleteTaskDialogOpen] = useState<boolean>(false);\n  const [errors, setErrors] = useState<Record<string, string>>({});\n  const queryClient = useQueryClient();\n\n  const { mutate: createCandidateTask, isLoading: creatingCandidateTask } = useMutation({\n    mutationFn: async () => {\n      if (!assignedUser) return;\n      const { res } = await Api.createCandidateTask(candidate.id, {\n        subject,\n        note,\n        priority: Number(priority.value),\n        due_at: dayjs(date).toISOString(),\n        user_id: assignedUser.id\n      });\n      return res;\n    },\n    onSuccess: (res) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: `Task has been successfully added`, state: 'success' }\n      });\n      queryClient.setQueryData(['tasks'], { tasks: [...tasks, res] });\n      handleClose();\n    },\n    onError: (error: { error: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error creating candidate task, ${error.error}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n\n  const { mutate: updateCandidateTask, isLoading: updatingCandidateTask } = useMutation({\n    mutationFn: async () => {\n      if (!editedTask) return;\n      const { res } = await Api.updateCandidateTask(candidate.id, editedTask.id, {\n        subject,\n        note,\n        priority: Number(priority.value),\n        due_at: dayjs(date).toISOString(),\n        completed_at: taskCompleted ? dayjs().toISOString() : null\n      });\n      return res;\n    },\n    onSuccess: (res) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: `Task has been successfully updated`, state: 'success' }\n      });\n      const newTasks = [...tasks];\n      const index = tasks.findIndex((t) => t.id === editedTask?.id);\n      newTasks[index] = res;\n      queryClient.setQueryData(['tasks'], { tasks: newTasks });\n      handleClose();\n    },\n    onError: (error: { error: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error updating candidate task, ${error.error}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n\n  const { mutate: deleteCandidateTask, isLoading: deletingCandidateTask } = useMutation({\n    mutationFn: async () => {\n      editedTask && Api.deleteCandidateTask(candidate.id, editedTask.id);\n    },\n    onSuccess: () => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: `Task has been successfully deleted`, state: 'success' }\n      });\n      const newTasks = tasks.filter((task) => task.id !== editedTask?.id);\n      queryClient.setQueryData(['tasks'], { tasks: newTasks });\n      handleClose();\n    },\n    onError: (error: { error: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error deleting candidate task, ${error.error}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n\n  const handleClose = () => {\n    editedTask && dispatch({ type: 'SET_EDITED_TASK', payload: null });\n    dispatch({ type: 'OPEN_TASK_MODAL', payload: false });\n  };\n\n  const DeleteDialogDescription = () => (\n    <Stack>\n      <Stack>Are you sure you want to delete the current task?</Stack>\n      <Stack>{`You will lose the task you've made.`}</Stack>\n    </Stack>\n  );\n\n  const validateInputs = () => {\n    setErrors({});\n    const inputErrors: Record<string, string> = {};\n    if (!subject.trim()) inputErrors.subject = 'Subject can not be empty';\n    if (!note.trim()) inputErrors.note = 'Note can not be empty';\n    if (!assignedUser && !editedTask) inputErrors.user = 'Assigned user can not be empty';\n    setErrors(inputErrors);\n    return !Object.keys(inputErrors).length;\n  };\n\n  const handleSubmit = () => {\n    if (validateInputs()) {\n      editedTask ? updateCandidateTask() : createCandidateTask();\n    }\n  };\n\n  return (\n    <StyledModal\n      isOpen={CandidateState.candidateTaskModalIsOpen}\n      label=\"Add/Edit candidate task\"\n      handleClose={handleClose}\n      styleOverrides={styles.modalContainer}\n      closeIconId={`close-${editedTask ? 'edit' : 'add'}-task-button`}\n    >\n      <Stack sx={styles.modalContent}>\n        <Stack sx={styles.modalTitle}>{editedTask ? 'Edit' : 'Add'} task</Stack>\n        <Stack sx={styles.modalCandidateName}>\n          {candidate.firstname} {candidate.lastname}\n        </Stack>\n        <FormTextField\n          label=\"Subject\"\n          value={subject}\n          required\n          onChange={(v) => setSubject(v.target.value)}\n          error={errors.subject}\n        />\n        <MultilineFormTextField\n          label=\"Note\"\n          value={note}\n          onChange={(e) => setNote(e.target.value)}\n          fullWidth\n          rows={5}\n          required\n          error={errors.note}\n        />\n        <Stack sx={{ flexDirection: 'row', columnGap: 5 }}>\n          <Stack sx={{ width: '45%', flexDirection: 'row', columnGap: 2 }}>\n            <Stack>\n              <SingleDateTimePicker\n                value={date}\n                label={\n                  <InputLabel htmlFor=\"text-input\" sx={sharedClasses.inputLabel}>\n                    Expiry date and time<span>*</span>\n                  </InputLabel>\n                }\n                inputStyles={importClasses.datePicker}\n                disablePast\n                onChange={(value) => value && setDate(value)}\n              />\n            </Stack>\n          </Stack>\n          <FormSelectWithIconField\n            options={priorities}\n            defaultValue={priority.value}\n            onChange={(value) =>\n              setPriority(priorities.find((p) => p.value === value) || priorities[0])\n            }\n            label={'Priority'}\n            styles={styles.prioritySelectStyling}\n          />\n        </Stack>\n        {!editedTask && (\n          <Autocomplete\n            disablePortal\n            id=\"add-candidate-task-assigned-users-select\"\n            options={assignableUsers || []}\n            getOptionLabel={(option: IAssignableUsers) =>\n              `${option?.firstname} ${option?.lastname}`\n            }\n            value={assignedUser}\n            sx={{ ...sharedClasses.formAutocomplete, paddingTop: 3, width: '45%' }}\n            loading={loadingAssignableUsers}\n            loadingText=\"Loading assignable users...\"\n            ListboxProps={{ style: styles.listboxProps }}\n            renderInput={(params) => (\n              <TextField\n                {...params}\n                label=\"Assign to user\"\n                InputLabelProps={{ shrink: true }}\n                sx={styles.autoCompleteTextfield}\n                required\n                error={!assignedUser}\n                helperText={!assignedUser && errors.user}\n              />\n            )}\n            onChange={(event, value) => setAssignedUser(value)}\n          />\n        )}\n        {editedTask && (\n          <FormControlLabel\n            control={\n              <Checkbox\n                id=\"mark-as-complete-check-box\"\n                sx={sharedClasses.formCheckbox}\n                checked={taskCompleted}\n                onClick={() => setTaskCompleted(!taskCompleted)}\n                disableRipple\n              />\n            }\n            label=\"Mark as complete\"\n            sx={sharedClasses.checkboxLabel}\n          />\n        )}\n        <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between' }}>\n          {editedTask && (\n            <Button\n              id=\"delete-task-button\"\n              sx={{\n                ...sharedClasses.genericRedButton,\n                marginTop: '10px',\n                columnGap: 0.5,\n                minWidth: '135px'\n              }}\n              onClick={() => setDeleteTaskDialogOpen(true)}\n            >\n              <DeleteIcon />\n              Delete task\n            </Button>\n          )}\n          <ModalFooterButtons\n            primaryButtonText={editedTask ? 'Save' : 'Submit'}\n            primaryButtonCallback={handleSubmit}\n            secondaryButtonText=\"Cancel\"\n            secondaryButtonCallback={handleClose}\n            isLoading={creatingCandidateTask || updatingCandidateTask}\n            primaryButtonID={`${editedTask ? 'save' : 'submit'}-task-button`}\n            secondaryButtonID={`cancel-${editedTask ? 'edit' : 'add'}-task-button`}\n          />\n        </Stack>\n      </Stack>\n      <GenericDialog\n        isDialogOpen={deleteTaskDialogOpen}\n        setDialogOpen={setDeleteTaskDialogOpen}\n        title={`Delete task?`}\n        description={DeleteDialogDescription()}\n        buttonCallback={() => deleteCandidateTask()}\n        callbackLoading={deletingCandidateTask}\n        buttonText=\"Delete\"\n        secondaryButtonText=\"Cancel\"\n        url=\"\"\n        primaryButtonId=\"confirm-delete-task-button\"\n        secondaryButtonId=\"cancel-delete-task-button\"\n      />\n    </StyledModal>\n  );\n}\n","import React, { Dispatch } from 'react';\nimport { Stack, Avatar, Chip, Tooltip, CircularProgress } from '@mui/material';\nimport {\n  Alarm as AlarmIcon,\n  CheckCircleOutline as CheckCircleOutlineIcon,\n  CheckCircle as CheckCircleIcon,\n  Task as TaskIcon\n} from '@mui/icons-material';\nimport { CandidateAction, ICandidateTask } from '../types';\nimport dayjs from 'dayjs';\nimport { styles } from '../styles';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\n\nexport default function CandidateTask({\n  task,\n  dispatch,\n  candidateId,\n  tasks\n}: {\n  task: ICandidateTask;\n  dispatch: Dispatch<CandidateAction>;\n  candidateId: number;\n  tasks: ICandidateTask[];\n}) {\n  const queryClient = useQueryClient();\n  const { mutate: completeCandidateTask, isLoading: completingCandidateTask } = useMutation({\n    mutationFn: async () => {\n      const { res } = await Api.updateCandidateTask(candidateId, task.id, {\n        completed_at: task.completed_at ? null : dayjs().toISOString()\n      });\n      return res;\n    },\n    onSuccess: (res) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: `Task has been successfully updated`, state: 'success' }\n      });\n      const newTasks = [...tasks];\n      const index = tasks.findIndex((t) => t.id === task?.id);\n      newTasks[index] = res;\n      queryClient.setQueryData(['tasks'], { tasks: newTasks });\n    },\n    onError: (error: { error: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error updating candidate task, ${error.error}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n  return (\n    <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between' }}>\n      <Stack sx={{ flexDirection: 'row', columnGap: 2, alignItems: 'center' }}>\n        <Tooltip\n          placement=\"top\"\n          title={`${task.priority === 'Normal' ? 'Medium' : task.priority} priority`}\n          arrow\n        >\n          <Avatar variant=\"rounded\" sx={{ ...styles[task.priority], borderRadius: '6px' }}>\n            <TaskIcon sx={{ fontSize: '1.1rem' }} />\n          </Avatar>\n        </Tooltip>\n        <Stack\n          id=\"task-name-link\"\n          sx={{ fontSize: '16px', fontWeight: 'bold', cursor: 'pointer' }}\n          onClick={() => {\n            dispatch({ type: 'SET_EDITED_TASK', payload: task });\n            dispatch({ type: 'OPEN_TASK_MODAL', payload: true });\n          }}\n        >\n          {task.subject}\n        </Stack>\n      </Stack>\n      <Stack sx={{ flexDirection: 'row', columnGap: 2, alignItems: 'center' }}>\n        <Chip\n          label={`Assigned to: ${task.assigned_user}`}\n          sx={{ ...styles.candidateTaskChip, color: '#084D6D', background: '#EDF2F5' }}\n        />\n        <Chip\n          icon={<AlarmIcon sx={{ fontSize: '16px' }} />}\n          label={dayjs(task.due_at).format('ddd, D MMM YYYY, LT')}\n          sx={{ ...styles.candidateTaskChip, color: '#666666', minWidth: '210px' }}\n        />\n        {completingCandidateTask ? (\n          <CircularProgress size={24} sx={{ color: '#5BC4BF' }} />\n        ) : (\n          <Stack\n            id=\"complete-task-button\"\n            onClick={() => completeCandidateTask()}\n            sx={{ cursor: 'pointer' }}\n          >\n            {task.completed_at ? (\n              <CheckCircleIcon sx={{ color: '#5BC4C0' }} />\n            ) : (\n              <CheckCircleOutlineIcon sx={{ color: '#DDDDDD' }} />\n            )}\n          </Stack>\n        )}\n      </Stack>\n    </Stack>\n  );\n}\n","import React, { Dispatch } from 'react';\nimport { Stack, Box, Skeleton } from '@mui/material';\nimport { CandidateAction, ICandidateTask } from '../types';\nimport CandidateTask from './CandidateTask';\nimport EmptyTab from './EmptyTab';\n\nexport default function CandidateTasksTab({\n  tasks,\n  tabValue,\n  fetchingTasks,\n  dispatch,\n  candidateId\n}: {\n  tasks?: ICandidateTask[];\n  tabValue: number;\n  fetchingTasks: boolean;\n  dispatch: Dispatch<CandidateAction>;\n  candidateId: number;\n}) {\n  const filteredTasks = tabValue\n    ? tasks?.filter((task) => !!task.completed_at) // completed tasks\n    : tasks?.filter((task) => !task.completed_at); // pending tasks\n  return (\n    <>\n      {fetchingTasks ? (\n        <>\n          {[...Array(5)].map((_, index) => (\n            <Box key={index}>\n              <Skeleton animation=\"wave\" height={60} />\n            </Box>\n          ))}\n        </>\n      ) : (\n        <>\n          {tasks && filteredTasks?.length ? (\n            <Stack sx={{ paddingTop: 3, rowGap: 3 }}>\n              {filteredTasks.map((task) => {\n                return (\n                  <CandidateTask\n                    task={task}\n                    key={task.id}\n                    dispatch={dispatch}\n                    candidateId={candidateId}\n                    tasks={tasks}\n                  />\n                );\n              })}\n            </Stack>\n          ) : (\n            <EmptyTab tabValue={tabValue} />\n          )}\n        </>\n      )}\n    </>\n  );\n}\n","import React from 'react';\nimport { Stack, Avatar } from '@mui/material';\nimport { Assignment as AssignmentIcon } from '@mui/icons-material';\n\nexport default function EmptyTab({ tabValue }: { tabValue: number }) {\n  return (\n    <Stack sx={{ padding: 7.5, alignItems: 'center', rowGap: 2 }}>\n      <Avatar\n        variant=\"rounded\"\n        sx={{ borderRadius: '6px', background: '#EAEAEA', width: '60px', height: '70px' }}\n      >\n        <AssignmentIcon sx={{ fontSize: '3.5rem' }} />\n      </Avatar>\n      <Stack sx={{ color: '#DDDDDD', fontWeight: 'bold' }}>\n        {`You have no ${tabValue ? 'completed' : 'pending'} tasks`}\n      </Stack>\n    </Stack>\n  );\n}\n","import React, { Dispatch, useState } from 'react';\nimport { Stack, Autocomplete, TextField } from '@mui/material';\nimport { CandidateAction, CandidateState, IWorkflow } from '../types';\nimport StyledModal from '../../Components/GenericModal/StyledModal';\nimport { TCandidate } from '../../Candidates/types';\nimport { IAssignableUsers } from '../../ApprovalForms/types';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport ModalFooterButtons from '../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from '../styles';\n\nexport default function TaskWorkflowModal({\n  candidate,\n  assignableUsers,\n  loadingAssignableUsers,\n  CandidateState,\n  dispatch\n}: {\n  candidate: TCandidate;\n  assignableUsers: IAssignableUsers[];\n  loadingAssignableUsers: boolean;\n  CandidateState: CandidateState;\n  dispatch: Dispatch<CandidateAction>;\n}) {\n  const [assignedUser, setAssignedUser] = useState<IAssignableUsers | null>(null);\n  const [workflow, setWorkflow] = useState<IWorkflow | null>(null);\n  const [errors, setErrors] = useState<Record<string, string>>({});\n  const queryClient = useQueryClient();\n\n  const handleClose = () => {\n    dispatch({ type: 'OPEN_TASK_WORKFLOW_MODAL', payload: false });\n  };\n\n  const { data: workflows, isLoading: loadingWorkflows } = useQuery({\n    queryKey: ['workflows'],\n    queryFn: async () => {\n      const { res } = await Api.getWorkflows(candidate.id);\n      return res;\n    },\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting candidate data, ${error}`,\n          state: 'error'\n        }\n      })\n  });\n\n  const { mutate: assignWorkflow, isLoading: assigningWorkflow } = useMutation({\n    mutationFn: async () => {\n      if (!workflow || !assignedUser) return;\n      return Api.assignWorkflow(candidate.id, { id: workflow?.id, user_id: assignedUser?.id });\n    },\n    onSuccess: () => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: `Workflow has been successfully started.`, state: 'success' }\n      });\n      queryClient.invalidateQueries(['tasks'], { exact: true });\n      handleClose();\n    },\n    onError: (error: { error: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error starting the workflow, ${error.error}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n\n  const validateInputs = () => {\n    setErrors({});\n    const inputErrors: Record<string, string> = {};\n    if (!workflow) inputErrors.workflow = 'Workflow is a required field';\n    if (!assignedUser) inputErrors.user = 'Assigned user is a required field';\n    setErrors(inputErrors);\n    return !Object.keys(inputErrors).length;\n  };\n\n  return (\n    <StyledModal\n      isOpen={CandidateState.taskWorkflowModalIsOpen}\n      label=\"Candidate task workflow\"\n      handleClose={handleClose}\n      styleOverrides={styles.modalContainer}\n      closeIconId=\"close-start-workflow-button\"\n    >\n      <Stack sx={styles.modalContent}>\n        <Stack sx={styles.modalTitle}>Start workflow</Stack>\n        <Stack sx={styles.modalCandidateName}>\n          {candidate.firstname} {candidate.lastname}\n        </Stack>\n        <Autocomplete\n          disablePortal\n          id=\"candidate-task-workflows-select\"\n          options={workflows?.workflows || []}\n          getOptionLabel={(option) => option.name}\n          value={workflow}\n          sx={{ ...sharedClasses.formAutocomplete, paddingTop: 3, width: '35%' }}\n          loading={loadingWorkflows}\n          loadingText=\"Loading workflows...\"\n          ListboxProps={{ style: styles.listboxProps }}\n          renderInput={(params) => (\n            <TextField\n              {...params}\n              label=\"Workflow name\"\n              InputLabelProps={{ shrink: true }}\n              sx={styles.autoCompleteTextfield}\n              required\n              error={!workflow}\n              helperText={!workflow && errors.workflow}\n            />\n          )}\n          onChange={(event, value) => setWorkflow(value)}\n        />\n        <Autocomplete\n          disablePortal\n          id=\"candidate-task-workflow-assigned-users-select\"\n          options={assignableUsers || []}\n          getOptionLabel={(option: IAssignableUsers) => `${option?.firstname} ${option?.lastname}`}\n          value={assignedUser}\n          sx={{ ...sharedClasses.formAutocomplete, paddingTop: 3, width: '35%' }}\n          loading={loadingAssignableUsers}\n          loadingText=\"Loading assignable users...\"\n          ListboxProps={{ style: styles.listboxProps }}\n          renderInput={(params) => (\n            <TextField\n              {...params}\n              label=\"Assign to\"\n              InputLabelProps={{ shrink: true }}\n              sx={styles.autoCompleteTextfield}\n              required\n              error={!assignedUser}\n              helperText={!assignedUser && errors.user}\n            />\n          )}\n          onChange={(event, value) => setAssignedUser(value)}\n        />\n        <ModalFooterButtons\n          primaryButtonText=\"Submit\"\n          primaryButtonCallback={() => validateInputs() && assignWorkflow()}\n          secondaryButtonText=\"Cancel\"\n          secondaryButtonCallback={handleClose}\n          isLoading={assigningWorkflow}\n          primaryButtonID=\"submit-workflow-button\"\n          secondaryButtonID=\"cancel-workflow-button\"\n          primaryButtonMinWidth=\"90px\"\n        />\n      </Stack>\n    </StyledModal>\n  );\n}\n","import React, { Dispatch, useState } from 'react';\nimport { Stack, Button, Tabs, Tab, Divider } from '@mui/material';\nimport { CandidateAction, CandidateState, ICandidateTask } from '../types';\nimport CandidateTasksTab from './CandidateTasksTab';\nimport { useQuery } from '@tanstack/react-query';\nimport Api from '../API';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { styles } from '../styles';\nimport AddEditTaskModal from './AddEditTaskModal';\nimport { TCandidate } from '../../Candidates/types';\nimport TaskWorkflowModal from './TaskWorkflowModal';\nimport { IUserPermissions } from '../../Components/sharedTypes';\n\nexport default function CandidateTasks({\n  candidate,\n  CandidateState,\n  dispatch,\n  permissions\n}: {\n  candidate: TCandidate;\n  CandidateState: CandidateState;\n  dispatch: Dispatch<CandidateAction>;\n  permissions?: IUserPermissions;\n}) {\n  const [tabValue, setTabValue] = useState<number>(0);\n\n  const { data: tasks, isFetching: fetchingTasks } = useQuery({\n    queryKey: ['tasks'],\n    queryFn: async () => {\n      const { res } = await Api.getCandidateTasks(candidate.id);\n      return res as { tasks: ICandidateTask[] };\n    },\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting candidate data, ${error}`,\n          state: 'error'\n        }\n      })\n  });\n\n  const { data: assignableUsers, isLoading: loadingAssignableUsers } = useQuery({\n    queryKey: ['assignable users'],\n    queryFn: async () => {\n      const { res } = await Api.getAssignableUsers();\n      return res;\n    },\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting assignable users data, ${error}`,\n          state: 'error'\n        }\n      })\n  });\n\n  return (\n    <Stack sx={styles.candidateSectionContainer}>\n      <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between' }}>\n        <Stack sx={styles.candidateSectionHeader}>Tasks</Stack>\n        <Stack sx={{ flexDirection: 'row', columnGap: 2 }}>\n          <Button\n            id=\"add-task-button\"\n            sx={sharedClasses.genericButtonSecondary}\n            onClick={() => dispatch({ type: 'OPEN_TASK_MODAL', payload: true })}\n          >\n            Add task\n          </Button>\n          {permissions?.Entities?.['Task Workflow'] && (\n            <Button\n              id=\"start-workflow-button\"\n              sx={sharedClasses.genericButtonSecondary}\n              onClick={() => dispatch({ type: 'OPEN_TASK_WORKFLOW_MODAL', payload: true })}\n            >\n              Start workflow\n            </Button>\n          )}\n        </Stack>\n      </Stack>\n      <Tabs\n        value={tabValue}\n        onChange={(e, value) => setTabValue(value)}\n        TabIndicatorProps={{\n          sx: { ...styles.candidateTabIndicator, maxWidth: tabValue ? '5.6em' : '4.3em' }\n        }}\n        sx={styles.candidateTabs}\n      >\n        <Tab label=\"Pending\" id=\"pending-tab\" />\n        <Tab label=\"Completed\" id=\"completed-tab\" />\n      </Tabs>\n      <Divider />\n      <CandidateTasksTab\n        tasks={tasks?.tasks}\n        tabValue={tabValue}\n        fetchingTasks={fetchingTasks}\n        dispatch={dispatch}\n        candidateId={candidate.id}\n      />\n      {tasks && CandidateState.candidateTaskModalIsOpen && (\n        <AddEditTaskModal\n          tasks={tasks.tasks}\n          candidate={candidate}\n          assignableUsers={assignableUsers.assignable_users}\n          loadingAssignableUsers={loadingAssignableUsers}\n          CandidateState={CandidateState}\n          dispatch={dispatch}\n        />\n      )}\n      {CandidateState.taskWorkflowModalIsOpen && (\n        <TaskWorkflowModal\n          candidate={candidate}\n          assignableUsers={assignableUsers.assignable_users}\n          loadingAssignableUsers={loadingAssignableUsers}\n          CandidateState={CandidateState}\n          dispatch={dispatch}\n        />\n      )}\n    </Stack>\n  );\n}\n","import React, { Dispatch, useState } from 'react';\nimport {\n  Stack,\n  Box,\n  Button,\n  Link,\n  Table,\n  TableHead,\n  TableRow,\n  TableCell,\n  TableBody,\n  TableContainer\n} from '@mui/material';\nimport { Diversity3 } from '@mui/icons-material';\nimport StyledModal from '../Components/GenericModal/StyledModal';\nimport { useMutation } from '@tanstack/react-query';\nimport Api from './API';\nimport { styles } from './styles';\nimport { sharedClasses } from '../Components/CustomUIElements/sharedClasses';\nimport { CandidateAction, IDuplicatedCandidate } from './types';\nimport { classes as tableStyles } from '../../TableStyles';\nimport GenericDialog from '../Components/Modals/GenericDialog';\nimport { FormTextField } from '../Components/CustomUIElements/FormTextField';\nimport dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\nimport timezone from 'dayjs/plugin/timezone';\nimport advanced from 'dayjs/plugin/advancedFormat';\ndayjs.extend(utc);\ndayjs.extend(timezone);\ndayjs.extend(advanced);\n\nconst BASE_URL = window.location.origin;\n\nconst headerStyle = (name: string) => {\n  switch (name) {\n    case 'ID':\n      return {\n        minWidth: '90px'\n      };\n    case 'Name':\n      return { minWidth: '102px' };\n    case 'Email':\n      return { minWidth: '120px' };\n    case 'Address':\n      return { minWidth: '165px' };\n    case 'Phone':\n      return { minWidth: '93px' };\n    case 'Created':\n      return { minWidth: '123px' };\n    default:\n      return { minWidth: '90px' };\n  }\n};\n\nexport default function MergeCandidates({\n  isOpen,\n  handleClose,\n  candidateId,\n  candidates,\n  dispatch\n}: {\n  isOpen: boolean;\n  handleClose: () => void;\n  candidateId: number;\n  candidates?: IDuplicatedCandidate[];\n  dispatch: Dispatch<CandidateAction>;\n}) {\n  const [isDialogOpen, setIsDialogOpen] = useState<boolean>(false);\n  const [confirmMerge, setConfirmMerge] = useState<string>('');\n\n  const { mutate: mergeCandidates, isLoading: mergingCandidates } = useMutation({\n    mutationFn: async () => {\n      const { res } = await Api.mergeCandidates(candidateId);\n      return res;\n    },\n    onSuccess: (res) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: res.success, state: 'success' }\n      });\n      handleClose();\n      window.location.href = `${BASE_URL}${res.url}`;\n    },\n    onError: (error) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error in merging candidates, ${error}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n\n  const dialogDescription = (\n    <Stack sx={{ color: '#000000', rowGap: 2 }}>\n      <Box>\n        This will <b>permanently</b> merge the candidates and all associated resources will belong\n        to newest candidate\n      </Box>\n      <Stack sx={{ rowGap: 1, alignItems: 'center' }}>\n        <Box sx={{ color: '#939393', fontSize: '14px', '& b': { color: '#000000' } }}>\n          Type the word <b>MERGE</b> in the text field below to\n          <Box>confirm the merge</Box>\n        </Box>\n        <FormTextField value={confirmMerge} onChange={(e) => setConfirmMerge(e.target.value)} />\n      </Stack>\n    </Stack>\n  );\n\n  return (\n    <StyledModal\n      isOpen={isOpen}\n      label=\"Duplicated candidates modal\"\n      handleClose={handleClose}\n      styleOverrides={{ ...styles.modalContainer, width: '775px' }}\n      closeIconId=\"close-duplicated-candidates-modal-button\"\n    >\n      <Stack sx={styles.modalContent}>\n        <Stack sx={styles.modalTitle}>Duplicated candidates</Stack>\n        <Stack flexDirection=\"row\">\n          <Button\n            sx={sharedClasses.genericButtonSecondary}\n            id=\"merge-candidate-button\"\n            startIcon={<Diversity3 />}\n            onClick={() => setIsDialogOpen(true)}\n          >\n            Merge\n          </Button>\n        </Stack>\n        <Stack>\n          <Table stickyHeader aria-label=\"sticky table\" sx={tableStyles.tableStyling}>\n            <TableHead>\n              <TableRow>\n                {['ID', 'Name', 'Email', 'Address', 'Phone', 'Created'].map((title, index) => (\n                  <TableCell sx={{ ...tableStyles.tableHeader, ...headerStyle(title) }} key={index}>\n                    <Stack>{title}</Stack>\n                  </TableCell>\n                ))}\n              </TableRow>\n            </TableHead>\n          </Table>\n          <TableContainer sx={{ maxHeight: 350 }}>\n            <Table sx={tableStyles.tableStyling}>\n              <TableBody>\n                {candidates?.map((c) => (\n                  <TableRow key={c.id} sx={{ td: { overflowWrap: 'anywhere', minWidth: '90px' } }}>\n                    <TableCell>\n                      <Link\n                        id=\"candidate-id-duplicated-link\"\n                        href={`${BASE_URL}/admin/candidates/${c.id}`}\n                        sx={{ color: 'black !important' }}\n                        target=\"_blank\"\n                      >\n                        {c.id}\n                      </Link>\n                    </TableCell>\n                    <TableCell>{c.name}</TableCell>\n                    <TableCell>{c.email}</TableCell>\n                    <TableCell>\n                      {c.address1.filter((a) => a).join(' ')}{' '}\n                      {c.address2.filter((a) => a).join(' ')}\n                    </TableCell>\n                    <TableCell>{c.phone}</TableCell>\n                    <TableCell>{dayjs(c.created_at).format('llll z')}</TableCell>\n                  </TableRow>\n                ))}\n              </TableBody>\n            </Table>\n          </TableContainer>\n        </Stack>\n      </Stack>\n      <GenericDialog\n        isDialogOpen={isDialogOpen}\n        setDialogOpen={setIsDialogOpen}\n        title=\"Are you sure you want to merge these candidates?\"\n        description={dialogDescription}\n        buttonCallback={() => mergeCandidates()}\n        callbackLoading={mergingCandidates}\n        buttonText=\"Merge\"\n        url=\"\"\n        disablePrimaryButton={confirmMerge !== 'MERGE'}\n        primaryButtonId=\"confirm-merge-candidate-button\"\n        secondaryButtonId=\"cancel-merge-candidate-button\"\n      />\n    </StyledModal>\n  );\n}\n","import React, { useEffect, useState } from 'react';\nimport { Stack } from '@mui/material';\nimport { styles } from './styles';\nimport { MultilineFormTextField } from '../Components/CustomUIElements/FormTextField';\nimport ModalFooterButtons from '../Components/GenericModal/ModalFooterButtons';\n\nexport default function Notepad({\n  note = '',\n  updateNote,\n  updatingNote,\n  inputId,\n  buttonId,\n  onChangeCallback,\n  primaryButtonDisabled\n}: {\n  note?: string;\n  updateNote: (note: string) => void;\n  updatingNote: boolean;\n  inputId?: string;\n  buttonId?: string;\n  onChangeCallback?: (value: string) => void;\n  primaryButtonDisabled?: boolean;\n}) {\n  const [notepad, setNotepad] = useState<string>(note);\n\n  useEffect(() => {\n    setNotepad(note);\n  }, [note]);\n\n  return (\n    <Stack sx={{ ...styles.candidateSectionContainer, rowGap: 1 }}>\n      <Stack sx={styles.candidateSectionHeader}>Notepad</Stack>\n      <MultilineFormTextField\n        value={notepad}\n        onChange={(e) => {\n          const { value } = e.target;\n          setNotepad(value);\n          onChangeCallback?.(value);\n        }}\n        placeholder=\"Write a comment here...\"\n        id={inputId || 'candidate-notepad-input'}\n        rows={5}\n      />\n      <ModalFooterButtons\n        primaryButtonText=\"Save\"\n        primaryButtonID={buttonId || 'candidate-save-notepad-button'}\n        primaryButtonCallback={() => updateNote(notepad)}\n        isLoading={updatingNote}\n        primaryButtonDisabled={primaryButtonDisabled}\n      />\n    </Stack>\n  );\n}\n","import React, { Dispatch } from 'react';\nimport { Button, Stack, Avatar } from '@mui/material';\nimport {\n  Phone as PhoneIcon,\n  PhoneIphone as PhoneIphoneIcon,\n  Email as EmailIcon,\n  LocationOn as LocationOnIcon,\n  LinkedIn as LinkedInIcon\n} from '@mui/icons-material';\nimport { IAddressDetails, TCandidate } from '../Candidates/types';\nimport { useMutation, useQueryClient, useQuery } from '@tanstack/react-query';\nimport Api from './API';\nimport { CandidateAction, CandidateState } from './types';\nimport { styles } from './styles';\nimport GenericTable from '../Components/GenericTable/GenericTable';\nimport CandidateApplicationsTableRows from './CandidateApplicationsTableRows';\nimport { headerStyle } from './config';\nimport CandidateTasks from './CandidateTasks';\nimport { IUserPermissions } from '../Components/sharedTypes';\nimport CandidateTags from './CandidateTags';\nimport Notepad from './Notepad';\nimport CandidateIcon from './CandidateIcon';\n\nexport const formatAddress = (address_details: IAddressDetails) => {\n  const streetDetails = [\n    address_details?.street_number,\n    address_details?.street1,\n    address_details?.street2,\n    address_details?.street_type\n  ]\n    .filter((s) => s)\n    .join(' ');\n\n  const countryDetails = [address_details?.country?.printable_name, address_details?.postcode]\n    .filter((d) => d)\n    .join(' ');\n\n  const fullAddress = [\n    streetDetails,\n    address_details?.suburb,\n    address_details?.state?.name,\n    countryDetails\n  ]\n    .filter((a) => a)\n    .join(', ');\n\n  return fullAddress;\n};\n\nexport default function ProfileTab({\n  candidate,\n  CandidateState,\n  dispatch,\n  permissions\n}: {\n  candidate: TCandidate;\n  CandidateState: CandidateState;\n  dispatch: Dispatch<CandidateAction>;\n  permissions?: IUserPermissions;\n}) {\n  const queryClient = useQueryClient();\n\n  const { mutate: updateCandidateNotepad, isLoading: updatingCandidateNotepad } = useMutation({\n    mutationFn: async (note: string) => {\n      const { res } = await Api.updateCandidateNotepad(candidate.id, note);\n      return res;\n    },\n    onSuccess: (res) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: res.success, state: 'success' }\n      });\n      queryClient.invalidateQueries(['candidate'], { exact: true });\n    },\n    onError: (error: { error: string }) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error in updating candidate notepad, ${error.error}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n\n  const { data: applications, isLoading: loadingApplications } = useQuery({\n    queryKey: ['applications', CandidateState.candidateApplicationsTableSettings],\n    queryFn: () =>\n      Api.getCandidateApplications(candidate.id, {\n        page: CandidateState.candidateApplicationsTableSettings.page,\n        limit: CandidateState.candidateApplicationsTableSettings.limit,\n        sort: CandidateState.candidateApplicationsTableSettings.sort,\n        sort_order: CandidateState.candidateApplicationsTableSettings.sort_order\n      }),\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting candidate data, ${error}`,\n          state: 'error'\n        }\n      })\n  });\n\n  return (\n    <Stack sx={{ rowGap: 3 }}>\n      <Stack sx={{ padding: 4, flexDirection: 'row', columnGap: 3, paddingBottom: 1 }}>\n        <Avatar sx={{ background: '#DDDDDD', width: '5rem', height: '5rem' }}>\n          <CandidateIcon\n            existingCandidate={candidate?.existing_candidate}\n            sx={{ fontSize: '4rem' }}\n          />\n        </Avatar>\n        <Stack>\n          {candidate.employee_id && (\n            <Stack\n              sx={{ color: '#666666', fontSize: '10px', fontWeight: 'bold', marginLeft: '2px' }}\n            >\n              EMPLOYEE ID: {candidate.employee_id}\n            </Stack>\n          )}\n          <Stack sx={{ rowGap: 1 }}>\n            <Stack sx={styles.candidateNameContainer}>\n              <Stack>\n                {candidate.firstname} {candidate.lastname}\n              </Stack>\n              {candidate.linkedin_url && (\n                <Button\n                  variant=\"outlined\"\n                  sx={styles.linkedInButton}\n                  disableRipple\n                  onClick={() =>\n                    candidate.linkedin_url && window.open(candidate.linkedin_url, '_blank')\n                  }\n                >\n                  <LinkedInIcon sx={{ fontSize: '17px' }} />\n                </Button>\n              )}\n            </Stack>\n            <Stack sx={{ flexDirection: 'row', columnGap: '5rem' }}>\n              <Stack sx={{ rowGap: 1 }}>\n                <Stack sx={styles.candidateProfileDetails}>\n                  <PhoneIcon sx={{ color: '#084D6D' }} />\n                  {candidate.phone1}\n                </Stack>\n                <Stack sx={styles.candidateProfileDetails}>\n                  <EmailIcon sx={{ color: '#084D6D' }} />\n                  {candidate.email}\n                </Stack>\n              </Stack>\n              <Stack sx={{ rowGap: 1 }}>\n                {candidate.phone2 && (\n                  <Stack sx={styles.candidateProfileDetails}>\n                    <PhoneIphoneIcon sx={{ color: '#084D6D' }} />\n                    {candidate.phone2 || '-'}\n                  </Stack>\n                )}\n                <Stack sx={styles.candidateProfileAddress}>\n                  <LocationOnIcon sx={{ color: '#084D6D' }} />\n                  {candidate.address_details ? formatAddress(candidate.address_details) : '-'}\n                </Stack>\n              </Stack>\n            </Stack>\n          </Stack>\n        </Stack>\n      </Stack>\n      <Stack sx={styles.candidateSectionContainer}>\n        <Stack sx={styles.candidateSectionHeader}>Applications</Stack>\n        <GenericTable\n          label=\"candidate applications\"\n          items={applications?.res?.applications || []}\n          isLoadingItems={loadingApplications}\n          tableState={CandidateState.candidateApplicationsTableState}\n          dispatch={dispatch}\n          headerStyle={headerStyle}\n          paginationState={CandidateState.candidateApplicationsTableSettings}\n          pagination={{\n            totalItems: Number(applications?.resHead['x-total-count']) || 0,\n            totalPages: Number(applications?.resHead['x-total-pages']) || 0\n          }}\n          TableRows={CandidateApplicationsTableRows}\n          allowMultipleSelection={false}\n          titleCellId=\"job\"\n        />\n      </Stack>\n      <CandidateTags focused={CandidateState.focused} candidate={candidate} dispatch={dispatch} />\n      <Notepad\n        note={candidate.notepad?.body}\n        updateNote={updateCandidateNotepad}\n        updatingNote={updatingCandidateNotepad}\n      />\n      <CandidateTasks\n        candidate={candidate}\n        CandidateState={CandidateState}\n        dispatch={dispatch}\n        permissions={permissions}\n      />\n    </Stack>\n  );\n}\n","import { SxProps } from '@mui/material';\nimport { classes } from '../Components/GenericTable/styles';\n\nexport const candidateApplicationsTableColumn = [\n  {\n    id: 'id',\n    label: 'ID',\n    sortable: false,\n    canToggle: false,\n    enabled: true\n  },\n  {\n    id: 'job',\n    label: 'Job',\n    sortable: false,\n    canToggle: false,\n    enabled: true\n  },\n  {\n    id: 'entity',\n    label: 'Entity',\n    sortable: false,\n    canToggle: false,\n    enabled: true\n  },\n  {\n    id: 'created_at',\n    label: 'Date',\n    sortable: true,\n    canToggle: false,\n    enabled: true\n  },\n  {\n    id: 'rating',\n    label: 'Rating',\n    sortable: true,\n    canToggle: false,\n    enabled: true\n  },\n  {\n    id: 'status',\n    label: 'Status',\n    sortable: false,\n    canToggle: false,\n    enabled: true\n  },\n  {\n    id: 'attachments',\n    label: 'Attachments',\n    sortable: false,\n    canToggle: false,\n    enabled: true\n  }\n];\n\nexport const headerStyle = (\n  name: (typeof candidateApplicationsTableColumn)[number]['id'] | 'checkbox' | 'actions',\n  tableHovered: boolean\n): SxProps => {\n  switch (name) {\n    case 'id':\n      return { ...classes.sticky, maxWidth: '100px', width: '100px' };\n    case 'job':\n      return {\n        ...classes.sticky,\n        ...classes.itemTitleTableCell,\n        ...(tableHovered && classes.scrollShadowVisible),\n        left: '100px',\n        minWidth: '150px'\n      };\n    case 'entity':\n      return { minWidth: '100px' };\n    case 'created_at':\n      return { minWidth: '75px' };\n    case 'rating':\n      return { minWidth: '75px' };\n    case 'status':\n      return { minWidth: '120px' };\n    case 'attachments':\n      return { minWidth: '150px' };\n    case 'actions':\n      return {\n        ...classes.actionsColumnHeader,\n        ...(tableHovered && classes.scrollShadowVisible)\n      };\n    default:\n      return { minWidth: '90px' };\n  }\n};\n","import React from 'react';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport Candidate from './Candidate';\n\nconst queryClient = new QueryClient({\n  defaultOptions: {\n    queries: {\n      refetchOnWindowFocus: false\n    }\n  }\n});\n\nexport default function CandidatePage({\n  candidateId,\n  isAdminUser\n}: {\n  candidateId: number;\n  isAdminUser: boolean;\n}) {\n  return (\n    <QueryClientProvider client={queryClient}>\n      <Candidate candidateId={candidateId} isAdminUser={isAdminUser} />\n    </QueryClientProvider>\n  );\n}\n","import React, { useReducer } from 'react';\nimport { InitialCandidatesState, CandidatesReducer } from './reducer';\nimport { Stack } from '@mui/material';\nimport { useQuery, useMutation } from '@tanstack/react-query';\nimport Api from './API';\nimport { styles } from './styles';\nimport Search from '../SmartForms/Search';\nimport GenericTable from '../Components/GenericTable/GenericTable';\nimport { headerStyle, candidatesActionsListItem } from './config';\nimport CandidatesTableRows from './CandidatesTableRows';\nimport StyledSnackbar, { ISnackbarInput } from '../Components/CustomUIElements/StyledSnackbar';\nimport EditCandidate from './EditCandidate';\nimport DeleteCandidate from './DeleteCandidate';\nimport { formatUserPermissions } from '../Components/Utilities/formatUserPermissions';\nimport { getPermissions } from '../../shared/permissionHelpers';\n\nexport default function Candidates({ isAdminUser }: { isAdminUser: boolean }) {\n  const [CandidatesState, dispatch] = useReducer(CandidatesReducer, InitialCandidatesState);\n\n  const { data: permissions } = useQuery({\n    queryKey: ['permissions'],\n    queryFn: async () => {\n      const res = await getPermissions();\n      return formatUserPermissions(res);\n    },\n    onError: (error) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting user permissions, ${error}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n\n  const { isFetched: fetchedPreferences } = useQuery({\n    queryKey: ['preferences'],\n    queryFn: () => Api.getPreferences(),\n    onSuccess: (pref) => {\n      dispatch({\n        type: 'SET_LIMIT',\n        payload: pref.res.ui_preferences[0]?.row_count || 10\n      });\n      dispatch({\n        type: 'SET_SORT',\n        payload: {\n          sortBy: pref.res.ui_preferences[0]?.sorting?.sortBy || 'lastname',\n          sortOrder: pref.res.ui_preferences[0]?.sorting?.sortOrder?.toLowerCase() || 'asc'\n        }\n      });\n    },\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting user preference data, ${error}`,\n          state: 'error'\n        }\n      })\n  });\n\n  useQuery({\n    queryKey: ['table density'],\n    queryFn: () => Api.getDensityPreferences(),\n    onSuccess: (res) => {\n      dispatch({ type: 'SET_DENSITY', payload: res.res.ui_preferences[0]?.columns?.density });\n    },\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting table density preference, ${error}`,\n          state: 'error'\n        }\n      })\n  });\n\n  const handleUserPreferenceChange = useMutation({\n    mutationFn: () =>\n      Api.postUserPreferences({\n        limit: CandidatesState.candidatesTableSettings.limit,\n        sort: CandidatesState.candidatesTableSettings.sort,\n        sortOrder: CandidatesState.candidatesTableSettings.sort_order\n      }),\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error updating user preferences, ${error}`,\n          state: 'error'\n        }\n      })\n  });\n\n  const { data: candidates, isLoading: loadingCandidates } = useQuery({\n    queryKey: ['candidates', CandidatesState.candidatesTableSettings, CandidatesState.searchQuery],\n    queryFn: async () => {\n      const res = await Api.getCandidates({\n        page: CandidatesState.candidatesTableSettings.page,\n        limit: CandidatesState.candidatesTableSettings.limit,\n        sort: CandidatesState.candidatesTableSettings.sort,\n        sort_order: CandidatesState.candidatesTableSettings.sort_order,\n        'q[search]': CandidatesState.searchQuery.replace('+', '%2B')\n      });\n      return res;\n    },\n    onSuccess: () => {\n      handleUserPreferenceChange.mutate();\n      sessionStorage.setItem(\n        `candidatesTablePage`,\n        CandidatesState.candidatesTableSettings.page.toString()\n      );\n    },\n    enabled: fetchedPreferences\n  });\n\n  const editedCandidate = CandidatesState.candidatesTableState.actions.selectedItem;\n  const openEditModal = CandidatesState.candidatesTableState.actions.isOpen.edit;\n  const filteredTableActionList = () => {\n    if (isAdminUser) {\n      return candidatesActionsListItem;\n    } else if (permissions?.Candidates['Edit Candidates']) {\n      return candidatesActionsListItem.filter((item) => item.id !== 'delete');\n    } else {\n      return undefined;\n    }\n  };\n\n  return (\n    <Stack sx={styles.candidatesPageContainer}>\n      <Stack sx={styles.candidatesPageHeader}>Candidates</Stack>\n      <Search\n        idLabel=\"candidates\"\n        placeholder=\"Search by name or email\"\n        setSearch={(query) => dispatch({ type: 'SET_SEARCH_QUERY', payload: query })}\n      />\n      <GenericTable\n        label=\"candidates list\"\n        items={candidates?.res?.candidates || []}\n        isLoadingItems={loadingCandidates}\n        tableState={CandidatesState.candidatesTableState}\n        dispatch={dispatch}\n        headerStyle={headerStyle}\n        paginationState={CandidatesState.candidatesTableSettings}\n        pagination={{\n          totalItems: Number(candidates?.resHead['x-total-count']) || 0,\n          totalPages: Number(candidates?.resHead['x-total-pages']) || 0\n        }}\n        TableRows={CandidatesTableRows}\n        TableActionList={filteredTableActionList()}\n        allowMultipleSelection={false}\n        titleCellId=\"lastname\"\n      />\n      <StyledSnackbar\n        message={CandidatesState.snackbar.message}\n        state={CandidatesState.snackbar.state}\n        setSnackbarState={(snackbarInput: ISnackbarInput) =>\n          dispatch({ type: 'SET_SNACKBAR', payload: snackbarInput })\n        }\n      />\n      {CandidatesState.candidatesTableState.actions.selectedItem?.id && (\n        <DeleteCandidate\n          isDialogOpen={CandidatesState.candidatesTableState.actions.isOpen.delete}\n          candidateId={CandidatesState.candidatesTableState.actions.selectedItem?.id}\n          CandidatesDispatch={dispatch}\n        />\n      )}\n      {editedCandidate && openEditModal && (\n        <EditCandidate\n          candidates={candidates}\n          CandidatesState={CandidatesState}\n          editedCandidate={editedCandidate}\n          CandidatesDispatch={dispatch}\n        />\n      )}\n    </Stack>\n  );\n}\n","import React from 'react';\nimport { CandidatesState } from './types';\nimport { TCandidate } from './types';\nimport { TableCell } from '@mui/material';\nimport { classes } from '../../NewUI/Components/GenericTable/styles';\nimport CandidateIcon from '../Candidate/CandidateIcon';\n\nconst CandidatesTableRows = ({\n  column,\n  item,\n  tableHovered\n}: {\n  column: CandidatesState['candidatesTableState']['columns'][number];\n  item: TCandidate;\n  tableHovered: boolean;\n}) => {\n  if (!column.enabled) return null;\n  const Link = ({ attribute }: { attribute: 'id' | 'lastname' | 'firstname' }) => (\n    <a href={`/admin/candidates/${item.id}`} id={`candidate-${attribute}-link`}>\n      {item[attribute] || '-'}\n    </a>\n  );\n  switch (column.id) {\n    case 'id':\n      return (\n        <TableCell\n          key={item.id + column.id}\n          sx={{\n            ...classes.sticky,\n            ...classes.idTableCell,\n            minWidth: '100px',\n            left: '0px'\n          }}\n        >\n          <CandidateIcon\n            existingCandidate={item?.existing_candidate}\n            sx={{\n              fontSize: '1rem',\n              margin: '-3px 7px 0 0'\n            }}\n          />\n          <Link attribute=\"id\" />\n        </TableCell>\n      );\n    case 'lastname':\n      return (\n        <TableCell\n          key={item.id + column.id}\n          sx={{\n            ...classes.sticky,\n            ...classes.itemTitleTableCell,\n            ...(tableHovered && classes.scrollShadowVisible),\n            left: '100px',\n            minWidth: '125px'\n          }}\n        >\n          <Link attribute=\"lastname\" />\n        </TableCell>\n      );\n    case 'firstname':\n      return (\n        <TableCell\n          key={item.id + column.id}\n          sx={{ ...classes.itemTitleTableCell, minWidth: '125px' }}\n        >\n          <Link attribute=\"firstname\" />\n        </TableCell>\n      );\n    case 'email':\n      return <TableCell key={item.id + column.id}>{item.email || '-'}</TableCell>;\n    case 'location':\n      return (\n        <TableCell key={item.id + column.id}>\n          {item.address_details?.suburb || '-'}\n          {item.address_details?.state?.abbreviation &&\n            `, ${item.address_details.state.abbreviation}`}\n        </TableCell>\n      );\n    case 'applications':\n      return <TableCell key={item.id + column.id}>{item.number_of_applications || '-'}</TableCell>;\n    default:\n      return <TableCell></TableCell>;\n  }\n};\n\nexport default CandidatesTableRows;\n","import React, { useState, Dispatch } from 'react';\nimport { Box, Stack } from '@mui/material';\nimport GenericDialog from '../Components/Modals/GenericDialog';\nimport { FormTextField } from '../Components/CustomUIElements/FormTextField';\nimport { CandidatesAction } from './types';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from './API';\nimport { CandidateAction } from '../Candidate/types';\n\nexport default function DeleteCandidate({\n  isDialogOpen,\n  candidateId,\n  CandidatesDispatch,\n  CandidateDispatch\n}: {\n  isDialogOpen: boolean;\n  candidateId: number;\n  CandidatesDispatch?: Dispatch<CandidatesAction>;\n  CandidateDispatch?: Dispatch<CandidateAction>;\n}) {\n  const [confirmDelete, setConfirmDelete] = useState<string>('');\n  const queryClient = useQueryClient();\n\n  const deleteCandidate = useMutation({\n    mutationFn: () => Api.deleteCandidate(candidateId),\n    onSuccess: () => {\n      const successSnackbarPayload: {\n        type: 'SET_SNACKBAR';\n        payload: { message: string; state: 'success' };\n      } = {\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `Candidate has been deleted`,\n          state: 'success'\n        }\n      };\n      CandidatesDispatch && CandidatesDispatch(successSnackbarPayload);\n      CandidateDispatch && CandidateDispatch(successSnackbarPayload);\n      if (CandidatesDispatch) {\n        queryClient.removeQueries(['candidates']);\n        CandidatesDispatch({ type: 'CLOSE_ACTION_ITEM', payload: 'delete' });\n      } else {\n        CandidateDispatch && CandidateDispatch({ type: 'OPEN_DELETE_MODAL', payload: false });\n        window.location.href = `${window.location.origin}/admin/candidates`;\n      }\n    },\n    onError: (error) => {\n      const errorSnackbarPayload: {\n        type: 'SET_SNACKBAR';\n        payload: { message: string; state: 'error' };\n      } = {\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error deleting candidate, ${error}`,\n          state: 'error'\n        }\n      };\n      CandidatesDispatch && CandidatesDispatch(errorSnackbarPayload);\n      CandidateDispatch && CandidateDispatch(errorSnackbarPayload);\n    }\n  });\n\n  const dialogDescription = (\n    <Stack sx={{ color: '#000000', rowGap: 2 }}>\n      <Box>\n        This will <b>permanently</b> delete the candidate and all associated applications\n      </Box>\n      <Stack sx={{ rowGap: 1, alignItems: 'center' }}>\n        <Box sx={{ color: '#939393', fontSize: '14px', '& b': { color: '#000000' } }}>\n          Type the word <b>DELETE</b> in the text field below to\n          <Box>confirm deletion</Box>\n        </Box>\n        <FormTextField value={confirmDelete} onChange={(e) => setConfirmDelete(e.target.value)} />\n      </Stack>\n    </Stack>\n  );\n  return (\n    <GenericDialog\n      isDialogOpen={isDialogOpen}\n      setDialogOpen={() => {\n        CandidatesDispatch &&\n          CandidatesDispatch({\n            type: 'CLOSE_ACTION_ITEM',\n            payload: 'delete'\n          });\n        CandidateDispatch && CandidateDispatch({ type: 'OPEN_DELETE_MODAL', payload: false });\n      }}\n      title=\"Are you sure you want to delete this candidate?\"\n      description={dialogDescription}\n      buttonCallback={() => deleteCandidate.mutate()}\n      callbackLoading={deleteCandidate.isLoading}\n      buttonText=\"Delete\"\n      url=\"\"\n      disablePrimaryButton={confirmDelete !== 'DELETE'}\n      primaryButtonId=\"delete-candidate-button\"\n      secondaryButtonId=\"cancel-delete-candidate-button\"\n    />\n  );\n}\n","import React, { Dispatch, useState } from 'react';\nimport { Stack, Autocomplete, TextField } from '@mui/material';\nimport StyledModal from '../Components/GenericModal/StyledModal';\nimport { CandidatesAction, CandidatesState } from './types';\nimport { FormTextField } from '../Components/CustomUIElements/FormTextField';\nimport ModalFooterButtons from '../Components/GenericModal/ModalFooterButtons';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from './API';\nimport { ICountries, IStates } from '../Components/sharedTypes';\nimport { sharedClasses } from '../Components/CustomUIElements/sharedClasses';\nimport { TCandidate } from './types';\nimport { styles } from './styles';\nimport { CandidateAction, CandidateState } from '../Candidate/types';\nimport { streetTypes } from './config';\n\nexport const validateEmail = (email: string) => {\n  return String(email)\n    .toLowerCase()\n    .match(\n      /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|.(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n    );\n};\n\nconst EditCandidate = ({\n  candidates,\n  editedCandidate,\n  CandidateState,\n  CandidateDispatch,\n  CandidatesState,\n  CandidatesDispatch\n}: {\n  candidates?: { res: { candidates: TCandidate[] }; resHead: any };\n  editedCandidate: TCandidate;\n  CandidateState?: CandidateState;\n  CandidateDispatch?: Dispatch<CandidateAction>;\n  CandidatesState?: CandidatesState;\n  CandidatesDispatch?: Dispatch<CandidatesAction>;\n}) => {\n  const [country, setCountry] = useState<ICountries | null>(null);\n  const [state, setState] = useState<IStates | null>(null);\n  const [candidate, setCandidate] = useState<TCandidate>(editedCandidate);\n  const [errors, setErrors] = useState<Record<string, string>>({});\n  const queryClient = useQueryClient();\n\n  const validateLinkedInURL = (url: string) => {\n    return String(url)\n      .toLowerCase()\n      .match(/^(http(s)?:\\/\\/)?([\\w]+\\.)?linkedin\\.com\\/(pub|in|profile)\\/([-a-zA-Z0-9]+)\\/*/gm);\n  };\n\n  const validateInputs = () => {\n    setErrors({});\n    const inputErrors: Record<string, string> = {};\n    if (!candidate.firstname.trim()) inputErrors.firstname = 'First name can not be empty';\n    if (!candidate.lastname.trim()) inputErrors.lastname = 'Last name can not be empty';\n    if (!validateEmail(candidate.email)) inputErrors.email = 'Please enter a proper email address';\n    if (candidate.linkedin_url && !validateLinkedInURL(candidate.linkedin_url))\n      inputErrors.linkedin = 'Please enter a proper LinkedIn URL';\n    if (!candidate.phone1.trim()) {\n      inputErrors.phone = 'Phone can not be empty';\n    } else if (!Number(candidate.phone1)) {\n      inputErrors.phone = 'Please enter a proper phone number';\n    }\n    if (candidate.phone2?.trim() && !Number(candidate.phone2))\n      inputErrors.mobile = 'Please enter a proper mobile number';\n    if (!candidate?.address_details?.street1?.trim())\n      inputErrors.address = 'Street address can not be empty';\n    if (!candidate?.address_details?.suburb?.trim())\n      inputErrors.suburb = 'City, town or suburb can not be empty';\n    if (!candidate?.address_details?.postcode?.trim())\n      inputErrors.postcode = 'Postcode can not be empty';\n    if (!country) inputErrors.country = 'Country can not be empty';\n    if (!state) inputErrors.state = 'State can not be empty';\n    setErrors(inputErrors);\n    return !Object.keys(inputErrors).length;\n  };\n\n  const { data: countriesStates } = useQuery({\n    queryKey: ['countries states'],\n    queryFn: async () => {\n      const { res } = await Api.getCountriesStates();\n      return res;\n    },\n    onSuccess: (res) => {\n      setCountry(res.find((r: ICountries) => r.id === candidate?.address_details?.country?.id));\n      setState(\n        res\n          .find((r: ICountries) => r.id === candidate?.address_details?.country?.id)\n          ?.states?.find((s: IStates) => s.id === candidate?.address_details?.state?.id)\n      );\n    },\n    onError: (error) => {\n      const errorSnackbarPayload: {\n        type: 'SET_SNACKBAR';\n        payload: { message: string; state: 'error' };\n      } = {\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting countries and states data, ${error}`,\n          state: 'error'\n        }\n      };\n      CandidatesDispatch && CandidatesDispatch(errorSnackbarPayload);\n      CandidateDispatch && CandidateDispatch(errorSnackbarPayload);\n    }\n  });\n\n  const candidateData = {\n    firstname: candidate.firstname,\n    lastname: candidate.lastname,\n    employee_id: candidate.employee_id,\n    email: candidate.email,\n    linkedin_url: candidate.linkedin_url,\n    phone1: candidate.phone1,\n    phone2: candidate.phone2\n  };\n\n  const candidateAddress = {\n    street1: candidate?.address_details?.street1,\n    street2: candidate?.address_details?.street2,\n    suburb: candidate?.address_details?.suburb,\n    postcode: candidate?.address_details?.postcode,\n    street_number: candidate?.address_details?.street_number || '',\n    street_type: candidate?.address_details?.street_type\n  };\n\n  const { mutate: updateCandidate, isLoading: updatingCandidate } = useMutation({\n    mutationFn: (arg: { countryId: number; stateId: number }) =>\n      Api.updateCandidate(candidate.id, {\n        ...candidateData,\n        address_attributes: {\n          ...candidateAddress,\n          country_id: arg.countryId,\n          state_id: arg.stateId\n        }\n      }),\n    onError: (error: { error: string }) => {\n      const errorSnackbarPayload: {\n        type: 'SET_SNACKBAR';\n        payload: { message: string; state: 'error' };\n      } = {\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error updating candidate, ${error.error}`,\n          state: 'error'\n        }\n      };\n      CandidatesDispatch && CandidatesDispatch(errorSnackbarPayload);\n      CandidateDispatch && CandidateDispatch(errorSnackbarPayload);\n    },\n    onSuccess: () => {\n      if (!country || !state) return;\n      const successSnackbarPayload: {\n        type: 'SET_SNACKBAR';\n        payload: { message: string; state: 'success' };\n      } = {\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `Candidate has been updated.`,\n          state: 'success'\n        }\n      };\n      CandidatesDispatch && CandidatesDispatch(successSnackbarPayload);\n      CandidateDispatch && CandidateDispatch(successSnackbarPayload);\n      if (candidates) {\n        const newCandidates = [...candidates.res.candidates];\n        const index = newCandidates.findIndex((e) => e.id === candidate.id);\n        newCandidates[index] = {\n          ...newCandidates[index],\n          ...candidateData,\n          address_details: {\n            ...newCandidates[index].address_details,\n            ...candidateAddress,\n            country: {\n              ...newCandidates[index].address_details.country,\n              id: country.id,\n              name: country.name\n            },\n            state: state\n          }\n        };\n        queryClient.setQueryData(\n          ['candidates', CandidatesState?.candidatesTableSettings, CandidatesState?.searchQuery],\n          {\n            ...candidates,\n            res: { candidates: newCandidates }\n          }\n        );\n        queryClient.invalidateQueries(['candidates']);\n        CandidatesDispatch && CandidatesDispatch({ type: 'CLOSE_ACTION_ITEM', payload: 'edit' });\n      } else {\n        const updatedCandidate = {\n          ...editedCandidate,\n          ...candidateData,\n          address_details: {\n            ...editedCandidate.address_details,\n            ...candidateAddress,\n            country: country,\n            state: state\n          }\n        };\n        queryClient.setQueryData(['candidate'], updatedCandidate);\n        queryClient.invalidateQueries(['candidate']);\n        CandidateDispatch && CandidateDispatch({ type: 'OPEN_EDIT_MODAL', payload: false });\n      }\n    }\n  });\n\n  return (\n    <StyledModal\n      isOpen={\n        !!CandidatesState?.candidatesTableState.actions.isOpen.edit ||\n        !!CandidateState?.openEditModal\n      }\n      label=\"Edit Candidate\"\n      handleClose={() => {\n        CandidatesDispatch && CandidatesDispatch({ type: 'CLOSE_ACTION_ITEM', payload: 'edit' });\n        CandidateDispatch && CandidateDispatch({ type: 'OPEN_EDIT_MODAL', payload: false });\n      }}\n      styleOverrides={{ maxHeight: '625px', maxWidth: '800px', padding: '40px' }}\n      closeIconId=\"close-edit-candidate-button\"\n    >\n      <Stack sx={{ width: '100%', height: '100%', rowGap: 4 }}>\n        <Stack sx={{ fontWeight: 'bold', color: '#084D6D', fontSize: '25px' }}>\n          {editedCandidate.firstname} {editedCandidate.lastname}\n        </Stack>\n        <Stack sx={styles.editCandidateModalContent}>\n          <Stack sx={{ rowGap: 2 }}>\n            <Stack sx={styles.editCandidateModalDetailsHeader}>Candidate Details</Stack>\n            <Stack sx={styles.editCandidateModalDetailsRows}>\n              <FormTextField\n                label=\"First name\"\n                value={candidate.firstname}\n                required\n                fullWidth\n                onChange={(v) => setCandidate({ ...candidate, firstname: v.target.value })}\n                error={errors.firstname}\n              />\n              <FormTextField\n                label=\"Last name\"\n                value={candidate.lastname}\n                required\n                fullWidth\n                onChange={(v) => setCandidate({ ...candidate, lastname: v.target.value })}\n                error={errors.lastname}\n              />\n            </Stack>\n            <Stack sx={styles.editCandidateModalDetailsRows}>\n              <FormTextField\n                label=\"Employee ID\"\n                value={candidate.employee_id || ''}\n                fullWidth\n                onChange={(v) => setCandidate({ ...candidate, employee_id: v.target.value })}\n              />\n              <FormTextField\n                label=\"LinkedIn URL\"\n                value={candidate.linkedin_url || ''}\n                fullWidth\n                onChange={(v) => setCandidate({ ...candidate, linkedin_url: v.target.value })}\n                error={errors.linkedin}\n              />\n            </Stack>\n          </Stack>\n          <Stack sx={{ rowGap: 2 }}>\n            <Stack sx={styles.editCandidateModalDetailsHeader}>Contact Details</Stack>\n            <Stack>\n              <FormTextField\n                label=\"Email\"\n                value={candidate.email}\n                required\n                fullWidth\n                onChange={(v) => setCandidate({ ...candidate, email: v.target.value })}\n                error={errors.email}\n              />\n            </Stack>\n            <Stack sx={styles.editCandidateModalDetailsRows}>\n              <FormTextField\n                label=\"Phone\"\n                value={candidate.phone1}\n                onChange={(v) => setCandidate({ ...candidate, phone1: v.target.value })}\n                fullWidth\n                required\n                helperText=\"Digits only or add + for international numbers\"\n                error={errors.phone}\n              />\n              <FormTextField\n                label=\"Mobile\"\n                value={candidate.phone2}\n                onChange={(v) => setCandidate({ ...candidate, phone2: v.target.value })}\n                fullWidth\n                helperText=\"Digits only or add + for international numbers\"\n                error={errors.mobile}\n              />\n            </Stack>\n            <Stack sx={styles.editCandidateModalDetailsRows}>\n              <FormTextField\n                label=\"Street address\"\n                value={candidate?.address_details?.street1 || ''}\n                fullWidth\n                onChange={(v) =>\n                  setCandidate({\n                    ...candidate,\n                    address_details: { ...candidate.address_details, street1: v.target.value }\n                  })\n                }\n                required\n                error={errors.address}\n              />\n              <FormTextField\n                label=\"Street address cont'd\"\n                value={candidate?.address_details?.street2 || ''}\n                fullWidth\n                onChange={(v) =>\n                  setCandidate({\n                    ...candidate,\n                    address_details: { ...candidate.address_details, street2: v.target.value }\n                  })\n                }\n              />\n            </Stack>\n            <Stack sx={styles.editCandidateModalDetailsRows}>\n              <FormTextField\n                label=\"Street number\"\n                value={candidate?.address_details?.street_number || ''}\n                fullWidth\n                onChange={(v) =>\n                  setCandidate({\n                    ...candidate,\n                    address_details: { ...candidate.address_details, street_number: v.target.value }\n                  })\n                }\n              />\n              <Autocomplete\n                filterSelectedOptions\n                disablePortal\n                autoHighlight\n                includeInputInList\n                value={candidate?.address_details?.street_type}\n                options={streetTypes}\n                getOptionLabel={(option) => option}\n                onChange={(_event, newValue) =>\n                  setCandidate({\n                    ...candidate,\n                    address_details: { ...candidate.address_details, street_type: newValue }\n                  })\n                }\n                sx={{\n                  ...sharedClasses.formAutocomplete,\n                  ...styles.streetTypesAutocomplete\n                }}\n                ListboxProps={{ style: styles.editCandidateListboxStyle }}\n                renderInput={(params) => (\n                  <TextField\n                    {...params}\n                    label=\"Street type\"\n                    InputLabelProps={{ shrink: true }}\n                    placeholder=\"Please select\"\n                    sx={styles.editCandidateAutocompleteTextfield}\n                  />\n                )}\n              />\n            </Stack>\n            <Stack sx={styles.editCandidateModalDetailsRows}>\n              <FormTextField\n                label=\"City, town or suburb\"\n                value={candidate?.address_details?.suburb || ''}\n                fullWidth\n                onChange={(v) =>\n                  setCandidate({\n                    ...candidate,\n                    address_details: { ...candidate.address_details, suburb: v.target.value }\n                  })\n                }\n                required\n                error={errors.suburb}\n              />\n              <FormTextField\n                label=\"Postcode or zipcode\"\n                value={candidate?.address_details?.postcode || ''}\n                fullWidth\n                onChange={(v) =>\n                  setCandidate({\n                    ...candidate,\n                    address_details: { ...candidate.address_details, postcode: v.target.value }\n                  })\n                }\n                required\n                error={errors.postcode}\n              />\n            </Stack>\n            <Stack sx={styles.editCandidateModalDetailsRows}>\n              <Autocomplete\n                filterSelectedOptions\n                disablePortal\n                autoHighlight\n                includeInputInList\n                value={country}\n                options={countriesStates || []}\n                getOptionLabel={(option) => option.name}\n                onChange={(_event, newValue) => {\n                  if (newValue) {\n                    const newErrors = { ...errors };\n                    delete newErrors.country;\n                    setErrors(newErrors);\n                  }\n                  setCountry(newValue);\n                  setState(null);\n                }}\n                sx={{\n                  ...sharedClasses.formAutocomplete,\n                  width: '100%',\n                  paddingTop: 3,\n                  '.MuiInputBase-root': { margin: '3px 0px' }\n                }}\n                ListboxProps={{ style: styles.editCandidateListboxStyle }}\n                renderInput={(params) => (\n                  <TextField\n                    {...params}\n                    label=\"Country\"\n                    InputLabelProps={{ shrink: true }}\n                    placeholder=\"Please select\"\n                    sx={styles.editCandidateAutocompleteTextfield}\n                    required\n                    error={!country}\n                    helperText={errors.country}\n                  />\n                )}\n              />\n              <Autocomplete\n                filterSelectedOptions\n                disablePortal\n                autoHighlight\n                includeInputInList\n                value={state}\n                options={country?.states || []}\n                getOptionLabel={(option) => option.name}\n                onChange={(_event, newValue) => {\n                  if (newValue) {\n                    const newErrors = { ...errors };\n                    delete newErrors.state;\n                    setErrors(newErrors);\n                  }\n                  setState(newValue);\n                }}\n                disabled={!country}\n                sx={{\n                  ...sharedClasses.formAutocomplete,\n                  width: '100%',\n                  paddingTop: 3,\n                  '.MuiInputBase-root': { margin: '3px 0px' }\n                }}\n                ListboxProps={{ style: styles.editCandidateListboxStyle }}\n                renderInput={(params) => (\n                  <TextField\n                    {...params}\n                    label=\"State, region or province\"\n                    InputLabelProps={{ shrink: true }}\n                    placeholder=\"Please select\"\n                    sx={styles.editCandidateAutocompleteTextfield}\n                    required\n                    error={!state}\n                    helperText={errors.state}\n                  />\n                )}\n              />\n            </Stack>\n          </Stack>\n        </Stack>\n        <ModalFooterButtons\n          primaryButtonText=\"Save\"\n          primaryButtonCallback={() => {\n            if (validateInputs() && country && state)\n              updateCandidate({ countryId: country.id, stateId: state.id });\n          }}\n          primaryButtonID=\"save-candidate-button\"\n          secondaryButtonText=\"Cancel\"\n          secondaryButtonCallback={() => {\n            CandidatesDispatch &&\n              CandidatesDispatch({ type: 'CLOSE_ACTION_ITEM', payload: 'edit' });\n            CandidateDispatch && CandidateDispatch({ type: 'OPEN_EDIT_MODAL', payload: false });\n          }}\n          secondaryButtonID=\"cancel-edit-candidate-button\"\n          isLoading={updatingCandidate}\n        />\n      </Stack>\n    </StyledModal>\n  );\n};\n\nexport default EditCandidate;\n","import React from 'react';\nimport { SxProps } from '@mui/material';\nimport { classes } from '../Components/GenericTable/styles';\nimport { ActionListItem } from '../Components/GenericTable/GenericTableActions';\nimport { Edit as EditIcon, Delete as DeleteIcon } from '@mui/icons-material';\n\nexport const candidatesTableColumn = [\n  {\n    id: 'id',\n    label: 'ID',\n    sortable: true,\n    canToggle: false,\n    enabled: true\n  },\n  {\n    id: 'lastname',\n    label: 'Last Name',\n    sortable: true,\n    canToggle: true,\n    enabled: true\n  },\n  {\n    id: 'firstname',\n    label: 'First Name',\n    sortable: true,\n    canToggle: true,\n    enabled: true\n  },\n  {\n    id: 'email',\n    label: 'Email Address',\n    sortable: true,\n    canToggle: true,\n    enabled: true\n  },\n  {\n    id: 'location',\n    label: 'Location',\n    sortable: false,\n    canToggle: false,\n    enabled: true\n  },\n  {\n    id: 'applications',\n    label: 'Applications',\n    sortable: false,\n    canToggle: false,\n    enabled: true\n  }\n];\n\nexport const headerStyle = (\n  name: (typeof candidatesTableColumn)[number]['id'] | 'checkbox' | 'actions',\n  tableHovered: boolean\n): SxProps => {\n  switch (name) {\n    case 'id':\n      return { ...classes.sticky, maxWidth: '100px', width: '100px' };\n    case 'lastname':\n      return {\n        ...classes.sticky,\n        ...classes.itemTitleTableCell,\n        ...(tableHovered && classes.scrollShadowVisible),\n        left: '100px',\n        minWidth: '125px'\n      };\n    case 'firstname':\n      return { minWidth: '125px' };\n    case 'email':\n      return { minWidth: '240px' };\n    case 'location':\n      return { minWidth: '150px' };\n    case 'applications':\n      return { minWidth: '200px' };\n    case 'actions':\n      return {\n        ...classes.actionsColumnHeader,\n        ...(tableHovered && classes.scrollShadowVisible)\n      };\n    default:\n      return { minWidth: '90px' };\n  }\n};\n\nexport const candidatesActionsListItem: ActionListItem[] = [\n  {\n    id: 'edit',\n    tooltipLabel: 'Edit',\n    icon: <EditIcon />,\n    elementId: 'edit-candidate-button'\n  },\n  {\n    id: 'delete',\n    tooltipLabel: 'Delete',\n    icon: <DeleteIcon sx={{ color: '#E37D7A !important' }} />,\n    elementId: 'delete-candidate-button'\n  }\n];\n\nexport const streetTypes = [\n  'Alley',\n  'Arcade',\n  'Avenue',\n  'Boulevard',\n  'Bypass',\n  'Circuit',\n  'Close',\n  'Corner',\n  'Court',\n  'Crescent',\n  'Cul-de-sac',\n  'Drive',\n  'Esplanade',\n  'Green',\n  'Grove',\n  'Highway',\n  'Junction',\n  'Lane',\n  'Link',\n  'Mews',\n  'Parade',\n  'Place',\n  'Ridge',\n  'Road',\n  'Square',\n  'Street',\n  'Terrace'\n];\n","import React from 'react';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport Candidates from './Candidates';\n\nconst queryClient = new QueryClient({\n  defaultOptions: {\n    queries: {\n      refetchOnWindowFocus: false\n    }\n  }\n});\n\nexport default function CandidatesPage({ isAdminUser }: { isAdminUser: boolean }) {\n  return (\n    <QueryClientProvider client={queryClient}>\n      <Candidates isAdminUser={isAdminUser} />\n    </QueryClientProvider>\n  );\n}\n","import React, { forwardRef } from 'react';\nimport { Box, SxProps } from '@mui/material';\nimport { sharedClasses } from '../CustomUIElements/sharedClasses';\n\nconst BetaButton = forwardRef<HTMLElement, { sx?: SxProps }>(({ sx, ...props }, ref) => {\n  return (\n    <Box sx={{ ...sharedClasses.applicationBetaButton, ...sx }} ref={ref} {...props}>\n      BETA\n    </Box>\n  );\n});\nBetaButton.displayName = 'BetaButton';\nexport default BetaButton;\n","import React from 'react';\nimport { Box } from '@mui/material';\nimport { AddCircle as AddCircleIcon } from '@mui/icons-material';\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\nimport { sharedClasses } from '../CustomUIElements/sharedClasses';\n\nconst CreateButton = ({\n  id,\n  ariaLabel,\n  onClick,\n  isOpen,\n  disableDropDown = false\n}: {\n  id: string;\n  ariaLabel: string;\n  onClick: (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;\n  isOpen?: boolean;\n  disableDropDown?: boolean;\n}) => {\n  return (\n    <Box\n      id={id}\n      aria-label={ariaLabel}\n      sx={{\n        ...sharedClasses.createButtonAction,\n        '& div': {\n          ...sharedClasses.createButtonDiv\n        },\n        ...(disableDropDown && {\n          '& div': {\n            ...sharedClasses.createButtonDiv,\n            paddingRight: '16px'\n          }\n        })\n      }}\n      data-testid={id}\n      onClick={onClick}\n    >\n      <AddCircleIcon sx={sharedClasses.addIcon} />\n      <Box>Create</Box>\n      {!disableDropDown && (\n        <ArrowDropDownIcon\n          sx={{\n            ...sharedClasses.dropdownIcon,\n            transform: isOpen ? 'rotate(180deg)' : null\n          }}\n        />\n      )}\n    </Box>\n  );\n};\n\nexport default CreateButton;\n","import { Button, ButtonProps, CircularProgress } from '@mui/material';\nimport React, { FC, Fragment, PropsWithChildren, useEffect, useState } from 'react';\n\ninterface Props extends PropsWithChildren<ButtonProps> {\n  loadingCaption?: string;\n  task: () => Promise<unknown>;\n}\n\ninterface ViewProps extends Props {\n  isLoading: boolean;\n}\n\nexport const LoadingButtonView: FC<ViewProps> = (props) => {\n  const { children, disabled, isLoading, loadingCaption, sx, task, variant, ...rest } = props;\n\n  return (\n    <Button\n      {...rest}\n      disabled={isLoading || disabled}\n      onClick={\n        !isLoading\n          ? (e) => {\n              e.preventDefault();\n              return task();\n            }\n          : undefined\n      }\n      sx={{ display: 'flex', alignItems: 'center', ...sx }}\n      variant={variant ?? 'contained'}\n    >\n      {isLoading ? (\n        <Fragment>\n          <CircularProgress color=\"inherit\" role=\"status\" size={20} />\n          <span>{loadingCaption}</span>\n        </Fragment>\n      ) : (\n        children\n      )}\n    </Button>\n  );\n};\n\nexport const LoadingButton: FC<Props> = (props) => {\n  const { children, task, ...rest } = props;\n  const [isLoading, setLoading] = useState(false);\n\n  const wrappedTask = (): Promise<unknown> => {\n    setLoading(true);\n    return task()\n      .catch()\n      .finally(() => setLoading(false));\n  };\n\n  useEffect(() => {\n    return () => {\n      setLoading(false);\n    };\n  }, []);\n\n  return (\n    <LoadingButtonView {...rest} isLoading={isLoading} task={wrappedTask}>\n      {children}\n    </LoadingButtonView>\n  );\n};\n\nexport default LoadingButton;\n","import React from 'react';\nimport { Button } from '@mui/material';\nimport ChevronLeftIcon from '@mui/icons-material/ChevronLeft';\n\ninterface StepperLeftButtonProps {\n  activeStep: number;\n  onClick: () => void;\n  classes: any;\n}\n\nconst StepperLeftButton: React.FC<StepperLeftButtonProps> = ({ activeStep, onClick, classes }) => {\n  return activeStep !== 0 ? (\n    <Button disableElevation className={classes.buttonSecondaryLight} onClick={onClick}>\n      <ChevronLeftIcon />\n    </Button>\n  ) : null;\n};\n\nexport default StepperLeftButton;\n","import React from 'react';\nimport { Button, CircularProgress } from '@mui/material';\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\n\ninterface StepperRightButtonProps {\n  activeStep: number;\n  steps: string[];\n  isSaving: boolean;\n  onClick: () => void;\n  classes: any;\n  disabled?: boolean;\n}\n\nconst StepperRightButton: React.FC<StepperRightButtonProps> = ({\n  activeStep,\n  steps,\n  isSaving,\n  onClick,\n  classes,\n  disabled\n}) => {\n  return (\n    <Button\n      disabled={disabled || false}\n      disableElevation\n      className={classes.buttonSecondary}\n      style={{ minWidth: 130 }}\n      onClick={onClick}\n      endIcon={isSaving ? null : <ChevronRightIcon />}\n    >\n      {isSaving ? (\n        <CircularProgress size={20} color=\"inherit\" />\n      ) : activeStep + 1 === steps.length ? (\n        'Submit'\n      ) : (\n        'Next'\n      )}\n    </Button>\n  );\n};\n\nexport default StepperRightButton;\n","import React from 'react';\nimport { Chart as ChartJS, ArcElement, Tooltip, Legend, defaults } from 'chart.js';\nimport { Doughnut } from 'react-chartjs-2';\nimport { externalTooltipHandler } from './DonutTooltip';\nimport { IChartData } from './types';\n\nChartJS.register(ArcElement, Tooltip, Legend);\n\nexport default function DonutChart({ data }: { data: IChartData }) {\n  defaults.font.family = 'Source Sans Pro';\n\n  const options = {\n    responsive: true,\n    maintainAspectRatio: false,\n    cutout: 56,\n    borderWidth: 1,\n    plugins: {\n      legend: {\n        display: true,\n        position: 'right',\n        labels: {\n          fontSize: 12,\n          color: '#084D6D'\n        }\n      },\n      tooltip: {\n        enabled: false,\n        external: externalTooltipHandler\n      }\n    },\n    layout: {\n      padding: {\n        left: 10,\n        right: 10,\n        top: 10,\n        bottom: 10\n      }\n    }\n  };\n  const dataset = {\n    labels: data?.labels,\n    datasets: [\n      {\n        data: data?.data,\n        backgroundColor: [\n          '#71E599',\n          '#4D91ED',\n          '#F5DD5B',\n          '#F46F6F',\n          '#D958F0',\n          '#5AC7EF',\n          '#4242EF',\n          '#8045F0',\n          '#FC8D47',\n          '#9DED2F',\n          '#91EBDA',\n          '#F569E0',\n          '#E85096',\n          '#5FA362'\n        ],\n        hoverBackgroundColor: [\n          '#45dd79',\n          '#2176e8',\n          '#f2d32b',\n          '#f03d3d',\n          '#ce2aeb',\n          '#2cb7ea',\n          '#1717eb',\n          '#6219ec',\n          '#fb6f17',\n          '#88dd13',\n          '#60e2c9',\n          '#f137d5',\n          '#e2267d',\n          '#4f8b52'\n        ],\n        hoverOffset: 8\n      }\n    ]\n  };\n\n  return <Doughnut data={dataset} options={options} />;\n}\n","import React from 'react';\nimport {\n  Chart as ChartJS,\n  CategoryScale,\n  LinearScale,\n  PointElement,\n  LineElement,\n  Title,\n  Tooltip,\n  Legend,\n  defaults\n} from 'chart.js';\nimport { Line } from 'react-chartjs-2';\nimport { externalTooltipHandler } from './LineTooltip';\nimport { IChartData } from './types';\nimport moment from 'moment';\n\nChartJS.register(CategoryScale, LinearScale, PointElement, LineElement, Title, Tooltip, Legend);\n\nexport default function LineChart({ data }: { data: IChartData }) {\n  defaults.font.family = 'Source Sans Pro';\n\n  const chartAreaBorder = {\n    id: 'chartAreaBorder',\n    beforeDraw(chart, args, options) {\n      const {\n        ctx,\n        chartArea: { left, top, width, height }\n      } = chart;\n      ctx.save();\n      ctx.strokeStyle = options.borderColor;\n      ctx.lineWidth = options.borderWidth;\n      ctx.setLineDash(options.borderDash || []);\n      ctx.lineDashOffset = options.borderDashOffset;\n      ctx.strokeRect(left, top, width, height);\n      ctx.restore();\n    }\n  };\n\n  const options = {\n    responsive: true,\n    maintainAspectRatio: false,\n    tension: 0.4,\n    plugins: {\n      legend: {\n        display: false\n      },\n      tooltip: {\n        enabled: false,\n        position: 'nearest',\n        external: externalTooltipHandler\n      },\n      chartAreaBorder: {\n        borderColor: '#F0F0F0',\n        borderWidth: 1\n      }\n    },\n    scales: {\n      x: {\n        ticks: {\n          font: {\n            size: 14\n          },\n          color: '#333333'\n        },\n        grid: {\n          display: false,\n          drawBorder: false\n        }\n      },\n      y: {\n        ticks: {\n          font: {\n            size: 12\n          },\n          color: '#A3A3A3'\n        },\n        grid: {\n          display: true,\n          color: '#F0F0F0',\n          drawTicks: false,\n          drawBorder: false\n        }\n      }\n    }\n  };\n  const dataset = {\n    labels: data?.labels.map((date) => moment(date).format('MMM DD')),\n    datasets: [\n      {\n        data: data?.data,\n        pointRadius: 4.5,\n        pointHoverRadius: 7.5,\n        hoverBorderWidth: 18,\n        borderColor: '#084D6D80',\n        hoverBorderColor: '#084D6D24',\n        pointBackgroundColor: '#084D6D',\n        pointBorderColor: '#084D6D70'\n      }\n    ]\n  };\n\n  return <Line options={options} plugins={[chartAreaBorder, Tooltip]} data={dataset} />;\n}\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { FormControl, FormLabel, TextField, Grid, Typography, IconButton } from '@material-ui/core';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport LocationOnIcon from '@material-ui/icons/LocationOn';\nimport CloseIcon from '@material-ui/icons/Close';\nimport ErrorIcon from '@material-ui/icons/Error';\nimport throttle from 'lodash/throttle';\nimport parse from 'autosuggest-highlight/parse';\n\ninterface AddressInputProps {\n  requiredRef: React.Ref<any>;\n  classes: any;\n  value: any;\n  setValue: (value: any) => void;\n  activeError: boolean;\n  answers: any;\n  setAnswers: (answers: any) => void;\n  viewJobsAd?: boolean;\n}\n\nfunction loadScript(src, position, id) {\n  if (!position) {\n    return;\n  }\n\n  const script = document.createElement('script');\n  script.setAttribute('async', '');\n  script.setAttribute('id', id);\n  script.src = src;\n  position.appendChild(script);\n}\n\nconst autocompleteService = { current: null };\nconst placesService = { current: null };\n\nconst COUNTRY_ABBR: Record<string, string> = {\n  Australia: 'au',\n  Canada: 'ca',\n  'New Zealand': 'nz'\n  // Add more countries as necessary\n};\n\nconst AddressInput: React.FC<AddressInputProps> = ({\n  requiredRef,\n  classes,\n  value,\n  setValue,\n  activeError,\n  answers,\n  setAnswers,\n  viewJobsAd\n}) => {\n  const [inputValue, setInputValue] = React.useState(\n    [answers.address, answers.city, answers.state].filter((cur) => cur).join(', ')\n  );\n  const [options, setOptions] = useState([]);\n  const loaded = React.useRef(false);\n\n  if (typeof window !== 'undefined' && !loaded.current) {\n    if (!document.querySelector('#google-maps')) {\n      loadScript(\n        'https://maps.googleapis.com/maps/api/js?key=AIzaSyAF83260uv1i9sjdtsQkK-skJ8fgGCe9_4&libraries=places',\n        document.querySelector('head'),\n        'google-maps'\n      );\n    }\n\n    loaded.current = true;\n  }\n\n  const fetch = useMemo(\n    () =>\n      throttle(\n        (request, callback) => {\n          autocompleteService.current.getPlacePredictions(request, callback);\n        },\n        1000,\n        { trailing: true, leading: false }\n      ),\n    []\n  );\n\n  useEffect(() => {\n    let active = true;\n\n    if (!autocompleteService.current && window.google) {\n      autocompleteService.current = new window.google.maps.places.AutocompleteService();\n    }\n\n    if (viewJobsAd && window.google && !placesService.current) {\n      placesService.current = new window.google.maps.places.PlacesService(\n        document.createElement('div')\n      );\n    }\n\n    if (!autocompleteService.current) return undefined;\n\n    if (inputValue === '') {\n      setOptions(value ? [value] : []);\n      return undefined;\n    }\n\n    fetch(\n      {\n        input: inputValue,\n        componentRestrictions: {\n          country: COUNTRY_ABBR[answers.country] || 'au'\n        },\n        token: new window.google.maps.places.AutocompleteSessionToken(),\n        types: ['address']\n      },\n      (results) => {\n        if (active) {\n          let newOptions = results ? [...(value ? [value] : []), ...results] : [value];\n          setOptions(newOptions);\n        }\n      }\n    );\n\n    if (value && value.terms) {\n      const [country, state, city, ...address] = value.terms.reverse();\n      if (viewJobsAd) {\n        if (inputValue !== answers.address) {\n          setAnswers((prevAnswers) => ({\n            ...prevAnswers,\n            address: inputValue\n          }));\n        }\n      } else {\n        setAnswers((prevAnswers) => ({\n          ...prevAnswers,\n          city: city.value,\n          state: state.value,\n          address: address\n            .reverse()\n            .map((cur) => cur.value)\n            .join(' ')\n        }));\n      }\n    }\n\n    return () => {\n      active = false;\n    };\n  }, [value, inputValue, fetch, answers.country]);\n\n  function removeCountryFromAddress(formattedAddress: string) {\n    const addressComponents = formattedAddress.split(',');\n\n    if (addressComponents.length < 2) {\n      return formattedAddress;\n    }\n\n    const addressWithoutCountry = addressComponents\n      .slice(0, -1)\n      .map((component) => component.trim());\n\n    return addressWithoutCountry.join(', ');\n  }\n\n  const handlePlaceSelect = (newValue) => {\n    if (newValue && placesService.current) {\n      const request = {\n        placeId: newValue.place_id,\n        fields: ['formatted_address', 'place_id']\n      };\n\n      placesService.current.getDetails(request, (place, status) => {\n        if (status === window.google.maps.places.PlacesServiceStatus.OK) {\n          const formattedAddress = removeCountryFromAddress(place.formatted_address);\n          setValue(newValue);\n          setInputValue(formattedAddress);\n        } else {\n          console.error('Error fetching place details:', status);\n        }\n      });\n    }\n  };\n\n  useEffect(() => {\n    if (!inputValue && inputValue !== answers.address) {\n      setAnswers({\n        ...answers,\n        city: '',\n        state: '',\n        address: ''\n      });\n    }\n  }, [inputValue, setAnswers, answers]);\n\n  return (\n    <FormControl\n      ref={requiredRef}\n      fullWidth={true}\n      className={`${classes.formControl} ${classes.medium}`}\n    >\n      <FormLabel required={true} className={classes.label}>\n        {viewJobsAd ? 'Job address' : 'Enter a street address'}\n      </FormLabel>\n      {!viewJobsAd && (\n        <span className={classes.subLabel}>\n          We won’t share your street address. We use your location to find candidates in your area.\n        </span>\n      )}\n      <Autocomplete\n        forcePopupIcon={false}\n        fullWidth={true}\n        getOptionLabel={(option) => (typeof option === 'string' ? option : option.description)}\n        classes={{ root: classes.autoComplete, popper: classes.autoCompletePopper }}\n        filterOptions={(x) => x}\n        options={options}\n        autoComplete\n        includeInputInList\n        filterSelectedOptions\n        value={value}\n        onChange={(event, newValue) => {\n          setOptions(newValue ? [newValue, ...options] : options);\n          viewJobsAd ? handlePlaceSelect(newValue) : setValue(newValue);\n        }}\n        onInputChange={(event, newInputValue) => {\n          setInputValue(newInputValue);\n        }}\n        renderInput={(params) => (\n          <TextField\n            {...params}\n            error={activeError}\n            value={value}\n            placeholder=\"Select an address\"\n            variant=\"outlined\"\n            fullWidth\n            InputProps={{\n              ...params.InputProps,\n              classes: {\n                root: classes.autoCompleteRoot\n              },\n              endAdornment: (\n                <React.Fragment>\n                  {activeError && (\n                    <div className={classes.error}>\n                      <ErrorIcon color=\"error\" />\n                      <span>This field is required</span>\n                    </div>\n                  )}\n                  {inputValue && (\n                    <IconButton\n                      className={classes.autoCompleteClose}\n                      onClick={() => {\n                        setAnswers({ ...answers, address: '', city: '', state: '' });\n                        setValue(null);\n                        setInputValue('');\n                      }}\n                    >\n                      <CloseIcon />\n                    </IconButton>\n                  )}\n                </React.Fragment>\n              )\n            }}\n          />\n        )}\n        renderOption={(option) => {\n          if (!option.structured_formatting) return null;\n          const matches = option.structured_formatting.main_text_matched_substrings;\n          const parts = parse(\n            option.structured_formatting.main_text,\n            matches.map((match) => [match.offset, match.offset + match.length])\n          );\n\n          return (\n            <Grid container alignItems=\"center\">\n              <Grid item>\n                <LocationOnIcon className={classes.icon} />\n              </Grid>\n              <Grid item xs>\n                {parts.map((part, index) => (\n                  <span key={index} style={{ fontWeight: part.highlight ? 700 : 400 }}>\n                    {part.text}\n                  </span>\n                ))}\n                <Typography variant=\"body2\" color=\"textSecondary\">\n                  {option.structured_formatting.secondary_text}\n                </Typography>\n              </Grid>\n            </Grid>\n          );\n        }}\n      />\n    </FormControl>\n  );\n};\n\nexport default AddressInput;\n","import React, { useState } from 'react';\nimport { Box, SxProps } from '@mui/material';\nimport ClearIcon from '@mui/icons-material/Clear';\nimport AttachmentSelector from '../Utilities/AttachmentSelector';\nimport DocTypeIcon from '../Utilities/DocTypeIcon';\nimport { humanFileSize } from '../Utilities/humanFileSize';\nimport { sharedClasses } from './sharedClasses';\n\nconst AttachmentSelectorAndPreview = ({\n  attachments,\n  setAttachments,\n  templateAttachments,\n  selectedPoolIds,\n  styleOverrides\n}: {\n  attachments: any[];\n  setAttachments: any;\n  templateAttachments?: any[];\n  selectedPoolIds?: number[];\n  styleOverrides?: SxProps;\n}) => {\n  const [attachmentHovered, setAttachmentHovered] = useState(-1);\n  const removeAttachment = (index: number) => {\n    if (index === -1) return;\n    const newAttachments = [...attachments];\n    newAttachments.splice(index, 1);\n    setAttachments(newAttachments);\n  };\n  return (\n    <Box sx={{ ...sharedClasses.modalSection, paddingRight: '3px', ...styleOverrides }}>\n      {!selectedPoolIds && (\n        <AttachmentSelector\n          performUpload={false}\n          setFileList={setAttachments}\n          maxSize={50000000}\n          heightOverride=\"240px\"\n        />\n      )}\n      {(attachments?.length > 0 || templateAttachments?.length > 0) && (\n        <>\n          <h3>Attachments</h3>\n          <Box sx={sharedClasses.emailAttachmentsList}>\n            {templateAttachments &&\n              templateAttachments.map((templateAttachment, index) => (\n                <Box\n                  key={templateAttachment.id}\n                  sx={{\n                    ...sharedClasses.emailAttachmentContainer\n                  }}\n                >\n                  <Box sx={sharedClasses.emailAttachmentIcon}>\n                    {DocTypeIcon(templateAttachment.attached_file_name.split('.').pop())}\n                  </Box>\n                  <Box>\n                    <Box sx={sharedClasses.emailAttachmentName}>\n                      {templateAttachment.attached_file_name}\n                    </Box>\n                    <Box sx={sharedClasses.fileSize}>\n                      {humanFileSize(templateAttachment.attached_file_size)}\n                    </Box>\n                  </Box>\n                </Box>\n              ))}\n            {attachments.map((attachment, index) => (\n              <Box\n                key={attachment.path}\n                sx={{\n                  ...sharedClasses.emailAttachmentContainer,\n                  ...(attachmentHovered === index && { cursor: 'pointer' })\n                }}\n                onMouseEnter={() => setAttachmentHovered(index)}\n                onMouseLeave={() => setAttachmentHovered(-1)}\n                onClick={() => removeAttachment(index)}\n              >\n                <Box sx={sharedClasses.emailAttachmentIcon}>\n                  {attachmentHovered === index ? (\n                    <ClearIcon sx={{ '& svg': { color: '#D6827D !important' } }} />\n                  ) : (\n                    DocTypeIcon(attachment.name.split('.').pop())\n                  )}\n                </Box>\n                <Box>\n                  <Box sx={sharedClasses.emailAttachmentName}>\n                    {attachmentHovered === index ? 'Click to remove attachment' : attachment.name}\n                  </Box>\n                  <Box sx={sharedClasses.fileSize}>{humanFileSize(attachment.size)}</Box>\n                </Box>\n              </Box>\n            ))}\n          </Box>\n        </>\n      )}\n    </Box>\n  );\n};\n\nexport default AttachmentSelectorAndPreview;\n","import React, { useState } from 'react';\nimport { Box } from '@mui/material';\nimport DocTypeIcon from '../Utilities/DocTypeIcon';\nimport { humanFileSize } from '../Utilities/humanFileSize';\nimport { sharedClasses } from './sharedClasses';\nimport { theme } from '../../../ThemeContext/ThemeObject';\n\nconst AttachmentPreview = ({ templateAttachments }: { templateAttachments: any[] }) => {\n  return (\n    <Box sx={{ marginTop: '25px' }}>\n      {templateAttachments?.length > 0 && (\n        <>\n          <Box sx={{ color: theme.palette.primary.main, fontSize: '16px', fontWeight: 'bold' }}>\n            Attachments\n          </Box>\n          <Box sx={{ ...sharedClasses.emailAttachmentsList, marginTop: '2rem' }}>\n            {templateAttachments &&\n              templateAttachments.map((templateAttachment, index) => (\n                <Box\n                  key={templateAttachment.id}\n                  sx={{\n                    ...sharedClasses.emailAttachmentContainer\n                  }}\n                >\n                  <Box sx={sharedClasses.emailAttachmentIcon}>\n                    {DocTypeIcon(templateAttachment.attached_file_name.split('.').pop())}\n                  </Box>\n                  <Box>\n                    <Box sx={{ ...sharedClasses.emailAttachmentName, maxWidth: 'fit-content' }}>\n                      {templateAttachment.attached_file_name}\n                    </Box>\n                    <Box sx={sharedClasses.fileSize}>\n                      {humanFileSize(templateAttachment.attached_file_size)}\n                    </Box>\n                  </Box>\n                </Box>\n              ))}\n          </Box>\n        </>\n      )}\n    </Box>\n  );\n};\n\nexport default AttachmentPreview;\n","import React from 'react';\nimport { TextField, InputLabel, Autocomplete } from '@mui/material';\nimport { sharedClasses } from './sharedClasses';\n\ninterface IValueType {\n  key: string | number;\n  label: string;\n}\n\ninterface IArrayValueType {\n  key: string;\n  name: string;\n}\n\ninterface ISelectFieldProps {\n  label?: string;\n  options: any;\n  value: IValueType | IArrayValueType[];\n  optionLabel: any;\n  onChange: (value: string) => void;\n  id?: string;\n  required?: boolean;\n  isLoading?: boolean;\n  multiple?: boolean;\n  loadingText: [string, string];\n  dateField?: boolean;\n}\n\nexport default function AutocompleteInput({\n  label,\n  options,\n  optionLabel,\n  value,\n  onChange,\n  id,\n  required,\n  multiple,\n  isLoading,\n  loadingText,\n  dateField\n}: ISelectFieldProps) {\n  const defaultValue: IArrayValueType[] = [];\n  if (Array.isArray(value)) {\n    value.map((v) => {\n      const matchedValue = options.find((o) => o.key === v.key);\n      if (matchedValue) defaultValue.push(matchedValue);\n    });\n  }\n  return (\n    <Autocomplete\n      id={id}\n      options={options}\n      getOptionLabel={(option) => optionLabel(option)}\n      disableClearable={dateField ? dateField : false}\n      value={multiple ? defaultValue : value}\n      multiple={multiple}\n      sx={sharedClasses.autocomplete}\n      ListboxProps={{ style: { ...sharedClasses.autoCompleteListStyles } }}\n      loading={options?.length < 1}\n      loadingText={isLoading ? loadingText[0] : loadingText[1]}\n      renderInput={(params) => (\n        <>\n          <InputLabel shrink htmlFor=\"text-input\" sx={sharedClasses.inputLabel}>\n            {label}\n            {required && <span>*</span>}\n          </InputLabel>\n          {dateField ? (\n            <TextField\n              {...params}\n              onKeyPress={(e) => e.preventDefault()}\n              onKeyDown={(event: KeyboardEvent<HTMLInputElement>) => {\n                if (event.key === 'Backspace' || event.key === 'Delete') event.preventDefault();\n              }}\n            />\n          ) : (\n            <TextField {...params} InputLabelProps={{ shrink: true }} />\n          )}\n        </>\n      )}\n      onChange={(event, data) => onChange(data)}\n    />\n  );\n}\n","import React, { useState } from 'react';\nimport AvailabilityPreview from '../../ApprovalForms/Questions/Modals/AvailabilityPreview';\nimport Box from '@mui/material/Box';\nimport Stack from '@mui/material/Stack';\nimport ExpandLessIcon from '@mui/icons-material/ExpandLess';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport { IApplicantQuestion } from '../../EditJob/types';\n\ninterface AvailabilityFieldQuestionProps {\n  question: IApplicantQuestion;\n}\nconst AvailabilityFieldQuestion: React.FC<AvailabilityFieldQuestionProps> = ({ question }: AvailabilityFieldQuestionProps\n) => {\n  const [showPreview, setShowPreview] = useState(false);\n\n    return (\n      <Box\n        sx={{\n          display: 'flex',\n          flexDirection: 'column',\n          marginTop: 1,\n          alignItems: 'center',\n          alignSelf: 'center'\n        }}\n      >\n        {showPreview && (\n          <AvailabilityPreview availabilityConfig={question.availability_config} />\n        )}\n        <Stack\n          flexDirection=\"row\"\n          alignItems=\"center\"\n          onClick={() => setShowPreview(!showPreview)}\n          sx={{\n            fontFamily: 'Source Sans Pro',\n            fontSize: '12px',\n            '&:hover': {\n              cursor: 'pointer'\n            }\n          }}\n        >\n          {showPreview ? 'Hide preview' : 'Show preview'}\n          {showPreview ? <ExpandLessIcon /> : <ExpandMoreIcon />}\n        </Stack>\n      </Box>\n    );\n}\n\nexport default AvailabilityFieldQuestion;\n","import * as React from 'react';\nimport CircularProgress, { CircularProgressProps } from '@mui/material/CircularProgress';\nimport Typography from '@mui/material/Typography';\nimport Box from '@mui/material/Box';\n\nexport default function CircularProgressWithLabel(\n  props: CircularProgressProps & { value: number; size?: number }\n) {\n  return (\n    <Box sx={{ position: 'relative', display: 'inline-flex' }}>\n      <CircularProgress\n        size={props.size ? props.size : 120}\n        thickness={6}\n        variant=\"determinate\"\n        sx={{\n          color: '#5BC4BF',\n          circle: {\n            strokeLinecap: 'round'\n          }\n        }}\n        {...props}\n      />\n      <Box\n        sx={{\n          top: 0,\n          left: 0,\n          bottom: 0,\n          right: 0,\n          position: 'absolute',\n          display: 'flex',\n          alignItems: 'center',\n          justifyContent: 'center',\n          fontSize: '16px',\n          fontFamily: 'Source Sans Pro',\n          fontWeight: 'bold'\n        }}\n      >\n        {Math.round(props.value)}\n      </Box>\n    </Box>\n  );\n}\n\nexport function CircularStatic() {\n  const [progress, setProgress] = React.useState(10);\n\n  React.useEffect(() => {\n    const timer = setInterval(() => {\n      setProgress((prevProgress) => (prevProgress >= 100 ? 0 : prevProgress + 10));\n    }, 800);\n    return () => {\n      clearInterval(timer);\n    };\n  }, []);\n\n  return <CircularProgressWithLabel value={progress} />;\n}\n","import { Stack, Typography } from '@mui/material';\nimport React, { ReactNode } from 'react';\nimport { sharedClasses } from './sharedClasses';\n\ninterface IEmptyStateProps {\n  svgIcon: ReactNode;\n  label: string;\n}\n\nexport function EmptyState({ svgIcon, label }: IEmptyStateProps) {\n  return (\n    <Stack sx={{ padding: 7.5, alignItems: 'center', rowGap: 2 }}>\n      {svgIcon}\n      <Typography sx={sharedClasses.emptyStateText}>{label}</Typography>\n    </Stack>\n  );\n}\n","import React, { useState } from 'react';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport Box from '@mui/material/Box';\nimport Checkbox from '@mui/material/Checkbox';\nimport FormGroup from '@mui/material/FormGroup';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport FormControl from '@mui/material/FormControl';\nimport FormLabel from '@mui/material/FormLabel';\nimport { sharedClasses } from './sharedClasses';\nimport IconButton from '@mui/material/IconButton';\nimport Tooltip from '@mui/material/Tooltip';\nimport InfoIcon from '@mui/icons-material/Info';\n\nconst populateValue = (options: { name: string; id: number }[]) => {\n  const value = {} as { [key: string]: boolean };\n  options.forEach((option) => {\n    value[option.id] = false;\n  });\n  return value;\n};\n\nexport default function FormCheckboxGroup({\n  options,\n  defaultValues,\n  onChange,\n  groupLabel,\n  directionRow,\n  innerRef,\n  error,\n  color,\n  required,\n  disabled\n}: {\n  options: { name: string; id: number; tip: string }[];\n  onChange: (value: Record<string, boolean>) => void;\n  directionRow?: boolean;\n  groupLabel?: string;\n  defaultValues?: Record<string | number, boolean>;\n  innerRef?: React.Ref<HTMLDivElement>;\n  error?: string;\n  color?: string;\n  required?: boolean;\n  disabled?: boolean;\n}) {\n  const [value, setValue] = useState(defaultValues ? defaultValues : populateValue(options));\n\n  const handleChange = (event: React.ChangeEvent<HTMLInputElement>, id: number) => {\n    setValue({\n      ...value,\n      [id]: event.target.checked\n    });\n    onChange({ ...value, [id]: event.target.checked });\n  };\n\n  const checkboxStyle = {\n    color: '#DDDDDD',\n    '&.Mui-checked': {\n      color: theme.palette.action.main\n    },\n    '& .MuiSvgIcon-root': {\n      fontSize: '22px'\n    },\n    paddingLeft: 'unset',\n    paddingRight: 1\n  };\n\n  const labelStyle = {\n    '& .MuiTypography-root': {\n      color: color ? color : '#333333',\n      fontSize: '16px',\n      marginLeft: '2px',\n      fontFamily: 'Source Sans Pro, sans-serif'\n    },\n    paddingRight: 2\n  };\n\n  return (\n    <FormControl>\n      {groupLabel && (\n        <FormLabel\n          id={groupLabel?.toLowerCase().split(' ').join('-')}\n          sx={{ ...sharedClasses.inputLabel, fontSize: '16px' }}\n        >\n          {groupLabel}\n          {required && <span>*</span>}\n        </FormLabel>\n      )}\n      <FormGroup\n        ref={innerRef}\n        aria-labelledby={groupLabel?.toLowerCase().split(' ').join('-')}\n        sx={{ padding: '8px 0px 10px 12px', flexDirection: directionRow ? 'row' : 'column' }}\n      >\n        {options.map((option, index) => (\n          <Box key={index} sx={{ display: 'flex', alignItems: 'center' }}>\n            <FormControlLabel\n              key={index}\n              control={\n                <Checkbox\n                  disableRipple\n                  sx={checkboxStyle}\n                  onChange={(event) => handleChange(event, option.id)}\n                  value={value[option.id]}\n                  defaultChecked={value[option.id]}\n                  name={option.name}\n                  disabled={disabled}\n                />\n              }\n              label={option.name}\n              sx={labelStyle}\n            />\n            {option.tip && (\n              <Tooltip title={option.tip}>\n                <InfoIcon sx={sharedClasses.infoIcon} />\n              </Tooltip>\n            )}\n          </Box>\n        ))}\n        {error && <Box sx={sharedClasses.errorBoxCheckbox}>{error}</Box>}\n      </FormGroup>\n    </FormControl>\n  );\n}\n","import React, { useState, useEffect } from 'react';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport Box from '@mui/material/Box';\nimport Radio from '@mui/material/Radio';\nimport RadioGroup from '@mui/material/RadioGroup';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport FormControl from '@mui/material/FormControl';\nimport FormLabel from '@mui/material/FormLabel';\nimport { sharedClasses } from './sharedClasses';\n\nexport default function FormRadioButtonGroup({\n  options,\n  onChange,\n  defaultValue,\n  groupLabel,\n  directionRow,\n  innerRef,\n  error,\n  required,\n  color,\n  draggable\n}: {\n  options: { label: string; value: string | number }[];\n  onChange: (value: string | number) => void;\n  directionRow?: boolean;\n  defaultValue?: string | number;\n  groupLabel?: string;\n  innerRef?: React.Ref<HTMLDivElement>;\n  error?: string;\n  color?: string;\n  required?: boolean;\n  draggable?: boolean;\n}) {\n  const [value, setValue] = useState(defaultValue || '');\n\n  const onInternalChange = (value: string) => {\n    setValue(value);\n    onChange(value);\n  };\n\n  const radioStyle = {\n    color: '#DDDDDD',\n    '&.Mui-checked': {\n      color: theme.palette.action.main\n    },\n    '& .MuiSvgIcon-root': {\n      fontSize: '22px'\n    }\n  };\n\n  const labelStyle = {\n    '& .MuiTypography-root': {\n      color: color ? color : '#333333 !important',\n      fontSize: '14px',\n      marginLeft: '2px',\n      fontFamily: 'Source Sans Pro, sans-serif'\n    }\n  };\n\n  useEffect(() => {\n    setValue(defaultValue ?? '');\n  }, [defaultValue]);\n\n  return (\n    <FormControl>\n      {groupLabel && (\n        <FormLabel\n          id={groupLabel?.toLowerCase().split(' ').join('-')}\n          data-testid={groupLabel?.toLowerCase().split(' ').join('-')}\n          sx={{ ...sharedClasses.inputLabel, fontSize: '14px' }}\n        >\n          {groupLabel}\n          {required && <span>*</span>}\n        </FormLabel>\n      )}\n      <RadioGroup\n        ref={innerRef}\n        aria-labelledby={groupLabel?.toLowerCase().split(' ').join('-')}\n        name=\"radio-buttons-group\"\n        value={value}\n        onChange={(e) => onInternalChange(e.target.value)}\n        sx={{ padding: '8px 0px 10px 12px', flexDirection: directionRow ? 'row' : 'column' }}\n      >\n        {options.map((option, index) => {\n          return (\n            <FormControlLabel\n              id={option.label.toLowerCase().split(' ').join('-')}\n              data-testid={option.label.toLowerCase().split(' ').join('-')}\n              key={index}\n              value={draggable ? 'disabled' : option.value}\n              control={<Radio sx={radioStyle} />}\n              label={option.label}\n              sx={labelStyle}\n              disabled={draggable ? true : false}\n            />\n          );\n        })}\n        {error && <Box sx={sharedClasses.errorBoxCheckbox}>{error}</Box>}\n      </RadioGroup>\n    </FormControl>\n  );\n}\n","import React, { useState, useEffect } from 'react';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport Box from '@mui/material/Box';\nimport Radio from '@mui/material/Radio';\nimport RadioGroup from '@mui/material/RadioGroup';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport FormControl from '@mui/material/FormControl';\nimport FormLabel from '@mui/material/FormLabel';\n// import TextField from '@mui/material/TextField';\nimport { sharedClasses } from './sharedClasses';\nimport { IApplicantQuestion } from '../Utilities/QuestionFieldGenerator';\nimport { MultilineFormTextField } from './FormTextField';\n\nexport default function FormRadioButtonWithTextInputGroup({\n  options,\n  onChange,\n  defaultValue,\n  groupLabel,\n  directionRow,\n  innerRef,\n  error,\n  required,\n  color,\n  draggable,\n  question,\n  inputText,\n  setApprovalFormQuestions\n}: {\n  options: { label: string; value: string | number }[];\n  onChange: (value: string | number) => void;\n  directionRow?: boolean;\n  defaultValue?: string | number;\n  groupLabel?: string;\n  innerRef?: React.Ref<HTMLDivElement>;\n  error?: string;\n  color?: string;\n  required?: boolean;\n  draggable?: boolean;\n  question: IApplicantQuestion;\n  inputText: string;\n  setApprovalFormQuestions?: (value: Record<string, { data: string; inputText: string }>) => void;\n}) {\n  const [value, setValue] = useState(defaultValue || '');\n  // const [inputValue, setInputValue] = useState('');\n\n  const onInternalChange = (value: string) => {\n    setValue(value);\n    onChange(value);\n  };\n\n  const radioStyle = {\n    color: '#DDDDDD',\n    '&.Mui-checked': {\n      color: theme.palette.action.main\n    },\n    '& .MuiSvgIcon-root': {\n      fontSize: '22px'\n    }\n  };\n\n  const labelStyle = {\n    '& .MuiTypography-root': {\n      color: color ? color : '#333333 !important',\n      fontSize: '16px',\n      marginLeft: '2px',\n      fontFamily: 'Source Sans Pro, sans-serif'\n    }\n  };\n\n  useEffect(() => {\n    setValue(defaultValue ?? '');\n  }, [defaultValue]);\n\n  return (\n    <FormControl>\n      <RadioGroup\n        ref={innerRef}\n        aria-labelledby={groupLabel?.toLowerCase().split(' ').join('-')}\n        name=\"radio-buttons-group\"\n        value={value}\n        onChange={(e) => onInternalChange(e.target.value)}\n        sx={{ padding: '8px 0px 10px 12px', flexDirection: directionRow ? 'row' : 'column' }}\n      >\n        {options.map((option, index) => {\n          return (\n            <>\n              <FormControlLabel\n                id={option.label.toLowerCase().split(' ').join('-')}\n                key={index}\n                value={draggable ? 'disabled' : option.value}\n                control={<Radio sx={radioStyle} />}\n                label={option.label}\n                sx={labelStyle}\n                disabled={draggable ? true : false}\n              />\n              {options.findIndex((option) => Number(value) === option.value) === index &&\n                index != 0 && (\n                  <MultilineFormTextField\n                    rows={4}\n                    key={index}\n                    value={inputText}\n                    onChange={(e) => {\n                      setApprovalFormQuestions((prev) => ({\n                        ...prev,\n                        [question.id]: {\n                          ...prev[question.id],\n                          inputText: e.target.value\n                        }\n                      }));\n                    }}\n                    styles={{ marginLeft: '30px', width: 'calc(100% - 50px)' }}\n                    required={question.required}\n                    placeholder={\n                      'Please type your selected response into this box and insert names and details where required'\n                    }\n                  />\n                )}\n            </>\n          );\n        })}\n        {error && <Box sx={sharedClasses.errorBoxCheckbox}>{error}</Box>}\n      </RadioGroup>\n    </FormControl>\n  );\n}\n","import React from 'react';\nimport { IFieldChoice } from '../Utilities/QuestionFieldGenerator';\nimport Box from '@mui/material/Box';\nimport FormSelectField from './FormSelectField';\nimport { sharedClasses } from './sharedClasses';\n\nconst populateRanks = (choices: IFieldChoice[]) => {\n  const ranks: Record<string, string> = {};\n  choices.forEach((choice, index) => {\n    ranks[choice.id] = (index + 1).toString();\n  });\n  return ranks;\n};\n\nexport default function FormRankField({\n  choices,\n  onChange,\n  groupLabel,\n  innerRef,\n  error,\n  required,\n  defaultValue,\n  disabled = false\n}: {\n  choices: IFieldChoice[];\n  onChange: (value: Record<string | number, string>) => void;\n  groupLabel?: string;\n  innerRef?: React.Ref<HTMLDivElement>;\n  error?: string;\n  required?: boolean;\n  defaultValue?: Record<string, number>;\n  disabled?: boolean;\n}) {\n  const [ranks, setRanks] = React.useState(defaultValue || populateRanks(choices));\n  const options = choices.map((_, index: number) => (index + 1).toString());\n\n  const handleChange = (value: string | number, name: string | number) => {\n    const newRanks = { ...ranks, [name]: value };\n    setRanks(newRanks);\n    onChange(newRanks);\n  };\n\n  return (\n    <Box ref={innerRef}>\n      {groupLabel && (\n        <Box sx={sharedClasses.groupLabel}>\n          {groupLabel}\n          {required && <span>*</span>}\n        </Box>\n      )}\n      {choices.map((choice) => (\n        <Box key={choice.id} sx={sharedClasses.rankFieldOption}>\n          <FormSelectField\n            defaultValue={ranks[choice.id]}\n            options={options}\n            isDisabled={disabled}\n            styles={sharedClasses.rankFieldSelect}\n            onChange={(value) => {\n              handleChange(value, choice.id);\n            }}\n          />\n          <Box sx={{ width: '80%', color: '#333333' }}>{choice.name}</Box>\n        </Box>\n      ))}\n      {error && <Box sx={{ ...sharedClasses.errorBoxCheckbox, marginLeft: '14px' }}>{error}</Box>}\n    </Box>\n  );\n}\n","import React, { useState, useEffect } from 'react';\nimport Box from '@mui/material/Box';\nimport { alpha, styled } from '@mui/material/styles';\nimport Select, { SelectChangeEvent } from '@mui/material/Select';\nimport MenuItem from '@mui/material/MenuItem';\nimport InputBase from '@mui/material/InputBase';\nimport InputLabel from '@mui/material/InputLabel';\nimport FormControl from '@mui/material/FormControl';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport { sharedClasses } from './sharedClasses';\n\ninterface IFormSelectFieldProps {\n  label?: string;\n  options: string[] | { value: string; label: string }[];\n  defaultValue?: string;\n  onChange: (value: string | number) => void;\n  id?: string;\n  innerRef?: React.RefObject<HTMLInputElement> | ((el: HTMLDivElement) => void);\n  styles?: React.CSSProperties | Record<string, React.CSSProperties>;\n  error?: string;\n  required?: boolean;\n  isDisabled?: boolean;\n}\n\nconst SelectInput = styled(InputBase)(() => ({\n  'label + &': {\n    marginTop: '24px'\n  },\n  '& .MuiInputBase-input': {\n    borderRadius: '6px',\n    position: 'relative',\n    backgroundColor: '#FFFFFF',\n    color: '#333333',\n    border: '1px solid #DDDDDD',\n    fontSize: '16px',\n    padding: '6px 10px',\n    margin: '3px',\n    fontFamily: 'Source Sans Pro, sans-serif',\n    '&:focus': {\n      boxShadow: `${alpha(theme.palette.primary.main, 0.25)} 0 0 0 2px`,\n      borderColor: theme.palette.primary.main\n    }\n  },\n  '& .MuiInputBase-input:focus': {\n    backgroundColor: '#ffffff',\n    borderRadius: '6px'\n  },\n  '& .MuiSvgIcon-root': {\n    color: '#AAAAAA',\n    marginRight: '10px',\n    transition: 'all 0.16s ease-in-out'\n  }\n}));\n\nconst menuItemStyle = {\n  fontFamily: 'Source Sans Pro, sans-serif',\n  color: '#333333',\n  maxHeight: '200px'\n};\n\nexport default function FormSelectField({\n  label,\n  options,\n  defaultValue,\n  onChange,\n  id,\n  innerRef,\n  styles,\n  error,\n  required,\n  isDisabled = false\n}: IFormSelectFieldProps) {\n  const [value, setValue] = useState(defaultValue ?? '');\n\n  const handleChange = (event: SelectChangeEvent<string>) => {\n    setValue(event.target.value);\n    onChange(event.target.value);\n  };\n\n  useEffect(() => {\n    setValue(defaultValue ?? '')\n  }, [defaultValue])\n\n  return (\n    <FormControl variant=\"standard\" sx={{ position: 'relative' }} ref={innerRef}>\n      {label && (\n        <InputLabel shrink htmlFor=\"text-input\" sx={sharedClasses.inputLabel}>\n          {label}\n          {required && <span>*</span>}\n        </InputLabel>\n      )}\n      <Select\n        sx={styles}\n        value={value}\n        id={id}\n        onChange={handleChange}\n        input={<SelectInput />}\n        disabled={isDisabled}\n        MenuProps={{\n          PaperProps: {\n            style: {\n              maxHeight: 500,\n            }\n          }\n        }}\n      >\n        {options?.map((option, index) =>\n          typeof option === 'string' ? (\n            <MenuItem key={index} value={option} sx={menuItemStyle}>\n              {option}\n            </MenuItem>\n          ) : (\n            <MenuItem key={index} value={option.value} sx={menuItemStyle}>\n              {option.label}\n            </MenuItem>\n          )\n        )}\n      </Select>\n      {error && <Box sx={sharedClasses.errorBox}>{error}</Box>}\n    </FormControl>\n  );\n}\n","import React, { useState } from 'react';\nimport Box from '@mui/material/Box';\nimport { alpha, styled } from '@mui/material/styles';\nimport Select, { SelectChangeEvent } from '@mui/material/Select';\nimport MenuItem from '@mui/material/MenuItem';\nimport InputBase from '@mui/material/InputBase';\nimport InputLabel from '@mui/material/InputLabel';\nimport FormControl from '@mui/material/FormControl';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport { sharedClasses } from './sharedClasses';\nimport CircleIcon from '@mui/icons-material/Circle';\n\ninterface IFormSelectWithIconFieldProps {\n  label?: string;\n  options: string[] | { value: string; label: string; color?: string }[];\n  defaultValue?: string;\n  onChange: (value: string | number) => void;\n  id?: string;\n  innerRef?: React.RefObject<HTMLInputElement> | ((el: HTMLDivElement) => void);\n  styles?: React.CSSProperties | Record<string, React.CSSProperties>;\n  error?: string;\n  required?: boolean;\n  isDisabled?: boolean;\n}\n\nconst SelectInput = styled(InputBase)(() => ({\n  'label + &': {\n    marginTop: '24px'\n  },\n  '& .MuiInputBase-input': {\n    borderRadius: '6px',\n    position: 'relative',\n    backgroundColor: '#FFFFFF',\n    color: '#333333',\n    border: '1px solid #DDDDDD',\n    fontSize: '16px',\n    padding: '6px 10px',\n    margin: '3px',\n    fontFamily: 'Source Sans Pro, sans-serif',\n    '&:focus': {\n      boxShadow: `${alpha(theme.palette.primary.main, 0.25)} 0 0 0 2px`,\n      borderColor: theme.palette.primary.main\n    }\n  },\n  '& .MuiInputBase-input:focus': {\n    backgroundColor: '#ffffff',\n    borderRadius: '6px'\n  },\n  '& .MuiSelect-icon': {\n    color: '#AAAAAA !important',\n    marginRight: '10px',\n    transition: 'all 0.16s ease-in-out'\n  }\n}));\n\nconst menuItemStyle = {\n  fontFamily: 'Source Sans Pro, sans-serif',\n  color: '#333333',\n  maxHeight: '200px'\n};\n\nexport default function FormSelectWithIconField({\n  label,\n  options,\n  defaultValue,\n  onChange,\n  id,\n  innerRef,\n  styles,\n  error,\n  required,\n  isDisabled\n}: IFormSelectWithIconFieldProps) {\n  const [value, setValue] = useState(defaultValue ?? '');\n\n  const handleChange = (event: SelectChangeEvent<string>) => {\n    setValue(event.target.value);\n    onChange(event.target.value);\n  };\n\n  return (\n    <FormControl variant=\"standard\" sx={{ position: 'relative' }} ref={innerRef}>\n      {label && (\n        <InputLabel shrink htmlFor=\"text-input\" sx={sharedClasses.inputLabel}>\n          {label}\n          {required && <span>*</span>}\n        </InputLabel>\n      )}\n      <Select\n        sx={styles}\n        value={value}\n        id={id}\n        onChange={handleChange}\n        input={<SelectInput />}\n        disabled={isDisabled || false}\n        MenuProps={{\n          PaperProps: {\n            style: {\n              maxHeight: 500,\n            }\n          }\n        }}\n      >\n        {options?.map((option, index) =>\n          typeof option === 'string' ? (\n            <MenuItem key={index} value={option} sx={menuItemStyle}>\n              {option}\n            </MenuItem>\n          ) : (\n            <MenuItem key={index} value={option.value} sx={menuItemStyle}>\n              {option.label}\n              {option.color && <CircleIcon sx={{marginLeft: '10px', fontSize: '12px', color: option.color}}/>}\n            </MenuItem>\n          )\n        )}\n      </Select>\n      {error && <Box sx={sharedClasses.errorBox}>{error}</Box>}\n    </FormControl>\n  );\n}\n","import React, { ChangeEvent, CSSProperties, Dispatch, FocusEventHandler, RefObject } from 'react';\nimport {\n  alpha,\n  Box,\n  FormControl,\n  FormHelperText,\n  InputBase,\n  InputLabel,\n  Stack,\n  styled\n} from '@mui/material';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport { sharedClasses } from './sharedClasses';\nimport DebounceInput from '../Utilities/DebounceInput';\n\ntype IStyle = {\n  [className: string]: CSSProperties | IStyle;\n};\n\ninterface IFormTextFieldProps {\n  label?: string;\n  value: string | number;\n  onChange: Dispatch<ChangeEvent<HTMLInputElement>>;\n  onBlur?: FocusEventHandler<HTMLInputElement | HTMLTextAreaElement>;\n  required?: boolean;\n  error?: string;\n  id?: string;\n  innerRef?: RefObject<HTMLInputElement> | ((el: HTMLDivElement) => void);\n  styles?: CSSProperties | IStyle;\n  draggable?: boolean;\n  helperText?: string;\n  fullWidth?: boolean;\n  dataTestId?: string;\n  maxLength?: number;\n  placeholder?: string;\n  onFocus?: FocusEventHandler<HTMLInputElement | HTMLTextAreaElement>;\n  noWrapError?: boolean;\n  onKeyDown?: React.KeyboardEventHandler<HTMLInputElement | HTMLTextAreaElement> | undefined;\n}\n\ninterface IFormNumberFieldProps extends IFormTextFieldProps {\n  unit?: string;\n  disabled?: boolean;\n  onKeyDown?: React.KeyboardEventHandler<HTMLInputElement | HTMLTextAreaElement> | undefined;\n}\n\ninterface IMultilineTextFieldProps extends IFormTextFieldProps {\n  rows?: number;\n  placeholder?: string;\n}\n\ninterface IDebouncedMultilineTextFieldProps extends IDebouncedFormTextFieldProps {\n  rows?: number;\n}\n\ninterface IDebouncedFormTextFieldProps {\n  label?: string;\n  onDebouncedChange: (value: string) => void;\n  onBlur?: (value: string) => void;\n  debounceTime?: number;\n  defaultValue?: string;\n  required?: boolean;\n  error?: string;\n  id?: string;\n  innerRef?: RefObject<HTMLInputElement> | ((el: HTMLDivElement) => void);\n  styles?: CSSProperties | IStyle;\n  draggable?: boolean;\n  helperText?: string;\n  fullWidth?: boolean;\n  dataTestId?: string;\n  placeholder?: string;\n  unit?: string;\n}\n\ninterface IDebouncedFormNumberField\n  extends Omit<IDebouncedFormTextFieldProps, 'onDebouncedChange' | 'defaultValue'> {\n  onDebouncedChange: (value: number) => void;\n  defaultValue?: number;\n}\n\nconst TextInput = styled(InputBase)(() => ({\n  'label + &': {\n    marginTop: '24px'\n  },\n  '& .MuiInputBase-input': {\n    borderRadius: '6px',\n    position: 'relative',\n    backgroundColor: '#FFFFFF',\n    color: '#333333',\n    border: '1px solid #DDDDDD',\n    fontSize: '16px',\n    padding: '6px 10px',\n    margin: '3px 0',\n    fontFamily: 'Source Sans Pro, sans-serif',\n    transition: 'all 0.16s ease-in-out',\n    '&:focus': {\n      boxShadow: `${alpha(theme.palette.primary.main, 0.25)} 0 0 0 2px`,\n      borderColor: theme.palette.primary.main\n    },\n    '&.MuiInputBase-inputMultiline': {\n      transition: 'border-color 0.16s ease-in-out, box-shadow 0.16s ease-in-out',\n      resize: 'vertical',\n      overflowY: 'auto',\n      willChange: 'height',\n      minHeight: '1.5em'\n    }\n  }\n}));\n\nexport function FormTextField({\n  label,\n  value,\n  onChange,\n  onBlur,\n  required,\n  error,\n  id,\n  innerRef,\n  styles,\n  draggable,\n  helperText,\n  fullWidth = false,\n  dataTestId,\n  maxLength,\n  placeholder,\n  onFocus,\n  noWrapError,\n  onKeyDown\n}: IFormTextFieldProps) {\n  return (\n    <FormControl variant=\"standard\" sx={{ width: fullWidth ? '100%' : undefined }}>\n      {label && (\n        <InputLabel shrink htmlFor=\"text-input\" sx={sharedClasses.inputLabel}>\n          {label}\n          {required && <span>*</span>}\n        </InputLabel>\n      )}\n      <TextInput\n        inputProps={{\n          'data-testid': dataTestId,\n          maxLength: maxLength\n        }}\n        disabled={draggable}\n        sx={styles}\n        value={value}\n        id={id}\n        onChange={onChange}\n        onBlur={onBlur}\n        inputRef={innerRef}\n        placeholder={placeholder}\n        onFocus={onFocus}\n        onKeyDown={onKeyDown}\n      />\n      {error && (\n        <Box sx={{ ...sharedClasses.errorBox, textWrap: noWrapError ? 'nowrap' : 'wrap' }}>\n          {error}\n        </Box>\n      )}\n      {helperText && (\n        <FormHelperText sx={{ marginLeft: '4px', fontFamily: 'Source Sans Pro' }}>\n          {helperText}\n        </FormHelperText>\n      )}\n    </FormControl>\n  );\n}\n\nexport function FormNumberField({\n  label,\n  value,\n  onChange,\n  required,\n  error,\n  id,\n  innerRef,\n  styles,\n  unit,\n  fullWidth,\n  onKeyDown,\n  placeholder,\n  disabled\n}: IFormNumberFieldProps) {\n  return (\n    <FormControl variant=\"standard\" sx={{ width: '100%' }}>\n      {label && (\n        <InputLabel shrink htmlFor=\"text-input\" sx={sharedClasses.inputLabel}>\n          {label}\n          {required && <span>*</span>}\n        </InputLabel>\n      )}\n      <Stack\n        sx={{\n          flexDirection: 'row',\n          alignItems: 'center',\n          marginTop: 3,\n          columnGap: 1,\n          color: '#838383'\n        }}\n      >\n        <TextInput\n          type=\"number\"\n          sx={styles}\n          value={value}\n          id={id}\n          onChange={onChange}\n          inputRef={innerRef}\n          fullWidth={fullWidth}\n          onKeyDown={onKeyDown}\n          placeholder={placeholder}\n          disabled={disabled}\n        />\n        {unit}\n      </Stack>\n      {error && <Box sx={sharedClasses.errorBox}>{error}</Box>}\n    </FormControl>\n  );\n}\n\nexport function FormTextFieldBlur({\n  label,\n  value,\n  onChange,\n  required,\n  onBlur,\n  error,\n  id,\n  innerRef,\n  styles\n}: IFormTextFieldProps) {\n  return (\n    <FormControl variant=\"standard\">\n      {label && (\n        <InputLabel shrink htmlFor=\"text-input\" sx={sharedClasses.inputLabel}>\n          {label}\n          {required && <span>*</span>}\n        </InputLabel>\n      )}\n      <TextInput\n        sx={styles}\n        value={value}\n        onBlur={onBlur}\n        id={id}\n        onChange={onChange}\n        inputRef={innerRef}\n      />\n      {error && <Box sx={sharedClasses.errorBox}>{error}</Box>}\n    </FormControl>\n  );\n}\n\nexport function DebouncedFormTextField({\n  label,\n  defaultValue,\n  onDebouncedChange,\n  required,\n  error,\n  debounceTime,\n  id,\n  innerRef,\n  styles,\n  helperText,\n  fullWidth = false,\n  dataTestId\n}: IDebouncedFormTextFieldProps) {\n  return (\n    <DebounceInput\n      defaultValue={defaultValue}\n      onDebouncedChange={onDebouncedChange}\n      debounceTime={debounceTime}\n    >\n      {({ value, onChange }) => (\n        <FormTextField\n          dataTestId={dataTestId}\n          label={label}\n          value={value}\n          onChange={onChange}\n          required={required}\n          error={error}\n          id={id}\n          innerRef={innerRef}\n          styles={styles}\n          helperText={helperText}\n          fullWidth={fullWidth}\n        />\n      )}\n    </DebounceInput>\n  );\n}\n\nexport function DebouncedFormNumberField({\n  label,\n  defaultValue,\n  onDebouncedChange,\n  required,\n  error,\n  debounceTime,\n  id,\n  innerRef,\n  styles,\n  dataTestId,\n  unit,\n  fullWidth\n}: IDebouncedFormNumberField) {\n  return (\n    <DebounceInput\n      defaultValue={defaultValue}\n      onDebouncedChange={onDebouncedChange}\n      debounceTime={debounceTime}\n    >\n      {({ value, onChange }) => (\n        <FormNumberField\n          dataTestId={dataTestId}\n          label={label}\n          value={value as number}\n          onChange={onChange}\n          required={required}\n          error={error}\n          id={id}\n          innerRef={innerRef}\n          styles={styles}\n          unit={unit}\n          fullWidth={fullWidth}\n        />\n      )}\n    </DebounceInput>\n  );\n}\n\nexport function DebouncedFormTextFieldBlur({\n  label,\n  defaultValue,\n  onDebouncedChange,\n  onBlur,\n  required,\n  error,\n  debounceTime,\n  id,\n  innerRef,\n  styles,\n  dataTestId\n}: IDebouncedFormTextFieldProps) {\n  return (\n    <DebounceInput\n      defaultValue={defaultValue}\n      onDebouncedChange={onDebouncedChange}\n      debounceTime={debounceTime}\n    >\n      {({ value, onChange }) => (\n        <FormTextFieldBlur\n          label={label}\n          value={value}\n          onChange={onChange}\n          onBlur={onBlur}\n          required={required}\n          error={error}\n          id={id}\n          dataTestId={dataTestId}\n          innerRef={innerRef}\n          styles={styles}\n        />\n      )}\n    </DebounceInput>\n  );\n}\n\nexport function MultilineFormTextField({\n  label,\n  value,\n  onChange,\n  required,\n  error,\n  id,\n  innerRef,\n  styles,\n  rows,\n  helperText,\n  draggable = false,\n  dataTestId,\n  fullWidth = false,\n  placeholder,\n  maxLength\n}: IMultilineTextFieldProps) {\n  return (\n    <FormControl variant=\"standard\" sx={{ width: fullWidth ? '100%' : undefined }}>\n      {label && (\n        <InputLabel shrink htmlFor=\"text-input\" sx={sharedClasses.inputLabel}>\n          {label}\n          {required && <span>*</span>}\n        </InputLabel>\n      )}\n      <TextInput\n        id={id}\n        inputProps={{\n          'data-testid': dataTestId,\n          maxLength: maxLength\n        }}\n        multiline\n        rows={rows || 6}\n        required={required}\n        fullWidth\n        value={value}\n        inputRef={innerRef}\n        onChange={onChange}\n        sx={styles}\n        disabled={draggable}\n        placeholder={placeholder}\n      />\n      {error && <Box sx={sharedClasses.errorBox}>{error}</Box>}\n      {helperText && <FormHelperText sx={{ marginLeft: '4px' }}>{helperText}</FormHelperText>}\n    </FormControl>\n  );\n}\n\nexport function MultilineDebouncedFormTextField({\n  label,\n  defaultValue,\n  onDebouncedChange,\n  debounceTime,\n  required,\n  error,\n  id,\n  innerRef,\n  styles,\n  rows,\n  fullWidth,\n  placeholder\n}: IDebouncedMultilineTextFieldProps) {\n  return (\n    <DebounceInput\n      defaultValue={defaultValue}\n      onDebouncedChange={onDebouncedChange}\n      debounceTime={debounceTime}\n    >\n      {({ value, onChange }) => (\n        <MultilineFormTextField\n          label={label}\n          value={value}\n          onChange={onChange}\n          required={required}\n          error={error}\n          id={id}\n          innerRef={innerRef}\n          styles={styles}\n          rows={rows}\n          fullWidth={fullWidth}\n          placeholder={placeholder}\n        />\n      )}\n    </DebounceInput>\n  );\n}\n","import React from 'react';\nimport { Box } from '@mui/material';\nimport InfoIcon from '@mui/icons-material/Info';\nimport { sharedClasses } from './sharedClasses';\n\nconst InfoBox = ({ message }: { message: string | JSX.Element }) => {\n  return (\n    <Box sx={sharedClasses.noticeContainer}>\n      <Box sx={{ display: 'flex' }}>\n        <InfoIcon sx={sharedClasses.noticeIcon} />\n        {message}\n      </Box>\n    </Box>\n  );\n};\n\nexport default InfoBox;\n","import React from 'react';\nimport { Dialog, Button } from '@mui/material';\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport ChevronRightIcon from '@material-ui/icons/ChevronRight';\n\ninterface JobAdSuccessDialogProps {\n  open: boolean;\n  onClose: () => void;\n  answers: any;\n  classes: any;\n  adType: string;\n  jobId?: string;\n}\n\nconst JobAdSuccessDialog: React.FC<JobAdSuccessDialogProps> = ({\n  open,\n  onClose,\n  answers,\n  classes,\n  adType,\n  jobId\n}) => {\n  return (\n    <Dialog open={open} onClose={onClose} classes={{ paper: classes.successDialog }}>\n      <div className={classes.successCheck}>\n        <CheckCircleIcon />\n      </div>\n      <h4>Success!</h4>\n      <div className={classes.successDialogText}>\n        {answers && answers.advertisement_id ? (\n          <span>Your ad has been updated on {adType}</span>\n        ) : (\n          <span>Your ad has been posted to {adType}</span>\n        )}\n      </div>\n      <div className={`${classes.dialogButtonContainer} ${classes.successDialogContainer}`}>\n        <Button\n          disableElevation\n          className={classes.buttonSecondary}\n          onClick={() => {\n            if (jobId) {\n              location.href = `/admin/jobs/${jobId}/job_ads`;\n            } else {\n              window.history.back();\n            }\n          }}\n          endIcon={<ChevronRightIcon />}\n        >\n          Back to ads\n        </Button>\n      </div>\n    </Dialog>\n  );\n};\n\nexport default JobAdSuccessDialog;\n","import React, { useState } from 'react';\nimport CheckIcon from '@mui/icons-material/Check';\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\nimport { styled } from '@mui/material/styles';\nimport { AutocompleteGetTagProps, useAutocomplete } from '@mui/material';\n\nexport interface IMultiSelectProps {\n  name: string;\n  selectOptions: IOptionType[];\n  handleFilterChange: (filter: string, newValues: (string | IOptionType)[]) => void;\n  filters: IOptionType[];\n  freeInput?: boolean;\n  disabled?: boolean;\n  displayLabel?: boolean;\n}\n\nexport interface IOptionType {\n  name: string;\n  value?: string;\n  id?: number;\n  state?: string;\n  label?: string;\n}\n\nconst InputWrapper = styled('div')(\n  () => `\n  width: 100%;\n  min-height: 41px;\n  border: 1px solid #DADEE0;\n  background-color: #ffffff;\n  border-radius: 6px;\n  padding: 6px 22px 6px 6px;\n  display: flex;\n  flex-wrap: wrap;\n  margin-top: 3px;\n  &:hover {\n    border-color: #DADEE0;\n  }\n\n  &.focused {\n    border-color: #77C2BE;\n    box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);\n  }\n\n  & input {\n    background-color: transparent;\n    color: #000000;\n    box-sizing: border-box;\n    padding: 4px 6px 2px 6px;\n    width: 0;\n    height: 26px;\n    flex-grow: 1;\n    border: 0;\n    margin: 0;\n    outline: 0;\n    z-index: 1;\n  }\n\n  & .select-placeholder {\n    font-size: 12px;\n    font-weight: 500;\n    color: #000000;\n    margin-left: 8px;\n    margin-top: 2px;\n    position: absolute;\n    z-index: 0;\n  }\n\n  & .select-arrow {\n    position: absolute;\n    right: 4px;\n    bottom: 0px;\n    height: 100%;\n    fontSize: 1.1rem;\n    color: #AAAAAA;\n    transition: transform 0.25s ease-in-out;\n  }\n`\n);\n\ninterface TagProps extends ReturnType<AutocompleteGetTagProps> {\n  label: string;\n}\n\nfunction Tag(props: TagProps) {\n  const { label, onDelete, ...other } = props;\n  return (\n    <div {...other}>\n      <span>{label}</span>\n      <CancelIcon onClick={onDelete} />\n    </div>\n  );\n}\n\nconst StyledTag = styled(Tag)<TagProps>(\n  () => `\n  display: flex;\n  align-items: center;\n  font-size: 10px;\n  font-weight: 500;\n  color: #000000;\n  height: 23px;\n  margin: 2px;\n  line-height: 22px;\n  background-color: #F3F3F3;\n  border: none;\n  border-radius: 0px;\n  box-sizing: content-box;\n  padding: 0 4px 0 10px;\n  outline: 0;\n  overflow: hidden;\n\n  & span {\n    overflow: hidden;\n    white-space: nowrap;\n    text-overflow: ellipsis;\n  }\n\n  & svg {\n    font-size: 9px;\n    cursor: pointer;\n    margin: 0px 4px 0px 6px;\n  }\n`\n);\n\nconst Listbox = styled('ul')(\n  () => `\n  width: 220px;\n  margin: 4px 0 0;\n  padding: 0;\n  position: absolute;\n  list-style: none;\n  background-color: #FFFFFF;\n  overflow: auto;\n  overflow-x: hidden;\n  max-height: 160px;\n  border-radius: 4px;\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n  z-index: 2;\n\n  & .Mui-focused {\n    background: #F1F1F1 !important;\n  }\n\n  & li {\n    padding: 5px 12px;\n    display: flex;\n    font-weight: 600;\n    user-select: none;\n    -moz-user-select: none;\n    -khtml-user-select: none;\n    -webkit-user-select: none;\n    -o-user-select: none;\n    cursor: pointer;\n\n    & span {\n      flex-grow: 1;\n    }\n\n    & svg {\n      color: transparent;\n    }\n\n  }\n\n  & li[aria-selected='true'] {\n    background-color: #FAFAFA;\n    font-weight: 600;\n\n    & svg {\n      color: #5BC4BF;\n    }\n  }\n\n  & li[data-focus='true'] {\n    background-color: #e6f7ff;\n    cursor: pointer;  \n\n    & svg {\n      color: currentColor;\n    }\n  }\n`\n);\n\nexport default function MultiSelect({\n  name,\n  selectOptions,\n  handleFilterChange,\n  filters,\n  freeInput = false,\n  disabled = false,\n  displayLabel = false\n}: IMultiSelectProps) {\n  const [open, setOpen] = useState(false);\n  const {\n    getRootProps,\n    getInputProps,\n    getTagProps,\n    getListboxProps,\n    getOptionProps,\n    groupedOptions,\n    value,\n    focused,\n    setAnchorEl\n  } = useAutocomplete({\n    open: open,\n    onOpen: () => setOpen(true),\n    onClose: () => setOpen(false),\n    id: 'multi-select',\n    multiple: true,\n    options: selectOptions ? selectOptions : [],\n    getOptionLabel: (option: IOptionType) => option.name,\n    value: filters,\n    onChange: (event, value) => handleFilterChange(name, value),\n    freeSolo: freeInput,\n    autoSelect: freeInput,\n    disabled: disabled && filters.length === 0\n  });\n  const displayOption = (option: IOptionType) => {\n    if (freeInput) {\n      return option;\n    } else {\n      return displayLabel ? option.label : option.name;\n    }\n  };\n  return (\n    <>\n      <div {...getRootProps()}>\n        <InputWrapper\n          ref={setAnchorEl}\n          className={focused ? 'focused' : ''}\n          sx={{ position: 'relative', ...(disabled && { opacity: 0.5 }) }}\n        >\n          {value.length < 1 && !focused && !disabled && (\n            <span className=\"select-placeholder\">\n              {freeInput ? 'Input one or more' : 'Please select'}\n            </span>\n          )}\n          {!freeInput && (\n            <ArrowDropDownIcon\n              className={'select-arrow'}\n              sx={\n                open\n                  ? { transform: 'rotate(-180deg)', '&:hover': { cursor: 'pointer' } }\n                  : { '&:hover': { cursor: 'pointer' } }\n              }\n              onClick={() => setOpen(!open)}\n            />\n          )}\n          {value.map((option: IOptionType, index: number) => (\n            <StyledTag label={displayOption(option)} {...getTagProps({ index })} />\n          ))}\n          <input {...getInputProps()} />\n        </InputWrapper>\n      </div>\n      {groupedOptions.length > 0 ? (\n        <Listbox {...getListboxProps()}>\n          {(groupedOptions as typeof selectOptions).map((option, index) => (\n            <li {...getOptionProps({ option, index })} key={index} data-testid={`option-${index}`}>\n              <span>{displayLabel ? option.label : option.name}</span>\n              <CheckIcon fontSize=\"small\" />\n            </li>\n          ))}\n        </Listbox>\n      ) : null}\n    </>\n  );\n}\n","import React, { useState } from 'react';\nimport CheckIcon from '@mui/icons-material/Check';\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\nimport { styled } from '@mui/material/styles';\nimport { AutocompleteGetTagProps, CircularProgress, useAutocomplete } from '@mui/material';\n\nexport interface IMultiSelectProps {\n  dropdownOptions: IOptionType[];\n  onChange: (newValues: (string | IOptionType)[]) => void;\n  values: IOptionType[];\n  loadingOptions: boolean;\n  creatingOption: boolean;\n  hasMaximumCharacter?: number;\n}\n\nexport interface IOptionType {\n  id: number;\n  label?: string;\n  title?: string;\n  name?: string;\n}\n\ninterface TagProps extends ReturnType<AutocompleteGetTagProps> {\n  label: string;\n}\n\nfunction Tag(props: TagProps) {\n  const { label, onDelete, ...other } = props;\n  return (\n    <div {...other}>\n      <span>{label}</span>\n      <CancelIcon onClick={onDelete} />\n    </div>\n  );\n}\n\nexport default function MultiSelectWithCreate({\n  dropdownOptions,\n  onChange,\n  values,\n  loadingOptions,\n  creatingOption,\n  hasMaximumCharacter\n}: IMultiSelectProps) {\n  const [open, setOpen] = useState(false);\n  const {\n    getRootProps,\n    getInputProps,\n    getTagProps,\n    getListboxProps,\n    getOptionProps,\n    groupedOptions,\n    value,\n    focused,\n    setAnchorEl,\n    anchorEl,\n    inputValue\n  } = useAutocomplete({\n    open: open,\n    onOpen: () => setOpen(true),\n    onClose: () => setOpen(false),\n    id: 'multi-select',\n    multiple: true,\n    options: dropdownOptions ? dropdownOptions : [],\n    getOptionLabel: (option: IOptionType) => option.name || option.label || option.title,\n    value: values,\n    onChange: (event, value) => onChange(value),\n    freeSolo: true,\n    autoHighlight: true,\n    disabled: loadingOptions || creatingOption\n  });\n\n  return (\n    <>\n      <div {...getRootProps()}>\n        <InputWrapper\n          ref={setAnchorEl}\n          className={focused ? 'focused' : ''}\n          sx={{ position: 'relative' }}\n        >\n          {value.length < 1 && inputValue.length < 1 && !focused && (\n            <span className=\"select-placeholder\">\n              {loadingOptions ? 'Loading options...' : 'Select or create one or more'}\n            </span>\n          )}\n          {creatingOption ? (\n            <CircularProgress size={24} sx={{ position: 'absolute', right: '14px', top: '8px' }} />\n          ) : (\n            <ArrowDropDownIcon\n              className={'select-arrow'}\n              sx={\n                open\n                  ? { transform: 'rotate(-180deg)', '&:hover': { cursor: 'pointer' } }\n                  : { '&:hover': { cursor: 'pointer' } }\n              }\n              onClick={() => setOpen(!open)}\n            />\n          )}\n          {value.map((option: IOptionType | string, index: number) => {\n            if (typeof option === 'string') {\n              return <StyledTag label={option} {...getTagProps({ index })} />;\n            } else {\n              return (\n                <StyledTag\n                  label={option.name || option.label || option.title}\n                  {...getTagProps({ index })}\n                />\n              );\n            }\n          })}\n          <input {...getInputProps()} />\n        </InputWrapper>\n      </div>\n      {groupedOptions.length > 0 ? (\n        <Listbox {...getListboxProps()} sx={{ maxWidth: anchorEl?.getBoundingClientRect().width }}>\n          {(groupedOptions as typeof dropdownOptions).map((option, index) => (\n            <li {...getOptionProps({ option, index })} key={index}>\n              <span>{option.name || option.label || option.title}</span>\n              <CheckIcon fontSize=\"small\" />\n            </li>\n          ))}\n        </Listbox>\n      ) : open ? (\n        <Listbox sx={{ maxWidth: anchorEl?.getBoundingClientRect().width }}>\n          <li>\n            <span>No pools found, press enter to create a new one</span>\n          </li>\n        </Listbox>\n      ) : null}\n    </>\n  );\n}\n\nconst InputWrapper = styled('div')(\n  () => `\n  width: 100%;\n  min-height: 41px;\n  border: 1px solid #DADEE0;\n  background-color: #ffffff;\n  border-radius: 6px;\n  padding: 6px 22px 6px 6px;\n  display: flex;\n  flex-wrap: wrap;\n  margin-top: 3px;\n  &:hover {\n    border-color: #DADEE0;\n  }\n\n  &.focused {\n    border-color: #77C2BE;\n    box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);\n  }\n\n  & input {\n    background-color: transparent;\n    color: #000000;\n    box-sizing: border-box;\n    padding: 4px 6px 2px 6px;\n    width: 0;\n    height: 26px;\n    flex-grow: 1;\n    border: 0;\n    margin: 0;\n    outline: 0;\n    z-index: 1;\n  }\n\n  & .select-placeholder {\n    font-size: 15px;\n    font-weight: 500;\n    color: #939393;\n    margin-left: 8px;\n    margin-top: 2px;\n    position: absolute;\n    z-index: 0;\n  }\n\n  & .select-arrow {\n    position: absolute;\n    right: 4px;\n    bottom: 0px;\n    height: 100%;\n    fontSize: 1.1rem;\n    color: #AAAAAA;\n    transition: transform 0.25s ease-in-out;\n  }\n`\n);\n\nconst StyledTag = styled(Tag)<TagProps>(\n  () => `\n  display: flex;\n  align-items: center;\n  font-size: 12px;\n  font-weight: 500;\n  color: #000000;\n  height: 23px;\n  margin: 2px;\n  line-height: 22px;\n  background-color: #F3F3F3;\n  border: none;\n  border-radius: 0px;\n  box-sizing: content-box;\n  padding: 0 4px 0 10px;\n  outline: 0;\n  overflow: hidden;\n\n  & span {\n    overflow: hidden;\n    white-space: nowrap;\n    text-overflow: ellipsis;\n  }\n\n  & svg {\n    font-size: 9px;\n    cursor: pointer;\n    margin: 0px 4px 0px 6px;\n  }\n`\n);\n\nconst Listbox = styled('ul')(\n  () => `\n  width: 100%;\n  margin: 4px 0 0;\n  padding: 0;\n  position: absolute;\n  list-style: none;\n  background-color: #FFFFFF;\n  overflow: auto;\n  overflow-x: hidden;\n  max-height: 160px;\n  border-radius: 4px;\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n  z-index: 2;\n\n  & .Mui-focused {\n    background: #F1F1F1 !important;\n  }\n\n  & li {\n    padding: 5px 12px;\n    display: flex;\n    font-weight: 600;\n    user-select: none;\n    -moz-user-select: none;\n    -khtml-user-select: none;\n    -webkit-user-select: none;\n    -o-user-select: none;\n    cursor: pointer;\n\n    & span {\n      flex-grow: 1;\n    }\n\n    & svg {\n      color: transparent;\n    }\n\n  }\n\n  & li[aria-selected='true'] {\n    background-color: #FAFAFA;\n    font-weight: 600;\n\n    & svg {\n      color: #5BC4BF;\n    }\n  }\n\n  & li[data-focus='true'] {\n    background-color: #e6f7ff;\n    cursor: pointer;  \n\n    & svg {\n      color: currentColor;\n    }\n  }\n`\n);\n","import React, { useState, useRef, Dispatch, SetStateAction } from 'react';\nimport { Box, FormHelperText, FormControl, IconButton, Collapse } from '@mui/material';\nimport ClearIcon from '@mui/icons-material/Clear';\nimport { sharedClasses } from './sharedClasses';\n\nexport default function MultiTagInput({\n  tags,\n  setTags,\n  validation,\n  validationMessage,\n  label,\n  required,\n  error,\n  width,\n  helperText,\n  styles,\n  tagType,\n  labelStylesOverride,\n  helperTextStylesOverride,\n  autoFocus\n}: {\n  tags: string[];\n  setTags: Dispatch<SetStateAction<string[]>>;\n  validation?: (value: string) => boolean;\n  validationMessage?: string;\n  label: string;\n  required?: boolean;\n  error?: string;\n  width?: string;\n  helperText?: string;\n  styles?: React.CSSProperties;\n  tagType?: string;\n  labelStylesOverride?: React.CSSProperties;\n  helperTextStylesOverride?: React.CSSProperties;\n  autoFocus?: boolean;\n}) {\n  const [inputValue, setInputValue] = useState('');\n  const inputRef = useRef<HTMLInputElement>(null);\n  const [isFocused, setIsFocused] = useState(false);\n  const [selectedForDelete, setSelectedForDelete] = useState(false);\n  const [message, setMessage] = useState('');\n\n  const handleRemoveTag = (index: number) => {\n    const newTags = [...tags];\n    newTags.splice(index, 1);\n    setTags(newTags);\n  };\n\n  const handleAddTag = (event: React.KeyboardEvent<HTMLDivElement>) => {\n    if (!inputValue) return;\n    if (validation && !validation(inputValue)) {\n      setMessage(validationMessage || 'Invalid item');\n      return;\n    }\n    if (tags.includes(inputValue)) {\n      setMessage('Items must be unique');\n      return;\n    }\n    setTags([...tags, inputValue]);\n    setInputValue('');\n    setMessage('');\n    (event.target as Element).setAttribute('size', '2');\n  };\n\n  const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n    if (event.key === 'Enter' || event.key === ' ' || event.key === ',') {\n      event.preventDefault();\n      handleAddTag(event);\n    } else if (event.key === 'Tab' && inputValue) {\n      handleAddTag(event);\n    } else if (event.key === 'Backspace' && inputValue === '') {\n      event.preventDefault();\n      if (selectedForDelete) {\n        setTags((prev) => prev.slice(0, tags.length - 1));\n        setMessage('');\n        setSelectedForDelete(false);\n      } else {\n        setSelectedForDelete(true);\n      }\n    } else if (event.key === 'ArrowRight' || event.key === 'ArrowDown') {\n      setSelectedForDelete(false);\n    }\n  };\n\n  const handlePaste = (event: React.ClipboardEvent<HTMLDivElement>) => {\n    event.preventDefault();\n    const paste = event.clipboardData.getData('text').trim();\n    const newTags = paste.split(/[\\s,]+/);\n    const uniqueTags = [...new Set(newTags)];\n    const invalidTags = uniqueTags.filter((tag) => validation && !validation(tag));\n    const validTags = uniqueTags.filter((tag) => {\n      if (validation && !validation(tag)) return false;\n      if (tags.includes(tag)) return false;\n      return true;\n    });\n    setTags([...tags, ...validTags]);\n    if (validation && invalidTags.length > 0) {\n      setMessage(`Invalid ${tagType ? tagType : 'tags'}: ${invalidTags.join(', ')}`);\n    } else {\n      setMessage('');\n    }\n    setInputValue('');\n  };\n\n  return (\n    <FormControl variant=\"standard\" sx={{ width: width || '290px' }}>\n      <Box sx={labelStylesOverride || sharedClasses.multiTagLabel}>\n        {label}\n        {required && <span>*</span>}\n      </Box>\n      <Box\n        sx={{\n          ...sharedClasses.textAndTagsWrapper,\n          ...(isFocused ? sharedClasses.focusedStyles : {}),\n          ...(styles || {})\n        }}\n        onClick={() => inputRef.current?.focus()}\n      >\n        {tags.map((option: string, index: number) => (\n          <Box\n            sx={{\n              ...sharedClasses.tag,\n              ...(selectedForDelete && index + 1 === tags.length ? sharedClasses.tagSelected : {})\n            }}\n            key={option}\n          >\n            {option}\n            <IconButton sx={sharedClasses.tagIconButton} onClick={() => handleRemoveTag(index)}>\n              <ClearIcon sx={sharedClasses.tagIcon} />\n            </IconButton>\n          </Box>\n        ))}\n        <input\n          data-testid=\"multiple-tags-input\"\n          ref={inputRef}\n          size={1}\n          type=\"text\"\n          value={inputValue}\n          onKeyDown={handleKeyDown}\n          onPaste={(e) => handlePaste(e)}\n          onInput={(e) =>\n            (e.target as HTMLInputElement).setAttribute(\n              'size',\n              `${((e.target as HTMLInputElement).value.length || 1) + 3}`\n            )\n          }\n          onFocus={() => setIsFocused(true)}\n          onBlur={(e) => {\n            handleAddTag(e);\n            setIsFocused(false);\n            setSelectedForDelete(false);\n          }}\n          onChange={(e) => setInputValue(e.target.value)}\n          style={{\n            ...sharedClasses.textInput,\n            caretColor: selectedForDelete ? '#FFFFFF' : '#000000'\n          }}\n          autoFocus={autoFocus || false}\n        />\n      </Box>\n      {helperText && (\n        <FormHelperText sx={helperTextStylesOverride || sharedClasses.multiTagHelperText}>\n          {helperText}\n        </FormHelperText>\n      )}\n      <Collapse in={!!(error || message)}>\n        <Box sx={sharedClasses.fixedErrorBox}>{error || message}</Box>\n      </Collapse>\n    </FormControl>\n  );\n}\n","import React, { useEffect, useState } from 'react';\nimport {\n  Button,\n  DialogActions,\n  InputLabel,\n  OutlinedInput,\n  InputAdornment,\n  IconButton,\n  Stack,\n  Popover,\n  Divider,\n  Typography,\n  Collapse\n} from '@mui/material';\nimport {\n  StaticDatePicker,\n  LocalizationProvider,\n  PickersDay,\n  PickersActionBarProps,\n  StaticDatePickerProps\n} from '@mui/x-date-pickers';\nimport { Event as EventIcon, Close as CloseIcon } from '@mui/icons-material';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport dayjs, { Dayjs } from 'dayjs';\nimport { sharedClasses } from './sharedClasses';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport { TransitionGroup } from 'react-transition-group';\n\ninterface IControlledTimePicker extends Omit<StaticDatePickerProps<Dayjs>, 'onAccept'> {\n  values: Date[];\n  onAccept: (dates: Date[]) => void;\n  label: string;\n  required?: boolean;\n  error?: string;\n}\n\ninterface IDayItem {\n  day: Dayjs;\n  removeSelectedDate: (item: Dayjs) => void;\n}\n\nconst ServerDay = (props: any) => {\n  const { selectedDays = [], onDaySelect, day, outsideCurrentMonth, ...other } = props;\n  const isSelected = selectedDays\n    .map((e: Dayjs) => e.format('M/D/YYYY'))\n    .includes(day.format('M/D/YYYY'));\n  const nextDayIsSelected = selectedDays\n    .map((e: Dayjs) => e.format('M/D/YYYY'))\n    .includes(day.add(1, 'day').format('M/D/YYYY'));\n  const previousDayIsSelected = selectedDays\n    .map((e: Dayjs) => e.format('M/D/YYYY'))\n    .includes(day.subtract(1, 'day').format('M/D/YYYY'));\n\n  const borderRadius = () => {\n    if (previousDayIsSelected && nextDayIsSelected) {\n      return 'unset';\n    } else if (nextDayIsSelected) {\n      return '50% 0% 0% 50%';\n    } else if (previousDayIsSelected) {\n      return '0% 50% 50% 0%';\n    }\n  };\n\n  return (\n    <PickersDay\n      {...other}\n      outsideCurrentMonth={outsideCurrentMonth}\n      day={day}\n      selected={isSelected}\n      onDaySelect={onDaySelect}\n      sx={{\n        ...sharedClasses.pickersDay,\n        '&.Mui-selected': {\n          background: `${theme.palette.action.main} !important`,\n          borderRadius: borderRadius()\n        }\n      }}\n    />\n  );\n};\n\nconst ActionBar = ({\n  onAccept,\n  onCancel\n}: Omit<PickersActionBarProps, 'onClear' | 'onSetToday'>) => {\n  return (\n    <DialogActions>\n      <Button\n        onClick={onCancel}\n        sx={{\n          ...sharedClasses.genericRedButton,\n          background: theme.palette.common.white,\n          '&:hover': { background: theme.palette.common.white }\n        }}\n      >\n        Cancel\n      </Button>\n      <Button onClick={onAccept} sx={sharedClasses.genericButton}>\n        Submit\n      </Button>\n    </DialogActions>\n  );\n};\n\nexport default function MultipleDatesPicker({\n  values,\n  onAccept,\n  label,\n  required,\n  error,\n  ...rest\n}: IControlledTimePicker) {\n  const [selectedDays, setSelectedDays] = useState<Dayjs[]>([]);\n  const [anchorEl, setAnchorEl] = useState<HTMLButtonElement | null>(null);\n\n  useEffect(() => {\n    setSelectedDays(values.map((v) => dayjs(v)));\n  }, [values]);\n\n  const onDaySelect = (day: any) => {\n    const newValue = [...selectedDays];\n    if (newValue.map((n) => n.format('M/D/YYYY')).includes(day.format('M/D/YYYY'))) {\n      setSelectedDays(newValue.filter((v) => v.format('M/D/YYYY') !== day.format('M/D/YYYY')));\n    } else {\n      newValue.push(day);\n      setSelectedDays(newValue.sort((a, b) => (a.isAfter(b) ? 1 : -1)));\n    }\n  };\n\n  const onClose = () => {\n    setSelectedDays(values.map((v) => dayjs(v)));\n    setAnchorEl(null);\n  };\n\n  const onActionAccept = () => {\n    onAccept(selectedDays.map((d) => d.toDate()));\n    setAnchorEl(null);\n  };\n\n  const pickerDayComponent = (props: any) => (\n    <ServerDay {...props} selectedDays={selectedDays} onDaySelect={onDaySelect} />\n  );\n\n  const actionBarComponent = () => <ActionBar onAccept={onActionAccept} onCancel={onClose} />;\n\n  return (\n    <Stack>\n      <InputLabel sx={sharedClasses.multipleDatesPickerLabel}>\n        {label}\n        {required && <Stack sx={{ color: theme.palette.error.main }}>*</Stack>}\n      </InputLabel>\n      <OutlinedInput\n        id=\"outlined-adornment-password\"\n        sx={sharedClasses.multipleDatesPickerInput}\n        endAdornment={\n          <InputAdornment position=\"end\">\n            {values.length > 1 && (\n              <Stack sx={sharedClasses.multipleDatesPickerExtraDates}>{`+${\n                values.length - 1\n              }`}</Stack>\n            )}\n            <IconButton\n              onClick={(e) => setAnchorEl(e.currentTarget)}\n              edge=\"end\"\n              sx={{ '&:focus': { outline: 'none' } }}\n            >\n              <EventIcon />\n            </IconButton>\n          </InputAdornment>\n        }\n        error={selectedDays.length === 0}\n        label=\"Password\"\n        value={selectedDays[0]?.format('DD/MM/YYYY') || ''}\n      />\n      {!!error && (\n        <Typography variant=\"caption\" sx={{ ...sharedClasses.errorMessage, marginTop: '3px' }}>\n          {error}\n        </Typography>\n      )}\n      <Popover\n        open={Boolean(anchorEl)}\n        anchorEl={anchorEl}\n        onClose={onClose}\n        anchorOrigin={{\n          vertical: 'bottom',\n          horizontal: 'right'\n        }}\n        transformOrigin={{\n          vertical: 'top',\n          horizontal: 'right'\n        }}\n        sx={{\n          '& .MuiPaper-root': {\n            marginTop: 1,\n            marginLeft: 1,\n            display: 'flex'\n          }\n        }}\n      >\n        <LocalizationProvider dateAdapter={AdapterDayjs}>\n          <StaticDatePicker\n            slots={{ day: pickerDayComponent, actionBar: actionBarComponent }}\n            slotProps={{\n              toolbar: { hidden: true }\n            }}\n            sx={sharedClasses.multipleDatesPickerStaticDatePicker}\n            {...rest}\n          />\n        </LocalizationProvider>\n        <Divider orientation=\"vertical\" flexItem />\n        <Stack\n          spacing={2}\n          sx={{\n            width: '200px',\n            py: theme.spacing(3),\n            px: theme.spacing(2),\n            maxHeight: '406px'\n          }}\n        >\n          <Stack direction=\"row\" justifyContent=\"space-between\">\n            <Stack sx={{ fontWeight: 'bold', color: '#666666' }}>Selected Dates</Stack>\n            <Stack\n              sx={{\n                color: theme.palette.action.main,\n                fontWeight: 'bold',\n                paddingInline: theme.spacing(0.65)\n              }}\n            >\n              {selectedDays.length}\n            </Stack>\n          </Stack>\n          <Stack\n            sx={{\n              overflowY: 'auto'\n            }}\n          >\n            <TransitionGroup>\n              {selectedDays.map((day, idx) => (\n                <Collapse key={idx}>\n                  <DayItem day={day} removeSelectedDate={onDaySelect} />\n                </Collapse>\n              ))}\n            </TransitionGroup>\n          </Stack>\n        </Stack>\n      </Popover>\n    </Stack>\n  );\n}\n\nfunction DayItem({ day, removeSelectedDate }: IDayItem) {\n  return (\n    <Stack direction=\"row\" justifyContent=\"space-between\" mb={1}>\n      <Typography sx={{ fontFamily: theme.typography.fontFamily }}>\n        {dayjs(day).format('ddd, D MMMM YYYY')}\n      </Typography>\n      <IconButton\n        onClick={() => removeSelectedDate(day)}\n        sx={{ p: 0, color: theme.palette.error.main }}\n      >\n        <CloseIcon />\n      </IconButton>\n    </Stack>\n  );\n}\n","import React from 'react';\nimport Box from '@mui/material/Box';\nimport { alpha, styled } from '@mui/material/styles';\nimport Select from '@mui/material/Select';\nimport MenuItem from '@mui/material/MenuItem';\nimport InputBase from '@mui/material/InputBase';\nimport InputLabel from '@mui/material/InputLabel';\nimport FormControl from '@mui/material/FormControl';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport { sharedClasses } from './sharedClasses';\n\ninterface ISelectFieldProps {\n  label?: string;\n  options: string[];\n  value?: string;\n  onChange: (value: string) => void;\n  id?: string;\n  innerRef?: React.RefObject<HTMLInputElement> | ((el: HTMLDivElement) => void);\n  styles?: React.CSSProperties | Record<string, React.CSSProperties>;\n  error?: string;\n  required?: boolean;\n}\n\nconst SelectInput = styled(InputBase)(() => ({\n  'label + &': {\n    marginTop: '24px'\n  },\n  '& .MuiInputBase-input': {\n    borderRadius: '6px',\n    position: 'relative',\n    backgroundColor: '#FFFFFF',\n    color: '#333333',\n    border: '1px solid #DDDDDD',\n    fontSize: '16px',\n    padding: '6px 10px',\n    margin: '3px',\n    fontFamily: 'Source Sans Pro, sans-serif',\n    '&:focus': {\n      boxShadow: `${alpha(theme.palette.primary.main, 0.25)} 0 0 0 2px`,\n      borderColor: theme.palette.primary.main\n    }\n  },\n  '& .MuiInputBase-input:focus': {\n    backgroundColor: '#ffffff',\n    borderRadius: '6px'\n  },\n  '& .MuiSvgIcon-root': {\n    color: '#AAAAAA',\n    marginRight: '10px',\n    transition: 'all 0.16s ease-in-out'\n  }\n}));\n\nconst menuItemStyle = {\n  fontFamily: 'Source Sans Pro, sans-serif',\n  color: '#333333',\n  maxHeight: '200px'\n};\n\nexport default function SelectField({\n  label,\n  options,\n  value,\n  onChange,\n  id,\n  innerRef,\n  styles,\n  error,\n  required\n}: ISelectFieldProps) {\n  return (\n    <FormControl variant=\"standard\" sx={{ position: 'relative' }} ref={innerRef}>\n      {label && (\n        <InputLabel shrink htmlFor=\"text-input\" sx={sharedClasses.inputLabel}>\n          {label}\n          {required && <span>*</span>}\n        </InputLabel>\n      )}\n      <Select\n        sx={styles}\n        value={value}\n        id={id}\n        onChange={(e) => onChange(e.target.value)}\n        input={<SelectInput />}\n      >\n        {options.map((option, index) => (\n          <MenuItem key={index} value={option} sx={menuItemStyle}>\n            {option}\n          </MenuItem>\n        ))}\n      </Select>\n      {error && <Box sx={sharedClasses.errorBox}>{error}</Box>}\n    </FormControl>\n  );\n}\n","import { InputLabel, Typography } from '@mui/material';\nimport {\n  DateTimeValidationError,\n  DateValidationError,\n  DesktopDatePickerProps,\n  PickerChangeHandlerContext,\n  StaticDatePicker,\n  StaticDatePickerProps\n} from '@mui/x-date-pickers';\nimport { AdapterMoment } from '@mui/x-date-pickers/AdapterMoment';\nimport { DesktopDateTimePicker } from '@mui/x-date-pickers/DesktopDateTimePicker';\nimport { DesktopDatePicker } from '@mui/x-date-pickers/DesktopDatePicker';\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\nimport { TimePicker, TimePickerProps } from '@mui/x-date-pickers/TimePicker';\nimport moment, { Moment } from 'moment';\nimport momentTimezone from 'moment-timezone';\nimport React, { CSSProperties, ReactNode, useState } from 'react';\nimport { IStyle } from '../../../ThemeContext/ThemeObject';\nimport { sharedClasses } from './sharedClasses';\nimport dayjs, { Dayjs } from 'dayjs';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport { userTimeZone } from '../../utils/formatToUserTimeZone';\n\ninterface IUncontrolledSingleDatePickerProps extends DesktopDatePickerProps<Date> {\n  defaultValue: Date | null;\n  handleDateChange: (date: Date | null) => void;\n  maxDate?: Date;\n  minDate?: Date;\n  inputStyles?: IStyle | CSSProperties;\n  disabled?: boolean;\n  innerRef?: React.RefObject<HTMLInputElement> | ((el: HTMLDivElement) => void);\n}\n\ninterface ISingleDatePickerProps extends Omit<DesktopDatePickerProps<Date>, 'onChange'> {\n  value: Date | null;\n  onChange: (\n    value: Moment | null,\n    keyboardInputValue?: PickerChangeHandlerContext<DateValidationError>\n  ) => void;\n  maxDate?: Date;\n  minDate?: Date;\n  inputStyles?: IStyle | CSSProperties;\n  label?: string | ReactNode;\n  showTodayButton?: boolean;\n  error?: string;\n  required?: boolean;\n}\n\nconst todayButtonStyling = {\n  '& .MuiDialogActions-root': {\n    display: 'flex',\n    justifyContent: 'center',\n    paddingBottom: 3,\n    '& button': sharedClasses.genericButtonSecondary\n  },\n  '& .MuiDateCalendar-root': {\n    height: '325px'\n  }\n};\n\ninterface ISingleDatePickerTimeProps {\n  value: Date;\n  onChange: (\n    value: Date | null,\n    context?: PickerChangeHandlerContext<DateTimeValidationError>\n  ) => void;\n  minDate?: Date;\n  inputStyles?: IStyle | CSSProperties;\n  pickerStyles?: IStyle | CSSProperties;\n}\n\ninterface ISingleDateTimePickerProps extends ISingleDatePickerTimeProps {\n  label?: string | ReactNode;\n  timezone?: string;\n  disablePast?: boolean;\n  required?: boolean;\n  innerRef?: React.RefObject<HTMLInputElement>;\n  error?: string;\n}\n\ninterface IControlledTimePicker extends TimePickerProps<Dayjs> {\n  label?: string;\n  minutesInterval?: number;\n  inputStyles?: IStyle | CSSProperties;\n}\n\ninterface IControlledStaticTimePicker extends StaticDatePickerProps<Date> {\n  value: Date | null;\n  onChange: (value: Date | null) => void;\n  inputStyles?: IStyle | CSSProperties;\n}\n\nexport function SingleDatePicker({\n  value,\n  onChange,\n  maxDate,\n  minDate,\n  inputStyles,\n  label,\n  showTodayButton,\n  error,\n  required,\n  ...rest\n}: ISingleDatePickerProps) {\n  return (\n    <LocalizationProvider dateAdapter={AdapterMoment} dateLibInstance={momentTimezone}>\n      {label && (\n        <InputLabel shrink htmlFor=\"text-input\" sx={sharedClasses.inputLabel}>\n          {label}\n          {required && <span>*</span>}\n        </InputLabel>\n      )}\n      <DesktopDatePicker\n        format=\"DD/MM/YYYY\"\n        value={moment(value)}\n        maxDate={maxDate}\n        minDate={minDate}\n        slotProps={{\n          popper: {\n            sx: { ...sharedClasses.calendar, ...(showTodayButton && todayButtonStyling) },\n            placement: 'bottom-end',\n            modifiers: [\n              {\n                name: 'offset',\n                options: {\n                  offset: [28, 15]\n                }\n              }\n            ]\n          },\n          textField: { InputProps: { sx: { ...sharedClasses.datePicker, ...inputStyles } } },\n          ...(showTodayButton && { actionBar: { actions: ['today'] } })\n        }}\n        onChange={onChange}\n        timezone={userTimeZone}\n        {...rest}\n      />\n      <Typography variant=\"caption\" sx={sharedClasses.errorMessage}>\n        {error}\n      </Typography>\n    </LocalizationProvider>\n  );\n}\n\nexport function SingleDateTimePicker({\n  value,\n  onChange,\n  minDate,\n  inputStyles,\n  pickerStyles,\n  label,\n  required,\n  innerRef,\n  error,\n  ...rest\n}: ISingleDateTimePickerProps) {\n  return (\n    <LocalizationProvider dateAdapter={AdapterMoment}>\n      {label && (\n        <InputLabel shrink htmlFor=\"text-input\" sx={sharedClasses.inputLabel}>\n          {label}\n          {required && <span>*</span>}\n        </InputLabel>\n      )}\n      <DesktopDateTimePicker\n        format=\"DD/MM/YYYY hh:mm a\"\n        value={moment(value)}\n        minDate={minDate}\n        timeSteps={{ hours: 1, minutes: 1 }}\n        views={['year', 'month', 'day', 'hours', 'minutes']}\n        openTo={'day'}\n        slotProps={{\n          popper: {\n            sx: pickerStyles,\n            placement: 'bottom-end',\n            modifiers: [\n              {\n                name: 'offset',\n                options: {\n                  offset: [28, 15]\n                }\n              }\n            ]\n          },\n          textField: { InputProps: { sx: { ...sharedClasses.datePicker, ...inputStyles } } },\n          actionBar: { actions: ['today', 'cancel', 'accept'] }\n        }}\n        onChange={onChange}\n        ref={innerRef}\n        {...rest}\n      />\n      {error && (\n        <Typography variant=\"caption\" sx={sharedClasses.errorMessage}>\n          {error}\n        </Typography>\n      )}\n    </LocalizationProvider>\n  );\n}\n\nexport function UncontrolledSingleDatePicker({\n  defaultValue,\n  handleDateChange,\n  maxDate,\n  minDate,\n  inputStyles,\n  disabled,\n  innerRef,\n  ...rest\n}: IUncontrolledSingleDatePickerProps) {\n  const [date, setDate] = useState<Moment | null>(\n    moment(defaultValue).isValid() ? moment(defaultValue) : null\n  );\n\n  return (\n    <LocalizationProvider dateAdapter={AdapterMoment}>\n      <DesktopDatePicker\n        ref={innerRef}\n        format=\"DD/MM/YYYY\"\n        value={date}\n        disabled={disabled ? disabled : false}\n        maxDate={maxDate}\n        minDate={minDate}\n        slotProps={{\n          popper: {\n            sx: sharedClasses.calendar,\n            placement: 'bottom-end',\n            modifiers: [\n              {\n                name: 'offset',\n                options: {\n                  offset: [28, 15]\n                }\n              }\n            ]\n          },\n          textField: { InputProps: { sx: { ...inputStyles, ...inputStyles } } }\n        }}\n        onChange={(date) => {\n          setDate(date);\n          handleDateChange(date);\n        }}\n        {...rest}\n      />\n    </LocalizationProvider>\n  );\n}\n\nexport function ControlledTimePicker({\n  value,\n  onChange,\n  label,\n  minutesInterval = 1,\n  ...rest\n}: IControlledTimePicker) {\n  return (\n    <LocalizationProvider dateAdapter={AdapterDayjs}>\n      {label && (\n        <InputLabel shrink htmlFor=\"text-input\" sx={sharedClasses.inputLabel}>\n          {label}\n        </InputLabel>\n      )}\n      <TimePicker\n        value={dayjs(value)}\n        slotProps={{\n          popper: { sx: { ...sharedClasses.calendar } }\n        }}\n        onChange={onChange}\n        timeSteps={{ minutes: minutesInterval }}\n        sx={sharedClasses.materialTimePicker}\n        {...rest}\n      />\n    </LocalizationProvider>\n  );\n}\n\nexport function ControlledStaticDatePicker({\n  value,\n  onChange,\n  sx,\n  ...rest\n}: IControlledStaticTimePicker) {\n  return (\n    <LocalizationProvider dateAdapter={AdapterDayjs}>\n      <StaticDatePicker\n        slotProps={{\n          calendarHeader: {\n            sx: sharedClasses.calendarHeader\n          }\n        }}\n        timezone={userTimeZone}\n        value={dayjs(value)}\n        onChange={onChange}\n        {...rest}\n      />\n    </LocalizationProvider>\n  );\n}\n","import React, { useState, Dispatch, SetStateAction } from 'react';\nimport {\n  Stack,\n  Box,\n  Autocomplete,\n  TextField,\n  Collapse,\n  Button,\n  CircularProgress\n} from '@mui/material';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../Application/API';\nimport { ApplicationAction } from '../../Application/types';\nimport { sharedClasses } from './sharedClasses';\nimport { classes } from '../../Job/Applications/styles';\nimport { styles } from '../../Application/Modals/styles';\nimport { IError } from '../../SmartForms/types';\nimport { ISmsTemplate } from '../../Job/Applications/Modals/SMSCandidates';\nimport { StyledSnackbarProps, SnackbarState } from './StyledSnackbar';\nimport { MultilineFormTextField, FormTextField } from './FormTextField';\n\nconst SmsTemplateComponent = ({\n  smsTemplatePermissions,\n  smsMessage,\n  setSmsMessage,\n  smsTemplate,\n  setSmsTemplate,\n  setSnackbar,\n  dispatch,\n  dropdownLabel,\n  smsMessageError,\n  placeholders,\n  multipleSms\n}: {\n  smsTemplatePermissions: boolean;\n  smsMessage: string;\n  setSmsMessage: Dispatch<SetStateAction<string>>;\n  smsTemplate: ISmsTemplate | null;\n  setSmsTemplate: Dispatch<SetStateAction<ISmsTemplate | null>>;\n  setSnackbar?: StyledSnackbarProps['setSnackbarState'];\n  dispatch?: Dispatch<ApplicationAction>;\n  dropdownLabel?: string;\n  smsMessageError?: string;\n  placeholders?: string[];\n  multipleSms?: boolean;\n}) => {\n  const [smsTemplateName, setSmsTemplateName] = useState<string>('');\n  const [smsTemplateError, setSmsTemplateError] = useState<string>('');\n  const queryClient = useQueryClient();\n\n  const notify = (message: string, state: SnackbarState) => {\n    if (setSnackbar) {\n      setSnackbar({ message, state });\n    }\n\n    if (dispatch) {\n      dispatch({ type: 'SET_SNACKBAR', payload: { message, state } });\n    }\n  };\n\n  const { data: smsTemplates, isFetching: fetchingSmsTemplates } = useQuery({\n    queryKey: ['sms templates'],\n    queryFn: async () => {\n      const { res } = await Api.getSmsTemplates();\n      return res.sms_templates;\n    },\n    onError: (error: IError) => notify(error.errors.join(', '), 'error'),\n    initialData: []\n  });\n\n  const { mutate: saveTemplate, isLoading: savingTemplate } = useMutation({\n    mutationFn: async () => {\n      const { res } = await Api.saveSmsTemplate(smsTemplateName, smsMessage);\n      return res;\n    },\n    onError: (error: IError) => notify(error.errors.join(', '), 'error'),\n    onSuccess: (res) => {\n      queryClient.setQueryData(['sms templates'], [...smsTemplates, res]);\n      setSmsTemplate(res);\n      setSmsTemplateName('');\n      notify('Template saved', 'success');\n    }\n  });\n\n  const handleSaveTemplate = () => {\n    if (smsTemplates?.find((template: ISmsTemplate) => template.title === smsTemplateName)) {\n      setSmsTemplateError('Template name already exists');\n      return;\n    }\n    saveTemplate();\n  };\n\n  return (\n    <Stack sx={{ rowGap: 3, paddingTop: 4 }}>\n      <Autocomplete\n        disablePortal\n        id=\"sms-template-select\"\n        options={smsTemplates}\n        getOptionLabel={(option) => option.title || ''}\n        value={smsTemplate}\n        sx={{ ...sharedClasses.formAutocomplete, width: '100%' }}\n        loading={fetchingSmsTemplates}\n        loadingText=\"Loading SMS templates...\"\n        ListboxProps={{ style: classes.addToEventListboxProps }}\n        renderInput={(params) => (\n          <TextField\n            {...params}\n            label={dropdownLabel || 'Choose SMS template'}\n            InputLabelProps={{ shrink: true }}\n            sx={{ '& .MuiInputBase-root': { margin: 'unset', marginTop: 1 } }}\n          />\n        )}\n        onChange={(_event, value) => {\n          if (value) {\n            setSmsMessage(value.body);\n          } else {\n            setSmsMessage('');\n          }\n          setSmsTemplate(value);\n        }}\n      />\n      <Stack sx={{ width: '100%' }}>\n        <MultilineFormTextField\n          label=\"Content\"\n          value={smsMessage}\n          onChange={(e) => setSmsMessage(e.target.value)}\n          maxLength={multipleSms ? undefined : 160}\n          required\n        />\n        <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between', columnGap: 2 }}>\n          <Stack>\n            {placeholders && (\n              <Stack\n                sx={{ color: '#838383', fontSize: '11px', lineBreak: 'anywhere', paddingLeft: 0.5 }}\n              >\n                Available placeholders are: {placeholders.map((p) => `{${p}}`).join(', ')}\n              </Stack>\n            )}\n            <Stack sx={styles.errorMessage}>{smsMessageError}</Stack>\n          </Stack>\n          <Stack sx={classes.addToEventCharacterCount}>\n            {multipleSms\n              ? `${smsMessage.length} characters (${Math.ceil(smsMessage.length / 160)} messages)`\n              : `${smsMessage.length} / 160`}\n          </Stack>\n        </Stack>\n      </Stack>\n      <Collapse\n        in={smsTemplatePermissions && !!smsMessage.trim() && smsMessage !== smsTemplate?.body}\n      >\n        <Stack sx={{ flexDirection: 'row', alignItems: 'baseline', columnGap: 5 }}>\n          <Stack>\n            <FormTextField\n              id=\"new-sms-template-title\"\n              label=\"Template title\"\n              value={smsTemplateName}\n              styles={{\n                width: '290px',\n                '& .MuiInputBase-input': { margin: 'unset', marginTop: 1 }\n              }}\n              onChange={(e) => {\n                setSmsTemplateName(e.target.value);\n                if (smsTemplateError) setSmsTemplateError('');\n              }}\n            />\n            {smsTemplateError && (\n              <Box sx={{ ...classes.saveSMSTemplateError, position: 'inherit' }}>\n                {smsTemplateError}\n              </Box>\n            )}\n          </Stack>\n          <Box sx={{ transform: 'translateY(-1.5px)' }}>\n            <Button\n              id=\"save-sms-template\"\n              type=\"submit\"\n              sx={classes.saveSMSTemplateButton}\n              onClick={handleSaveTemplate}\n            >\n              {savingTemplate ? <CircularProgress size={20} color=\"inherit\" /> : 'Save template'}\n            </Button>\n          </Box>\n        </Stack>\n      </Collapse>\n    </Stack>\n  );\n};\n\nexport default SmsTemplateComponent;\n","import React, {\n  Dispatch,\n  memo,\n  SetStateAction,\n  useCallback,\n  useEffect,\n  useRef,\n  useState\n} from 'react';\nimport { Snackbar, Button, Box, Slide, SlideProps } from '@mui/material';\nimport {\n  Cancel as CancelIcon,\n  CheckCircle as CheckCircleIcon,\n  Warning as WarningIcon\n} from '@mui/icons-material';\nimport { sharedClasses } from './sharedClasses';\nimport { Portal } from '@mui/base';\nimport { theme } from '../../../../components/ThemeContext/ThemeObject';\n\nexport type SnackbarState = 'success' | 'warning' | 'error';\n\nexport interface ISnackbarInput {\n  message: string;\n  state: SnackbarState;\n}\n\nexport interface StyledSnackbarProps {\n  message: string;\n  state: SnackbarState;\n  setSnackbarState:\n    | Dispatch<SetStateAction<ISnackbarInput>>\n    | (({ message, state }: ISnackbarInput) => void);\n}\n\nfunction TransitionDown(props: SlideProps) {\n  return <Slide direction=\"down\" {...props} />;\n}\n\nfunction StyledSnackbar({ message, state, setSnackbarState }: StyledSnackbarProps) {\n  const timeout = useRef<ReturnType<typeof setTimeout>>();\n  const [isVisible, setIsVisible] = useState<boolean>(false);\n\n  const clearSnack = useCallback(() => {\n    setIsVisible(false);\n    setSnackbarState({ message: '', state: 'success' });\n  }, [setSnackbarState]);\n\n  const handleClear = () => {\n    if (timeout.current) {\n      clearTimeout(timeout.current);\n    }\n    clearSnack();\n  };\n\n  useEffect(() => {\n    if (message) {\n      setIsVisible(true);\n      if (timeout.current) {\n        clearTimeout(timeout.current);\n      }\n      timeout.current = setTimeout(clearSnack, 1000);\n    }\n  }, [clearSnack, message, setSnackbarState, state]);\n\n  if (!message) return null;\n\n  return (\n    <Portal>\n      <Snackbar\n        open={isVisible}\n        anchorOrigin={{ vertical: 'top', horizontal: 'center' }}\n        onClose={handleClear}\n        message={message}\n        TransitionComponent={TransitionDown}\n        ClickAwayListenerProps={{ mouseEvent: false, touchEvent: false }}\n      >\n        <Box sx={getSnackbarStyle(state)}>\n          <Box sx={sharedClasses.snackbarMessageIconContainer}>\n            {getSnackbarIcon(state)}\n            <Box sx={sharedClasses.snackbarMessage}>{message}</Box>\n          </Box>\n          <Button sx={sharedClasses.snackbarButton} onClick={handleClear}>\n            DISMISS\n          </Button>\n        </Box>\n      </Snackbar>\n    </Portal>\n  );\n}\n\nfunction getSnackbarIcon(state: SnackbarState) {\n  switch (state) {\n    case 'success':\n      return <CheckCircleIcon style={{ color: '#00C853', fontSize: '28px' }} />;\n    case 'warning':\n      return <WarningIcon style={{ color: theme.palette.secondary.yellow, fontSize: '28px' }} />;\n    case 'error':\n      return <CancelIcon style={{ color: theme.palette.error.main, fontSize: '28px' }} />;\n    default:\n      return <WarningIcon style={{ color: theme.palette.secondary.yellow, fontSize: '28px' }} />;\n  }\n}\n\nfunction getSnackbarStyle(state: SnackbarState) {\n  switch (state) {\n    case 'success':\n      return { ...sharedClasses.snackbar, ...sharedClasses.snackbarSuccess };\n    case 'warning':\n      return { ...sharedClasses.snackbar, ...sharedClasses.snackbarWarning };\n    case 'error':\n      return { ...sharedClasses.snackbar, ...sharedClasses.snackbarError };\n    default:\n      return { ...sharedClasses.snackbar, ...sharedClasses.snackbarWarning };\n  }\n}\n\nexport default memo(StyledSnackbar);\n","import React, { FC, useState } from 'react';\nimport {\n  Box,\n  Chip,\n  Paper,\n  Stack,\n  Tooltip,\n  tooltipClasses,\n  TooltipProps,\n  Typography\n} from '@mui/material';\nimport { styled } from '@mui/system';\nimport { styles } from './styles';\n\nconst MAX_CHARACTER = 11;\n\ninterface StyledTagList {\n  tags: string[];\n  customHeight?: string;\n}\n\nconst StyledTooltip = styled(({ className, ...props }: TooltipProps) => (\n  <Tooltip {...props} classes={{ popper: className }} />\n))(() => ({\n  [`& .${tooltipClasses.tooltip}`]: {\n    backgroundColor: '#ffff',\n    boxShadow: 4,\n    margin: 0,\n    fontSize: '13px'\n  }\n}));\n\nexport const TagList: FC<StyledTagList> = ({ tags, customHeight }) => {\n  const firstElement = tags[0];\n  const [isMouseEnter, setIsMounterEnter] = useState(false);\n\n  const handleMouseEnter = (): void => {\n    const hideTooltip = tags.length <= 1 && firstElement.length <= MAX_CHARACTER;\n    if (hideTooltip) return;\n    setIsMounterEnter(true);\n  };\n\n  const handleMouseLeave = (): void => setIsMounterEnter(false);\n\n  return (\n    <StyledTooltip\n      placement=\"bottom-start\"\n      title={\n        <Paper sx={{ display: 'flex', flexDirection: 'column', padding: '10px' }} elevation={2}>\n          {tags.map((chip, index) => (\n            <Chip key={index} label={chip} style={{ margin: '4px 0', ...styles.label }} />\n          ))}\n        </Paper>\n      }\n      open={isMouseEnter}\n    >\n      <Stack\n        direction=\"row\"\n        alignItems=\"center\"\n        onMouseEnter={handleMouseEnter}\n        onMouseLeave={handleMouseLeave}\n        sx={styles.chipContainer}\n      >\n        <Chip\n          label={\n            firstElement.length > MAX_CHARACTER\n              ? firstElement.slice(0, MAX_CHARACTER) + '…'\n              : firstElement\n          }\n          style={{ marginRight: '5px', zIndex: 1, maxWidth: '132px', ...styles.label }}\n        />\n        {tags.length > 1 && (\n          <Box sx={styles.tagContent}>\n            <Box sx={{ ...styles.styledChip, ...(customHeight && { height: customHeight }) }}></Box>\n            <Typography sx={{ ...styles.label, ...styles.styledChipLabel }}>\n              {' '}\n              {`+${tags.length - 1}`}\n            </Typography>\n          </Box>\n        )}\n      </Stack>\n    </StyledTooltip>\n  );\n};\n","import React from 'react';\nimport { Editor } from 'react-draft-wysiwyg';\n\ninterface TextEditorProps {\n  editorState: EditorState;\n  setAnswers: React.Dispatch<React.SetStateAction<any>>;\n  answers: any;\n  activeError: string;\n  requiredRef: string;\n  classes: any;\n}\n\nconst TextEditor: React.FC<TextEditorProps> = ({\n  editorState,\n  setAnswers,\n  answers,\n  activeError,\n  requiredRef,\n  classes\n}) => {\n  return (\n    <Editor\n      editorState={editorState}\n      wrapperClassName={`${classes.textEditor} ${activeError === requiredRef ? classes.errorDescription : ''}`}\n      toolbarClassName={classes.textEditorToolbar}\n      editorClassName={classes.textEditorBody}\n      onEditorStateChange={(e) => setAnswers({ ...answers, description: e })}\n      toolbar={{\n        options: ['inline', 'list'],\n        inline: {\n          options: ['bold', 'italic'],\n          bold: { className: 'bordered-option-classname' },\n          italic: { className: 'bordered-option-classname' }\n        },\n        list: { options: ['unordered'] }\n      }}\n    />\n  );\n};\n\nexport default TextEditor;\n","import * as React from 'react';\nimport TextField from '@mui/material/TextField';\nimport Box from '@mui/material/Box';\nimport Autocomplete, { autocompleteClasses } from '@mui/material/Autocomplete';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport ListSubheader from '@mui/material/ListSubheader';\nimport Popper from '@mui/material/Popper';\nimport { useTheme, styled } from '@mui/material/styles';\nimport { VariableSizeList, ListChildComponentProps } from 'react-window';\nimport Typography from '@mui/material/Typography';\nimport Tooltip from '@mui/material/Tooltip';\nimport { IStyle } from '../../../ThemeContext/ThemeObject';\n\nexport interface VirtualizeProps {\n  passOptions: string[];\n  value?: string | null;\n  label?: string;\n  error?: boolean;\n  loading?: boolean;\n  hasIdAndRef?: boolean;\n  loadingText?: string;\n  setValue: ((value: string) => void) | ((event: string, value: string) => void);\n  passedStyles: IStyle;\n  errorStyles?: IStyle;\n  freeSolo?: boolean;\n}\n\nfunction renderRow(props: ListChildComponentProps) {\n  const [displayTooltip, setDisplayTooltip] = React.useState(false);\n  const { data, index, style } = props;\n  const dataSet = data[index];\n  const inlineStyle = {\n    ...style,\n    top: (style.top as number) + 8\n  };\n\n  function refCallback(ref: HTMLElement) {\n    if (!ref) return;\n    if (ref.clientWidth > ref.parentElement?.clientWidth) {\n      setDisplayTooltip(true);\n    }\n  }\n\n  if (dataSet.hasOwnProperty('group')) {\n    return (\n      <ListSubheader key={dataSet.key} component=\"div\" style={inlineStyle}>\n        <Tooltip\n          title={displayTooltip ? dataSet.group : ''}\n          enterDelay={600}\n          placement=\"bottom-start\"\n        >\n          <div ref={refCallback}>{dataSet.group}</div>\n        </Tooltip>\n      </ListSubheader>\n    );\n  }\n\n  return (\n    <Typography\n      component=\"li\"\n      {...dataSet[0]}\n      data-testid={`option-${dataSet[1]}`}\n      noWrap\n      style={inlineStyle}\n    >\n      <Tooltip title={displayTooltip ? dataSet[1] : ''} enterDelay={600} placement=\"bottom-start\">\n        <div ref={refCallback}>{dataSet[1]}</div>\n      </Tooltip>\n    </Typography>\n  );\n}\n\nconst OuterElementContext = React.createContext({});\n\nconst OuterElementType = React.forwardRef<HTMLDivElement>((props, ref) => {\n  const outerProps = React.useContext(OuterElementContext);\n  return <div ref={ref} {...props} {...outerProps} />;\n});\n\nfunction useResetCache(data: any) {\n  const ref = React.useRef<VariableSizeList>(null);\n  React.useEffect(() => {\n    if (ref.current != null) {\n      ref.current.resetAfterIndex(0, true);\n    }\n  }, [data]);\n  return ref;\n}\n\n// Adapter for react-window\nconst ListboxComponent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLElement>>(\n  function ListboxComponent(props, ref) {\n    const { children, ...other } = props;\n    const itemData: React.ReactChild[] = [];\n    (children as React.ReactChild[]).forEach(\n      (item: React.ReactChild & { children?: React.ReactChild[] }) => {\n        itemData.push(item);\n        itemData.push(...(item.children || []));\n      }\n    );\n\n    const theme = useTheme();\n    const smUp = useMediaQuery(theme.breakpoints.up('sm'), {\n      noSsr: true\n    });\n    const itemCount = itemData.length;\n    const itemSize = smUp ? 36 : 48;\n\n    const getChildSize = (child: React.ReactChild) => {\n      if (child.hasOwnProperty('group')) {\n        return 48;\n      }\n\n      return itemSize;\n    };\n\n    const getHeight = () => {\n      if (itemCount > 8) {\n        return 8 * itemSize;\n      }\n      return itemData.map(getChildSize).reduce((a, b) => a + b, 0);\n    };\n\n    const gridRef = useResetCache(itemCount);\n\n    return (\n      <div ref={ref}>\n        <OuterElementContext.Provider value={other}>\n          <VariableSizeList\n            itemData={itemData}\n            height={getHeight() + 2 * 8}\n            width=\"100%\"\n            ref={gridRef}\n            outerElementType={OuterElementType}\n            innerElementType=\"ul\"\n            itemSize={(index) => getChildSize(itemData[index])}\n            overscanCount={5}\n            itemCount={itemCount}\n          >\n            {renderRow}\n          </VariableSizeList>\n        </OuterElementContext.Provider>\n      </div>\n    );\n  }\n);\n\nconst StyledPopper = styled(Popper)({\n  [`& .${autocompleteClasses.listbox}`]: {\n    boxSizing: 'border-box',\n    '& ul': {\n      padding: 0,\n      margin: 0\n    }\n  }\n});\n\nexport function Virtualize({\n  passOptions,\n  value,\n  setValue,\n  passedStyles,\n  error,\n  errorStyles,\n  hasIdAndRef,\n  loading,\n  loadingText,\n  label,\n  freeSolo\n}: VirtualizeProps) {\n  return (\n    <Box sx={{ position: 'relative' }}>\n      <Autocomplete\n        id=\"virtualize-demo\"\n        data-testid=\"virtualize-demo\"\n        sx={passedStyles}\n        disableListWrap\n        disablePortal\n        value={value}\n        PopperComponent={StyledPopper}\n        ListboxComponent={ListboxComponent}\n        options={passOptions}\n        loading={loading}\n        loadingText={loadingText}\n        freeSolo={freeSolo}\n        forcePopupIcon={freeSolo}\n        onChange={(event, value) =>\n          hasIdAndRef ? setValue(event?.target?.dataset?.optionIndex, value) : setValue(value)\n        }\n        renderInput={(params) => (\n          <TextField {...params} label={label} InputLabelProps={{ shrink: true }} />\n        )}\n        renderOption={(props, option) => [props, option] as React.ReactNode}\n      />\n      {error && <Box sx={errorStyles}>This feild is required</Box>}\n    </Box>\n  );\n}\n","import * as React from 'react';\nimport { Box, TextField, Popper, Typography, Tooltip, CircularProgress } from '@mui/material';\nimport Autocomplete, { autocompleteClasses } from '@mui/material/Autocomplete';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport ListSubheader from '@mui/material/ListSubheader';\nimport { useTheme, styled } from '@mui/material/styles';\nimport { VariableSizeList, ListChildComponentProps } from 'react-window';\nimport { SxProps } from '@mui/material/styles';\n\nexport interface VirtualizedGroupedAutocompleteProps {\n  value: string | null;\n  options: string[];\n  onChange: (value: VirtualizedGroupedAutocompleteProps['value']) => void;\n  styles?: SxProps;\n  label?: string;\n  loading?: boolean;\n  loadingText?: string;\n  error?: string;\n  errorStyles?: React.CSSProperties;\n  required?: boolean;\n  innerRef?: RefObject<HTMLDivElement>;\n}\n\n// To use this component, you must pass in an array of strings\n// The strings must be in the format \"Option name@-*@Group name\"\n// This component uses the @-*@ as a delimiter to separate the option name from the group name\n// Below is a helper function to format the options array\ntype TemplateDetails = {\n  id: number;\n  name: string;\n};\n\ntype GroupedTemplates = Array<[string, TemplateDetails[]]>;\n\nexport const formatOptions = (options: GroupedTemplates): string[] => {\n  const formattedTemplates: string[] = [];\n  options.forEach((group: [string, TemplateDetails[]]) => {\n    const groupName = group[0];\n    const templates = group[1];\n    templates.forEach((template: TemplateDetails) => {\n      formattedTemplates.push(`${template.id} - ${template.name}@-*@${groupName}`);\n    });\n  });\n  return formattedTemplates;\n};\n\nconst LISTBOX_PADDING = 8; // px\n\nfunction RenderRow(props: ListChildComponentProps) {\n  const [displayTooltip, setDisplayTooltip] = React.useState(false);\n  const { data, index, style } = props;\n  const dataSet = data[index];\n  const inlineStyle = {\n    ...style,\n    top: (style.top as number) + LISTBOX_PADDING\n  };\n\n  function refCallback(ref: HTMLElement) {\n    if (!ref) return;\n    if (ref.clientWidth > ref.parentElement?.clientWidth) {\n      setDisplayTooltip(true);\n    }\n  }\n\n  if (dataSet.hasOwnProperty('group')) {\n    return (\n      <ListSubheader key={dataSet.key} component=\"div\" style={inlineStyle}>\n        <Tooltip\n          title={displayTooltip ? dataSet.group : ''}\n          enterDelay={600}\n          placement=\"bottom-start\"\n        >\n          <div ref={refCallback}>{dataSet.group}</div>\n        </Tooltip>\n      </ListSubheader>\n    );\n  }\n\n  return (\n    <Typography component=\"li\" {...dataSet[0]} noWrap style={inlineStyle}>\n      <Tooltip title={displayTooltip ? dataSet[1] : ''} enterDelay={600} placement=\"bottom-start\">\n        <div ref={refCallback}>{dataSet[1]}</div>\n      </Tooltip>\n    </Typography>\n  );\n}\n\nconst OuterElementContext = React.createContext({});\n\nconst OuterElementType = React.forwardRef<HTMLDivElement>((props, ref) => {\n  const outerProps = React.useContext(OuterElementContext);\n  return <div ref={ref} {...props} {...outerProps} />;\n});\n\nfunction useResetCache(data: any) {\n  const ref = React.useRef<VariableSizeList>(null);\n  React.useEffect(() => {\n    if (ref.current != null) {\n      ref.current.resetAfterIndex(0, true);\n    }\n  }, [data]);\n  return ref;\n}\n\n// Adapter for react-window\nconst ListboxComponent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLElement>>(\n  function ListboxComponent(props, ref) {\n    const { children, ...other } = props;\n    const itemData: React.ReactChild[] = [];\n    (children as React.ReactChild[]).forEach(\n      (item: React.ReactChild & { children?: React.ReactChild[] }) => {\n        itemData.push(item);\n        itemData.push(...(item.children || []));\n      }\n    );\n\n    const theme = useTheme();\n    const smUp = useMediaQuery(theme.breakpoints.up('sm'), {\n      noSsr: true\n    });\n    const itemCount = itemData.length;\n    const itemSize = smUp ? 36 : 48;\n\n    const getChildSize = (child: React.ReactChild) => {\n      if (child.hasOwnProperty('group')) {\n        return 48;\n      }\n\n      return itemSize;\n    };\n\n    const getHeight = () => {\n      if (itemCount > 8) {\n        return 8 * itemSize;\n      }\n      return itemData.map(getChildSize).reduce((a, b) => a + b, 0);\n    };\n\n    const gridRef = useResetCache(itemCount);\n\n    return (\n      <div ref={ref}>\n        <OuterElementContext.Provider value={other}>\n          <VariableSizeList\n            itemData={itemData}\n            height={getHeight() + 2 * LISTBOX_PADDING}\n            width=\"100%\"\n            ref={gridRef}\n            outerElementType={OuterElementType}\n            innerElementType=\"ul\"\n            itemSize={(index) => getChildSize(itemData[index])}\n            overscanCount={5}\n            itemCount={itemCount}\n          >\n            {RenderRow}\n          </VariableSizeList>\n        </OuterElementContext.Provider>\n      </div>\n    );\n  }\n);\n\nconst StyledPopper = styled(Popper)({\n  [`& .${autocompleteClasses.listbox}`]: {\n    boxSizing: 'border-box',\n    '& ul': {\n      padding: 0,\n      margin: 0\n    }\n  }\n});\n\nexport default function VirtualizeGrouped({\n  options,\n  value,\n  onChange,\n  styles,\n  error,\n  errorStyles,\n  loading,\n  loadingText,\n  label,\n  required = false,\n  innerRef\n}: VirtualizedGroupedAutocompleteProps) {\n  return (\n    <Box sx={{ position: 'relative' }}>\n      <Autocomplete\n        id=\"virtualize-grouped\"\n        sx={styles}\n        value={value}\n        onChange={(event, value) => onChange(value)}\n        loading={loading}\n        loadingText={loadingText}\n        disableListWrap\n        PopperComponent={StyledPopper}\n        ListboxComponent={ListboxComponent}\n        options={options}\n        groupBy={(option) => option.split('@-*@')[1]}\n        renderInput={(params) => {\n          if (value) {\n            params.inputProps.value = value.split('@-*@')[0];\n          }\n          return (\n            <TextField\n              {...params}\n              label={label}\n              InputLabelProps={{ shrink: true }}\n              InputProps={{\n                ...params.InputProps,\n                endAdornment: (\n                  <React.Fragment>\n                    {loading ? (\n                      <CircularProgress color=\"inherit\" size={20} />\n                    ) : (\n                      params.InputProps.endAdornment\n                    )}\n                  </React.Fragment>\n                )\n              }}\n              required={required}\n              ref={innerRef}\n            />\n          );\n        }}\n        renderOption={(props, option) => [props, option.split('@-*@')[0]] as React.ReactNode}\n        renderGroup={(params) => params as unknown as React.ReactNode}\n      />\n      {error && <Box sx={errorStyles}>{error}</Box>}\n    </Box>\n  );\n}\n","import React from 'react';\nimport { Box, Button, CircularProgress } from '@mui/material';\nimport { classes } from './styles';\n\nconst ModalFooterButtons = ({\n  primaryButtonText,\n  primaryButtonID,\n  primaryButtonCallback,\n  primaryButtonMinWidth,\n  primaryButtonDisabled,\n  secondaryButtonText,\n  secondaryButtonID,\n  secondaryButtonCallback,\n  secondaryButtonMinWidth,\n  isLoading\n}: {\n  primaryButtonText?: string | JSX.Element;\n  primaryButtonID?: string;\n  primaryButtonCallback?: () => void;\n  primaryButtonMinWidth?: string;\n  primaryButtonDisabled?: boolean;\n  secondaryButtonText?: string | JSX.Element;\n  secondaryButtonID?: string;\n  secondaryButtonCallback?: () => void;\n  secondaryButtonMinWidth?: string;\n  isLoading?: boolean;\n}) => {\n  return (\n    <Box sx={classes.modalFooter}>\n      {secondaryButtonText && (\n        <Button\n          id={secondaryButtonID || 'secondary-modal-button'}\n          sx={{\n            ...classes.modalButtonBase,\n            ...classes.modalSecondaryButton,\n            ...(secondaryButtonMinWidth && { minWidth: secondaryButtonMinWidth })\n          }}\n          onClick={secondaryButtonCallback && secondaryButtonCallback}\n        >\n          {secondaryButtonText}\n        </Button>\n      )}\n      {primaryButtonText && (\n        <Button\n          id={primaryButtonID || 'primary-modal-button'}\n          sx={{\n            ...classes.modalButtonBase,\n            ...(primaryButtonMinWidth && { minWidth: primaryButtonMinWidth }),\n            '&.Mui-disabled': { background: '#E5E5E5', color: '#939393' }\n          }}\n          onClick={primaryButtonCallback && primaryButtonCallback}\n          disabled={primaryButtonDisabled}\n        >\n          {isLoading ? <CircularProgress size={20} color=\"inherit\" /> : primaryButtonText}\n        </Button>\n      )}\n    </Box>\n  );\n};\n\nexport default ModalFooterButtons;\n","import React from 'react';\nimport { Box, Modal } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { classes } from './styles';\nimport { sharedClasses } from '../../../NewUI/Components/CustomUIElements/sharedClasses';\n\nconst StyledModal = ({\n  isOpen,\n  handleClose,\n  disableEnforceFocus = false,\n  styleOverrides,\n  modalTitle,\n  label,\n  children,\n  subHeaderStyling = true,\n  closeIconId\n}: {\n  isOpen: boolean;\n  handleClose: () => void;\n  styleOverrides?: Record<string, string>;\n  modalTitle?: string;\n  label: string;\n  children: React.ReactNode;\n  subHeaderStyling?: boolean;\n  closeIconId?: string;\n  disableEnforceFocus?: boolean;\n}) => {\n  return (\n    <Modal open={isOpen} onClose={handleClose} aria-labelledby={`${label}-modal`} disableEnforceFocus={disableEnforceFocus} >\n      <Box sx={{ ...classes.modal, ...(styleOverrides && styleOverrides) }}>\n        <CloseIcon onClick={handleClose} sx={classes.closeIcon} id={closeIconId} />\n        {modalTitle && (\n          <Box sx={subHeaderStyling ? classes.modalHeader : sharedClasses.sectionHeader}>\n            {modalTitle}\n          </Box>\n        )}\n        {children}\n      </Box>\n    </Modal>\n  );\n};\n\nexport default StyledModal;\n","import React, { ChangeEvent, Dispatch, MouseEvent, useState } from 'react';\nimport {\n  Box,\n  IconButton,\n  FormControl,\n  FormGroup,\n  FormControlLabel,\n  Switch,\n  Stack,\n  Tooltip,\n  Popper\n} from '@mui/material';\nimport ViewColumnIcon from '@mui/icons-material/ViewColumn';\nimport { classes } from './styles';\nimport { ClickAwayListener } from '@mui/base/ClickAwayListener';\nimport {\n  DndContext,\n  closestCenter,\n  KeyboardSensor,\n  PointerSensor,\n  useSensor,\n  useSensors,\n  DragEndEvent\n} from '@dnd-kit/core';\nimport {\n  arrayMove,\n  SortableContext,\n  sortableKeyboardCoordinates,\n  verticalListSortingStrategy\n} from '@dnd-kit/sortable';\nimport SortableField from './SortableField';\nimport {\n  GenericTableData,\n  TSortableColumn,\n  TTableState,\n  TableColumnAction,\n  TableDensity\n} from '../types';\nimport { handleAPIRequest } from '../../Utilities/handleAPIRequest';\nimport { clearPreferenceCache } from '../../../helpers/uiPreferencesHelpers';\n\ninterface IColumnSettings {\n  dispatch: Dispatch<TableColumnAction<TSortableColumn[]>>;\n  tableState: TTableState<GenericTableData, TSortableColumn[]>;\n  label: string;\n  userPreferenceSource?: string;\n}\n\nconst DENSITIES = ['Default', 'Compact', 'Ultra Compact'];\n\nexport default function ColumnSettings({\n  dispatch,\n  tableState,\n  label,\n  userPreferenceSource\n}: IColumnSettings) {\n  const [anchorEl, setAnchorEl] = useState<HTMLButtonElement | null>(null);\n  const [isOpen, setIsOpen] = useState(false);\n\n  const sensors = useSensors(\n    useSensor(PointerSensor),\n    useSensor(KeyboardSensor, {\n      coordinateGetter: sortableKeyboardCoordinates\n    })\n  );\n\n  const handleIconClick = (event: MouseEvent<HTMLButtonElement>) => {\n    setAnchorEl(event.currentTarget);\n    setIsOpen((prev) => !prev);\n  };\n\n  const sendLocalUserPreferences = (newColumns: TSortableColumn[]) => {\n    if (userPreferenceSource) {\n      handleAPIRequest({\n        url: `/api/v4/ui_preferences`,\n        method: 'POST',\n        body: {\n          ui_preference: {\n            sortable_columns: newColumns,\n            source: userPreferenceSource\n          }\n        }\n      });\n      clearPreferenceCache(userPreferenceSource);\n    }\n  };\n\n  const handleFieldSwitchChange = (event: ChangeEvent<HTMLInputElement>) => {\n    const newSortableColumns = tableState.columns.map((field) => {\n      if (field.id === event.target.name) {\n        return { ...field, enabled: event.target.checked };\n      } else {\n        return field;\n      }\n    });\n    dispatch({ type: 'SET_COLUMNS', payload: newSortableColumns });\n    sendLocalUserPreferences(newSortableColumns);\n  };\n\n  const handleDensitySwitchChange = (newDensity: TableDensity) => {\n    dispatch({ type: 'SET_DENSITY', payload: newDensity });\n    handleAPIRequest({\n      url: '/api/v4/ui_preferences',\n      method: 'POST',\n      body: {\n        ui_preference: {\n          columns: {\n            density: newDensity\n          },\n          source: 'universal'\n        }\n      }\n    });\n    clearPreferenceCache('universal');\n  };\n\n  function handleDragEnd(event: DragEndEvent) {\n    const { active, over } = event;\n\n    if (active.id !== over?.id) {\n      const oldIndex = tableState.columns.map((c) => c.id).indexOf(String(active.id));\n      const newIndex = tableState.columns.map((c) => c.id).indexOf(String(over?.id));\n      const newSortableColumns = arrayMove(tableState.columns, oldIndex, newIndex);\n\n      dispatch({ type: 'SET_COLUMNS', payload: newSortableColumns });\n      sendLocalUserPreferences(newSortableColumns);\n    }\n  }\n\n  return (\n    <ClickAwayListener onClickAway={() => setIsOpen(false)}>\n      <Box>\n        <Tooltip title=\"Table settings\" placement=\"top\" arrow>\n          <IconButton\n            id={`field-dropdown-${label}-button`}\n            sx={isOpen ? { ...classes.iconButton, ...classes.iconButtonOpen } : classes.iconButton}\n            onClick={handleIconClick}\n          >\n            <ViewColumnIcon />\n          </IconButton>\n        </Tooltip>\n        <Popper\n          id=\"column-settings-popover\"\n          sx={classes.popover}\n          open={isOpen}\n          anchorEl={anchorEl}\n          placement=\"bottom-end\"\n        >\n          <Box sx={classes.popoverContent}>\n            <FormControl component=\"fieldset\" variant=\"standard\">\n              <Stack sx={classes.tableSettingsHeader}>Column</Stack>\n              <FormGroup id=\"column-settings-switches\">\n                <DndContext\n                  sensors={sensors}\n                  collisionDetection={closestCenter}\n                  onDragEnd={handleDragEnd}\n                >\n                  <SortableContext\n                    items={tableState.columns}\n                    strategy={verticalListSortingStrategy}\n                  >\n                    {tableState.columns.map(\n                      (field, index) =>\n                        field.canToggle && (\n                          <SortableField\n                            key={index}\n                            field={field}\n                            handleFieldSwitchChange={handleFieldSwitchChange}\n                          />\n                        )\n                    )}\n                  </SortableContext>\n                </DndContext>\n              </FormGroup>\n            </FormControl>\n            <Stack sx={{ ...classes.tableSettingsHeader, paddingTop: 2 }}>Density</Stack>\n            <FormControl>\n              <FormGroup>\n                {DENSITIES.map((density, index) => {\n                  const isSwitched = density === tableState.density;\n                  return (\n                    <FormControlLabel\n                      sx={\n                        !isSwitched\n                          ? { ...classes.switchLabels, ...classes.labelActive }\n                          : classes.switchLabels\n                      }\n                      key={index}\n                      control={\n                        <Switch\n                          sx={isSwitched ? classes.switchActive : classes.switch}\n                          checked={isSwitched}\n                          onChange={() => handleDensitySwitchChange(density as TableDensity)}\n                        />\n                      }\n                      label={density}\n                      labelPlacement=\"start\"\n                    />\n                  );\n                })}\n              </FormGroup>\n            </FormControl>\n          </Box>\n        </Popper>\n      </Box>\n    </ClickAwayListener>\n  );\n}\n","import React, { Dispatch, ReactNode, useRef, useState } from 'react';\nimport { Box, Popper, IconButton, Badge, Button, Tooltip, ClickAwayListener } from '@mui/material';\nimport { classes } from './styles';\nimport SortIcon from '@material-ui/icons/Sort';\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport { TableFilter, TableFilterAction } from '../types';\n\nexport default function Filters({\n  dispatch,\n  numberOfFilters,\n  label,\n  children\n}: {\n  dispatch: Dispatch<TableFilterAction<TableFilter>>;\n  numberOfFilters: number;\n  label: string;\n  children: ReactNode;\n}) {\n  const [isOpen, setIsOpen] = useState(false);\n  const anchorEl = useRef<HTMLButtonElement>(null);\n\n  const handleDropdownOpen = () => {\n    setIsOpen((prev) => !prev);\n  };\n\n  const handleApplyFilters = () => {\n    dispatch({ type: 'SET_FILTERS' });\n    setIsOpen(false);\n  };\n\n  const handleResetFilters = () => {\n    dispatch({ type: 'RESET_FILTERS' });\n  };\n\n  return (\n    <ClickAwayListener onClickAway={() => setIsOpen(false)}>\n      <Box>\n        <Badge\n          badgeContent={numberOfFilters}\n          sx={{ '& .MuiBadge-badge': { backgroundColor: '#E37D7A', color: '#FFF' } }}\n        >\n          <Tooltip title=\"Filter\" placement=\"top\" arrow>\n            <IconButton\n              id={`filter-dropdown-${label}-button`}\n              data-testid={`filter-dropdown-${label}-button`}\n              sx={\n                isOpen ? { ...classes.iconButton, ...classes.iconButtonOpen } : classes.iconButton\n              }\n              onClick={handleDropdownOpen}\n              ref={anchorEl}\n            >\n              <SortIcon />\n            </IconButton>\n          </Tooltip>\n        </Badge>\n        <Popper\n          id=\"column-settings-popover\"\n          sx={classes.popover}\n          open={isOpen}\n          anchorEl={anchorEl.current}\n          placement=\"bottom-end\"\n        >\n          <Box sx={classes.filterPopoverContent}>\n            <Box sx={classes.scrollableFilters}>\n              <Box sx={classes.filterPopoverHeader}>\n                <Button\n                  id=\"reset-filters-button\"\n                  variant=\"contained\"\n                  endIcon={<CancelIcon />}\n                  sx={classes.clearButton}\n                  onClick={handleResetFilters}\n                >\n                  Clear all\n                </Button>\n                <Button\n                  id=\"apply-filters-button\"\n                  variant=\"contained\"\n                  onClick={handleApplyFilters}\n                  sx={classes.applyButton}\n                >\n                  Apply\n                </Button>\n              </Box>\n              {children}\n            </Box>\n          </Box>\n        </Popper>\n      </Box>\n    </ClickAwayListener>\n  );\n}\n","import React from 'react';\nimport { Box, IconButton, FormControlLabel, Switch } from '@mui/material';\nimport DragIndicatorIcon from '@mui/icons-material/DragIndicator';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { classes } from './styles';\nimport { TSortableColumn } from '../types';\n\nconst SortableField = ({\n  field,\n  handleFieldSwitchChange\n}: {\n  field: TSortableColumn;\n  handleFieldSwitchChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}) => {\n  const { attributes, listeners, setNodeRef, setActivatorNodeRef, transform, transition } =\n    useSortable({ id: field.id });\n\n  const style = {\n    transform: CSS.Translate.toString(transform),\n    transition\n  };\n\n  return (\n    <Box key={field.id} sx={classes.sortableField} style={style} ref={setNodeRef} {...attributes}>\n      <IconButton ref={setActivatorNodeRef} {...listeners}>\n        <DragIndicatorIcon sx={{ fontSize: 16 }} />\n      </IconButton>\n      <FormControlLabel\n        sx={\n          !field.enabled\n            ? { ...classes.sortableSwitchLabels, ...classes.labelActive }\n            : classes.sortableSwitchLabels\n        }\n        control={\n          <Switch\n            sx={field.enabled ? classes.switchActive : classes.switch}\n            checked={field.enabled}\n            onChange={handleFieldSwitchChange}\n            name={field.id}\n          />\n        }\n        label={field.label}\n        labelPlacement=\"start\"\n      />\n    </Box>\n  );\n};\n\nexport default SortableField;\n","import React from 'react';\nimport { IconButton, Tooltip } from '@mui/material';\nimport IosShareIcon from '@mui/icons-material/IosShare';\n\nimport { classes } from './Dropdowns/styles';\n\nconst ExportCsvButton = ({ isOpen, onClick }: { isOpen: boolean; onClick: () => void }) => {\n  return (\n    <Tooltip title=\"Export CSV\" placement=\"top\" arrow>\n      <IconButton\n        id={`export-csv-button`}\n        sx={isOpen ? { ...classes.iconButton, ...classes.iconButtonOpen } : classes.iconButton}\n        onClick={onClick}\n      >\n        <IosShareIcon />\n      </IconButton>\n    </Tooltip>\n  );\n};\n\nexport default ExportCsvButton;\n","import React, { Dispatch, useRef, useState } from 'react';\nimport { Box } from '@mui/material';\nimport moment, { Moment } from 'moment';\nimport { sharedClasses } from '../../CustomUIElements/sharedClasses';\nimport DayPicker, { DateUtils } from 'react-day-picker';\nimport { DateField, LocalizationProvider } from '@mui/x-date-pickers';\nimport { AdapterMoment } from '@mui/x-date-pickers/AdapterMoment';\n\ntype DateRange = { from: Date | null; to: Date | null };\nexport type TempDateRange = { from: Moment | null; to: Moment | null };\n\nexport type DateRangeAction =\n  | {\n      type: 'SET_DATE_RANGE_TEMP_FILTER';\n      payload: DateRange;\n    }\n  | {\n      type: 'SET_DATE_FIELD_RANGE';\n      payload: TempDateRange;\n    };\n\nconst MIN_DATE = moment('01/01/1990', 'DD/MM/YYYY');\n\nconst DateRangeFilter = ({\n  dispatch,\n  dateRange,\n  dateRangeTemp,\n  label\n}: {\n  dispatch: Dispatch<DateRangeAction>;\n  dateRange: DateRange;\n  dateRangeTemp: TempDateRange;\n  label: string;\n}) => {\n  const dateRangeInputsRefs = useRef<{\n    from: HTMLInputElement | null;\n    to: HTMLInputElement | null;\n  }>({ from: null, to: null });\n\n  // Changes the date range when a day is clicked on the calendar\n  const handlePublishedDayClick = (day: Date) => {\n    let range = DateUtils.addDayToRange(day, dateRange);\n    if (range.from && range.to && range.from > range.to) range = { from: range.to, to: range.from };\n    // Add the new range to the temp filter\n    dispatch({ type: 'SET_DATE_RANGE_TEMP_FILTER', payload: range as DateRange });\n    // Update the text input date fields\n    dispatch({\n      type: 'SET_DATE_FIELD_RANGE',\n      payload: { from: moment(range.from), to: moment(range.to) }\n    });\n  };\n\n  // Swaps the to/from dates and field focus if the from date is after the to date\n  const handleDateOrder = (dateRange: { from: Date | null; to: Date | null }) => {\n    if (moment(dateRange.from).isAfter(moment(dateRange.to))) {\n      dispatch({\n        type: 'SET_DATE_FIELD_RANGE',\n        payload: { from: moment(dateRange.to), to: moment(dateRange.from) }\n      });\n      if (dateRangeInputsRefs.current.from === document.activeElement) {\n        dateRangeInputsRefs.current.to?.focus();\n      } else {\n        dateRangeInputsRefs.current.from?.focus();\n      }\n      return { from: dateRange.to, to: dateRange.from };\n    }\n    return dateRange;\n  };\n\n  // Changes the date range when the date field is edited\n  const handleDateFieldChange = (date: Moment | null, type: 'from' | 'to') => {\n    if (type === 'from') {\n      dispatch({\n        type: 'SET_DATE_FIELD_RANGE',\n        payload: { from: date, to: dateRangeTemp.to }\n      });\n      date?.isValid() &&\n        date.isAfter(MIN_DATE) &&\n        dispatch({\n          type: 'SET_DATE_RANGE_TEMP_FILTER',\n          payload: handleDateOrder({ from: date.toDate(), to: dateRangeTemp.to?.toDate() || null })\n        });\n    } else {\n      dispatch({\n        type: 'SET_DATE_FIELD_RANGE',\n        payload: { from: dateRangeTemp.from, to: date }\n      });\n      date?.isValid() &&\n        date.isAfter(MIN_DATE) &&\n        dispatch({\n          type: 'SET_DATE_RANGE_TEMP_FILTER',\n          payload: handleDateOrder({\n            from: dateRangeTemp.from?.toDate() || null,\n            to: date.toDate()\n          })\n        });\n    }\n  };\n  return (\n    <Box\n      sx={{\n        ...sharedClasses.datePickerCalendar,\n        ...(dateRange.from && dateRange.to === null ? sharedClasses.onlyStartDate : {})\n      }}\n      id={`${label}date-range-filter`}\n    >\n      <DayPicker\n        onDayClick={handlePublishedDayClick}\n        selectedDays={[dateRange.from || undefined, dateRange]}\n        modifiers={{\n          start: dateRange.from || undefined,\n          end: dateRange.to || undefined,\n          first: { daysOfWeek: [0] },\n          last: { daysOfWeek: [6] }\n        }}\n        modifiersStyles={{\n          first: {\n            borderTopLeftRadius: '50%',\n            borderBottomLeftRadius: '50%'\n          },\n          last: {\n            borderTopRightRadius: '50%',\n            borderBottomRightRadius: '50%'\n          }\n        }}\n      />\n      <LocalizationProvider dateAdapter={AdapterMoment}>\n        <Box sx={datefieldsContainerClass}>\n          <DateField\n            value={dateRangeTemp.from}\n            onChange={(value) => handleDateFieldChange(value, 'from')}\n            format=\"DD/MM/YYYY\"\n            inputProps={{ sx: dateFieldClass }}\n            minDate={MIN_DATE}\n            inputRef={(ref) => (dateRangeInputsRefs.current.from = ref)}\n          />\n          <span>to</span>\n          <DateField\n            value={dateRangeTemp.to}\n            onChange={(value) => handleDateFieldChange(value, 'to')}\n            format=\"DD/MM/YYYY\"\n            inputProps={{ sx: dateFieldClass }}\n            minDate={MIN_DATE}\n            inputRef={(ref) => (dateRangeInputsRefs.current.to = ref)}\n          />\n        </Box>\n      </LocalizationProvider>\n    </Box>\n  );\n};\n\nconst dateFieldClass = {\n  padding: '8px 0px 8px 0px',\n  textAlign: 'center',\n  fontSize: '14px',\n  fontFamily: 'Source Sans Pro'\n};\n\nconst datefieldsContainerClass = {\n  display: 'flex',\n  alignItems: 'center',\n  justifyContent: 'center',\n  columnGap: '8px',\n  padding: '12px 2px 6px 2px',\n  fontSize: '14px',\n  fontWeight: 600,\n  fontFamily: 'Source Sans Pro',\n  '& span': {\n    color: '#084D6D'\n  }\n};\n\nexport default DateRangeFilter;\n","import { Box } from '@mui/material';\nimport React from 'react';\nimport MultiSelect, { IOptionType } from '../../CustomUIElements/MultiSelect';\n\nconst MultiSelectFilter = ({\n  handleFilterChange,\n  selectOptions,\n  name,\n  label,\n  subLabel,\n  value,\n  freeInput = false,\n  disabled = false,\n  displayLabel = false\n}: {\n  handleFilterChange: (name: string, value: IOptionType[]) => void;\n  selectOptions: IOptionType[];\n  name: string;\n  label: string;\n  subLabel?: string;\n  value: IOptionType[];\n  freeInput?: boolean;\n  disabled?: boolean;\n  displayLabel?: boolean;\n}) => {\n  return (\n    <Box sx={filterSelectGroupStyle} id={`${name}-filter`}>\n      {label}\n      {subLabel && <Box sx={filterSelectSubLabelStyle}>{subLabel}</Box>}\n      <MultiSelect\n        handleFilterChange={(name, value) => handleFilterChange(name, value as IOptionType[])}\n        selectOptions={selectOptions}\n        name={name}\n        filters={value}\n        freeInput={freeInput}\n        disabled={disabled}\n        displayLabel={displayLabel}\n      />\n    </Box>\n  );\n};\n\nconst filterSelectGroupStyle = {\n  fontFamily: 'Source Sans Pro',\n  fontSize: '14px',\n  fontWeight: 'bold',\n  color: '#084D6D'\n};\n\nconst filterSelectSubLabelStyle = {\n  fontSize: '12px',\n  fontWeight: '400'\n};\n\nexport default MultiSelectFilter;\n","import { Box, CircularProgress, InputBase, Slider, styled } from '@mui/material';\nimport React, { useState } from 'react';\nimport { sharedClasses } from '../../CustomUIElements/sharedClasses';\nimport { handleAPIRequest } from '../../Utilities/handleAPIRequest';\nimport { useDebouncedCallback } from 'use-debounce';\nimport { ISnackbarInput } from '../../CustomUIElements/StyledSnackbar';\n\nconst DEFAULT_RADIUS = 2;\nconst DEFAULT_MIN_RADIUS = 1;\nconst DEFAULT_MAX_RADIUS = 20;\nconst SEARCH_DELAY = 900;\n\nconst RadiusSearchFilter = ({\n  setPostcodes,\n  setSnackbarState\n}: {\n  setPostcodes: (postcodes: string[]) => void;\n  setSnackbarState: (snackbarState: ISnackbarInput) => void;\n}) => {\n  const [inputPostcode, setInputPostcode] = useState('');\n  const [inputRadius, setInputRadius] = useState(DEFAULT_RADIUS);\n  const [isLoading, setIsLoading] = useState(false);\n\n  const handleRadiusSearch = useDebouncedCallback((postcode, radius) => {\n    if (!postcode && !inputPostcode) return;\n    handleAPIRequest({\n      method: 'POST',\n      url: `/api/v4/searches/find_nearby_postcodes`,\n      body: {\n        postcode: postcode || inputPostcode,\n        radius: radius || inputRadius\n      },\n      setLoaderState: setIsLoading,\n      setSnackbarState,\n      successMessage: { show: false },\n      onSuccess: (response: { postal_codes: string[] }) => {\n        setPostcodes(response.postal_codes);\n      }\n    });\n  }, SEARCH_DELAY);\n\n  return (\n    <Box>\n      <StyledInput\n        value={inputPostcode}\n        onChange={(event) => {\n          if (isLoading) return;\n          setInputPostcode(event.target.value);\n          handleRadiusSearch(event.target.value, inputRadius);\n        }}\n        placeholder=\"Input a postcode\"\n        endAdornment={\n          isLoading && (\n            <Box sx={adornmentContainer}>\n              <CircularProgress size={18} />\n            </Box>\n          )\n        }\n      />\n      <Box sx={sliderContainer} id=\"radius-search-filter\">\n        Within\n        <Box>\n          <Slider\n            sx={sharedClasses.ratingSlider}\n            aria-label=\"Radius search slider\"\n            value={inputRadius}\n            onChange={(event, value) => {\n              if (isLoading) return;\n              setInputRadius(value as number);\n              handleRadiusSearch(inputPostcode, value as number);\n            }}\n            valueLabelDisplay=\"on\"\n            valueLabelFormat={(value: number) => `${value}km`}\n            getAriaValueText={(value: number) => `${value}km`}\n            min={DEFAULT_MIN_RADIUS}\n            max={DEFAULT_MAX_RADIUS}\n          />\n        </Box>\n      </Box>\n    </Box>\n  );\n};\n\nconst sliderContainer = {\n  fontFamily: 'Source Sans Pro',\n  fontSize: '10px',\n  color: '#084D6D',\n  padding: '6px 9px 0px 9px'\n};\n\nconst adornmentContainer = {\n  height: '100%',\n  display: 'flex',\n  alignItems: 'center'\n};\n\nconst StyledInput = styled(InputBase)(() => ({\n  width: '100%',\n  height: '41px',\n  border: '1px solid #DADEE0',\n  backgroundColor: '#ffffff',\n  borderRadius: '6px',\n  padding: '6px 22px 6px 6px',\n  display: 'flex',\n  marginTop: '3px',\n  '&:focus-within': {\n    borderColor: '#77C2BE',\n    boxShadow: '0 0 0 2px rgba(24, 144, 255, 0.2)'\n  },\n  '& .MuiInputBase-input': {\n    fontFamily: 'Source Sans Pro',\n    fontSize: '12px',\n    color: '#000000',\n    paddingLeft: '6px',\n    height: '26px'\n  },\n  '& input': {\n    '&::placeholder': {\n      color: '#000000'\n    }\n  }\n}));\n\nexport default RadiusSearchFilter;\n","import React, { useRef, Dispatch } from 'react';\nimport { Box, Paper, SxProps, Table, TableContainer } from '@mui/material';\nimport { classes } from './styles';\nimport {\n  handleScrollableEnter,\n  handleScrollableExit,\n  handleScroll,\n  tablePadding\n} from './tableHelper';\nimport GenericTableHead from './GenericTableHead';\nimport GenericTableBody from './GenericTableBody';\nimport GenericTablePagination from './GenericTablePagination';\nimport TableArrows from './TableArrows';\nimport LoadingTableItems from './LoadingTableItems';\nimport { GenericTableData, TPaginationState, TSortableColumn, TTableState } from './types';\nimport NoItemsMessage from './NoItemsMessage';\nimport { GenericTableAction } from './genericTableReducer';\nimport { ActionListItem } from './GenericTableActions';\n\ninterface IGenericTableProps<T> {\n  items: T[];\n  isLoadingItems: boolean;\n  dispatch: Dispatch<GenericTableAction<T>>;\n  tableState: TTableState<T, TSortableColumn[]>;\n  paginationState: TPaginationState<string>;\n  headerStyle: (id: string, tableHovered: boolean) => SxProps;\n  TableRows: React.FC<{\n    column: TSortableColumn;\n    item: any;\n    tableHovered: boolean;\n  }>;\n  TableActionList?: ActionListItem[];\n  pagination?: { totalPages: number; totalItems: number };\n  allowMultipleSelection?: boolean;\n  label: string;\n  titleCellId?: string;\n  userPreferenceSource?: string;\n  customEmptyStateMessage?: string;\n}\n\nconst GenericTable = <GenericTableProps extends GenericTableData>({\n  items,\n  pagination,\n  isLoadingItems,\n  dispatch,\n  tableState,\n  paginationState,\n  headerStyle,\n  TableRows,\n  TableActionList,\n  allowMultipleSelection = true,\n  label,\n  titleCellId, // This is used to attach a ref to the title cell for the table arrows\n  userPreferenceSource,\n  customEmptyStateMessage\n}: IGenericTableProps<GenericTableProps>) => {\n  const tableRef = useRef<HTMLDivElement>(null);\n  const titleCellRef = useRef<HTMLDivElement>(null);\n  const actionCellRef = useRef<HTMLDivElement>(null);\n  const parentRef = useRef<HTMLDivElement>(null);\n  return (\n    <Box>\n      <Box sx={classes.tableAndArrowsContainer} ref={parentRef}>\n        {!isLoadingItems && (\n          <TableArrows\n            tableRef={tableRef}\n            titleCellRef={titleCellRef}\n            actionCellRef={actionCellRef}\n            parentRef={parentRef}\n            tableState={tableState}\n            dispatch={dispatch}\n          />\n        )}\n        <TableContainer\n          sx={{ boxShadow: 'none', scrollBehavior: 'smooth' }}\n          component={Paper}\n          onMouseEnter={() => handleScrollableEnter(tableRef, dispatch)}\n          onMouseLeave={() => handleScrollableExit(dispatch)}\n          ref={tableRef}\n          onScroll={() => handleScroll(tableRef, dispatch)}\n        >\n          <Table\n            sx={{\n              ...classes.tableWrapper,\n              'th, td, tr, thead': {\n                padding: `${tablePadding(tableState.density)} 10px`\n              }\n            }}\n            aria-label={`${label} table`}\n          >\n            <GenericTableHead\n              tableState={tableState}\n              paginationState={paginationState}\n              dispatch={dispatch}\n              items={items}\n              titleCellRef={titleCellRef}\n              actionCellRef={actionCellRef}\n              headerStyle={headerStyle}\n              userPreferenceSource={userPreferenceSource}\n              allowMultipleSelection={allowMultipleSelection}\n              hasActionItems={!!TableActionList}\n              titleCellId={titleCellId}\n            />\n            {!isLoadingItems && (\n              <GenericTableBody\n                tableState={tableState}\n                dispatch={dispatch}\n                items={items}\n                TableRows={TableRows}\n                TableActionList={TableActionList}\n                allowMultipleSelection={allowMultipleSelection}\n              />\n            )}\n          </Table>\n          {isLoadingItems && <LoadingTableItems numberOfRows={10} />}\n          <NoItemsMessage\n            showNoItemsMessage={items.length === 0 && !isLoadingItems}\n            label={label}\n            customEmptyStateMessage={customEmptyStateMessage}\n          />\n        </TableContainer>\n      </Box>\n      {pagination && (\n        <GenericTablePagination\n          paginationState={paginationState}\n          dispatch={dispatch}\n          totalPages={pagination.totalPages}\n          totalItems={pagination.totalItems}\n          userPreferenceSource={userPreferenceSource}\n        />\n      )}\n    </Box>\n  );\n};\n\nexport default GenericTable;\n","import React, { Dispatch } from 'react';\nimport { GenericTableData, TableActionItemAction } from './types';\nimport { IconButton, Tooltip } from '@mui/material';\n\nexport type ActionListItem = {\n  id: string;\n  tooltipLabel: string;\n  icon: JSX.Element;\n  actionCall?: (id: string) => void;\n  elementId?: string;\n};\n\ninterface IGenericTableActionProps<T> {\n  item: T;\n  dispatch: Dispatch<TableActionItemAction<T>>;\n  actions: ActionListItem[];\n}\n\nconst GenericTableActions = <GenericTableActionsProps extends GenericTableData>({\n  item,\n  dispatch,\n  actions\n}: IGenericTableActionProps<GenericTableActionsProps>) => {\n  return (\n    <>\n      {actions.map((action) => (\n        <Tooltip placement=\"top\" title={action.tooltipLabel} key={action.id} arrow>\n          <IconButton\n            className={`${action.id}-button`}\n            id={action?.elementId ? action.elementId : 'table-action-button'}\n            onClick={(event) => {\n              dispatch({\n                type: 'SELECT_ACTION_ITEM',\n                payload: { item: item, anchorEl: event.currentTarget, name: action.id }\n              });\n\n              action.id === 'emailAnalytics' &&\n                dispatch({\n                  type: 'SELECT_ACTION_ITEM',\n                  payload: { item: item, anchorEl: event.currentTarget, name: 'candidatePool' }\n                });\n\n              action?.actionCall && action.actionCall(item);\n            }}\n          >\n            {action.icon}\n          </IconButton>\n        </Tooltip>\n      ))}\n    </>\n  );\n};\n\nexport default GenericTableActions;\n","import React, { Dispatch, useMemo } from 'react';\nimport { Box, Checkbox, TableBody, TableCell, TableRow } from '@mui/material';\nimport { classes } from './styles';\nimport { handleSelectOne } from './tableHelper';\nimport { GenericTableAction } from './genericTableReducer';\nimport {\n  GenericTableData,\n  TSortableColumn,\n  TTableState,\n  TableActionItemAction,\n  TableSelectionAction\n} from './types';\nimport GenericTableActions, { ActionListItem } from './GenericTableActions';\n\ninterface IGenericTableBodyProps<T> {\n  tableState: TTableState<T, TSortableColumn[]>;\n  dispatch: Dispatch<TableActionItemAction<T> | TableSelectionAction<T>>;\n  items: T[];\n  TableRows: React.FC<{\n    column: TSortableColumn;\n    item: T;\n    tableHovered: boolean;\n    dispatch?: Dispatch<\n      TableActionItemAction<GenericTableData> | TableSelectionAction<GenericTableData>\n    >;\n  }>;\n  TableActionList?: ActionListItem[];\n  allowMultipleSelection?: boolean;\n}\n\nconst GenericTableBody = <GenericTableBodyProps extends GenericTableData>({\n  tableState,\n  dispatch,\n  items,\n  TableRows,\n  TableActionList,\n  allowMultipleSelection = true\n}: IGenericTableBodyProps<GenericTableBodyProps>) => {\n  const allItemIds = useMemo(() => items.map((item) => item.id), [items]);\n\n  return (\n    <TableBody>\n      {items.map((item) => (\n        <TableRow key={item.id}>\n          {allowMultipleSelection && (\n            <TableCell sx={{ ...classes.sticky, width: '58px' }}>\n              <Checkbox\n                id={`select-checkbox-${item.id}`}\n                sx={classes.checkbox}\n                checked={tableState.selectedItemIds.includes(item.id)}\n                onChange={(event) => handleSelectOne(event, item, allItemIds, dispatch)}\n                inputProps={{\n                  'aria-label': `select ${item.name}`\n                }}\n              />\n            </TableCell>\n          )}\n          {tableState.columns.map(\n            (column) =>\n              column.enabled && (\n                <TableRows\n                  key={column.id}\n                  item={item}\n                  column={column}\n                  tableHovered={tableState.tableHovered}\n                  dispatch={dispatch}\n                />\n              )\n          )}\n          <TableCell\n            sx={{\n              zIndex: '4',\n              ...classes.actionsTableCell,\n              ...classes.stickyRight,\n              ...(tableState.tableHovered && classes.scrollShadowVisible),\n              ...(!TableActionList && { minWidth: '24px', width: '24px' })\n            }}\n          >\n            <Box sx={classes.actionItems}>\n              {TableActionList && (\n                <GenericTableActions item={item} dispatch={dispatch} actions={TableActionList} />\n              )}\n            </Box>\n          </TableCell>\n        </TableRow>\n      ))}\n    </TableBody>\n  );\n};\n\nexport default GenericTableBody;\n","import React, { Dispatch, RefObject, useMemo } from 'react';\nimport { Checkbox, SxProps, TableCell, TableHead, TableRow, TableSortLabel } from '@mui/material';\nimport { classes } from './styles';\nimport { handleSelectAllOnPage } from './tableHelper';\nimport {\n  GenericTableData,\n  TPaginationState,\n  TSortableColumn,\n  TTableState,\n  TablePaginationAction,\n  TableSelectionAction\n} from './types';\nimport { updateUiSettings } from '../../helpers/uiPreferencesHelpers';\n\ninterface IGenericTableHeadProps<T> {\n  tableState: TTableState<T, TSortableColumn[]>;\n  paginationState: TPaginationState<string>;\n  dispatch: Dispatch<TableSelectionAction<T> | TablePaginationAction<string>>;\n  items: T[];\n  titleCellRef: RefObject<HTMLDivElement>;\n  actionCellRef: RefObject<HTMLDivElement>;\n  headerStyle: (id: string, tableHovered: boolean) => SxProps;\n  titleCellId?: string;\n  userPreferenceSource?: string;\n  hasActionItems?: boolean;\n  allowMultipleSelection?: boolean;\n}\n\nconst GenericTableHead = <GenericTableHeadProps extends GenericTableData>({\n  tableState,\n  paginationState,\n  dispatch,\n  items,\n  titleCellRef,\n  actionCellRef,\n  headerStyle,\n  titleCellId = 'name', // This is used to attach a ref to the title cell for the table arrows\n  userPreferenceSource,\n  hasActionItems = true,\n  allowMultipleSelection = true\n}: IGenericTableHeadProps<GenericTableHeadProps>) => {\n  const selectAllIsIndeterminate = useMemo(\n    () => items.map((item) => item.id).some((id) => tableState.selectedItemIds.includes(id)),\n    [items, tableState.selectedItemIds]\n  );\n  const selectAllIsChecked = useMemo(\n    () => items.map((item) => item.id).every((id) => tableState.selectedItemIds.includes(id)),\n    [items, tableState.selectedItemIds]\n  );\n\n  const handleSortChange = (id: string) => {\n    const sortOrder =\n      paginationState.sort === id && paginationState.sort_order === 'asc' ? 'desc' : 'asc';\n    dispatch({ type: 'SET_SORT', payload: { sortBy: id, sortOrder } });\n    if (userPreferenceSource) {\n      updateUiSettings({\n        source: userPreferenceSource,\n        sorting: {\n          sortBy: id,\n          sortOrder\n        }\n      });\n    }\n  };\n\n  return (\n    <TableHead>\n      <TableRow>\n        {allowMultipleSelection && (\n          <TableCell sx={headerStyle('checkbox', tableState.tableHovered)}>\n            <Checkbox\n              id=\"select-all-checkbox\"\n              sx={classes.checkbox}\n              indeterminate={selectAllIsIndeterminate && !selectAllIsChecked}\n              checked={selectAllIsChecked}\n              onChange={(e) => handleSelectAllOnPage(e, items, dispatch)}\n              inputProps={{\n                'aria-label': 'select all items on page'\n              }}\n            />\n          </TableCell>\n        )}\n        {tableState.columns.map(\n          (header) =>\n            header.enabled && (\n              <TableCell\n                key={header.id}\n                ref={header.id === titleCellId ? titleCellRef : null}\n                sx={headerStyle(header.id, tableState.tableHovered)}\n              >\n                <TableSortLabel\n                  active={paginationState.sort === header.id}\n                  direction={\n                    paginationState.sort === header.id ? paginationState.sort_order : 'asc'\n                  }\n                  onClick={() => handleSortChange(header.id)}\n                  sx={header.sortable ? classes.sortable : classes.notSortable}\n                  disabled={!header.sortable}\n                  id={`${header.id}-sort-label`}\n                >\n                  {header.label}\n                </TableSortLabel>\n              </TableCell>\n            )\n        )}\n        <TableCell\n          sx={{\n            ...headerStyle('actions', tableState.tableHovered),\n            ...(!hasActionItems && { minWidth: '20px', width: '20px' })\n          }}\n          ref={actionCellRef}\n        />\n      </TableRow>\n    </TableHead>\n  );\n};\n\nexport default GenericTableHead;\n","import { Box, FormControl, MenuItem, Pagination, Select, SelectChangeEvent } from '@mui/material';\nimport React, { Dispatch } from 'react';\nimport { TPaginationState, TablePaginationAction } from './types';\nimport { classes } from './styles';\nimport { handleAPIRequest } from '../Utilities/handleAPIRequest';\nimport { clearPreferenceCache } from '../../helpers/uiPreferencesHelpers';\n\nconst GenericTablePagination = ({\n  paginationState,\n  dispatch,\n  totalPages,\n  totalItems,\n  userPreferenceSource\n}: {\n  paginationState: TPaginationState<string>;\n  dispatch: Dispatch<TablePaginationAction<string>>;\n  totalPages: number;\n  totalItems: number;\n  userPreferenceSource?: string;\n}) => {\n  const handleSetLimit = (e: SelectChangeEvent<number>) => {\n    dispatch({ type: 'SET_LIMIT', payload: Number(e.target.value) });\n    dispatch({ type: 'SET_PAGE', payload: 1 });\n    if (userPreferenceSource) {\n      handleAPIRequest({\n        method: 'POST',\n        url: '/api/v4/ui_preferences',\n        body: {\n          source: userPreferenceSource,\n          row_count: Number(e.target.value)\n        }\n      });\n      clearPreferenceCache(userPreferenceSource);\n    }\n  };\n  return (\n    <Box sx={classes.paginationParent}>\n      <Box sx={classes.rowSelectContainer}>\n        <span>Rows per page: </span>\n        <FormControl>\n          <Select\n            id=\"rows-per-page\"\n            sx={classes.rowSelect}\n            value={paginationState.limit}\n            onChange={handleSetLimit}\n            displayEmpty\n            MenuProps={{ sx: classes.paginationMenuItems }}\n          >\n            <MenuItem id=\"first-rpp-item\" value={10}>\n              10\n            </MenuItem>\n            <MenuItem id=\"second-rpp-item\" value={20}>\n              20\n            </MenuItem>\n            <MenuItem value={30}>30</MenuItem>\n            <MenuItem value={40}>40</MenuItem>\n            <MenuItem value={50}>50</MenuItem>\n          </Select>\n        </FormControl>\n      </Box>\n      <Box sx={classes.paginationContainer}>\n        <Pagination\n          id=\"pagination-menu\"\n          count={totalPages}\n          page={paginationState.page}\n          siblingCount={0}\n          onChange={(e, page) => dispatch({ type: 'SET_PAGE', payload: page })}\n          sx={classes.pagination}\n        />\n        <span id=\"total-jobs\">{totalItems} Total</span>\n      </Box>\n    </Box>\n  );\n};\n\nexport default GenericTablePagination;\n","import { Box, Button, Collapse } from '@mui/material';\nimport React from 'react';\nimport { classes } from './styles';\nimport { TableActionDrawerAction } from './types';\n\nexport type DrawerActionItem = {\n  id: string;\n  label: string;\n  icon: JSX.Element;\n};\n\nconst ItemActionsDrawer = ({\n  drawerOpen,\n  dispatch,\n  actions,\n  label\n}: {\n  drawerOpen: boolean;\n  dispatch: React.Dispatch<TableActionDrawerAction>;\n  actions: DrawerActionItem[];\n  label: string;\n}) => {\n  return (\n    <Collapse in={drawerOpen}>\n      <Box sx={classes.actionsContianer}>\n        {actions.map((action) => (\n          <Button\n            key={action.id}\n            id={`${action.id}-action-${label}-button`}\n            variant=\"outlined\"\n            startIcon={action.icon}\n            sx={classes.actionButton}\n            onClick={() =>\n              dispatch({\n                type: 'SET_ACTION_MODAL_OPEN',\n                payload: { name: action.id, isOpen: true }\n              })\n            }\n          >\n            {action.label}\n          </Button>\n        ))}\n      </Box>\n    </Collapse>\n  );\n};\n\nexport default ItemActionsDrawer;\n","import { Box, Skeleton } from '@mui/material';\nimport React from 'react';\n\nconst LoadingTableItems = ({ numberOfRows }: { numberOfRows?: number }) => {\n  return (\n    <>\n      {[...Array(numberOfRows || 5)].map((_, index) => (\n        <Box key={index} sx={skeletonContaineStyle}>\n          <Skeleton animation=\"wave\" height={60} />\n        </Box>\n      ))}\n    </>\n  );\n};\n\nconst skeletonContaineStyle = {\n  borderBottom: '1px solid #DDDDDD',\n  padding: '10px 0px'\n};\n\nexport default LoadingTableItems;\n","import React from 'react';\nimport { Box } from '@mui/material';\nimport { classes } from './styles';\n\nconst NoItemsMessage = ({\n  showNoItemsMessage,\n  label,\n  customEmptyStateMessage = 'found that match your search parameters'\n}: {\n  showNoItemsMessage: boolean;\n  label?: string;\n  customEmptyStateMessage?: string;\n}) => {\n  if (!showNoItemsMessage) return null;\n  return (\n    <Box sx={classes.noResultsContainer}>\n      <svg\n        width=\"134\"\n        height=\"110\"\n        viewBox=\"0 0 134 110\"\n        fill=\"none\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <path\n          d=\"M58.8275 43.8437C61.8329 43.8437 64.2656 46.5195 64.2656 49.8329V87.1779C64.2656 90.4817 61.8353 93.1683 58.8275 93.1683H9.54269C6.5445 93.1683 4.10938 90.4829 4.10938 87.1779V48.9799C4.10938 45.6665 6.53969 43.8401 9.54269 43.8401\"\n          fill=\"#D1D1D1\"\n        />\n        <path\n          d=\"M22.4689 36.625C23.4819 36.625 24.3036 37.5273 24.3036 38.6463L36.3349 51.5305C36.3349 52.6446 35.512 53.5494 34.5001 53.5494H5.94034C4.92972 53.5494 4.11039 52.6446 4.11039 51.5305V38.6463C4.11039 37.5273 4.93092 36.625 5.94034 36.625H22.4689Z\"\n          fill=\"#D1D1D1\"\n        />\n        <path\n          d=\"M68.3683 54.6045C71.3713 54.6045 73.804 57.2803 73.804 60.5937L65.4218 87.1827C64.5075 89.5637 61.7884 93.1731 58.7806 93.1731H9.54269C6.5445 93.1731 4.10938 90.4877 4.10938 87.1827L12.494 60.5937C13.7344 58.2813 16.1274 54.6045 19.1304 54.6045\"\n          fill=\"#EBEBEB\"\n        />\n        <path\n          d=\"M110.384 88.0627L93.4971 65.5819L99.0447 61.4338L115.932 83.9146L110.384 88.0627Z\"\n          fill=\"#CFCFCF\"\n          stroke=\"#E3E3E3\"\n        />\n        <path\n          d=\"M106.686 83.0262L112.129 78.9564C113.057 78.2627 114.372 78.451 115.067 79.3758L131.344 101.045C132.039 101.969 131.851 103.282 130.923 103.975L125.48 108.045C124.552 108.739 123.237 108.551 122.542 107.626L106.265 85.9569C105.57 85.0321 105.758 83.7199 106.686 83.0262Z\"\n          fill=\"#D1D1D1\"\n          stroke=\"#E3E3E3\"\n        />\n        <g opacity=\"0.2\">\n          <path\n            d=\"M101.28 16.9181C105.077 21.9746 107.286 28.041 107.628 34.35C107.969 40.659 106.428 46.9273 103.199 52.3624C99.9698 57.7975 95.1978 62.1553 89.4864 64.8846C83.775 67.6139 77.3807 68.5922 71.112 67.6958C64.8433 66.7995 58.9817 64.0687 54.2686 59.8488C49.5554 55.6288 46.2023 50.1093 44.6332 43.9881C43.0641 37.8669 43.3495 31.419 45.4534 25.4596C47.5572 19.5003 51.385 14.2971 56.4527 10.5082C59.8176 7.99159 63.6466 6.16109 67.7208 5.12123C71.795 4.08137 76.0346 3.85253 80.1975 4.44778C84.3604 5.04303 88.3649 6.45072 91.9824 8.59041C95.5999 10.7301 98.7594 13.5599 101.28 16.9181Z\"\n            fill=\"white\"\n          />\n          <path\n            d=\"M105.637 24.8457C108.598 32.7335 108.32 41.4684 104.864 49.1533C101.409 56.8382 95.0534 62.8525 87.1792 65.89L105.637 24.8457Z\"\n            fill=\"#EBEBEB\"\n          />\n          <path\n            d=\"M80.5641 4.50764L55.2798 60.7207C51.0568 57.2441 47.7962 52.7467 45.8086 47.6569L64.4609 6.15355C69.5989 4.23829 75.1437 3.67155 80.5641 4.50764Z\"\n            fill=\"#EBEBEB\"\n          />\n          <path\n            d=\"M99.2538 14.4699L75.1715 68.0157C73.0724 67.98 70.9818 67.7403 68.9292 67.3002L94.57 10.2849C96.2695 11.5177 97.8388 12.92 99.2538 14.4699Z\"\n            fill=\"#EBEBEB\"\n          />\n          <path\n            d=\"M84.8377 5.47534L58.8488 63.2682C58.5172 63.0655 58.1898 62.8546 57.8706 62.6437L83.7186 5.16105C84.0916 5.25616 84.4688 5.35541 84.8377 5.47534Z\"\n            fill=\"#EBEBEB\"\n          />\n          <path\n            d=\"M55.1929 11.5048L43.6574 37.1446C43.6201 36.1893 43.6326 35.2298 43.6906 34.2746L53.0706 13.4112C53.7421 12.7537 54.4468 12.1169 55.1929 11.5048Z\"\n            fill=\"#EBEBEB\"\n          />\n        </g>\n        <path\n          d=\"M75.6571 3.63546H75.6565C69.2268 3.63546 62.9413 5.53766 57.595 9.10167C52.2486 12.6657 48.0813 17.7315 45.6203 23.6586C43.1593 29.5858 42.5152 36.108 43.7694 42.4005C45.0236 48.693 48.1198 54.4729 52.6663 59.0096C57.2128 63.5462 63.0054 66.6357 69.3115 67.8878C75.6176 69.1398 82.1542 68.498 88.0949 66.0437C94.0355 63.5893 99.1135 59.4325 102.687 54.0986C106.26 48.7647 108.167 42.4934 108.168 36.0777V36.0771C108.159 27.4761 104.731 19.2302 98.6359 13.1483C92.5408 7.06648 84.2769 3.64546 75.6571 3.63546ZM75.656 71.647C68.6035 71.6469 61.7096 69.5603 55.846 65.6512C49.9822 61.742 45.4122 56.1859 42.7137 49.6856C40.0152 43.1853 39.3093 36.0326 40.6854 29.1322C42.0615 22.2317 45.4576 15.8932 50.4446 10.9182C55.4316 5.94325 61.7854 2.55533 68.7026 1.1831C75.6198 -0.189144 82.7895 0.515971 89.3049 3.20921C95.8203 5.90245 101.389 10.4628 105.306 16.3133C109.223 22.1637 111.314 29.0415 111.313 36.077C111.301 45.5074 107.541 54.5484 100.856 61.2167C94.1719 67.885 85.1092 71.6362 75.656 71.647Z\"\n          fill=\"#D1D1D1\"\n          stroke=\"#E3E3E3\"\n        />\n      </svg>\n      <span>\n        No {label || 'items'} {customEmptyStateMessage}\n      </span>\n    </Box>\n  );\n};\n\nexport default NoItemsMessage;\n","import FormControl from '@mui/material/FormControl';\nimport OutlinedInput from '@mui/material/OutlinedInput';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport SearchIcon from '@mui/icons-material/Search';\nimport React, { Dispatch, useState } from 'react';\nimport { useDebouncedCallback } from 'use-debounce';\nimport { GenericTableAction } from './genericTableReducer';\nimport { searchInput } from '../../shared/styleClasses';\n\nconst SearchInput = ({ dispatch, id }: { dispatch: Dispatch<GenericTableAction>; id?: string }) => {\n  const [inputValue, setInputValue] = useState<string>('');\n  const debouncedAPICall = useDebouncedCallback(() => {\n    dispatch({ type: 'SET_SEARCH_QUERY', payload: inputValue });\n  }, 600);\n\n  const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    setInputValue(event.target.value);\n    debouncedAPICall();\n  };\n\n  return (\n    <FormControl fullWidth>\n      <OutlinedInput\n        id={id ? id : 'records-search'}\n        sx={searchInput}\n        placeholder={'Search by title'}\n        value={inputValue}\n        onChange={handleChange}\n        startAdornment={\n          <InputAdornment sx={{ padding: '0px 0px 0px 14px' }} position=\"start\">\n            <SearchIcon />\n          </InputAdornment>\n        }\n      />\n    </FormControl>\n  );\n};\n\nexport default SearchInput;\n","import React, { Dispatch, RefObject, useLayoutEffect, useState } from 'react';\nimport KeyboardArrowLeftIcon from '@mui/icons-material/KeyboardArrowLeft';\nimport KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight';\nimport { classes } from './styles';\nimport { handleScrollLeft, handleScrollRight, handleScrollableEnter } from './tableHelper';\nimport { Box } from '@mui/material';\nimport { GenericTableData, TSortableColumn, TTableState, TableScrollAction } from './types';\n\nconst ARROW_WIDTH = 40;\n\ninterface ITableArrowProps<T> {\n  tableRef: RefObject<HTMLDivElement>;\n  titleCellRef: RefObject<HTMLDivElement>;\n  actionCellRef: RefObject<HTMLDivElement>;\n  parentRef: RefObject<HTMLDivElement>;\n  tableState: TTableState<T, TSortableColumn[]>;\n  dispatch: Dispatch<TableScrollAction>;\n}\n\nconst TableArrows = <TableArrowProps extends GenericTableData>({\n  tableRef,\n  titleCellRef,\n  actionCellRef,\n  parentRef,\n  tableState,\n  dispatch\n}: ITableArrowProps<TableArrowProps>) => {\n  const [leftPosition, setLeftPosition] = useState({\n    leftArrow: 0,\n    rightArrow: 0\n  });\n\n  useLayoutEffect(() => {\n    setLeftPosition({\n      leftArrow:\n        (titleCellRef?.current?.getBoundingClientRect()?.right || 0) -\n        (parentRef?.current?.getBoundingClientRect()?.left || 0),\n      rightArrow:\n        (actionCellRef?.current?.getBoundingClientRect()?.left || 0) -\n        (parentRef?.current?.getBoundingClientRect()?.left || 0) -\n        ARROW_WIDTH\n    });\n  }, [actionCellRef, tableState.tableHovered, parentRef, titleCellRef]);\n\n  return (\n    <>\n      <Box sx={classes.arrowsContainer}>\n        <Box\n          onClick={() => handleScrollLeft(tableRef)}\n          onMouseEnter={() => handleScrollableEnter(tableRef, dispatch)}\n          sx={{\n            ...classes.leftArrow,\n            ...(tableState.tableHovered && tableState.canScroll[0] && classes.showArrows),\n            left: `${leftPosition.leftArrow}px`,\n            top: 0\n          }}\n          id=\"left-arrow\"\n        >\n          <KeyboardArrowLeftIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n        </Box>\n      </Box>\n      <Box sx={classes.arrowsContainer}>\n        <Box\n          onMouseEnter={() => handleScrollableEnter(tableRef, dispatch)}\n          onClick={() => handleScrollRight(tableRef)}\n          sx={{\n            ...classes.rightArrow,\n            ...(tableState.tableHovered && tableState.canScroll[1] && classes.showArrows),\n            left: `${leftPosition.rightArrow}px`,\n            top: 0\n          }}\n          id=\"right-arrow\"\n        >\n          <KeyboardArrowRightIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n        </Box>\n      </Box>\n    </>\n  );\n};\n\nexport default TableArrows;\n","import React, { useMemo, useState } from 'react';\nimport { Box, Tooltip } from '@mui/material';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\n\ntype IProps = {\n  label: string;\n  titleKeyType: 'name' | 'title';\n  items: {\n    id: number;\n    name?: string;\n    title?: string;\n    url: string;\n  }[];\n  maxItems?: number;\n  maxItemsLink?: string;\n};\n\nconst HEIGHT = 26;\nconst MARGIN_BOTTOM = 6;\nconst BORDER_HEIGHT = 2;\n\nexport default function ExpandableLinkedTags({\n  label,\n  titleKeyType,\n  items,\n  maxItems,\n  maxItemsLink\n}: IProps) {\n  const [isExpanded, setIsExpanded] = useState(false);\n  const [showExpandedItems, setShowExpandedItems] = useState(false);\n  const [showTooltip, setShowTooltip] = useState<boolean>(false);\n\n  const handleExpandClick = () => {\n    if (isExpanded) {\n      setIsExpanded(false);\n      setTimeout(() => {\n        setShowExpandedItems(false);\n      }, 500);\n    } else {\n      setIsExpanded(true);\n      setShowExpandedItems(true);\n    }\n  };\n\n  function getHeight() {\n    if (!isExpanded) {\n      return `${HEIGHT}px`;\n    } else {\n      if (maxItems && items.length > maxItems) {\n        return `${(HEIGHT + 3) * (maxItems + 1) + MARGIN_BOTTOM * maxItems}px`;\n      } else {\n        return `${HEIGHT * (items.length + 1) + MARGIN_BOTTOM * items.length}px`;\n      }\n    }\n  }\n\n  const handleShowTooltip = (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n    if (event.currentTarget.offsetWidth < event.currentTarget.scrollWidth) {\n      setShowTooltip(true);\n    }\n  };\n\n  const displayedItems = useMemo(\n    () => (maxItems ? items.slice(1, maxItems) : items.slice(1)),\n    [items, maxItems]\n  );\n\n  const followMaxItemsLink = () => {\n    if (maxItemsLink) {\n      window.open(maxItemsLink, '_self');\n    }\n  };\n\n  const displayBadge = items.length > 1 && !isExpanded;\n\n  return (\n    <Box sx={{ ...styles.container, ...{ height: getHeight() } }} className={label}>\n      <Box display=\"flex\">\n        <Tag\n          item={items[0]}\n          titleKeyType={titleKeyType}\n          showTooltip={showTooltip}\n          setShowTooltip={setShowTooltip}\n          handleShowTooltip={handleShowTooltip}\n          badge={{\n            show: displayBadge,\n            handleExpandClick,\n            numberOfItems: items.length - 1\n          }}\n        />\n      </Box>\n      {showExpandedItems &&\n        displayedItems.map((item) => {\n          return (\n            <Tag\n              key={item.id}\n              item={item}\n              titleKeyType={titleKeyType}\n              showTooltip={showTooltip}\n              setShowTooltip={setShowTooltip}\n              handleShowTooltip={handleShowTooltip}\n            />\n          );\n        })}\n      {maxItems && items.length > maxItems && (\n        <Box\n          id=\"show-more-job-tag-button\"\n          onClick={followMaxItemsLink}\n          sx={{ ...styles.item, ...styles.viewAllItem, ...(maxItemsLink && { cursor: 'pointer' }) }}\n        >\n          {maxItemsLink ? `View all ${items.length}` : `+${items.length - maxItems} more`}\n        </Box>\n      )}\n      <Box\n        id=\"show-less-job-tag-button\"\n        onClick={handleExpandClick}\n        sx={{ ...styles.item, ...styles.showLess }}\n      >\n        Show less\n      </Box>\n    </Box>\n  );\n}\n\nfunction Tag({\n  item,\n  titleKeyType,\n  showTooltip,\n  setShowTooltip,\n  handleShowTooltip,\n  badge\n}: {\n  item: IProps['items'][0];\n  titleKeyType: IProps['titleKeyType'];\n  showTooltip: boolean;\n  setShowTooltip: React.Dispatch<React.SetStateAction<boolean>>;\n  handleShowTooltip: (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;\n  badge?: {\n    show: boolean;\n    handleExpandClick: () => void;\n    numberOfItems: number;\n  };\n}) {\n  const badgeFontSize = (numberOfItems: number) => {\n    if (numberOfItems < 10) {\n      return '14px';\n    } else if (numberOfItems < 100) {\n      return '12px';\n    } else {\n      return '10px';\n    }\n  };\n  return (\n    <>\n      <Tooltip\n        key={item.id}\n        title={item[titleKeyType]}\n        placement=\"top\"\n        disableFocusListener={!showTooltip}\n        disableHoverListener={!showTooltip}\n      >\n        <Box\n          id=\"job-name-tag-button\"\n          key={item.id}\n          sx={{\n            ...styles.item,\n            ...{ width: badge?.show ? '82.5%' : '100%' },\n            ...(item.url && { cursor: 'pointer' })\n          }}\n          onMouseEnter={handleShowTooltip}\n          onMouseLeave={() => setShowTooltip(false)}\n          onClick={() => item.url && window.open(item.url, '_blank')}\n          onAuxClick={() => item.url && window.open(item.url, '_blank')}\n        >\n          {item[titleKeyType]}\n        </Box>\n      </Tooltip>\n      {badge?.show && (\n        <Box\n          id=\"show-more-job-tag-button\"\n          onClick={badge.handleExpandClick}\n          sx={{ ...styles.badge, fontSize: badgeFontSize(badge.numberOfItems) }}\n        >\n          {`+${badge.numberOfItems}`}\n        </Box>\n      )}\n    </>\n  );\n}\n\nconst styles = {\n  container: {\n    transition: 'height 0.5s cubic-bezier(.75,.34,.19,.79)',\n    overflow: 'hidden'\n  },\n  item: {\n    backgroundColor: '#EDF2F5',\n    color: theme.palette.primary.main,\n    borderRadius: `${HEIGHT / 2}px`,\n    height: HEIGHT,\n    textAlign: 'center',\n    fontWeight: '600',\n    marginBottom: `${MARGIN_BOTTOM}px`,\n    overflow: 'hidden',\n    textOverflow: 'ellipsis',\n    whiteSpace: 'nowrap',\n    padding: '0 18px',\n    border: `${BORDER_HEIGHT}px solid white`,\n    zIndex: 1,\n    lineHeight: `${HEIGHT - BORDER_HEIGHT * 2}px`,\n    transition: 'width 0.5s cubic-bezier(.75,.34,.19,.79)',\n    fontSize: '13px'\n  },\n  viewAllItem: {\n    overflow: 'unset',\n    textOverflow: 'unset',\n    whiteSpace: 'unset',\n    height: 'unset',\n    lineHeight: 'unset'\n  },\n  badge: {\n    backgroundColor: '#EDF2F5',\n    color: theme.palette.primary.main,\n    borderRadius: HEIGHT / 2,\n    height: HEIGHT,\n    border: `${BORDER_HEIGHT}px solid white`,\n    textAlign: 'center',\n    fontWeight: '600',\n    minWidth: '38px',\n    transform: 'translateX(-13px)',\n    marginRight: '-13px',\n    paddingLeft: '8px',\n    userSelect: 'none',\n    lineHeight: `${HEIGHT - BORDER_HEIGHT * 2}px`,\n    transition: 'opacity 0.5s, width 0.5s cubic-bezier(.75,.34,.19,.79)',\n    cursor: 'pointer'\n  },\n  showLess: {\n    fontSize: '12px',\n    cursor: 'pointer',\n    userSelect: 'none',\n    width: '100px',\n    margin: 'auto'\n  }\n};\n","import React from 'react';\nimport moment from 'moment-timezone';\nconst timeZoneString = Intl.DateTimeFormat().resolvedOptions().timeZone;\nconst FormattedDate = ({ date }: { date: string }) => {\n  return (\n    <>\n      {moment\n        .tz(date, timeZoneString)\n        .format('DD MMM YYYY,-h:mma z')\n        .split('-')\n        .map((line) => (\n          <div key={line}>{line}</div>\n        ))}\n    </>\n  );\n};\n\nexport default FormattedDate;\n","import { Box } from '@mui/material';\nimport React, { useEffect } from 'react';\nimport { classes } from '../styles';\n\nexport type Note = {\n  id: number;\n  subject?: string;\n  body: string;\n  noted_by: string;\n};\n\nconst NotesWithSubjectLine = ({ notes }: { notes: Note[] }) => {\n  const [notesExpanded, setNotesExpanded] = React.useState<boolean>(false);\n  const [hasOverflow, setHasOverflow] = React.useState<boolean>(false);\n  const containerRef = React.useRef<HTMLDivElement>(null);\n\n  useEffect(() => {\n    if (containerRef.current) {\n      setHasOverflow(containerRef.current.scrollHeight > containerRef.current.clientHeight);\n    }\n  }, [containerRef, notes]);\n\n  return (\n    <Box>\n      <Box\n        sx={{\n          ...classes.noteContainer,\n          ...(notesExpanded && classes.notesExpanded)\n        }}\n        ref={containerRef}\n      >\n        {notes?.map((note) => (\n          <Box key={note.id}>\n            {note.subject && <Box sx={classes.noteSubject}>{note.subject}</Box>}\n            <Box>{note.body}</Box>\n            <Box sx={classes.noteUser}>-{note.noted_by}</Box>\n          </Box>\n        ))}\n      </Box>\n      {(hasOverflow || notesExpanded) && (\n        <Box sx={classes.notesExpandContract} onClick={() => setNotesExpanded((prev) => !prev)}>\n          {notesExpanded ? 'Show less' : 'Show all'}\n        </Box>\n      )}\n    </Box>\n  );\n};\n\nexport default NotesWithSubjectLine;\n","import React, { Dispatch, useState } from 'react';\nimport { Box, Button, CircularProgress, Popover, TextField } from '@mui/material';\nimport { classes } from '../styles';\nimport { TableActionItemAction } from '../types';\nimport DoneIcon from '@mui/icons-material/Done';\nimport CloseIcon from '@mui/icons-material/Close';\nimport callAPI from '../../Utilities/callAPI';\nimport { useQueryClient, useMutation } from '@tanstack/react-query';\n\nconst AddNoteWithSubjectLine = ({\n  dispatch,\n  isOpen,\n  anchorEl,\n  itemId,\n  url,\n  queryKey\n}: {\n  dispatch: Dispatch<TableActionItemAction<any>>;\n  isOpen: boolean;\n  anchorEl: Element | null;\n  itemId: number;\n  url: string;\n  queryKey: string;\n}) => {\n  const [noteSubject, setNoteSubject] = useState('');\n  const [noteBody, setNoteBody] = useState('');\n\n  const queryClient = useQueryClient();\n\n  const { mutate: saveNote, isLoading: savingNote } = useMutation({\n    mutationFn: () =>\n      callAPI(\n        url,\n        {\n          id: itemId,\n          note: {\n            subject: noteSubject,\n            body: noteBody\n          }\n        },\n        'POST'\n      ),\n    onSuccess: () => {\n      queryClient.invalidateQueries({ queryKey: [queryKey] });\n      handleClose();\n    }\n  });\n\n  const handleClose = () => {\n    dispatch({ type: 'CLOSE_ACTION_ITEM', payload: 'addNote' });\n    setNoteSubject('');\n    setNoteBody('');\n  };\n\n  return (\n    <Popover\n      id={'edit-note-popover'}\n      sx={classes.editNotePopover}\n      open={isOpen}\n      anchorEl={anchorEl}\n      onClose={handleClose}\n      anchorOrigin={{\n        vertical: 'bottom',\n        horizontal: 'right'\n      }}\n      transformOrigin={{\n        vertical: 'top',\n        horizontal: 'right'\n      }}\n    >\n      <>\n        <Box sx={classes.notesTitle}>Add application note</Box>\n        <TextField\n          id=\"note-input\"\n          sx={classes.noteInput}\n          label=\"Subject\"\n          fullWidth\n          variant=\"outlined\"\n          onChange={(e) => setNoteSubject(e.target.value)}\n          InputLabelProps={{\n            shrink: true\n          }}\n          required\n        />\n        <TextField\n          id=\"note-input\"\n          sx={classes.noteInput}\n          label=\"Body\"\n          multiline\n          fullWidth\n          maxRows={4}\n          variant=\"outlined\"\n          onChange={(e) => setNoteBody(e.target.value)}\n          InputLabelProps={{\n            shrink: true\n          }}\n        />\n        <Box id=\"notes-button-container\" sx={classes.notesButtonContainer}>\n          <Button sx={classes.notesCancelButton} endIcon={<CloseIcon />} onClick={handleClose}>\n            Cancel\n          </Button>\n          <Button\n            sx={classes.notesEditSaveButton}\n            endIcon={savingNote ? <CircularProgress size={16} /> : <DoneIcon />}\n            onClick={() => {\n              saveNote();\n            }}\n            disabled={!noteSubject || !!savingNote}\n          >\n            Save\n          </Button>\n        </Box>\n      </>\n    </Popover>\n  );\n};\n\nexport default AddNoteWithSubjectLine;\n","import React, { useState } from 'react';\nimport { Box, Popover } from '@mui/material';\nimport DocTypeIcon from '../../Utilities/DocTypeIcon';\nimport FilePreviewModal, { IJobAttachment } from '../../../Components/Modals/FilePreviewModal';\nimport { classes } from '../styles';\n\nexport type Attachment = {\n  id: number;\n  attached_file_name: string;\n  attached_content_type: string;\n  url: string;\n  created_at: string;\n  previewable: boolean;\n};\n\nconst AttachmentsList = ({\n  attachments,\n  isOpen,\n  handleClose,\n  anchorEl\n}: {\n  attachments: Attachment[];\n  isOpen: boolean;\n  handleClose: () => void;\n  anchorEl: Element | null;\n}) => {\n  const [previewOpen, setPreviewOpen] = useState(false);\n  const [selectedAttachment, setSelectedAttachment] = useState<IJobAttachment | null>(null);\n\n  const sortedAttachments = [...attachments].reverse();\n\n  return (\n    <Box>\n      {selectedAttachment && (\n        <FilePreviewModal\n          previewOpen={previewOpen}\n          setPreviewOpen={setPreviewOpen}\n          selectedAttachment={selectedAttachment}\n          applicationLink={selectedAttachment?.application_link}\n          isShareable={false}\n        />\n      )}\n      <Popover\n        id={isOpen ? 'applicant-attachments' : undefined}\n        open={isOpen}\n        anchorEl={anchorEl}\n        onClose={handleClose}\n        anchorOrigin={{\n          vertical: 'bottom',\n          horizontal: 'right'\n        }}\n        transformOrigin={{\n          vertical: 'top',\n          horizontal: 'right'\n        }}\n      >\n        <Box>\n          {sortedAttachments?.length < 1 && (\n            <Box sx={{ padding: '7px', ...classes.fileName }}>No attachments</Box>\n          )}\n          {sortedAttachments?.map((attachment) => (\n            <Box\n              key={attachment.id}\n              sx={classes.attachmentItem}\n              onClick={() => {\n                setSelectedAttachment(attachment);\n                setPreviewOpen(true);\n              }}\n              id=\"specific-attachment-option\"\n            >\n              <Box sx={classes.fileIcon}>\n                {DocTypeIcon(attachment.attached_file_name.split('.').pop())}\n              </Box>\n              <Box sx={classes.fileName}>{attachment.attached_file_name}</Box>\n            </Box>\n          ))}\n        </Box>\n      </Popover>\n    </Box>\n  );\n};\n\nexport default AttachmentsList;\n","import React, { Dispatch } from 'react';\nimport { GenericTableData, TSortableColumn, TTableState, TableActionItemAction } from '../types';\nimport { Popover } from '@mui/material';\nimport { classes } from '../styles';\n\ntype IOption = {\n  id: string;\n  label: string;\n  action: () => void;\n};\n\nconst MoreOptionsList = ({\n  options,\n  actionsState,\n  dispatch,\n  label\n}: {\n  options: IOption[];\n  actionsState: TTableState<GenericTableData, TSortableColumn>['actions'];\n  dispatch: Dispatch<TableActionItemAction<GenericTableData>>;\n  label: string;\n}) => {\n  const handleSelectItem = (action: () => void) => {\n    dispatch({ type: 'CLOSE_ACTION_ITEM', payload: 'moreOptions' });\n    action();\n  };\n  return (\n    <Popover\n      id={`${label}-more-options-popover`}\n      sx={classes.actionsMenu}\n      open={actionsState?.isOpen?.moreOptions}\n      anchorEl={actionsState?.anchorEl}\n      onClose={() => dispatch({ type: 'CLOSE_ACTION_ITEM', payload: 'moreOptions' })}\n      anchorOrigin={{\n        vertical: 'bottom',\n        horizontal: 'right'\n      }}\n      transformOrigin={{\n        vertical: 'top',\n        horizontal: 'right'\n      }}\n    >\n      {options.map((option) => (\n        <span\n          key={option.id}\n          onClick={() => handleSelectItem(option.action)}\n          className={`${option.id}-action-button`}\n        >\n          {option.label}\n        </span>\n      ))}\n    </Popover>\n  );\n};\n\nexport default MoreOptionsList;\n","import React, { Dispatch, useMemo, useState } from 'react';\nimport { Box, IconButton } from '@mui/material';\nimport {\n  GenericTableData,\n  TSortableColumn,\n  TTableState,\n  TableFilter,\n  TableSelectionAction\n} from './types';\nimport { classes } from './styles';\nimport { handleAPIRequest } from '../Utilities/handleAPIRequest';\n\nconst TotalSelectedIndicator = ({\n  tableState,\n  tableFilters,\n  tableSearch,\n  dispatch,\n  totalItems,\n  items,\n  selectAllUrl,\n  label\n}: {\n  tableState: TTableState<GenericTableData, TSortableColumn[]>;\n  tableFilters?: TableFilter;\n  tableSearch?: string;\n  dispatch: Dispatch<TableSelectionAction<GenericTableData>>;\n  totalItems: number;\n  items: GenericTableData[];\n  selectAllUrl?: string;\n  label?: string;\n}) => {\n  const [isLoadingSelectAll, setIsLoadingSelectAll] = useState(false);\n  const selectAllIsChecked = useMemo(\n    () => items.map((item) => item.id).every((id) => tableState.selectedItemIds.includes(id)),\n    [items, tableState.selectedItemIds]\n  );\n  const handleSelectAll = () => {\n    if (!selectAllUrl) return;\n    handleAPIRequest({\n      url: selectAllUrl,\n      method: 'POST',\n      body: {\n        override_limit: true,\n        limit: totalItems,\n        ...(tableSearch && { query: tableSearch }),\n        ...tableFilters\n      },\n      setLoaderState: setIsLoadingSelectAll,\n      onSuccess: (data: { ai_search: Array<{ id: number }> }) =>\n        dispatch({ type: 'SELECT_ALL_ITEMS', payload: data?.ai_search?.map((item) => item.id) })\n    });\n  };\n\n  return (\n    <Box\n      id=\"selected-tooltip\"\n      sx={\n        tableState.selectedItemIds?.length > 0\n          ? { ...classes.selectedTooltip, ...classes.fadeIn }\n          : { ...classes.selectedTooltip, ...classes.fadeOut }\n      }\n    >\n      <Box\n        id=\"selected-tooltip-text\"\n        sx={{\n          display: 'flex',\n          paddingLeft: '12px',\n          alignItems: 'center',\n          ...classes.selectedTooltipText\n        }}\n      >\n        {tableState.selectedItemIds.length === totalItems\n          ? `All ${tableState.selectedItemIds.length} ${label || 'items'} are selected`\n          : `${tableState.selectedItemIds.length} selected`}\n        <IconButton\n          size=\"small\"\n          sx={{\n            ...classes.selectedTooltipText,\n            ...classes.selectedAllTooltipText,\n            marginLeft: 1,\n            color: '#666666'\n          }}\n          onClick={() => dispatch({ type: 'REMOVE_ALL_SELECTED_ITEMS' })}\n        >\n          Clear selection\n        </IconButton>\n      </Box>\n      {selectAllIsChecked && totalItems > tableState.selectedItemIds.length && (\n        <IconButton\n          disabled={false}\n          size=\"small\"\n          sx={{ ...classes.selectedTooltipText, ...classes.selectedAllTooltipText }}\n          onClick={handleSelectAll}\n        >\n          {!isLoadingSelectAll ? `Select all ${totalItems} ${label}` : `Loading all ${label}...`}\n        </IconButton>\n      )}\n    </Box>\n  );\n};\n\nexport default TotalSelectedIndicator;\n","import React, { Dispatch } from 'react';\nimport { Box, Button } from '@mui/material';\nimport { classes } from './styles';\nimport { TableActionDrawerAction } from './types';\n\n// The parentDiv prop is used to center the tooltip in relation to the table and not the\n// entire page. You can pass in a ref.current which should be a parent div with 100% width\n\nconst TotalSelectedIndicatorWithActions = ({\n  totalSelected,\n  parentDiv,\n  dispatch,\n  actionButtonsList,\n  actionCall,\n  actionButtonId = ''\n}: {\n  totalSelected: number;\n  parentDiv: HTMLDivElement | null;\n  dispatch?: Dispatch<TableActionDrawerAction>;\n  actionButtonsList?: {\n    id: string;\n    label: string;\n    icon: JSX.Element;\n  }[];\n  actionCall?: null | (() => void);\n  actionButtonId?: string;\n}) => {\n  return (\n    <Box\n      id=\"selected-tooltip\"\n      sx={{\n        ...classes.selectedTooltip,\n        left: parentDiv\n          ? parentDiv.getBoundingClientRect().left +\n            parentDiv.getBoundingClientRect().width / 2 -\n            332 // this is half the size of the 'tooltip' div\n          : 55, // this value for when the parent div is inside a modal\n        ...(totalSelected ? classes.fadeIn : classes.fadeOut)\n      }}\n    >\n      <Box id=\"selected-tooltip-text\" sx={classes.selectAllWithActionsTooltip}>\n        {totalSelected} selected\n        <Box>\n          {actionButtonsList &&\n            dispatch &&\n            actionButtonsList.map((action) => (\n              <Button\n                sx={classes.selectAllWithActionsTooltipButton}\n                startIcon={action.icon}\n                onClick={() => {\n                  dispatch &&\n                    dispatch({\n                      type: 'SET_ACTION_MODAL_OPEN',\n                      payload: { name: action.id, isOpen: true }\n                    });\n                  actionCall && actionCall();\n                }}\n                key={action.id}\n                id={actionButtonId}\n              >\n                {action.label}\n              </Button>\n            ))}\n        </Box>\n      </Box>\n    </Box>\n  );\n};\n\nexport default TotalSelectedIndicatorWithActions;\n","import { Reducer } from 'react';\nimport {\n  GenericTableData,\n  TPaginationState,\n  TSortableColumn,\n  TTableState,\n  TableActionItemAction,\n  TableActionDrawerAction,\n  TableColumnAction,\n  TablePaginationAction,\n  TableScrollAction,\n  TableSelectionAction,\n  TableRowSelectedAction,\n  TableRowRemoveSelectedAction\n} from './types';\nimport { addSelected, removeSelected, addAllPageItems, removeAllPageItems } from './tableHelper';\nimport { ISnackbarInput } from '../CustomUIElements/StyledSnackbar'\n\nexport interface GenericTableState {\n  searchQuery: string;\n  searchSettings: TPaginationState<string>;\n  tableState: TTableState<GenericTableData, TSortableColumn[]>;\n  selectedRowTitle: null | { [key: string]: any };\n  snackbarState: ISnackbarInput;\n}\n\nexport const initialTableState = (\n  columns: TSortableColumn[],\n  defaultSort: { sortBy: string; sortOrder: 'asc' | 'desc' },\n  actionItems?: Record<string, boolean>,\n  modals?: Record<string, boolean>\n): GenericTableState => {\n  return {\n    searchQuery: '',\n    searchSettings: {\n      page: 1,\n      limit: 10,\n      sort: defaultSort.sortBy,\n      sort_order: defaultSort.sortOrder\n    },\n    tableState: {\n      canScroll: [false, true],\n      tableHovered: false,\n      density: 'Default',\n      columns: columns,\n      selectedItems: [],\n      selectedItemIds: [],\n      actions: {\n        selectedItem: null,\n        anchorEl: null,\n        isOpen: {\n          ...(actionItems || {})\n        }\n      },\n      modalsOpen: {\n        ...(modals || {})\n      }\n    },\n    snackbarState: {\n      message: '',\n      state: 'success'\n    },\n    selectedRowTitle: null\n  };\n};\n\nexport type GenericTableAction<T = GenericTableData> =\n  | { type: 'SET_SEARCH_QUERY'; payload: string }\n  | { type: 'SET_DEFAULT_DATA'; payload: GenericTableState }\n  | { type: 'SET_SNACKBAR'; payload: ISnackbarInput }\n  | TableScrollAction\n  | TableSelectionAction<T>\n  | TableColumnAction<TSortableColumn[]>\n  | TablePaginationAction<string>\n  | TableActionItemAction<T>\n  | TableActionDrawerAction\n  | TableRowSelectedAction\n  | TableRowRemoveSelectedAction;\n\nexport const genericTableReducer: Reducer<GenericTableState, GenericTableAction> = (\n  state: GenericTableState,\n  action: GenericTableAction\n) => {\n  switch (action.type) {\n    case 'SET_SEARCH_QUERY':\n      return {\n        ...state,\n        searchQuery: action.payload,\n        searchSettings: {\n          ...state.searchSettings,\n          page: 1\n        }\n      };\n    case 'ADD_SELECTED_ITEM':\n      return {\n        ...state,\n        tableState: {\n          ...state.tableState,\n          ...addSelected(\n            state.tableState.selectedItems,\n            state.tableState.selectedItemIds,\n            action.payload\n          )\n        }\n      };\n    case 'SET_CAN_SCROLL':\n      return {\n        ...state,\n        tableState: {\n          ...state.tableState,\n          canScroll: action.payload\n        }\n      };\n    case 'SET_TABLE_HOVERED':\n      return {\n        ...state,\n        tableState: {\n          ...state.tableState,\n          tableHovered: action.payload\n        }\n      };\n    case 'REMOVE_SELECTED_ITEM':\n      return {\n        ...state,\n        tableState: {\n          ...state.tableState,\n          ...removeSelected(\n            state.tableState.selectedItems,\n            state.tableState.selectedItemIds,\n            action.payload\n          )\n        }\n      };\n    case 'ADD_ALL_PAGE_ITEMS':\n      return {\n        ...state,\n        tableState: {\n          ...state.tableState,\n          ...addAllPageItems(state.tableState.selectedItems, action.payload)\n        }\n      };\n    case 'REMOVE_ALL_PAGE_ITEMS':\n      return {\n        ...state,\n        tableState: {\n          ...state.tableState,\n          ...removeAllPageItems(state.tableState.selectedItems, action.payload)\n        }\n      };\n    case 'SET_DENSITY':\n      return {\n        ...state,\n        tableState: {\n          ...state.tableState,\n          density: action.payload\n        }\n      };\n    case 'SET_SORT':\n      return {\n        ...state,\n        searchSettings: {\n          ...state.searchSettings,\n          sort: action.payload.sortBy,\n          sort_order: action.payload.sortOrder\n        }\n      };\n    case 'SET_COLUMNS':\n      return {\n        ...state,\n        tableState: {\n          ...state.tableState,\n          columns: action.payload\n        }\n      };\n    case 'SET_PAGE':\n      return {\n        ...state,\n        searchSettings: {\n          ...state.searchSettings,\n          page: action.payload\n        }\n      };\n    case 'SET_LIMIT':\n      return {\n        ...state,\n        searchSettings: {\n          ...state.searchSettings,\n          limit: action.payload\n        }\n      };\n    case 'SELECT_ACTION_ITEM':\n      return {\n        ...state,\n        tableState: {\n          ...state.tableState,\n          actions: {\n            ...state.tableState.actions,\n            selectedItem: action.payload.item,\n            anchorEl: action.payload.anchorEl,\n            isOpen: {\n              ...state.tableState.actions.isOpen,\n              [action.payload.name]: true\n            }\n          }\n        }\n      };\n    case 'CLOSE_ACTION_ITEM':\n      return {\n        ...state,\n        tableState: {\n          ...state.tableState,\n          actions: {\n            ...state.tableState.actions,\n            selectedItem: null,\n            isOpen: {\n              ...state.tableState.actions.isOpen,\n              [action.payload]: false\n            }\n          }\n        }\n      };\n    case 'SET_ACTION_MODAL_OPEN':\n      return {\n        ...state,\n        tableState: {\n          ...state.tableState,\n          modalsOpen: {\n            ...state.tableState.modalsOpen,\n            [action.payload.name]: action.payload.isOpen\n          }\n        }\n      };\n    case 'SET_DEFAULT_DATA':\n      return {\n        ...action.payload\n      };\n    case 'SET_SELECTED_ROW_DATA':\n      return {\n        ...state,\n        selectedRowTitle: { ...action.payload }\n      };\n    case 'REMOVE_SELECTED_ROW_DATA':\n      return {\n        ...state,\n        selectedRowTitle: null\n      };\n      case 'SET_SNACKBAR':\n        return {\n          ...state,\n          snackbarState: action.payload\n      };\n    default:\n      return state;\n  }\n};\n","import React from 'react';\n\nconst FileTickSVG = () => {\n  return (\n    <svg width=\"43\" height=\"50\" viewBox=\"0 0 43 50\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M4.52632 0H29.4211C30.6658 0 31.6842 1.01842 31.6842 2.26316C31.6842 3.50789 30.6658 4.52632 29.4211 4.52632H6.78947C5.54474 4.52632 4.52632 5.54474 4.52632 6.78947V33.9474C4.52632 35.1921 3.50789 36.2105 2.26316 36.2105C1.01842 36.2105 0 35.1921 0 33.9474V4.52632C0 2.03684 2.03684 0 4.52632 0ZM41.6874 21.3189L30.7563 10.3879C29.8963 9.52789 28.7421 9.05263 27.5426 9.05263H13.5789C11.0895 9.05263 9.07526 11.0895 9.07526 13.5789L9.05263 45.2632C9.05263 47.7526 11.0668 49.7895 13.5563 49.7895H38.4737C40.9632 49.7895 43 47.7526 43 45.2632V24.51C43 23.3105 42.5247 22.1563 41.6874 21.3189ZM16.0889 35.3849L21.2798 41.0084L35.9627 25.1019C36.5411 24.4753 37.4607 24.4753 38.0391 25.1019C38.6175 25.7285 38.6175 26.7247 38.0391 27.3513L22.318 44.3664C21.7396 44.9931 20.8052 44.9931 20.2268 44.3664L14.0125 37.6343C13.4341 37.0077 13.4341 36.0115 14.0125 35.3849C14.591 34.7583 15.5105 34.7583 16.0889 35.3849Z\"\n        fill=\"#5BC4C0\"\n      />\n    </svg>\n  );\n};\n\nexport default FileTickSVG;\n","import React from 'react';\n\nconst UploadSVG = () => {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"106.755\"\n      height=\"67.516\"\n      viewBox=\"0 0 106.755 67.516\"\n    >\n      <g id=\"Group_308\" data-name=\"Group 308\" transform=\"translate(-21.116 -21.871)\">\n        <g id=\"Group_309\" data-name=\"Group 309\" transform=\"translate(21.116 21.871)\">\n          <path\n            id=\"Path_149\"\n            data-name=\"Path 149\"\n            d=\"M190.21,202.039c-.22-.442-.62-.88-.629-1.325q-.1-4.849-.055-9.7c.026-2.4.423-2.745,2.9-2.765,2.119-.017,4.243.088,6.353-.051a2.869,2.869,0,0,0,2.155-1.045,3.064,3.064,0,0,0-.541-2.391,16.587,16.587,0,0,0-2.306-2.407q-6.445-6.447-12.894-12.889c-1.658-1.653-2.394-1.624-4.023.02q-7.063,7.127-14.148,14.233c-.2.2-.491.361-.573.6-.291.842-.912,1.876-.645,2.521a3.022,3.022,0,0,0,2.226,1.348c1.99.174,4.008,0,6.015.008,2.55.01,2.8.28,2.8,2.761-.006,3.067-.057,6.135.02,9.2.035,1.41-.379,2-1.881,1.995-7.861-.053-15.725.084-23.585-.058A21.754,21.754,0,0,1,130,180.675c-.29-11.028,6.165-20.467,16.131-23.348a19.623,19.623,0,0,1,6.092-.762,2.9,2.9,0,0,0,3.3-2.214,32.057,32.057,0,0,1,8.2-12.069c13.208-12.329,33.091-9.386,42.22,6.275.869,1.49,1.639,3.044,2.364,4.61a1.564,1.564,0,0,0,1.875,1.121c6.913-.719,11.9,4.237,11.188,11.147-.161,1.549.629,1.705,1.741,1.974A17.257,17.257,0,0,1,236.722,185.4a18.164,18.164,0,0,1-15.4,16.55,9.047,9.047,0,0,1-1,.035l-1.705-.335c2.17-.456,4.47-.6,6.487-1.427a16.7,16.7,0,0,0,10.227-16.992A17.2,17.2,0,0,0,221.5,167.982c-1.475-.265-1.717-.738-1.541-2.162.819-6.638-4.191-11.627-10.691-10.722a1.775,1.775,0,0,1-2.1-1.093,69.075,69.075,0,0,0-5.2-8.737,24.973,24.973,0,0,0-37.708-2.383,36.274,36.274,0,0,0-8.169,13.089,1.88,1.88,0,0,1-2.4,1.386,17.442,17.442,0,0,0-12,2.625c-9.7,6-13.195,19.075-7.844,29.644,3.5,6.906,9.022,11.3,16.9,11.666,7.678.357,15.386.078,23.08.117,1.194.006,1.715-.38,1.7-1.636-.043-2.9-.035-5.8.046-8.7.044-1.575-.543-2.235-2.155-2.15-1.947.1-3.9.047-5.853.06-1.289.009-2.487-.245-3.137-1.5-.7-1.34.148-2.345.9-3.322a13.61,13.61,0,0,1,1.233-1.362q5.711-5.642,11.435-11.271a37.514,37.514,0,0,1,3.346-3.25c1.876-1.434,3.209-1.26,4.886.391,1.788,1.76,3.541,3.555,5.314,5.33,3.31,3.314,6.645,6.6,9.926,9.945,1.952,1.989,1.277,4.182-1.444,4.819a8.491,8.491,0,0,1-1.824.171c-1.784.02-3.572.073-5.352-.018-1.423-.073-2.006.372-1.951,1.886.1,2.84.111,5.69,0,8.529-.062,1.627.522,2.1,2.112,2.088,6.8-.07,13.606-.036,20.408-.016a21.936,21.936,0,0,1,2.309.242c-7.685.012-15.37.015-23.055.052a18.392,18.392,0,0,0-2.445.333\"\n            transform=\"translate(-129.993 -134.641)\"\n            fill=\"#838383\"\n          />\n          <path\n            id=\"Path_150\"\n            data-name=\"Path 150\"\n            d=\"M309.963,335.307a18.389,18.389,0,0,1,2.445-.333c7.685-.037,15.37-.04,23.055-.052h2.91l1.705.335c-2.824.041-5.648.117-8.471.116-7.215,0-14.429-.042-21.644-.066\"\n            transform=\"translate(-249.746 -267.909)\"\n            fill=\"#767676\"\n          />\n          <path\n            id=\"Path_151\"\n            data-name=\"Path 151\"\n            d=\"M221.273,203.177h-2.91a21.971,21.971,0,0,0-2.309-.242c-6.8-.02-13.606-.053-20.408.016-1.59.016-2.174-.461-2.112-2.088.108-2.84.1-5.689,0-8.529-.055-1.514.528-1.959,1.951-1.886,1.78.091,3.568.038,5.352.018a8.472,8.472,0,0,0,1.824-.171c2.721-.637,3.4-2.83,1.444-4.819-3.281-3.343-6.616-6.631-9.926-9.945-1.773-1.775-3.527-3.57-5.314-5.33-1.677-1.651-3.01-1.825-4.886-.391a37.618,37.618,0,0,0-3.346,3.25q-5.718,5.634-11.435,11.27a13.605,13.605,0,0,0-1.233,1.362c-.752.977-1.6,1.982-.9,3.323.65,1.252,1.848,1.506,3.137,1.5,1.951-.014,3.906.042,5.853-.061,1.612-.085,2.2.574,2.155,2.15-.081,2.9-.089,5.8-.046,8.7.019,1.256-.5,1.642-1.7,1.636-7.695-.039-15.4.24-23.08-.117-7.875-.367-13.4-4.759-16.9-11.666-5.351-10.569-1.86-23.642,7.844-29.644a17.442,17.442,0,0,1,12-2.625,1.88,1.88,0,0,0,2.4-1.386,36.277,36.277,0,0,1,8.169-13.089,24.973,24.973,0,0,1,37.708,2.383,69.088,69.088,0,0,1,5.2,8.737,1.775,1.775,0,0,0,2.1,1.093c6.5-.9,11.51,4.085,10.691,10.722-.176,1.425.065,1.9,1.541,2.162a17.2,17.2,0,0,1,13.837,15.254,16.7,16.7,0,0,1-10.228,16.993c-2.017.829-4.316.97-6.486,1.426\"\n            transform=\"translate(-132.646 -136.163)\"\n            fill=\"#fff\"\n          />\n        </g>\n      </g>\n    </svg>\n  );\n};\n\nexport default UploadSVG;\n","import { SvgIcon, SvgIconProps } from '@mui/material';\nimport React from 'react';\n\nexport function NoEventsSVG() {\n  return (\n    <svg\n      width=\"104\"\n      height=\"80\"\n      viewBox=\"0 0 104 80\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <g clipPath=\"url(#clip0_28695_52976)\">\n        <path\n          d=\"M86.4483 72.761L6.65605 71.7091C5.10144 71.6888 3.88425 70.4149 3.99182 68.9215C3.99182 68.9215 6.06954 57.207 7.18935 24.8875H86.4483V72.761Z\"\n          fill=\"white\"\n        />\n        <path\n          d=\"M6.31185 71.5246C5.08674 71.2212 4.10845 70.1014 4.28056 68.7913C4.31226 68.5468 4.36548 68.3033 4.40398 68.0599C4.60892 66.777 4.77649 65.4874 4.93161 64.1977C5.71288 57.7279 6.1873 51.2207 6.58247 44.717C6.96404 38.4249 7.24371 32.1261 7.46337 25.8262C7.4679 25.6993 6.92328 25.7831 6.91649 25.9722C6.56888 35.9781 6.09106 45.9874 5.23167 55.9638C4.88519 59.9857 4.50814 64.0199 3.882 68.0101C3.83671 68.2988 3.7767 68.5864 3.73707 68.8762C3.54798 70.2587 4.57608 71.4431 5.87027 71.7647C6.01633 71.8009 6.50321 71.5722 6.31185 71.5246Z\"\n          fill=\"#CFCFCF\"\n        />\n        <path\n          d=\"M83.663 11.7849H9.97475C8.43642 11.7849 7.18936 13.032 7.18936 14.5703V71.8406C7.18936 73.3789 8.43642 74.626 9.97475 74.626H83.663C85.2013 74.626 86.4484 73.3789 86.4484 71.8406V14.5703C86.4484 13.032 85.2013 11.7849 83.663 11.7849Z\"\n          fill=\"white\"\n        />\n        <path\n          d=\"M86.4484 24.8876H7.18939V14.5443C7.18939 13.0202 8.4247 11.7849 9.94874 11.7849H83.689C85.2131 11.7849 86.4484 13.0202 86.4484 14.5443V24.8876Z\"\n          fill=\"#D0D0D0\"\n        />\n        <path\n          d=\"M86.471 24.6803H8.41335C8.07706 24.6803 7.67737 24.6203 7.34562 24.6803C7.30485 24.6883 7.25503 24.6803 7.21314 24.6803C7.29806 24.7426 7.38298 24.806 7.4679 24.8683C7.4679 21.4828 7.45545 18.0973 7.4679 14.7118C7.47356 13.1278 8.53224 11.9966 10.1253 11.991C10.6847 11.9887 11.2452 11.991 11.8045 11.991H82.867C83.3357 11.991 83.8362 11.9525 84.2903 12.0782C86.5423 12.6998 86.171 15.21 86.171 16.9979V24.9057C86.171 25.1989 86.7258 25.1231 86.7258 24.8672C86.7258 21.4613 86.7507 18.0554 86.7258 14.6507C86.7133 12.8594 85.3852 11.5913 83.6109 11.5777C83.1127 11.5732 82.6145 11.5777 82.1163 11.5777H10.576C9.79585 11.5777 9.06554 11.6083 8.36126 12.0374C6.61643 13.1006 6.91196 15.1138 6.91196 16.8541V24.9057C6.91196 25.0483 7.0433 25.0936 7.16672 25.0936H83.2033C84.228 25.0936 85.2685 25.1446 86.2932 25.0936C86.3374 25.0914 86.3816 25.0936 86.4257 25.0936C86.7428 25.0936 86.8413 24.6803 86.471 24.6803Z\"\n          fill=\"#CFCFCF\"\n        />\n        <path\n          d=\"M16.7032 43.6865H16.0986C14.3062 43.6865 12.8524 42.2327 12.8524 40.4403C12.8524 38.6479 14.3062 37.1941 16.0986 37.1941H16.7032C18.4956 37.1941 19.9494 38.6479 19.9494 40.4403C19.9494 42.2327 18.4956 43.6865 16.7032 43.6865Z\"\n          fill=\"#EEEEEE\"\n        />\n        <path\n          d=\"M26.8427 43.6865H26.2381C24.4457 43.6865 22.9919 42.2327 22.9919 40.4403C22.9919 38.6479 24.4457 37.1941 26.2381 37.1941H26.8427C28.6351 37.1941 30.0889 38.6479 30.0889 40.4403C30.0889 42.2327 28.6351 43.6865 26.8427 43.6865Z\"\n          fill=\"#EEEEEE\"\n        />\n        <path\n          d=\"M36.9822 43.6865H36.3776C34.5852 43.6865 33.1313 42.2327 33.1313 40.4403C33.1313 38.6479 34.5852 37.1941 36.3776 37.1941H36.9822C38.7746 37.1941 40.2284 38.6479 40.2284 40.4403C40.2284 42.2327 38.7746 43.6865 36.9822 43.6865Z\"\n          fill=\"#EEEEEE\"\n        />\n        <path\n          d=\"M47.1226 43.6865H46.518C44.7256 43.6865 43.2718 42.2327 43.2718 40.4403C43.2718 38.6479 44.7256 37.1941 46.518 37.1941H47.1226C48.915 37.1941 50.3688 38.6479 50.3688 40.4403C50.3688 42.2327 48.915 43.6865 47.1226 43.6865Z\"\n          fill=\"#EEEEEE\"\n        />\n        <path\n          d=\"M57.2623 43.6865H56.6577C54.8653 43.6865 53.4115 42.2327 53.4115 40.4403C53.4115 38.6479 54.8653 37.1941 56.6577 37.1941H57.2623C59.0547 37.1941 60.5085 38.6479 60.5085 40.4403C60.5085 42.2327 59.0547 43.6865 57.2623 43.6865Z\"\n          fill=\"#EEEEEE\"\n        />\n        <path\n          d=\"M67.4018 43.6865H66.7972C65.0048 43.6865 63.551 42.2327 63.551 40.4403C63.551 38.6479 65.0048 37.1941 66.7972 37.1941H67.4018C69.1942 37.1941 70.648 38.6479 70.648 40.4403C70.648 42.2327 69.1942 43.6865 67.4018 43.6865Z\"\n          fill=\"#EEEEEE\"\n        />\n        <path\n          d=\"M77.5413 43.6865H76.9366C75.1443 43.6865 73.6904 42.2327 73.6904 40.4403C73.6904 38.6479 75.1443 37.1941 76.9366 37.1941H77.5413C79.3337 37.1941 80.7875 38.6479 80.7875 40.4403C80.7875 42.2327 79.3337 43.6865 77.5413 43.6865Z\"\n          fill=\"#EEEEEE\"\n        />\n        <path\n          d=\"M16.7032 53.0718H16.0986C14.3062 53.0718 12.8524 51.618 12.8524 49.8256C12.8524 48.0332 14.3062 46.5793 16.0986 46.5793H16.7032C18.4956 46.5793 19.9494 48.0332 19.9494 49.8256C19.9494 51.618 18.4956 53.0718 16.7032 53.0718Z\"\n          fill=\"#EEEEEE\"\n        />\n        <path\n          d=\"M26.8427 53.0718H26.2381C24.4457 53.0718 22.9919 51.618 22.9919 49.8256C22.9919 48.0332 24.4457 46.5793 26.2381 46.5793H26.8427C28.6351 46.5793 30.0889 48.0332 30.0889 49.8256C30.0889 51.618 28.6351 53.0718 26.8427 53.0718Z\"\n          fill=\"#EEEEEE\"\n        />\n        <path\n          d=\"M36.9822 53.0718H36.3776C34.5852 53.0718 33.1313 51.618 33.1313 49.8256C33.1313 48.0332 34.5852 46.5793 36.3776 46.5793H36.9822C38.7746 46.5793 40.2284 48.0332 40.2284 49.8256C40.2284 51.618 38.7746 53.0718 36.9822 53.0718Z\"\n          fill=\"#EEEEEE\"\n        />\n        <path\n          d=\"M47.1226 53.0718H46.518C44.7256 53.0718 43.2718 51.618 43.2718 49.8256C43.2718 48.0332 44.7256 46.5793 46.518 46.5793H47.1226C48.915 46.5793 50.3688 48.0332 50.3688 49.8256C50.3688 51.618 48.915 53.0718 47.1226 53.0718Z\"\n          fill=\"#EEEEEE\"\n        />\n        <path\n          d=\"M57.2623 53.0718H56.6577C54.8653 53.0718 53.4115 51.618 53.4115 49.8256C53.4115 48.0332 54.8653 46.5793 56.6577 46.5793H57.2623C59.0547 46.5793 60.5085 48.0332 60.5085 49.8256C60.5085 51.618 59.0547 53.0718 57.2623 53.0718Z\"\n          fill=\"#EEEEEE\"\n        />\n        <path\n          d=\"M67.4018 53.0718H66.7972C65.0048 53.0718 63.551 51.618 63.551 49.8256C63.551 48.0332 65.0048 46.5793 66.7972 46.5793H67.4018C69.1942 46.5793 70.648 48.0332 70.648 49.8256C70.648 51.618 69.1942 53.0718 67.4018 53.0718Z\"\n          fill=\"#EEEEEE\"\n        />\n        <path\n          d=\"M77.5413 53.0718H76.9366C75.1443 53.0718 73.6904 51.618 73.6904 49.8256C73.6904 48.0332 75.1443 46.5793 76.9366 46.5793H77.5413C79.3337 46.5793 80.7875 48.0332 80.7875 49.8256C80.7875 51.618 79.3337 53.0718 77.5413 53.0718Z\"\n          fill=\"#EEEEEE\"\n        />\n        <path\n          d=\"M16.7032 62.2376H16.0986C14.3062 62.2376 12.8524 60.7837 12.8524 58.9913C12.8524 57.199 14.3062 55.7451 16.0986 55.7451H16.7032C18.4956 55.7451 19.9494 57.199 19.9494 58.9913C19.9494 60.7837 18.4956 62.2376 16.7032 62.2376Z\"\n          fill=\"#EEEEEE\"\n        />\n        <path\n          d=\"M26.8427 62.2376H26.2381C24.4457 62.2376 22.9919 60.7837 22.9919 58.9913C22.9919 57.199 24.4457 55.7451 26.2381 55.7451H26.8427C28.6351 55.7451 30.0889 57.199 30.0889 58.9913C30.0889 60.7837 28.6351 62.2376 26.8427 62.2376Z\"\n          fill=\"#EEEEEE\"\n        />\n        <path\n          d=\"M36.9822 62.2376H36.3776C34.5852 62.2376 33.1313 60.7837 33.1313 58.9913C33.1313 57.199 34.5852 55.7451 36.3776 55.7451H36.9822C38.7746 55.7451 40.2284 57.199 40.2284 58.9913C40.2284 60.7837 38.7746 62.2376 36.9822 62.2376Z\"\n          fill=\"#EEEEEE\"\n        />\n        <path\n          d=\"M47.1226 62.2376H46.518C44.7256 62.2376 43.2718 60.7837 43.2718 58.9913C43.2718 57.199 44.7256 55.7451 46.518 55.7451H47.1226C48.915 55.7451 50.3688 57.199 50.3688 58.9913C50.3688 60.7837 48.915 62.2376 47.1226 62.2376Z\"\n          fill=\"#EEEEEE\"\n        />\n        <path\n          d=\"M57.2623 62.2376H56.6577C54.8653 62.2376 53.4115 60.7837 53.4115 58.9913C53.4115 57.199 54.8653 55.7451 56.6577 55.7451H57.2623C59.0547 55.7451 60.5085 57.199 60.5085 58.9913C60.5085 60.7837 59.0547 62.2376 57.2623 62.2376Z\"\n          fill=\"#EEEEEE\"\n        />\n        <path\n          d=\"M67.4018 62.2376H66.7972C65.0048 62.2376 63.551 60.7837 63.551 58.9913C63.551 57.199 65.0048 55.7451 66.7972 55.7451H67.4018C69.1942 55.7451 70.648 57.199 70.648 58.9913C70.648 60.7837 69.1942 62.2376 67.4018 62.2376Z\"\n          fill=\"#EEEEEE\"\n        />\n        <path\n          d=\"M77.5413 62.2376H76.9366C75.1443 62.2376 73.6904 60.7837 73.6904 58.9913C73.6904 57.199 75.1443 55.7451 76.9366 55.7451H77.5413C79.3337 55.7451 80.7875 57.199 80.7875 58.9913C80.7875 60.7837 79.3337 62.2376 77.5413 62.2376Z\"\n          fill=\"#EEEEEE\"\n        />\n        <path\n          d=\"M16.7032 64.9097H16.0975C14.3046 64.9097 12.8513 66.363 12.8513 68.1559C12.8513 69.9487 14.3046 71.4021 16.0975 71.4021H16.7032C18.4961 71.4021 19.9495 69.9487 19.9495 68.1559C19.9495 66.363 18.4961 64.9097 16.7032 64.9097Z\"\n          fill=\"#EEEEEE\"\n        />\n        <path\n          d=\"M26.8439 64.9097H26.2381C24.4453 64.9097 22.9919 66.363 22.9919 68.1559C22.9919 69.9487 24.4453 71.4021 26.2381 71.4021H26.8439C28.6367 71.4021 30.0901 69.9487 30.0901 68.1559C30.0901 66.363 28.6367 64.9097 26.8439 64.9097Z\"\n          fill=\"#EEEEEE\"\n        />\n        <path\n          d=\"M36.9834 64.9097H36.3776C34.5848 64.9097 33.1314 66.363 33.1314 68.1559C33.1314 69.9487 34.5848 71.4021 36.3776 71.4021H36.9834C38.7762 71.4021 40.2296 69.9487 40.2296 68.1559C40.2296 66.363 38.7762 64.9097 36.9834 64.9097Z\"\n          fill=\"#EEEEEE\"\n        />\n        <path\n          d=\"M47.1229 64.9097H46.5171C44.7243 64.9097 43.2709 66.363 43.2709 68.1559C43.2709 69.9487 44.7243 71.4021 46.5171 71.4021H47.1229C48.9157 71.4021 50.3691 69.9487 50.3691 68.1559C50.3691 66.363 48.9157 64.9097 47.1229 64.9097Z\"\n          fill=\"#EEEEEE\"\n        />\n        <path\n          d=\"M57.2623 64.9097H56.6566C54.8637 64.9097 53.4103 66.363 53.4103 68.1559C53.4103 69.9487 54.8637 71.4021 56.6566 71.4021H57.2623C59.0552 71.4021 60.5085 69.9487 60.5085 68.1559C60.5085 66.363 59.0552 64.9097 57.2623 64.9097Z\"\n          fill=\"#EEEEEE\"\n        />\n        <path\n          d=\"M36.9833 27.9185H36.3776C34.5847 27.9185 33.1313 29.3718 33.1313 31.1647C33.1313 32.9575 34.5847 34.4109 36.3776 34.4109H36.9833C38.7762 34.4109 40.2296 32.9575 40.2296 31.1647C40.2296 29.3718 38.7762 27.9185 36.9833 27.9185Z\"\n          fill=\"#EEEEEE\"\n        />\n        <path\n          d=\"M47.123 27.9185H46.5172C44.7244 27.9185 43.271 29.3718 43.271 31.1647C43.271 32.9575 44.7244 34.4109 46.5172 34.4109H47.123C48.9159 34.4109 50.3692 32.9575 50.3692 31.1647C50.3692 29.3718 48.9159 27.9185 47.123 27.9185Z\"\n          fill=\"#EEEEEE\"\n        />\n        <path\n          d=\"M57.2626 27.9185H56.6568C54.864 27.9185 53.4106 29.3718 53.4106 31.1647C53.4106 32.9575 54.864 34.4109 56.6568 34.4109H57.2626C59.0554 34.4109 60.5088 32.9575 60.5088 31.1647C60.5088 29.3718 59.0554 27.9185 57.2626 27.9185Z\"\n          fill=\"#EEEEEE\"\n        />\n        <path\n          d=\"M67.4032 27.9185H66.7975C65.0046 27.9185 63.5512 29.3718 63.5512 31.1647C63.5512 32.9575 65.0046 34.4109 66.7975 34.4109H67.4032C69.1961 34.4109 70.6494 32.9575 70.6494 31.1647C70.6494 29.3718 69.1961 27.9185 67.4032 27.9185Z\"\n          fill=\"#EEEEEE\"\n        />\n        <path\n          d=\"M77.5424 27.9185H76.9367C75.1438 27.9185 73.6904 29.3718 73.6904 31.1647C73.6904 32.9575 75.1438 34.4109 76.9367 34.4109H77.5424C79.3353 34.4109 80.7886 32.9575 80.7886 31.1647C80.7886 29.3718 79.3353 27.9185 77.5424 27.9185Z\"\n          fill=\"#EEEEEE\"\n        />\n        <path\n          d=\"M86.1755 26.3448V49.7817C86.1755 49.9131 86.7224 49.8225 86.7224 49.6357V26.1988C86.7224 26.0674 86.1755 26.158 86.1755 26.3448Z\"\n          fill=\"#CFCFCF\"\n        />\n        <path\n          d=\"M75.086 74.4913H10.9168C9.70302 74.4913 8.47677 74.386 7.78269 73.1722C7.3411 72.4 7.46339 71.3855 7.46339 70.525V25.8274C7.46339 25.6961 6.9165 25.7867 6.9165 25.9735V63.3271C6.9165 66.1895 6.90744 69.053 6.9165 71.9154C6.92216 73.6399 8.26843 74.7461 9.94759 74.7608C10.593 74.7665 11.2384 74.7608 11.8838 74.7608H74.8618C75.0407 74.7608 75.4506 74.4925 75.086 74.4925V74.4913Z\"\n          fill=\"#CFCFCF\"\n        />\n        <path\n          d=\"M46.8472 3.40494C47.5113 3.40494 48.0496 2.86658 48.0496 2.20247C48.0496 1.53837 47.5113 1 46.8472 1C46.183 1 45.6447 1.53837 45.6447 2.20247C45.6447 2.86658 46.183 3.40494 46.8472 3.40494Z\"\n          fill=\"#CFCFCF\"\n        />\n        <path\n          d=\"M29.8348 19.9656C31.0855 19.9656 32.0993 18.9517 32.0993 17.7011C32.0993 16.4504 31.0855 15.4365 29.8348 15.4365C28.5841 15.4365 27.5703 16.4504 27.5703 17.7011C27.5703 18.9517 28.5841 19.9656 29.8348 19.9656Z\"\n          fill=\"#F8F8F8\"\n        />\n        <path\n          d=\"M64.2173 19.9656C65.468 19.9656 66.4819 18.9517 66.4819 17.7011C66.4819 16.4504 65.468 15.4365 64.2173 15.4365C62.9667 15.4365 61.9528 16.4504 61.9528 17.7011C61.9528 18.9517 62.9667 19.9656 64.2173 19.9656Z\"\n          fill=\"#F8F8F8\"\n        />\n        <path\n          d=\"M30.8527 15.9393C31.5819 16.4794 31.9703 17.3591 31.7574 18.2604C31.5389 19.1844 30.7157 19.9034 29.7385 19.806C27.7027 19.6033 27.1932 16.8179 28.8973 15.7921C29.212 15.603 28.7308 15.5464 28.5621 15.6471C27.5952 16.2291 27.0403 17.3376 27.3914 18.4552C27.7073 19.4629 28.6765 20.1083 29.7159 20.1117C30.6727 20.114 31.6294 19.6078 32.0846 18.7518C32.6474 17.6943 32.3077 16.4318 31.3611 15.7309C31.2128 15.6211 30.7146 15.8385 30.8516 15.9393H30.8527Z\"\n          fill=\"#CFCFCF\"\n        />\n        <path\n          d=\"M64.7815 15.7014C65.5865 16.0274 66.1549 16.7476 66.2081 17.6285C66.267 18.5977 65.6306 19.6054 64.6422 19.7877C63.7148 19.9587 62.792 19.3744 62.4207 18.5354C62.0266 17.6432 62.2769 16.6264 63.0015 15.9878C63.2325 15.784 62.6924 15.801 62.5667 15.912C61.679 16.6944 61.3914 17.9716 62.0447 19.0019C62.595 19.8704 63.6435 20.2508 64.6377 20.0606C65.6216 19.8726 66.4855 19.1503 66.7052 18.1505C66.9599 16.9887 66.2964 15.8825 65.2185 15.4466C65.0645 15.3843 64.5652 15.6142 64.7803 15.7014H64.7815Z\"\n          fill=\"#CFCFCF\"\n        />\n        <path\n          d=\"M29.6491 16.1725C31.437 14.5171 33.2259 12.8617 35.0138 11.2063C37.7041 8.71644 40.3944 6.22544 43.0835 3.73558C43.8002 3.07207 44.5419 2.23079 45.442 1.82317C46.82 1.20042 48.3203 1.60351 49.4118 2.58293C49.6065 2.7573 49.7945 2.93733 49.987 3.1151C52.4802 5.42266 54.9735 7.73137 57.4667 10.0389C59.5943 12.0091 61.6856 14.0291 63.8561 15.9539C63.8935 15.9868 63.9297 16.0219 63.9671 16.0558C64.1392 16.2155 64.6555 15.9936 64.4687 15.8203C62.588 14.0789 60.7073 12.3386 58.8266 10.5971C56.1442 8.11407 53.4619 5.631 50.7807 3.14793C49.8692 2.30439 49.0087 1.45066 47.7247 1.20382C46.0251 0.877727 44.6551 1.71108 43.4696 2.81051C40.9616 5.13167 38.4536 7.45396 35.9468 9.77512C34.5326 11.084 33.1184 12.3929 31.7053 13.7018C30.9116 14.4367 30.0714 15.1432 29.3139 15.9154C29.2766 15.9528 29.2358 15.9879 29.1962 16.0241C28.9505 16.2517 29.4815 16.3276 29.6502 16.1713L29.6491 16.1725Z\"\n          fill=\"#CFCFCF\"\n        />\n        <path\n          d=\"M51.6971 39.1189C52.0345 41.2 51.1898 43.4 49.3793 44.5492C47.8089 45.5468 45.8025 45.3758 44.2739 44.3771C41.1432 42.3334 40.9745 37.4861 44.1505 35.3846C46.0063 34.1573 48.3739 34.626 49.9885 36.03C50.2319 36.2418 51.2306 35.8262 51.0132 35.6371C47.5779 32.6502 41.5157 34.5354 40.7854 39.171C40.4536 41.2792 41.3572 43.46 43.1167 44.6806C44.8831 45.9057 47.1827 46.0155 49.1438 45.2048C51.6858 44.153 53.2347 41.5714 52.7897 38.8245C52.7456 38.5493 51.6439 38.7928 51.696 39.1177L51.6971 39.1189Z\"\n          fill=\"#D0D0D0\"\n        />\n        <path\n          d=\"M43.085 38.3886C44.643 39.2911 46.0538 40.4279 47.2484 41.7753C47.4477 42.0006 48.0149 41.8002 48.1916 41.6405C49.7428 40.2467 50.6033 37.878 52.5644 36.979C53.2574 36.6608 52.6188 36.3551 52.1443 36.5736C49.9092 37.5983 49.0668 39.9274 47.3231 41.4933C47.6379 41.448 47.9527 41.4039 48.2663 41.3586C47.0321 39.9659 45.5692 38.8132 43.9614 37.8814C43.6749 37.7161 42.6627 38.1429 43.085 38.3875V38.3886Z\"\n          fill=\"#D0D0D0\"\n        />\n        <path\n          d=\"M31.5264 58.9666C31.4947 60.9763 30.3579 62.9623 28.4681 63.7685C26.8128 64.4739 24.8517 63.9995 23.5043 62.8718C20.6679 60.4974 20.9895 55.5822 24.4576 53.9415C26.3247 53.0584 28.5146 53.7207 29.9401 55.1044C30.1677 55.3252 31.1822 54.9221 30.9648 54.7115C27.7797 51.6193 21.8342 53.0889 20.6566 57.4527C20.1018 59.5089 20.7608 61.7406 22.3539 63.1571C23.9402 64.5668 26.1923 64.9178 28.1975 64.3256C30.7508 63.5704 32.576 61.3681 32.619 58.6744C32.6224 58.4446 31.5309 58.6099 31.5253 58.9677L31.5264 58.9666Z\"\n          fill=\"#D0D0D0\"\n        />\n        <path\n          d=\"M22.576 57.6814C24.134 58.5838 25.5448 59.7206 26.7393 61.068C26.9386 61.2933 27.5059 61.0929 27.6825 60.9332C29.2337 59.5394 30.0943 57.1707 32.0553 56.2717C32.7483 55.9535 32.1097 55.6478 31.6353 55.8663C29.4002 56.891 28.5578 59.2201 26.8141 60.7861C27.1288 60.7408 27.4436 60.6966 27.7572 60.6513C26.5231 59.2586 25.0602 58.106 23.4523 57.1741C23.1659 57.0088 22.1536 57.4357 22.576 57.6802V57.6814Z\"\n          fill=\"#D0D0D0\"\n        />\n        <path\n          d=\"M96.0496 74.1376C101.352 68.835 101.352 60.2378 96.0496 54.9351C90.7469 49.6325 82.1497 49.6325 76.8471 54.9351C71.5445 60.2378 71.5445 68.835 76.8471 74.1376C82.1497 79.4402 90.7469 79.4402 96.0496 74.1376Z\"\n          fill=\"#F8F8F8\"\n        />\n        <path\n          d=\"M95.0674 73.1555C99.8275 68.3954 99.8275 60.6778 95.0674 55.9178C90.3074 51.1577 82.5898 51.1577 77.8297 55.9178C73.0697 60.6778 73.0697 68.3954 77.8297 73.1555C82.5898 77.9155 90.3074 77.9155 95.0674 73.1555Z\"\n          fill=\"white\"\n        />\n        <path\n          d=\"M86.1758 74.9337V76.9559C86.1758 77.1247 86.7227 77.0216 86.7227 76.8099V74.7876C86.7227 74.6189 86.1758 74.722 86.1758 74.9337Z\"\n          fill=\"#CFCFCF\"\n        />\n        <path\n          d=\"M86.1758 52.2634V54.306C86.1758 54.3728 86.7227 54.3015 86.7227 54.1599V52.1173C86.7227 52.0505 86.1758 52.1219 86.1758 52.2634Z\"\n          fill=\"#CFCFCF\"\n        />\n        <path\n          d=\"M75.8946 64.4863H74.2019C74.0875 64.4863 73.8916 64.5192 73.8441 64.646C73.801 64.7592 73.8814 64.8464 74.0026 64.8464H75.6953C75.8097 64.8464 76.0056 64.8135 76.0531 64.6867C76.0962 64.5735 76.0158 64.4863 75.8946 64.4863Z\"\n          fill=\"#CFCFCF\"\n        />\n        <path\n          d=\"M98.9023 64.5156H97.059C96.8586 64.5156 96.477 64.8168 96.8438 64.8168H98.6872C98.8876 64.8168 99.2692 64.5156 98.9023 64.5156Z\"\n          fill=\"#CFCFCF\"\n        />\n        <path\n          d=\"M94.2415 69.993C94.1906 69.993 94.1385 69.9782 94.0921 69.9488L86.0212 64.7234C85.8944 64.6407 85.8571 64.4709 85.9397 64.3441C86.0224 64.2172 86.1922 64.1799 86.319 64.2625L94.3899 69.488C94.5167 69.5706 94.554 69.7405 94.4714 69.8673C94.4193 69.9488 94.331 69.993 94.2404 69.993H94.2415Z\"\n          fill=\"#CFCFCF\"\n        />\n        <path\n          d=\"M86.8503 64.4108C86.7733 64.481 86.6827 64.5104 86.6046 64.4821C86.4653 64.4323 86.4144 64.2183 86.4925 64.0043L89.2269 56.4271C89.3039 56.2131 89.4794 56.0795 89.6187 56.1293C89.758 56.1791 89.8078 56.3931 89.7308 56.6071L86.9964 64.1843C86.9624 64.2783 86.9103 64.3553 86.8503 64.4096V64.4108Z\"\n          fill=\"#CFCFCF\"\n        />\n        <path\n          d=\"M86.4481 65.8952C87.1985 65.8952 87.8068 65.2869 87.8068 64.5365C87.8068 63.7861 87.1985 63.1777 86.4481 63.1777C85.6977 63.1777 85.0894 63.7861 85.0894 64.5365C85.0894 65.2869 85.6977 65.8952 86.4481 65.8952Z\"\n          fill=\"#D0D0D0\"\n        />\n        <path\n          d=\"M100.3 64.464C100.266 58.643 96.4744 53.3428 90.9296 51.5108C85.5434 49.7308 79.4405 51.4621 75.7934 55.8032C72.0479 60.261 71.5712 66.7942 74.6227 71.7513C77.664 76.6914 83.6254 79.1484 89.2777 77.9606C94.8462 76.791 99.3017 72.1815 100.15 66.5349C100.253 65.8476 100.297 65.1569 100.301 64.4628C100.301 64.3009 99.7557 64.4006 99.7546 64.6089C99.7229 70.1683 96.2174 75.2998 90.9625 77.1986C85.6465 79.1201 79.5628 77.2688 76.0686 72.8722C72.6208 68.5345 72.1996 62.3126 75.0552 57.5571C77.9742 52.6974 83.759 50.1815 89.2992 51.4383C94.6356 52.6498 98.7921 57.1699 99.604 62.5731C99.7047 63.2468 99.7512 63.9261 99.7557 64.6078C99.7557 64.7719 100.304 64.67 100.303 64.4617L100.3 64.464Z\"\n          fill=\"#CFCFCF\"\n        />\n      </g>\n      <defs>\n        <clipPath id=\"clip0_28695_52976\">\n          <rect width=\"104\" height=\"80\" fill=\"white\" />\n        </clipPath>\n      </defs>\n    </svg>\n  );\n}\n\nexport function FelixAISVG() {\n  return (\n    <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n      <path\n        d=\"M14.4 0H1.6C1.17565 0 0.768687 0.168571 0.468629 0.468629C0.168571 0.768687 0 1.17565 0 1.6V16L3.2 12.8H14.4C14.8243 12.8 15.2313 12.6314 15.5314 12.3314C15.8314 12.0313 16 11.6243 16 11.2V1.6C16 1.17565 15.8314 0.768687 15.5314 0.468629C15.2313 0.168571 14.8243 0 14.4 0Z\"\n        fill=\"#666666\"\n      />\n    </svg>\n  );\n}\n\nexport function NoTasksSVG() {\n  return (\n    <svg width=\"80\" height=\"80\" viewBox=\"0 0 80 80\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n      <path\n        d=\"M65.7381 7.6736L55.4908 7.63156C55.3308 6.29212 54.1922 5.25396 52.8107 5.25396L43.8982 5.25162V3.31077C43.8994 1.92462 42.776 0.800049 41.3899 0.800049C40.0037 0.800049 38.8791 1.92345 38.8791 3.30961V5.25046L29.9655 5.24812C28.6167 5.24812 27.4979 6.23723 27.2971 7.52996L16.529 7.48559C14.4503 7.47858 12.7582 9.15785 12.7512 11.2365L12.5422 75.0837C12.5352 77.1623 14.2145 78.8544 16.2931 78.8614L65.5033 79.0494C67.582 79.0565 69.2741 77.3772 69.2811 75.2985L69.4901 11.4514C69.4971 9.37272 67.8179 7.68061 65.7392 7.6736H65.7381ZM41.3887 4.59183C40.6063 4.59183 39.9733 3.95772 39.9733 3.17531C39.9733 2.3929 40.6074 1.75996 41.3899 1.75996C42.1723 1.75996 42.8052 2.39407 42.8052 3.17648C42.8052 3.95889 42.1711 4.59183 41.3887 4.59183Z\"\n        fill=\"#E5E5E5\"\n      />\n      <path\n        d=\"M64.6493 8.51906L54.402 8.47702C54.2421 7.13757 53.1035 6.09942 51.722 6.09942L42.8095 6.09708V4.15623C42.8095 2.77008 41.6873 1.64551 40.3011 1.64551C38.915 1.64551 37.7904 2.76891 37.7904 4.15507V6.09592L28.8767 6.09358C27.5279 6.09358 26.4092 7.08269 26.2083 8.37542L15.4403 8.33105C13.3616 8.32404 11.6695 10.0033 11.6625 12.082L11.4535 75.9291C11.4464 78.0078 13.1257 79.6999 15.2044 79.7069L64.4146 79.8949C66.4932 79.9019 68.1853 78.2226 68.1923 76.144L68.4014 12.2968C68.4084 10.2182 66.7291 8.52606 64.6505 8.51906H64.6493ZM40.2988 5.43729C39.5164 5.43729 38.8834 4.80318 38.8834 4.02077C38.8834 3.23836 39.5175 2.60542 40.2999 2.60542C41.0824 2.60542 41.7153 3.23953 41.7153 4.02194C41.7153 4.80435 41.0812 5.43729 40.2988 5.43729Z\"\n        fill=\"#E0E0E0\"\n      />\n      <path\n        d=\"M26.3718 8.27035C24.3457 8.26217 22.3184 8.254 20.2923 8.24583C19.0592 8.24115 17.826 8.23532 16.5928 8.23064C15.7462 8.22714 14.9182 8.19444 14.1019 8.47938C12.5149 9.03408 11.4441 10.4681 11.4079 12.152C11.4044 12.298 11.4079 12.444 11.4067 12.59C11.4032 13.5884 11.3997 14.5869 11.3974 15.5853C11.3834 19.6947 11.3705 23.8041 11.3565 27.9136C11.3378 33.5528 11.3191 39.192 11.3016 44.8323C11.2829 50.37 11.2654 55.9076 11.2467 61.4452C11.2339 65.3748 11.221 69.3055 11.2082 73.2351C11.2059 74.0829 11.2 74.9319 11.2 75.7797C11.1988 77.9961 12.7952 79.7653 15.056 79.8132C17.5761 79.8669 20.1008 79.8319 22.6209 79.8424C27.9658 79.8622 33.3107 79.8832 38.6545 79.9031C44.1185 79.9241 49.5826 79.9451 55.0466 79.9662C58.0455 79.9778 61.0443 79.9977 64.0432 80C66.3367 80.0024 68.3932 78.5018 68.4457 76.0716C68.4574 75.5134 68.4492 74.954 68.4516 74.3958C68.4632 70.8808 68.4749 67.3658 68.4866 63.8508C68.5041 58.43 68.5216 53.008 68.5403 47.5871C68.559 41.8907 68.5777 36.1955 68.5964 30.499C68.6116 26.0323 68.6256 21.5655 68.6408 17.0988C68.6454 15.8434 68.6489 14.5869 68.6536 13.3315C68.6571 12.3471 68.7108 11.3988 68.2355 10.4833C67.5442 9.15085 66.1814 8.42683 64.7077 8.41165C63.7886 8.40231 62.8696 8.40464 61.9494 8.39997C59.5566 8.39063 57.1626 8.38012 54.7699 8.37078C51.6052 8.35793 48.4417 8.34742 45.277 8.33691C39.9636 8.31823 34.6502 8.29838 29.3356 8.27969C28.3477 8.27619 27.3609 8.27268 26.373 8.26918C26.262 8.26918 25.7973 8.47821 26.0448 8.47938C29.4769 8.49223 32.9079 8.5039 36.34 8.51675C41.4875 8.53543 46.6351 8.55412 51.7827 8.5728C54.9182 8.58448 58.0548 8.59733 61.1903 8.61017C62.1969 8.61484 63.2024 8.61835 64.209 8.62302C65.7073 8.62886 67.0771 9.29916 67.7626 10.6888C68.1993 11.574 68.1479 12.4895 68.1456 13.4354C68.1351 16.5884 68.1246 19.7414 68.1141 22.8933L68.0627 38.4271C68.044 44.1002 68.0253 49.7744 68.0066 55.4475C67.9915 60.1349 67.9763 64.8236 67.9611 69.511C67.9541 71.7181 67.9623 73.9276 67.9389 76.1347C67.9167 78.2238 66.3577 79.7957 64.2779 79.7875L61.0934 79.7758C56.5624 79.7583 52.0326 79.7408 47.5016 79.7244C41.8577 79.7034 36.2139 79.6812 30.57 79.6602C26.3193 79.6438 22.0685 79.6275 17.8178 79.6111C17.0156 79.6076 16.2133 79.617 15.411 79.6018C13.1993 79.5609 11.7045 77.7777 11.7068 75.643C11.7092 73.2012 11.7232 70.7582 11.7314 68.3164C11.7465 63.504 11.7629 58.6904 11.7781 53.878C11.7967 48.1722 11.8154 42.4653 11.8341 36.7595C11.8505 31.6843 11.8668 26.6092 11.8843 21.534C11.8937 18.6052 11.903 15.6776 11.9135 12.7488C11.9135 12.5246 11.9124 12.3004 11.9159 12.0761C11.9357 10.7787 12.5535 9.54673 13.6897 8.87176C14.5807 8.34275 15.5769 8.43617 16.5648 8.43968C17.833 8.44435 19.1012 8.45019 20.3706 8.45486C22.2624 8.46303 24.153 8.47004 26.0448 8.47821C26.1558 8.47821 26.6205 8.26918 26.373 8.26801L26.3718 8.27035Z\"\n        fill=\"#B9B9B9\"\n      />\n      <path\n        d=\"M66.1866 24.7687V73.4289C66.1855 74.669 65.1765 75.6745 63.9328 75.6745H18.0297C16.7861 75.6733 15.7771 74.6679 15.7771 73.4277V65.488L15.8156 61.1123V12.73C15.8168 11.4898 16.8258 10.4844 18.0695 10.4844H62.6693C64.6113 10.4844 66.1866 12.0597 66.1866 14.0029V22.4716V24.7687Z\"\n        fill=\"#E5E5E5\"\n      />\n      <path\n        d=\"M65.2093 25.5021V74.1623C65.2081 75.4024 64.1992 76.4079 62.9555 76.4079H17.0524C15.8087 76.4067 14.7997 75.4013 14.7997 74.1611V66.2214L14.8383 61.8457V13.4634C14.8394 12.2232 15.8484 11.2178 17.0921 11.2178H61.6919C63.6339 11.2178 65.2093 12.7931 65.2093 14.7363V23.205V25.5021Z\"\n        fill=\"#E0E0E0\"\n      />\n      <path\n        d=\"M63.7963 25.2918V74.2171C63.7951 75.4269 62.8235 76.4078 61.6242 76.4078H16.9706C15.7725 76.4066 14.7997 75.4257 14.7997 74.2159V66.4712L14.8371 62.2029V15.0118C14.8383 13.802 15.8099 12.821 17.0092 12.821H61.8461C62.9228 12.821 63.7963 13.6829 63.7963 14.7455V25.2918Z\"\n        fill=\"white\"\n      />\n      <path\n        d=\"M64.9267 25.5779C64.9267 27.555 64.9267 29.532 64.9267 31.5102C64.9267 36.0774 64.9267 40.6446 64.9267 45.213C64.9267 50.3921 64.9267 55.5712 64.9267 60.7514V72.0053C64.9267 72.7282 64.943 73.4534 64.9267 74.1762C64.9022 75.2459 64.205 76.2479 63.0594 76.2794C62.8632 76.2852 62.6659 76.2794 62.4697 76.2794C59.3821 76.2794 56.2956 76.2794 53.208 76.2794C48.1667 76.2794 43.1242 76.2794 38.0829 76.2794C33.3161 76.2794 28.5504 76.2794 23.7835 76.2794C21.5881 76.2794 19.3751 76.3623 17.182 76.2794C15.8484 76.2292 15.0894 75.1139 15.0835 73.8738C15.0789 72.8928 15.0835 71.9107 15.0835 70.9298C15.0835 69.2167 15.0718 67.5035 15.087 65.7904C15.1069 63.5448 15.1221 61.3003 15.1221 59.0546C15.1221 55.1379 15.1221 51.2223 15.1221 47.3056C15.1221 42.0985 15.1221 36.8914 15.1221 31.6842C15.1221 27.2537 15.1221 22.8231 15.1221 18.3926C15.1221 17.094 15.1221 15.7954 15.1221 14.4969C15.1221 13.3875 15.0251 12.1531 16.2104 11.5319C16.8457 11.199 17.8757 11.3509 18.5658 11.3509C20.0664 11.3509 21.567 11.3509 23.0676 11.3509C27.8088 11.3509 32.55 11.3509 37.2924 11.3509C42.3337 11.3509 47.3761 11.3509 52.4174 11.3509C55.3439 11.3509 58.2703 11.3509 61.1968 11.3509C61.5518 11.3509 61.8951 11.3497 62.2478 11.4279C63.8628 11.7876 64.9022 13.2543 64.9267 14.8659C64.9594 16.9504 64.9267 19.0372 64.9267 21.1217C64.9267 22.6082 64.9267 24.0937 64.9267 25.5802C64.9267 25.6994 65.4907 25.6118 65.4907 25.4296C65.4907 21.8422 65.562 18.2489 65.4907 14.6627C65.4569 12.9425 64.2319 11.463 62.5281 11.1547C62.1789 11.0916 61.8309 11.0916 61.4782 11.0916C60.4331 11.0916 59.3879 11.0916 58.3416 11.0916C53.9718 11.0916 49.6008 11.0916 45.2309 11.0916C39.9712 11.0916 34.7116 11.0916 29.4519 11.0916C25.8107 11.0916 22.1708 11.0916 18.5296 11.0916C17.6923 11.0916 16.7932 11.0029 16.0119 11.359C15.101 11.7748 14.5697 12.6214 14.5557 13.614C14.5522 13.8686 14.5557 14.1232 14.5557 14.3777C14.5557 17.595 14.5557 20.8134 14.5557 24.0306C14.5557 29.1607 14.5557 34.2919 14.5557 39.4219C14.5557 44.3289 14.5557 49.236 14.5557 54.143C14.5557 56.6899 14.5604 59.2356 14.5557 61.7826C14.5499 65.0325 14.5172 68.2824 14.5172 71.5335C14.5172 72.4164 14.4961 73.3016 14.5172 74.1832C14.5487 75.5507 15.5892 76.5083 16.9368 76.5386C17.5627 76.5527 18.1922 76.5386 18.8181 76.5386C22.625 76.5386 26.4332 76.5386 30.2401 76.5386C35.5325 76.5386 40.8249 76.5386 46.1161 76.5386C50.4532 76.5386 54.7904 76.5386 59.1275 76.5386C60.2217 76.5386 61.3147 76.5386 62.409 76.5386C63.9317 76.5386 65.4393 75.8111 65.4884 74.0793C65.5491 71.9201 65.4884 69.7503 65.4884 67.5899C65.4884 62.8476 65.4884 58.1041 65.4884 53.3617V37.7181C65.4884 34.1401 65.4884 30.5608 65.4884 26.9827C65.4884 26.4654 65.4884 25.9469 65.4884 25.4296C65.4884 25.3105 64.9244 25.3981 64.9244 25.5802L64.9267 25.5779Z\"\n        fill=\"#B9B9B9\"\n      />\n      <path\n        d=\"M27.8648 19.6755H20.3817C19.5993 19.6755 18.9651 20.3097 18.9651 21.0921V28.5752C18.9651 29.3575 19.5993 29.9917 20.3817 29.9917H27.8648C28.6471 29.9917 29.2813 29.3575 29.2813 28.5752V21.0921C29.2813 20.3097 28.6471 19.6755 27.8648 19.6755Z\"\n        fill=\"#E0E0E0\"\n      />\n      <path\n        d=\"M20.2918 23.5267C21.3872 24.6221 22.4825 25.7174 23.5779 26.8128C23.7146 26.9494 24.0007 26.8385 24.1034 26.7101C25.458 25.0214 26.9785 23.299 28.757 22.0506C29.0688 21.8311 28.59 21.7365 28.4032 21.8673C26.5546 23.1647 24.9839 24.9339 23.5756 26.689C23.7508 26.6552 23.9259 26.6213 24.1011 26.5863C23.0057 25.4909 21.9103 24.3955 20.815 23.3001C20.669 23.1542 20.1341 23.3667 20.293 23.5255L20.2918 23.5267Z\"\n        fill=\"#B9B9B9\"\n      />\n      <path\n        d=\"M46.5185 19.6755H32.3545C32.0997 19.6755 31.8932 19.8821 31.8932 20.1368V22.1489C31.8932 22.4036 32.0997 22.6102 32.3545 22.6102H46.5185C46.7732 22.6102 46.9797 22.4036 46.9797 22.1489V20.1368C46.9797 19.8821 46.7732 19.6755 46.5185 19.6755Z\"\n        fill=\"#E0E0E0\"\n      />\n      <path\n        d=\"M33.0746 21.286H45.4869C45.8069 21.286 45.9213 20.8796 45.5383 20.8796H33.1259C32.806 20.8796 32.6915 21.286 33.0746 21.286Z\"\n        fill=\"#B9B9B9\"\n      />\n      <path\n        d=\"M32.9182 24.6866H59.4665C59.6346 24.6866 60.0784 24.4355 59.7047 24.4355H33.1564C32.9882 24.4355 32.5445 24.6866 32.9182 24.6866Z\"\n        fill=\"#B9B9B9\"\n      />\n      <path\n        d=\"M32.9018 28.5776H59.1873C59.5155 28.5776 59.6147 28.1467 59.2329 28.1467H32.9473C32.6192 28.1467 32.5199 28.5776 32.9018 28.5776Z\"\n        fill=\"#B9B9B9\"\n      />\n      <path\n        d=\"M27.8648 33.1169H20.3817C19.5993 33.1169 18.9651 33.7511 18.9651 34.5335V42.0166C18.9651 42.7989 19.5993 43.4331 20.3817 43.4331H27.8648C28.6471 43.4331 29.2813 42.7989 29.2813 42.0166V34.5335C29.2813 33.7511 28.6471 33.1169 27.8648 33.1169Z\"\n        fill=\"#E0E0E0\"\n      />\n      <path\n        d=\"M20.2918 36.9671C21.3872 38.0625 22.4825 39.1579 23.5779 40.2532C23.7146 40.3899 24.0007 40.2789 24.1034 40.1505C25.458 38.4619 26.9785 36.7394 28.757 35.491C29.0688 35.2715 28.59 35.1769 28.4032 35.3077C26.5546 36.6051 24.9839 38.3743 23.5756 40.1295C23.7508 40.0956 23.9259 40.0617 24.1011 40.0267C23.0057 38.9313 21.9103 37.8359 20.815 36.7406C20.669 36.5946 20.1341 36.8071 20.293 36.9659L20.2918 36.9671Z\"\n        fill=\"#B9B9B9\"\n      />\n      <path\n        d=\"M46.5185 33.1169H32.3545C32.0997 33.1169 31.8932 33.3235 31.8932 33.5782V35.5903C31.8932 35.8451 32.0997 36.0516 32.3545 36.0516H46.5185C46.7732 36.0516 46.9797 35.8451 46.9797 35.5903V33.5782C46.9797 33.3235 46.7732 33.1169 46.5185 33.1169Z\"\n        fill=\"#E0E0E0\"\n      />\n      <path\n        d=\"M33.0746 34.7274H45.4869C45.8069 34.7274 45.9213 34.321 45.5383 34.321H33.1259C32.806 34.321 32.6915 34.7274 33.0746 34.7274Z\"\n        fill=\"#B9B9B9\"\n      />\n      <path\n        d=\"M32.9182 38.128H59.4665C59.6346 38.128 60.0784 37.877 59.7047 37.877H33.1564C32.9882 37.877 32.5445 38.128 32.9182 38.128Z\"\n        fill=\"#B9B9B9\"\n      />\n      <path\n        d=\"M32.9018 42.019H59.1873C59.5155 42.019 59.6147 41.5881 59.2329 41.5881H32.9473C32.6192 41.5881 32.5199 42.019 32.9018 42.019Z\"\n        fill=\"#B9B9B9\"\n      />\n      <path\n        d=\"M27.8643 46.5571H20.3812C19.5989 46.5571 18.9647 47.1913 18.9647 47.9736V55.4568C18.9647 56.2391 19.5989 56.8733 20.3812 56.8733H27.8643C28.6466 56.8733 29.2808 56.2391 29.2808 55.4568V47.9736C29.2808 47.1913 28.6466 46.5571 27.8643 46.5571Z\"\n        fill=\"#F8F8F8\"\n      />\n      <path\n        d=\"M46.5185 46.5571H32.3545C32.0998 46.5571 31.8932 46.7636 31.8932 47.0184V49.0305C31.8932 49.2852 32.0998 49.4918 32.3545 49.4918H46.5185C46.7733 49.4918 46.9798 49.2852 46.9798 49.0305V47.0184C46.9798 46.7636 46.7733 46.5571 46.5185 46.5571Z\"\n        fill=\"#E0E0E0\"\n      />\n      <path\n        d=\"M33.0747 48.1688H45.487C45.807 48.1688 45.9214 47.7625 45.5384 47.7625H33.1261C32.8061 47.7625 32.6916 48.1688 33.0747 48.1688Z\"\n        fill=\"#B9B9B9\"\n      />\n      <path\n        d=\"M32.9183 51.5692H59.4666C59.6347 51.5692 60.0785 51.3181 59.7048 51.3181H33.1565C32.9883 51.3181 32.5446 51.5692 32.9183 51.5692Z\"\n        fill=\"#B9B9B9\"\n      />\n      <path\n        d=\"M32.9019 55.4602H59.1874C59.5155 55.4602 59.6148 55.0293 59.2329 55.0293H32.9474C32.6193 55.0293 32.52 55.4602 32.9019 55.4602Z\"\n        fill=\"#B9B9B9\"\n      />\n      <path\n        d=\"M27.8643 59.7529H20.3812C19.5989 59.7529 18.9647 60.3871 18.9647 61.1695V68.6526C18.9647 69.4349 19.5989 70.0691 20.3812 70.0691H27.8643C28.6466 70.0691 29.2808 69.4349 29.2808 68.6526V61.1695C29.2808 60.3871 28.6466 59.7529 27.8643 59.7529Z\"\n        fill=\"#F8F8F8\"\n      />\n      <path\n        d=\"M46.5185 59.7529H32.3545C32.0998 59.7529 31.8932 59.9595 31.8932 60.2142V62.2263C31.8932 62.481 32.0998 62.6876 32.3545 62.6876H46.5185C46.7733 62.6876 46.9798 62.481 46.9798 62.2263V60.2142C46.9798 59.9595 46.7733 59.7529 46.5185 59.7529Z\"\n        fill=\"#E0E0E0\"\n      />\n      <path\n        d=\"M33.0747 61.3644H45.487C45.807 61.3644 45.9214 60.958 45.5384 60.958H33.1261C32.8061 60.958 32.6916 61.3644 33.0747 61.3644Z\"\n        fill=\"#B9B9B9\"\n      />\n      <path\n        d=\"M32.9183 64.765H59.4666C59.6347 64.765 60.0785 64.5139 59.7048 64.5139H33.1565C32.9883 64.5139 32.5446 64.765 32.9183 64.765Z\"\n        fill=\"#B9B9B9\"\n      />\n      <path\n        d=\"M32.9019 68.656H59.1874C59.5155 68.656 59.6148 68.2251 59.2329 68.2251H32.9474C32.6193 68.2251 32.52 68.656 32.9019 68.656Z\"\n        fill=\"#B9B9B9\"\n      />\n      <path\n        d=\"M54.4027 8.47824C54.2427 7.1388 53.1042 6.10064 51.7227 6.10064L42.8102 6.0983V4.15745C42.8102 2.7713 41.6879 1.64673 40.3018 1.64673C38.9156 1.64673 37.7911 2.77013 37.7911 4.15629V6.09714L28.8774 6.0948C27.5286 6.0948 26.4099 7.08391 26.209 8.37664C26.188 8.51327 26.1763 8.65224 26.1763 8.79471V9.88658C26.1763 11.3778 27.3838 12.5877 28.8762 12.5877L51.7215 12.5935C53.2128 12.5935 54.4226 11.3848 54.4226 9.89359V8.80171C54.4226 8.69194 54.4156 8.58451 54.4027 8.47824ZM40.2995 5.43734C39.517 5.43734 38.8841 4.80324 38.8841 4.02082C38.8841 3.23841 39.5182 2.60548 40.3006 2.60548C41.083 2.60548 41.716 3.23958 41.716 4.02199C41.716 4.8044 41.0819 5.43734 40.2995 5.43734Z\"\n        fill=\"#E0E0E0\"\n      />\n      <path\n        d=\"M54.6558 8.40923C54.4538 7.05694 53.3584 6.05031 51.9886 5.97207C51.5215 5.94521 51.0486 5.9674 50.5803 5.96623C48.5857 5.96623 46.5912 5.96623 44.5966 5.96507C44.0349 5.96507 43.472 5.96507 42.9103 5.96507C42.9605 5.98609 43.0119 6.00827 43.0621 6.02929C43.0621 5.20951 43.1894 4.27179 42.9862 3.46952C42.6686 2.21299 41.4459 1.42824 40.1789 1.52283C38.9504 1.61392 37.8141 2.48041 37.5794 3.72176C37.4311 4.50417 37.5339 5.37183 37.5339 6.16359C37.653 6.09702 37.7709 6.03046 37.89 5.9639C34.9706 5.9639 32.0511 5.94755 29.1329 5.96156C28.3201 5.96507 27.5377 6.17994 26.9106 6.71828C26.0254 7.47968 25.9203 8.47929 25.9203 9.56883C25.9203 10.7238 26.2893 11.7643 27.3497 12.3575C27.8471 12.6354 28.3948 12.716 28.9553 12.7183C31.7206 12.73 34.4859 12.7195 37.2513 12.7207C41.0465 12.7207 44.843 12.723 48.6383 12.7242C49.5842 12.7242 50.5301 12.7312 51.476 12.7242C53.2884 12.7137 54.6652 11.477 54.6734 9.63306C54.6745 9.22667 54.6909 8.81445 54.6535 8.40923C54.6407 8.26326 54.1292 8.36719 54.1455 8.54469C54.2284 9.45322 54.2646 10.5498 53.7637 11.3415C53.2965 12.0784 52.5468 12.4509 51.6897 12.4603C50.8606 12.4696 50.0303 12.4603 49.2 12.4603C45.762 12.4603 42.3241 12.4579 38.885 12.4579C35.8955 12.4579 32.9059 12.4568 29.9176 12.4556C28.8175 12.4556 27.7782 12.4497 27.0017 11.4793C26.3699 10.6899 26.3956 9.69612 26.4259 8.73971C26.468 7.40494 27.4174 6.25584 28.8035 6.22548C31.7604 6.16125 34.7265 6.22665 37.6845 6.22782C37.7954 6.22782 38.0407 6.1741 38.0407 6.02813C38.0407 5.40103 38.0243 4.77043 38.0407 4.14333C38.0769 2.7782 39.1512 1.54969 40.6075 1.81711C41.7857 2.03432 42.5273 3.10984 42.553 4.25894C42.567 4.89304 42.553 5.52948 42.553 6.16476C42.553 6.22198 42.6721 6.22898 42.7048 6.22898C45.6231 6.22898 48.5437 6.19862 51.462 6.23132C52.8469 6.2465 53.9388 7.16087 54.1455 8.54469C54.1677 8.6965 54.6792 8.58089 54.6535 8.40923H54.6558Z\"\n        fill=\"#B9B9B9\"\n      />\n      <path\n        d=\"M40.4018 5.30531C38.9619 5.22707 38.6256 2.77707 40.1986 2.73853C41.663 2.70233 41.955 5.2224 40.4018 5.30531C40.2302 5.31465 39.86 5.58791 40.1975 5.56923C41.0254 5.52485 41.8592 5.03672 41.9596 4.14103C42.0624 3.21965 41.3022 2.47344 40.4018 2.47461C39.6007 2.47461 38.7879 3.00361 38.6513 3.82807C38.489 4.81251 39.2726 5.52018 40.1975 5.56923C40.3761 5.57857 40.7416 5.32399 40.4018 5.30531Z\"\n        fill=\"#B9B9B9\"\n      />\n    </svg>\n  );\n}\n\nexport function FelixAIActiveSVG() {\n  return (\n    <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n      <path\n        d=\"M14.4 0H1.6C1.17565 0 0.768687 0.168571 0.468629 0.468629C0.168571 0.768687 0 1.17565 0 1.6V16L3.2 12.8H14.4C14.8243 12.8 15.2313 12.6314 15.5314 12.3314C15.8314 12.0313 16 11.6243 16 11.2V1.6C16 1.17565 15.8314 0.768687 15.5314 0.468629C15.2313 0.168571 14.8243 0 14.4 0Z\"\n        fill=\"#7A8EF1\"\n      />\n      <path\n        d=\"M6.49905 8.45749C6.57418 8.51054 6.66017 8.54622 6.75079 8.56194C6.84142 8.57766 6.9344 8.57303 7.02301 8.54838C7.11162 8.52373 7.19364 8.47967 7.26313 8.41941C7.33261 8.35915 7.38782 8.28419 7.42476 8.19996L7.7181 7.30853C7.78944 7.09407 7.90975 6.89916 8.06951 6.73927C8.22927 6.57939 8.42407 6.45891 8.63848 6.38739L9.49105 6.11044C9.61223 6.06828 9.71701 5.98896 9.79048 5.88377C9.8472 5.80402 9.88415 5.71193 9.89827 5.61509C9.91239 5.51825 9.90328 5.41944 9.87168 5.32682C9.84009 5.23419 9.78692 5.15041 9.71656 5.08239C9.64621 5.01436 9.56068 4.96404 9.46705 4.93558L8.62324 4.6613C8.40871 4.59013 8.21371 4.46998 8.05369 4.31035C7.89367 4.15073 7.77303 3.95603 7.70133 3.74168L7.42438 2.88949C7.3818 2.76874 7.30272 2.66424 7.1981 2.59044C7.09285 2.51787 6.96803 2.479 6.84019 2.479C6.71235 2.479 6.58753 2.51787 6.48229 2.59044C6.37605 2.66557 6.29609 2.77217 6.25372 2.8952L5.97334 3.75806C5.90181 3.96684 5.78373 4.15662 5.62804 4.31304C5.47235 4.46946 5.28312 4.58842 5.07467 4.66091L4.22133 4.93749C4.09991 4.98041 3.99488 5.06011 3.92087 5.16551C3.84685 5.2709 3.80752 5.39675 3.80836 5.52553C3.8092 5.65432 3.85016 5.77964 3.92554 5.88406C4.00092 5.98849 4.10698 6.06681 4.22895 6.10815L5.07314 6.38244C5.34684 6.47429 5.58744 6.64467 5.76495 6.87234C5.86629 7.00301 5.94438 7.14968 5.99581 7.30663L6.27314 8.15768C6.31581 8.27882 6.39505 8.38358 6.49981 8.45749M10.2118 10.7737C10.2893 10.8285 10.382 10.8578 10.477 10.8575C10.5712 10.8578 10.6633 10.8289 10.7406 10.7748C10.8201 10.7187 10.8796 10.6386 10.9105 10.5462L11.0522 10.1108C11.0822 10.0204 11.1328 9.93824 11.2 9.87079C11.2673 9.80335 11.3493 9.75249 11.4396 9.72225L11.8838 9.57825C11.9734 9.54643 12.0509 9.48769 12.1058 9.41008C12.1607 9.33247 12.1903 9.23979 12.1905 9.14472C12.1905 9.04717 12.1593 8.95218 12.1014 8.87363C12.0436 8.79508 11.9621 8.73709 11.869 8.70815L11.4331 8.5672C11.3427 8.53719 11.2605 8.48652 11.193 8.4192C11.1256 8.35188 11.0748 8.26978 11.0446 8.17939L10.8998 7.73634C10.8686 7.64592 10.8098 7.56757 10.7317 7.51232C10.6536 7.45708 10.5601 7.42773 10.4645 7.4284C10.3688 7.42907 10.2758 7.45974 10.1985 7.51607C10.1212 7.57241 10.0635 7.65158 10.0335 7.74244L9.89105 8.17901C9.86185 8.26823 9.81256 8.34956 9.74698 8.41673C9.68139 8.4839 9.60126 8.53512 9.51276 8.56644L9.06857 8.71044C8.97879 8.74215 8.90103 8.80089 8.84598 8.87859C8.79093 8.95629 8.7613 9.04912 8.76114 9.14434C8.76124 9.24038 8.79158 9.33394 8.84786 9.41176C8.90414 9.48958 8.9835 9.5477 9.07467 9.57787L9.51048 9.71958C9.60127 9.74952 9.68375 9.80039 9.75125 9.86809C9.81875 9.93579 9.86938 10.0184 9.89905 10.1093L10.0434 10.5523C10.0749 10.6419 10.1335 10.7193 10.211 10.7741\"\n        fill=\"#E3E8FF\"\n      />\n    </svg>\n  );\n}\n\nexport function AIPrompterCloseIcon() {\n  return (\n    <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g id=\"close\">\n        <path\n          id=\"Vector\"\n          fillRule=\"evenodd\"\n          clipRule=\"evenodd\"\n          d=\"M8.00683 9.61524L12.048 13.6518C12.2624 13.866 12.5533 13.9863 12.8566 13.9863C13.1598 13.9863 13.4507 13.866 13.6651 13.6518C13.8795 13.4376 14 13.1471 14 12.8442C14 12.5413 13.8795 12.2508 13.6651 12.0366L9.62239 8L13.6643 3.96343C13.7705 3.85737 13.8546 3.73147 13.9121 3.59292C13.9695 3.45437 13.999 3.30588 13.999 3.15592C13.9989 3.00597 13.9693 2.85749 13.9118 2.71897C13.8544 2.58044 13.7701 2.45458 13.6639 2.34857C13.5578 2.24257 13.4317 2.15849 13.293 2.10113C13.1543 2.04378 13.0056 2.01428 12.8555 2.01432C12.7054 2.01435 12.5567 2.04392 12.4181 2.10134C12.2794 2.15876 12.1534 2.2429 12.0472 2.34895L8.00683 6.38552L3.96566 2.34895C3.86026 2.23985 3.73417 2.15281 3.59474 2.09291C3.45531 2.033 3.30533 2.00144 3.15355 2.00005C3.00177 1.99866 2.85124 2.02748 2.71073 2.08482C2.57023 2.14216 2.44256 2.22689 2.33518 2.33404C2.2278 2.44119 2.14287 2.56863 2.08533 2.70893C2.02778 2.84922 1.99879 2.99955 2.00004 3.15116C2.00129 3.30276 2.03275 3.4526 2.09259 3.59193C2.15243 3.73126 2.23945 3.85729 2.34858 3.96267L6.39128 8L2.34934 12.0373C2.24021 12.1427 2.15319 12.2687 2.09335 12.4081C2.03351 12.5474 2.00205 12.6972 2.0008 12.8488C1.99955 13.0004 2.02855 13.1508 2.08609 13.2911C2.14363 13.4314 2.22857 13.5588 2.33594 13.666C2.44332 13.7731 2.57099 13.8578 2.7115 13.9152C2.852 13.9725 3.00254 14.0013 3.15431 14C3.30609 13.9986 3.45607 13.967 3.5955 13.9071C3.73493 13.8472 3.86102 13.7601 3.96642 13.651L8.00683 9.61524Z\"\n          fill=\"#E548FF\"\n        />\n      </g>\n    </svg>\n  );\n}\n\nexport function AcceptedIcon(props: SvgIconProps) {\n  return (\n    <SvgIcon {...props} width=\"14\" height=\"14\" viewBox=\"0 0 21 21\" fill=\"none\">\n      <svg>\n        <rect\n          x=\"1.125\"\n          y=\"1.125\"\n          width=\"15.75\"\n          height=\"15.75\"\n          rx=\"7.875\"\n          fill=\"#EFFDF3\"\n          stroke=\"white\"\n          strokeWidth=\"1.75\"\n        />\n        <path\n          d=\"M7.88032 11.7509L5.5835 9.45406L6.62943 8.40577L7.88032 9.66019L11.5364 6L12.5835 7.04711L7.88032 11.7509Z\"\n          fill=\"#8CCF95\"\n        />\n      </svg>\n    </SvgIcon>\n  );\n}\n\nexport function DeclinedIcon(props: SvgIconProps) {\n  return (\n    <SvgIcon {...props}>\n      <svg width=\"14\" height=\"14\" viewBox=\"0 0 21 21\" fill=\"none\">\n        <rect\n          x=\"1.125\"\n          y=\"1.125\"\n          width=\"15.75\"\n          height=\"15.75\"\n          rx=\"7.875\"\n          fill=\"#FCEFEF\"\n          stroke=\"white\"\n          strokeWidth=\"1.75\"\n        />\n        <g clipPath=\"url(#clip0_27100_3650)\">\n          <path\n            d=\"M12.0883 6.94738L12.1769 6.859L12.0884 6.77048L11.2295 5.91161L11.141 5.8231L11.0526 5.91174L9 7.97015L6.94738 5.91174L6.859 5.8231L6.77048 5.91161L5.91161 6.77048L5.8231 6.859L5.91174 6.94738L7.97015 9L5.91174 11.0526L5.8231 11.141L5.91161 11.2295L6.77048 12.0884L6.859 12.1769L6.94738 12.0883L9 10.0298L11.0526 12.0883L11.141 12.1769L11.2295 12.0884L12.0884 11.2295L12.1769 11.141L12.0883 11.0526L10.0298 9L12.0883 6.94738Z\"\n            fill=\"#E37D7A\"\n            stroke=\"#E37D7A\"\n            strokeWidth=\"0.25\"\n          />\n        </g>\n        <defs>\n          <clipPath id=\"clip0_27100_3650\">\n            <rect width=\"8\" height=\"8\" fill=\"white\" transform=\"translate(5 5)\" />\n          </clipPath>\n        </defs>\n      </svg>\n    </SvgIcon>\n  );\n}\n","import React from 'react';\nimport { classes } from './styles';\nimport Box from '@mui/material/Box';\nimport Dialog from '@mui/material/Dialog';\nimport Button from '@mui/material/Button';\nimport DoneIcon from '@mui/icons-material/Done';\nimport CloseIcon from '@mui/icons-material/Close';\nimport CircularProgress from '@mui/material/CircularProgress';\n\nexport interface IGenericDialogProps {\n  url: string;\n  title: string;\n  description: string;\n  moreContent?: string;\n  buttonText: string;\n  buttonCallback: (url: string, id: number) => void;\n  callbackLoading: boolean;\n  isDialogOpen: boolean;\n  setDialogOpen: React.Dispatch<React.SetStateAction<boolean>>;\n}\n\nfunction GenericDialog({\n  url,\n  title,\n  description,\n  moreContent,\n  buttonText,\n  buttonCallback,\n  callbackLoading,\n  isDialogOpen,\n  setDialogOpen\n}: IGenericDialogProps) {\n  return (\n    <Dialog\n      open={isDialogOpen}\n      onClose={() => {\n        setDialogOpen(false);\n        if (title === 'Complete' && url) buttonCallback(url, 0);\n      }}\n      sx={{ '& .MuiPaper-root': classes.dialog, zIndex: '20000' }}\n    >\n      <CloseIcon\n        onClick={() => {\n          setDialogOpen(false);\n          url && buttonCallback(url, 0);\n        }}\n        sx={classes.closeIcon}\n      />\n      {title !== 'Failed' ? (\n        <Box sx={classes.tickWrapper}>\n          <DoneIcon sx={classes.tickGreen} />\n        </Box>\n      ) : (\n        <Box sx={classes.crossWrapper}>\n          <CloseIcon sx={classes.crossRed} />\n        </Box>\n      )}\n      <Box sx={classes.dialogHeader}>{title}</Box>\n      {description && <Box>{description}</Box>}\n      {moreContent && <Box>{moreContent}</Box>}\n      <Box sx={classes.dialogButtonContainer}>\n        <Button\n          id={`${buttonText.toLowerCase().split(' ').join('-')}-button`}\n          data-testid={`${buttonText.toLowerCase().split(' ').join('-')}-button`}\n          disableElevation\n          sx={title !== 'Failed' ? classes.confirmationButton : classes.buttonRed}\n          onClick={() => {\n            buttonCallback(url, 0);\n            if (title === 'Complete' && url) window.open(url);\n          }}\n          style={{ padding: '10px 30px' }}\n        >\n          {callbackLoading ? <CircularProgress size={20} color=\"inherit\" /> : buttonText}\n        </Button>\n      </Box>\n    </Dialog>\n  );\n}\n\nexport default GenericDialog;\n","import React, { useEffect, useState, useCallback } from 'react';\nimport StyledModal from '../GenericModal/StyledModal';\nimport GenericDialog from './GenericDialog';\nimport ModalFooterButtons from '../GenericModal/ModalFooterButtons';\nimport { classes } from './styles';\nimport { Box, LinearProgress } from '@mui/material';\nimport FileTickSVG from '../Graphics/FileTickSVG';\n\nconst DownloadModal = ({\n  type,\n  isOpen,\n  handleClose,\n  downloadAPICall,\n  emailFallback = false\n}: {\n  type: 'attachments' | 'pdf' | 'csv' | 'attachmentsInPdf';\n  isOpen: boolean;\n  handleClose: () => void;\n  downloadAPICall: (type: string) => Promise<string>;\n  emailFallback?: boolean;\n}) => {\n  const [confirmCancelIsOpen, setConfirmCancelIsOpen] = useState(false);\n  const [generatingDownload, setGeneratingDownload] = useState(true);\n  const [downloadURL, setDownloadURL] = useState<string>('');\n  const [emailFallbackMessage, setEmailFallbackMessage] = useState<string>('');\n  const [hasFetchedData, setHasFetchedData] = useState(false);\n\n  const handlePrimaryButtonClick = () => {\n    generatingDownload ? setConfirmCancelIsOpen(true) : handleClose();\n  };\n\n  const handleConfirmClose = () => {\n    setConfirmCancelIsOpen(false);\n    setHasFetchedData(false);\n    handleClose();\n  };\n\n  const handleDownload = useCallback(\n    async (type: 'attachments' | 'pdf' | 'csv' | 'attachmentsInPdf') => {\n      if (emailFallback) {\n        setGeneratingDownload(true);\n        const data = await downloadAPICall(type);\n        setGeneratingDownload(false);\n        setEmailFallbackMessage(data);\n        return;\n      }\n      setGeneratingDownload(true);\n      const id = await downloadAPICall(type);\n      const url = `/admin/assets/${id}`;\n      setDownloadURL(url);\n      setGeneratingDownload(false);\n      // Automatically start file download\n      const link = document.createElement('a');\n      link.href = url;\n      link.setAttribute('download', '');\n      document.body.appendChild(link);\n      link.click();\n      setHasFetchedData(true);\n    },\n    [downloadAPICall]\n  );\n\n  useEffect(() => {\n    if (isOpen && !hasFetchedData) {\n      handleDownload(type);\n    }\n  }, [handleDownload, isOpen, type]);\n\n  return (\n    <>\n      <StyledModal\n        isOpen={isOpen}\n        handleClose={() => setConfirmCancelIsOpen(true)}\n        styleOverrides={{\n          maxWidth: '740px',\n          maxHeight: '400px'\n        }}\n        label={`download-${type}`}\n        modalTitle={\n          type === 'attachments' ? 'Download attachments' : `Candidate ${type.toUpperCase()} Export`\n        }\n        subHeaderStyling={false}\n      >\n        <Box sx={classes.downloadModalContent}>\n          {generatingDownload ? (\n            <>\n              <Box sx={classes.downloadModalDescription}>\n                {type === 'attachments'\n                  ? 'Your attachments are being prepared, please wait...'\n                  : `Your ${type.toUpperCase()} file is being prepared, please wait...`}\n              </Box>\n              <Box sx={{ width: '100%' }}>\n                <LinearProgress color=\"inherit\" />\n              </Box>\n            </>\n          ) : (\n            <>\n              <Box sx={{ width: '100%', textAlign: 'center' }}>\n                <FileTickSVG />\n              </Box>\n              <Box sx={{ ...classes.downloadModalDescription, textAlign: 'center' }}>\n                {emailFallback ? (\n                  emailFallbackMessage\n                ) : (\n                  <>\n                    Your download should have started automatically. <br />\n                    If it hasn't, click{' '}\n                    <a href={downloadURL} download>\n                      here\n                    </a>\n                  </>\n                )}\n              </Box>\n            </>\n          )}\n        </Box>\n        <ModalFooterButtons\n          primaryButtonText={generatingDownload ? 'Cancel' : 'Done'}\n          primaryButtonCallback={handlePrimaryButtonClick}\n          primaryButtonID={generatingDownload ? 'cancel-download-button' : 'done-download-button'}\n          secondaryButtonID=\"cancel-download-attachments-button\"\n        />\n      </StyledModal>\n      <GenericDialog\n        isDialogOpen={confirmCancelIsOpen}\n        setDialogOpen={setConfirmCancelIsOpen}\n        title=\"Are you sure you want to cancel?\"\n        description=\"\"\n        buttonText=\"Cancel\"\n        buttonCallback={handleConfirmClose}\n        secondaryButtonText=\"Continue\"\n        callbackLoading={false}\n        url=\"\"\n      />\n    </>\n  );\n};\n\nexport default DownloadModal;\n","import React, { useEffect, useState } from 'react';\nimport { Document, Page, pdfjs } from 'react-pdf';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport Modal from '@mui/material/Modal';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { classes } from './styles';\n\n// pdf.js worker needed for react-pdf\npdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;\n\nexport interface IJobAttachment {\n  id: number;\n  attached_content_type: string;\n  attached_file_name: string;\n  created_at: string;\n  public_link?: string;\n  url?: string;\n  attached_by?: string;\n  updated_at?: string;\n  application_link?: string;\n}\n\nexport default function FilePreviewModal({\n  previewOpen,\n  setPreviewOpen,\n  selectedAttachment,\n  isShareable,\n  applicationLink,\n  allowDownload = true\n}: {\n  previewOpen: boolean;\n  setPreviewOpen: (open: boolean) => void;\n  selectedAttachment: IJobAttachment | null;\n  isShareable: boolean;\n  applicationLink?: string;\n  allowDownload?: boolean;\n}) {\n  const BASE_URL = window.location.origin;\n  const [numPages, setNumPages] = useState(0);\n  const [copied, setCopied] = useState(false);\n  const [text, setText] = useState('');\n  const [preview, setPreview] = useState({\n    data: [],\n    prev: false,\n    next: false,\n    index: 0\n  });\n  const [isLoadingPreview, setIsLoadingPreview] = useState(true);\n\n  const handleCopy = () => {\n    setCopied(true);\n    setTimeout(() => setCopied(false), 3000);\n  };\n\n  const handleClose = () => {\n    setPreviewOpen(false);\n    setIsLoadingPreview(true);\n  };\n\n  const getText = async () => {\n    try {\n      const response = await fetch(`${BASE_URL}/admin/assets/${selectedAttachment?.id}`);\n      const text = await response.text();\n      setText(text);\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsLoadingPreview(false);\n    }\n  };\n\n  const getPreveiwImage = async (id: number, link: string, index: number) => {\n    setIsLoadingPreview(true);\n    try {\n      const response = await fetch(`${link}/assets/${id}/preview?index=${index}`, {\n        method: 'GET',\n        headers: {\n          'Content-Type': 'application/json',\n          'x-csrf-token': document.querySelector('meta[name=\"csrf-token\"]')?.getAttribute('content')\n        }\n      }).then((response) => response.json());\n      setPreview({\n        data: response.data,\n        prev: response.prev,\n        next: response.next,\n        index: index\n      });\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsLoadingPreview(false);\n    }\n  };\n\n  function onDocumentLoadSuccess({ numPages }: { numPages: number }) {\n    setNumPages(numPages);\n  }\n\n  useEffect(() => {\n    if (applicationLink && selectedAttachment.id && selectedAttachment.previewable)\n      getPreveiwImage(selectedAttachment.id, applicationLink, 0);\n  }, [applicationLink, selectedAttachment]);\n\n  const handleDisplayContent = () => {\n    if (!selectedAttachment) return null;\n    if (selectedAttachment.attached_content_type?.split('/')[0] === 'image') {\n      return (\n        <>\n          <img\n            src={`${BASE_URL}/admin/assets/${selectedAttachment.id}`}\n            alt={selectedAttachment.attached_file_name}\n            style={{\n              ...(classes.imagePreview as React.CSSProperties),\n              opacity: isLoadingPreview ? 0 : 1\n            }}\n            onLoad={() => setIsLoadingPreview(false)}\n          />\n          {isLoadingPreview && (\n            <Box sx={{ ...classes.previewLoader, ...classes.absoluteLoader }}>\n              <CircularProgress sx={{ color: '#084D6D' }} />\n              Loading Preview\n            </Box>\n          )}\n        </>\n      );\n    } else if (selectedAttachment.attached_content_type?.split('/')[0] === 'video') {\n      return (\n        <Box sx={classes.mediaContentContainer}>\n          <video width=\"100%\" controls>\n            <source src={`${BASE_URL}/admin/assets/${selectedAttachment.id}`} />\n            Your browser does not support the video tag.\n          </video>\n        </Box>\n      );\n    } else if (selectedAttachment.attached_content_type?.split('/')[0] === 'audio') {\n      return (\n        <Box sx={classes.mediaContentContainer}>\n          <audio controls>\n            <source src={`${BASE_URL}/admin/assets/${selectedAttachment.id}`} />\n            Your browser does not support the audio tag.\n          </audio>\n        </Box>\n      );\n    } else if (selectedAttachment.attached_content_type === 'text/plain') {\n      getText();\n      return (\n        <>\n          <Box>\n            <pre>{text}</pre>\n          </Box>\n          {isLoadingPreview && (\n            <Box sx={{ ...classes.previewLoader, ...classes.absoluteLoader }}>\n              <CircularProgress sx={{ color: '#084D6D' }} />\n              Loading Preview\n            </Box>\n          )}\n        </>\n      );\n    } else if (selectedAttachment.attached_content_type?.split('/')[1] === 'pdf') {\n      return (\n        <Box>\n          <Document\n            file={`${BASE_URL}/admin/assets/${selectedAttachment.id}`}\n            loading={\n              <Box sx={classes.previewLoader}>\n                <CircularProgress sx={{ color: '#084D6D' }} />\n                Loading Preview\n              </Box>\n            }\n            onLoadSuccess={onDocumentLoadSuccess}\n            style={{ paddingBottom: '5px' }}\n          >\n            {[...Array(numPages)].map((_, page) => (\n              <Box sx={classes.pdfPage} key={page}>\n                <Page pageNumber={page + 1} renderTextLayer={false} renderAnnotationLayer={false} />\n              </Box>\n            ))}\n          </Document>\n        </Box>\n      );\n    } else if (\n      (selectedAttachment.attached_content_type?.split('/')[1] === 'msword' ||\n        selectedAttachment.attached_file_name.split('.').pop() === 'odt' ||\n        selectedAttachment.attached_content_type?.split('/')[1] ===\n          'vnd.openxmlformats-officedocument.wordprocessingml.document') &&\n      selectedAttachment.previewable\n    ) {\n      return (\n        <>\n          {preview.data ? (\n            <Box sx={{ display: 'flex', flexDirection: 'column' }}>\n              <Box sx={classes.docPreviewNavigation}>\n                {preview.prev && (\n                  <Button\n                    sx={classes.downloadButton}\n                    onClick={() =>\n                      getPreveiwImage(selectedAttachment.id, applicationLink, preview.index - 1)\n                    }\n                  >\n                    Previous\n                  </Button>\n                )}\n                {preview.next && (\n                  <Button\n                    sx={classes.downloadButton}\n                    onClick={() =>\n                      getPreveiwImage(selectedAttachment.id, applicationLink, preview.index + 1)\n                    }\n                  >\n                    Next\n                  </Button>\n                )}\n              </Box>\n              <Box\n                sx={{\n                  display: 'flex',\n                  flexDirection: 'column',\n                  height: '100%',\n                  overflowX: 'auto'\n                }}\n              >\n                {preview.data?.map((item, index) => (\n                  <img\n                    key={index}\n                    src={item}\n                    alt={selectedAttachment.attached_file_name}\n                    style={{ ...classes.imagePreview, width: '100%', borderBottom: '2px solid black' }}\n                  />\n                ))}\n              </Box>\n            </Box>\n          ) : (\n            !isLoadingPreview && <Box sx={classes.noPreview}>No preview available.</Box>\n          )}\n          {isLoadingPreview && (\n            <Box sx={{ ...classes.previewLoader, ...classes.absoluteLoader }}>\n              <CircularProgress sx={{ color: '#084D6D' }} />\n              Loading Preview\n            </Box>\n          )}\n        </>\n      );\n    } else {\n      return <Box sx={classes.noPreview}>No preview available for this file type.</Box>;\n    }\n  };\n\n  return (\n    <Modal open={previewOpen} onClose={handleClose} aria-labelledby=\"file-preview-modal\">\n      <Box sx={classes.attachmentPreviewModal}>\n        <CloseIcon\n          id=\"close-attachment-preview-button\"\n          onClick={handleClose}\n          sx={classes.closeIcon}\n          className=\"close-button\"\n        />\n        <Box id=\"file-preview-modal-title\" sx={classes.attachmentPreviewTitle}>\n          {selectedAttachment?.attached_file_name}\n          {isShareable && (\n            <Box sx={{ ...classes.fileLinkContainer, marginTop: '8px' }}>\n              <a href={selectedAttachment?.public_link} target=\"_blank\" rel=\"noopener noreferrer\">\n                <Box sx={{ fontWeight: 'regular', color: '#999999' }}>\n                  {selectedAttachment?.public_link}\n                </Box>\n              </a>\n              <CopyToClipboard text={selectedAttachment?.public_link} onCopy={() => handleCopy()}>\n                <Button sx={classes.copyButton}>{copied ? 'Copied!' : 'Copy'}</Button>\n              </CopyToClipboard>\n            </Box>\n          )}\n        </Box>\n        <Box sx={classes.attachmentPreviewContent}>{handleDisplayContent()}</Box>\n        <Box sx={classes.attachmentPreviewActions}>\n          {allowDownload && (\n            <a href={`${BASE_URL}/admin/assets/${selectedAttachment?.id}`}>\n              <Button id=\"download-attachment-button\" sx={classes.downloadButton}>\n                Download\n              </Button>\n            </a>\n          )}\n        </Box>\n      </Box>\n    </Modal>\n  );\n}\n","import React, { ReactElement, SetStateAction, CSSProperties, Dispatch } from 'react';\nimport { classes } from './styles';\nimport { Box, Dialog, Button, CircularProgress } from '@mui/material';\n\nexport interface IGenericDialogProps {\n  alternateColor?: boolean;\n  buttonCallback: (url: string, id: number) => void;\n  buttonText: string;\n  callbackLoading: boolean;\n  description: string | ReactElement;\n  dialogId?: number;\n  disablePrimaryButton?: boolean;\n  isDialogOpen: boolean;\n  onCancelCallback?: () => void;\n  overrideColor?: { primary: CSSProperties; secondary: CSSProperties };\n  primaryButtonId?: string;\n  secondaryButtonId?: string;\n  secondaryButtonText?: string;\n  setDialogOpen: Dispatch<SetStateAction<boolean>> | ((value: boolean) => void);\n  switchOrder?: boolean;\n  title: string;\n  url: string;\n}\n\nfunction GenericDialog({\n  alternateColor,\n  buttonCallback,\n  buttonText,\n  callbackLoading,\n  description,\n  dialogId,\n  disablePrimaryButton,\n  isDialogOpen,\n  onCancelCallback,\n  overrideColor,\n  primaryButtonId,\n  secondaryButtonId,\n  secondaryButtonText,\n  setDialogOpen,\n  switchOrder,\n  title,\n  url\n}: IGenericDialogProps) {\n  return (\n    <Dialog\n      open={isDialogOpen}\n      onClose={() => setDialogOpen(false)}\n      sx={{ '& .MuiPaper-root': { ...classes.dialog, maxWidth: '500px' }, zIndex: '20000' }}\n    >\n      <h4>{title}</h4>\n      {description && <span>{description}</span>}\n      <Box\n        sx={{\n          ...classes.dialogButtonContainer,\n          flexDirection: switchOrder ? 'row-reverse' : 'row'\n        }}\n      >\n        <Button\n          disableElevation\n          id={secondaryButtonId}\n          sx={{\n            ...classes.buttonSecondaryLight,\n            ...(alternateColor && classes.secondaryButtonAlternateColor),\n            ...(overrideColor && overrideColor.secondary)\n          }}\n          onClick={() => {\n            onCancelCallback?.();\n            setDialogOpen(false);\n          }}\n          style={{ padding: '10px 30px' }}\n        >\n          {secondaryButtonText || 'Cancel'}\n        </Button>\n        <Button\n          data-testid=\"dialog-action-button\"\n          className=\"dialog-action-button\"\n          id={primaryButtonId}\n          disableElevation\n          sx={{\n            ...classes.buttonRed,\n            ...(alternateColor && classes.primaryButtonAlternateColor),\n            '&.Mui-disabled': { background: '#E5E5E5', color: '#939393' },\n            ...(overrideColor && overrideColor.primary)\n          }}\n          onClick={() => (dialogId ? buttonCallback(url, dialogId) : buttonCallback(url, 0))}\n          style={{ padding: '10px 30px' }}\n          disabled={disablePrimaryButton}\n        >\n          {callbackLoading ? <CircularProgress size={20} color=\"inherit\" /> : buttonText}\n        </Button>\n      </Box>\n    </Dialog>\n  );\n}\n\nexport default GenericDialog;\n","import React from 'react';\nimport { classes } from '../Multiposter/styles';\nimport Box from '@mui/material/Box';\nimport Dialog from '@mui/material/Dialog';\nimport Button from '@mui/material/Button';\nimport { IGenericDialogProps } from '../Multiposter/types';\nimport ErrorIcon from '@mui/icons-material/Error';\nimport dompurify from 'dompurify';\n\nfunction WarningDialog({\n  title,\n  description,\n  buttonText,\n  isDialogOpen,\n  setDialogOpen,\n}: IGenericDialogProps) {\n  return (\n    <Dialog\n      open={isDialogOpen}\n      sx={{ '& .MuiPaper-root': classes.dialog }}\n    >\n      <ErrorIcon sx={{color: '#E37D7A', fontSize: '70px'}}/>\n      <Box sx={{color: '#666666', marginBottom: '10px'}}><h1>{title}</h1></Box>\n      {description && \n        <Box\n          dangerouslySetInnerHTML={{ __html: dompurify.sanitize(description) }}\n        />\n      }\n      <Box sx={classes.dialogButtonContainer}>\n        <Button\n          disableElevation\n          sx={classes.buttonSecondary}\n          onClick={() => setDialogOpen(false)}\n          style={{ padding: '10px 30px' }}\n        >\n          {buttonText}\n        </Button>\n      </Box>\n    </Dialog>\n  );\n}\n\nexport default WarningDialog;\n","import React from 'react';\nimport axios from 'axios';\nimport { Box, Button, IconButton, Tooltip } from '@mui/material';\nimport { IJobAdIndeed, IJobAdViewJobs, IActionButtonProps } from './types';\nimport EditIcon from '@mui/icons-material/Edit';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport ArchiveIcon from '@mui/icons-material/Archive';\n\nconst ActionButton: React.FC<IActionButtonProps> = ({\n  ad,\n  jobAds,\n  setAds,\n  adsStatus,\n  tableHovered,\n  apiKey,\n  classes,\n  adType,\n  setDialogLoading,\n  setDialogUrl,\n  setDialogOpen,\n  setActionsAnchorEl,\n  setDialogAdID,\n  setDialogTitle,\n  setDialogDescription,\n  setDialogButtonText,\n  setDialogButtonCallback,\n  setSelectedAd,\n  handleSnack,\n  handleCopy,\n  handleArchive\n}) => {\n  const urls = adType === 'indeed' ? ad.indeed_urls : ad.viewjobs_urls;\n  const adBoard = adType === 'indeed' ? 'Indeed' : 'ViewJobs';\n  const isDisabled = adsStatus == 'active' && adType === 'view_jobs';\n\n  const handleButtonStyle = (ad: IJobAdIndeed | IJobAdViewJobs) => {\n    switch (ad.status) {\n      case 'open':\n        return getExpireAdButtonStyle(ad);\n      case 'new':\n        return getContinueDraftButtonStyle();\n      default:\n        return getCloneAdButtonStyle();\n    }\n  };\n\n  const getExpireAdButtonStyle = (ad: IJobAdIndeed | IJobAdViewJobs) => {\n    return {\n      text: 'Expire Ad',\n      class: classes.buttonRedLight,\n      callback: () => {\n        if (!isDisabled) {\n          setDialogUrl(`/api/v4/${adType}/jobs/${ad.job_id}/job_ads/${ad.id}/expire`);\n          setDialogAdID(ad.id);\n          setDialogTitle('Are you sure you want to expire this ad?');\n          setDialogDescription(\n            adType === 'indeed'\n              ? 'The ad will expire within the next 4 hours. To repost this ad later you will be charged for a new ad.'\n              : ''\n          );\n          setDialogButtonText('Expire now');\n          setDialogButtonCallback(() => handleExpire);\n          setDialogOpen(true);\n        }\n      },\n      isDisabled\n    };\n  };\n\n  const getContinueDraftButtonStyle = () => {\n    return {\n      text: 'Continue Draft',\n      class: classes.buttonGreenLight,\n      callback: () => handleEdit(urls.edit)\n    };\n  };\n\n  const getCloneAdButtonStyle = () => {\n    return {\n      text: 'Clone Ad',\n      class: classes.buttonSecondaryLight,\n      callback: () => {\n        setDialogUrl(urls.copy);\n        setDialogTitle('Are you sure you want to clone this ad?');\n        setDialogDescription(`You will have to repost for your ad to be active on ${adBoard}.`);\n        setDialogButtonText('Clone ad');\n        setDialogButtonCallback(() => handleCopy);\n        setDialogOpen(true);\n      }\n    };\n  };\n\n  async function handleEdit(url: string) {\n    window.location.href = url;\n  }\n\n  async function handleExpire(url: string, id: number) {\n    setDialogLoading(true);\n    try {\n      const { data } = await axios.put(`${url}`, {\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      });\n      const newAds = Object.assign(jobAds);\n      const index = newAds[adsStatus].findIndex(\n        (ad: IJobAdIndeed | IJobAdViewJobs) => ad.id === id\n      );\n      const copyJob = newAds[adsStatus][index];\n      copyJob.status = 'expired';\n      newAds.expired && newAds.expired.push(copyJob);\n      newAds[adsStatus].splice(index, 1);\n      setAds({ ...newAds });\n      handleSnack(`${data.title} has been expired`);\n    } catch (e) {\n      console.log(e);\n      handleSnack('Could not expire ad');\n    } finally {\n      setDialogLoading(false);\n      setDialogUrl(null);\n      setDialogOpen(false);\n    }\n  }\n\n  const showIcons = (ad: IJobAdIndeed | IJobAdViewJobs) => {\n    switch (adsStatus) {\n      case 'active':\n        return renderActiveIcons(ad);\n      case 'draft':\n        return renderDraftIcon();\n      case 'expired':\n        return renderExpiredIcon(ad);\n      case 'archived':\n        return null;\n      default:\n        return null;\n    }\n  };\n\n  const renderActiveIcons = (ad: IJobAdIndeed | IJobAdViewJobs) => (\n    <>\n      <Tooltip title={isDisabled ? 'Coming soon' : 'Edit'}>\n        <span>\n          <IconButton\n            sx={classes.icon}\n            disabled={isDisabled}\n            onClick={() => handleEdit(urls.edit)}\n            className={`edit-${adBoard}-ad-button`}\n          >\n            <EditIcon fontSize=\"small\" sx={classes.iconGrey} />\n          </IconButton>\n        </span>\n      </Tooltip>\n      <IconButton\n        sx={classes.icon}\n        onClick={(e) => {\n          setActionsAnchorEl(e.currentTarget);\n          setSelectedAd(ad);\n        }}\n        className={`${adBoard}-ad-actions-button`}\n      >\n        <MoreVertIcon sx={classes.iconGrey} />\n      </IconButton>\n    </>\n  );\n\n  const renderDraftIcon = () => (\n    <Tooltip title=\"Edit\">\n      <IconButton\n        sx={classes.icon}\n        onClick={() => handleEdit(urls.edit)}\n        className={`edit-${adBoard}-ad-button`}\n      >\n        <EditIcon fontSize=\"small\" sx={classes.iconGrey} />\n      </IconButton>\n    </Tooltip>\n  );\n\n  const renderExpiredIcon = (ad: IJobAdIndeed | IJobAdViewJobs) => (\n    <>\n      <Tooltip title=\"Archive\">\n        <IconButton\n          sx={classes.icon}\n          onClick={() => {\n            setDialogUrl(`/api/v4/${adType}/jobs/${ad.job_id}/job_ads/${ad.id}/archive`);\n            setDialogAdID(ad.id);\n            setDialogTitle('Are you sure you want to archive this ad?');\n            setDialogButtonText('Archive now');\n            setDialogButtonCallback(() => handleArchive);\n            setDialogOpen(true);\n          }}\n        >\n          <ArchiveIcon sx={classes.iconRed} />\n        </IconButton>\n      </Tooltip>\n    </>\n  );\n\n  const buttonStyle = handleButtonStyle(ad);\n  return (\n    <Box\n      sx={{\n        ...classes.actionsContainer,\n        ...classes.stickyRight,\n        ...classes.scrollShadowRight,\n        ...(tableHovered && classes.scrollShadowVisible)\n      }}\n    >\n      <Box sx={classes.actionButtonContainer}>\n        <Tooltip title={isDisabled ? 'Coming soon' : ''}>\n          <span>\n            <Button\n              sx={{\n                ...classes.columnRefrence,\n                ...buttonStyle.class,\n                ...classes.columnButtonPadding,\n                ...classes.actionButton\n              }}\n              disableElevation\n              size=\"large\"\n              onClick={buttonStyle.callback}\n              disabled={buttonStyle.isDisabled}\n            >\n              {buttonStyle.text}\n            </Button>\n          </span>\n        </Tooltip>\n      </Box>\n      {showIcons(ad)}\n    </Box>\n  );\n};\n\nexport default ActionButton;\n","import React from 'react';\nimport { Popover } from '@mui/material';\nimport { ActionPopoverProps } from './types';\n\nconst ActionPopover: React.FC<ActionPopoverProps> = ({\n  anchorEl,\n  onClose,\n  handleCopy,\n  handleArchive,\n  handleDelete,\n  selectedAd,\n  classes,\n  adType,\n  setDialogUrl,\n  setDialogTitle,\n  setDialogDescription,\n  setDialogButtonText,\n  setDialogButtonCallback,\n  setDialogOpen,\n  setDialogAdID\n}) => {\n  const urls = adType === 'indeed' ? selectedAd?.indeed_urls : selectedAd?.viewjobs_urls;\n  const adBoard = adType === 'indeed' ? 'Indeed' : 'ViewJobs';\n\n  return (\n    <Popover\n      id={anchorEl ? 'actions-menu-popover' : undefined}\n      sx={{ ...classes.actionsMenu, minWidth: 'unset', width: '135px' }}\n      open={Boolean(anchorEl)}\n      anchorEl={anchorEl}\n      onClose={onClose}\n      anchorOrigin={{\n        vertical: 'bottom',\n        horizontal: 'right'\n      }}\n      transformOrigin={{\n        vertical: 'top',\n        horizontal: 'right'\n      }}\n    >\n      {selectedAd && (\n        <>\n          {!['expired', 'archived'].includes(selectedAd.status) && (\n            <span\n              onClick={() => {\n                setDialogUrl(urls.copy);\n                setDialogTitle('Are you sure you want to clone this ad?');\n                setDialogDescription(\n                  `You will have to repost for your ad to be active on ${adBoard}.`\n                );\n                setDialogButtonText('Clone ad');\n                setDialogButtonCallback(() => handleCopy);\n                setDialogOpen(true);\n              }}\n              className={`clone-${adBoard}-ad-button`}\n            >\n              Clone\n            </span>\n          )}\n          {selectedAd.status === 'expired' ? (\n            <span\n              onClick={() => {\n                setDialogUrl(\n                  `/api/v4/${adType}/jobs/${selectedAd.job_id}/job_ads/${selectedAd.id}/archive`\n                );\n                setDialogAdID(selectedAd.id);\n                setDialogTitle('Are you sure you want to archive this ad?');\n                setDialogDescription(null);\n                setDialogButtonText('Archive now');\n                setDialogButtonCallback(() => handleArchive);\n                setDialogOpen(true);\n              }}\n            >\n              Archive\n            </span>\n          ) : (\n            selectedAd.status !== 'open' &&\n            !['open', 'archived'].includes(selectedAd.status) && (\n              <span\n                onClick={() => {\n                  setDialogUrl(\n                    `/api/v4/${adType}/jobs/${selectedAd.job_id}/job_ads/${selectedAd.id}`\n                  );\n                  setDialogAdID(selectedAd.id);\n                  setDialogTitle('Are you sure you want to delete this ad?');\n                  setDialogDescription(\n                    'Your job ad will be permanently deleted and you will not be able to recover your ad details.'\n                  );\n                  setDialogButtonText('Delete ad');\n                  setDialogButtonCallback(() => handleDelete);\n                  setDialogOpen(true);\n                }}\n              >\n                Delete\n              </span>\n            )\n          )}\n        </>\n      )}\n    </Popover>\n  );\n};\n\nexport default ActionPopover;\n","import React from 'react';\nimport { Popover } from '@mui/material';\n\ninterface AdTypePopoverProps {\n  filterAnchorEl: null | HTMLElement;\n  setFilterAnchorEl: (el: HTMLElement | null) => void;\n  selectedAdType: string;\n  handleAdTypeChange: (id: string) => void;\n  classes: any;\n  adType: string;\n}\n\nconst ADTYPES = [\n  {\n    id: 'active',\n    name: 'Active'\n  },\n  {\n    id: 'draft',\n    name: 'Draft'\n  },\n  {\n    id: 'expired',\n    name: 'Expired'\n  },\n  {\n    id: 'archived',\n    name: 'Archived'\n  }\n];\n\nconst AdTypePopover: React.FC<AdTypePopoverProps> = ({\n  filterAnchorEl,\n  setFilterAnchorEl,\n  selectedAdType,\n  handleAdTypeChange,\n  classes,\n  adType\n}) => {\n  return (\n    <Popover\n      id=\"filter-menu-popover\"\n      sx={classes.filterMenu}\n      open={Boolean(filterAnchorEl)}\n      anchorEl={filterAnchorEl}\n      onClose={() => {\n        setFilterAnchorEl(null);\n      }}\n      anchorOrigin={{\n        vertical: 'bottom',\n        horizontal: 'left'\n      }}\n      transformOrigin={{\n        vertical: 'top',\n        horizontal: 'left'\n      }}\n    >\n      {ADTYPES.map(\n        (type) =>\n          type.id !== selectedAdType && (\n            <span\n              key={type.name}\n              onClick={() => handleAdTypeChange(type.id)}\n              id={`${type.name}-select-${adType}-ad-button`}\n            >\n              {type.name}\n            </span>\n          )\n      )}\n    </Popover>\n  );\n};\n\nexport default AdTypePopover;\n","import React, { useState, useEffect } from 'react';\nimport axios from 'axios';\nimport GenericDialog from '../GenericDialog';\nimport Box from '@mui/material/Box';\nimport Tooltip from '@mui/material/Tooltip';\nimport Snackbar from '@mui/material/Snackbar';\nimport IconButton from '@mui/material/IconButton';\nimport EditIcon from '@mui/icons-material/Edit';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport { classes } from '../styles';\nimport { IJobAdBroadbeanProps } from '../types';\n\nexport default function AdTable({ jobAds, setAds, apiKey }: IJobAdBroadbeanProps) {\n  const [dialogUrl, setDialogUrl] = useState('');\n  const [dialogTitle, setDialogTitle] = useState('');\n  const [dialogDescription, setDialogDescription] = useState('');\n  const [dialogButtonText, setDialogButtonText] = useState('');\n  const [dialogButtonCallback, setDialogButtonCallback] = useState(null);\n  const [dialogLoading, setDialogLoading] = useState(false);\n  const [dialogOpen, setDialogOpen] = useState(false);\n  const [isSnackOpen, setIsSnackOpen] = useState(false);\n  const [snackMessage, setSnackMessage] = useState('');\n\n  function handleSnack(message: string) {\n    setIsSnackOpen(true);\n    setSnackMessage(message);\n  }\n\n  function handleEdit(url: string): void {\n    window.open(url, '_blank', 'noopener,noreferrer');\n  }\n\n  async function handleDelete(url: string) {\n    setDialogLoading(true);\n    try {\n      const { data } = await axios.delete(`${url}`, {\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      });\n      if (!data.errors) {\n        handleSnack(`${data.bb_job_title} has been deleted`);\n        setAds(jobAds.filter((ad) => ad.id !== data.id));\n      }\n    } catch (e) {\n      console.log(e);\n      handleSnack('Cannot access the multiposting portal. Please contact your administrator.');\n    } finally {\n      setDialogLoading(false);\n      setDialogUrl(null);\n      setDialogOpen(false);\n    }\n  }\n\n  return (\n    <Box sx={classes.table}>\n      <Box sx={{ ...classes.row, ...classes.rowHeader }}>\n        <span>Reference</span>\n        <span>Title</span>\n        <Box component=\"span\" sx={classes.center}>\n          \n        </Box>\n      </Box>\n      {jobAds.length > 0 ? (\n        jobAds.map((ad) => (\n          <Box key={ad.id} sx={classes.row}>\n            <Box>{ad.bb_job_ref}</Box>\n            <Box sx={classes.title}>{ad.bb_job_title}</Box>\n            <Box sx={classes.actionsContainer}>\n              <Tooltip title=\"Edit\">\n                <IconButton\n                  onClick={() => handleEdit(ad.broadbean_urls.edit)}\n                >\n                  <EditIcon fontSize=\"small\" sx={classes.iconGrey} />\n                </IconButton>\n              </Tooltip>\n              <Tooltip title=\"Delete\">\n                <IconButton\n                  onClick={() => {\n                    setDialogUrl(`/api/v4/broadbean/jobs/${ad.job_id}/job_ads/${ad.id}`);\n                    setDialogTitle('Are you sure you want to delete this ad?');\n                    setDialogDescription(\n                      'Your job ad will be permanently deleted and you will not be able to recover your ad details.'\n                    );\n                    setDialogButtonText('Delete ad');\n                    setDialogButtonCallback(() => handleDelete);\n                    setDialogOpen(true);\n                  }}\n                >\n                  <DeleteIcon sx={classes.iconRed} />\n                </IconButton>\n              </Tooltip>\n            </Box>\n          </Box>\n        ))\n      ) : (\n        <Box sx={classes.row}>\n          <Box sx={classes.title}>No ads to display</Box>\n        </Box>\n      )}\n      <GenericDialog\n        url={dialogUrl}\n        title={dialogTitle}\n        description={dialogDescription}\n        buttonText={dialogButtonText}\n        buttonCallback={dialogButtonCallback}\n        callbackLoading={dialogLoading}\n        isDialogOpen={dialogOpen}\n        setDialogOpen={setDialogOpen}\n      />\n      <Snackbar open={isSnackOpen} onClose={() => setIsSnackOpen(false)} message={snackMessage} />\n    </Box>\n  );\n}\n","import React, { useState, useEffect, useCallback, useRef } from 'react';\nimport Tabs from '@mui/material/Tabs';\nimport Tab from '@mui/material/Tab';\nimport Box from '@mui/material/Box';\nimport TableSkeleton from '../TableSkeleton';\nimport AdTable from './AdTable';\nimport Alert from '@mui/material/Alert';\nimport { classes } from '../styles';\n\nexport default function BroadbeanAds({ apiKey, jobId }: { apiKey: string; jobId: string | null }) {\n  const [ads, setAds] = useState(null);\n  const [iframeUrl, setIframeUrl] = useState(null);\n  const [message, setMessage] = useState('');\n  const [loading, setLoading] = useState(true);\n  const [tabValue, setTabValue] = useState(0);\n\n  interface TabPanelProps {\n    children?: React.ReactNode;\n    index: number;\n    tabValue: number;\n  }\n  \n  const TabPanel = useCallback((props: TabPanelProps) => {\n    const { children, tabValue, index, ...other } = props;\n  \n    return (\n      <div\n        role=\"tabpanel\"\n        hidden={tabValue !== index}\n        id={`jobs-tabpanel-${index}`}\n        aria-labelledby={`jobs-tab-${index}`}\n        {...other}\n      >\n        {tabValue === index && (\n          <>\n            {children}\n          </>\n        )}\n      </div>\n    );\n  }, [])\n  \n  function a11yProps(index: number) {\n    return {\n      id: `jobs-tab-${index}`,\n      'aria-controls': `jobs-tabpanel-${index}`,\n    };\n  }\n\n  const handleTabChange = (event: React.SyntheticEvent, newValue: number) => {\n    setTabValue(newValue);\n  };\n\n  const getAds = useCallback(async () => {\n    setLoading(true);\n    const url = jobId ? `/api/v4/broadbean/jobs/${jobId}/job_ads` : '';\n    try {\n      const response = await fetch(url, {\n        method: 'GET',\n        headers: {\n          'Content-Type': 'application/json',\n          'X-api-authenticate': apiKey\n        }\n      }).then((response) => response.json());\n      setAds(response.ads)\n      setIframeUrl(response.new_broadbean_url);\n      setMessage(response.errors);\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setLoading(false);\n    }\n  }, [apiKey, jobId]);\n\n  useEffect(() => {\n    getAds();\n  }, [getAds]);\n\n  return (\n    <Box sx={classes.containerOuter}>\n      <Box sx={classes.container}>\n        <Box sx={classes.banner}>\n          <Box id=\"broadbean-logo\"></Box>\n        </Box>\n        <Box sx={classes.toggleButtonGroup}>\n          <Tabs\n            value={tabValue}\n            onChange={handleTabChange}\n            aria-label=\"Post, Manage\"\n          >\n            <Tab label=\"Post new Ad \" {...a11yProps(0)} />\n            <Tab label=\"Manage Ads\" {...a11yProps(1)} />\n          </Tabs>\n        </Box>\n        {loading && <TableSkeleton />}\n        <TabPanel tabValue={tabValue} index={0}>\n          { iframeUrl ?  \n            <iframe className=\"one-whole\" style={{borderRadius: '8px', height: '1200px'}} src= {iframeUrl}/>\n            : \n            <Alert severity=\"error\">{message.substring(message.indexOf('<Message>') + 9, message.indexOf('</Message>'))}</Alert>\n          }\n          \n        </TabPanel>\n        <TabPanel tabValue={tabValue} index={1}>\n          {ads && <AdTable jobAds={ads} setAds={setAds} apiKey={apiKey} />}\n        </TabPanel>\n      </Box>\n    </Box>\n  );\n}\n","import React, { useState } from 'react';\nimport moment from 'moment';\nimport GenericDialog from '../GenericDialog';\nimport Box from '@mui/material/Box';\nimport Tooltip from '@mui/material/Tooltip';\nimport Snackbar from '@mui/material/Snackbar';\nimport IconButton from '@mui/material/IconButton';\nimport EditIcon from '@mui/icons-material/Edit';\nimport VisibilityIcon from '@mui/icons-material/Visibility';\nimport FileCopyIcon from '@mui/icons-material/FileCopy';\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport { classes } from '../styles';\nimport { IJobAdBroadbeanProps } from '../types';\n\nconst BASE_URL = window.location.origin;\n\nexport default function AdTable({ jobAds, setAds, apiKey }: IJobAdBroadbeanProps) {\n  const timeZoneString = Intl.DateTimeFormat().resolvedOptions().timeZone;\n  const [dialogUrl, setDialogUrl] = useState('');\n  const [dialogTitle, setDialogTitle] = useState('');\n  const [dialogDescription, setDialogDescription] = useState('');\n  const [dialogButtonText, setDialogButtonText] = useState('');\n  const [dialogButtonCallback, setDialogButtonCallback] = useState(null);\n  const [dialogLoading, setDialogLoading] = useState(false);\n  const [dialogOpen, setDialogOpen] = useState(false);\n  const [isSnackOpen, setIsSnackOpen] = useState(false);\n  const [snackMessage, setSnackMessage] = useState('');\n\n  const handleClone = async (url: string) => {\n    window.location.href = url;\n  }\n\n  return (\n    <Box sx={classes.table}>\n      <Box sx={{ ...classes.row, ...classes.rowHeader }}>\n        <span>Job</span>\n        <span>Reference</span>\n        <span>Title</span>\n        <span>Approved?</span>\n        <span>Active on SEEK?</span>\n        <span>Active on Council Jobs?</span>\n        <span>Created</span>\n        <span>Created by</span>\n        <span>Expiry</span>\n        <span>Assigned user</span>\n        <Box component=\"span\" sx={classes.center}>\n          \n        </Box>\n      </Box>\n      {jobAds.length > 0 ? (\n        jobAds.map((ad) => {\n          const createdAt = ad.created_at\n            ? moment\n                .tz(ad.created_at, timeZoneString)\n                .format('DD MMM YYYY,-h:mma z')\n                .split('-')\n                .map((line) => <div key={`${ad.id}-${line}`}>{line}</div>)\n            : '-';\n          const council_jobs_ad_expiry_date = ad.council_jobs_ad_expiry_date\n            ? moment\n                .tz(ad.council_jobs_ad_expiry_date, timeZoneString)\n                .format('DD MMM YYYY,-h:mma z')\n                .split('-')\n                .map((line) => <div key={`${ad.id}-${line}`}>{line}</div>)\n            : 'No expiry';\n          return (\n            <Box key={ad.id} sx={classes.row}>\n              <Box sx={classes.title}>{ad.job_title}</Box>\n              <Box>{ad.reference}</Box>\n              <Box>{ad.title}</Box>\n              <Box sx={classes.center}>\n                {ad.approved ? (\n                  <CheckCircleIcon sx={classes.iconGreen} />\n                ) : (\n                  <CancelIcon sx={classes.iconRed} />\n                )}\n              </Box>\n              <Box sx={classes.center}>\n                {ad.active_on_seek ? (\n                  <CheckCircleIcon sx={classes.iconGreen} />\n                ) : (\n                  <CancelIcon sx={classes.iconRed} />\n                )}\n              </Box>\n              <Box sx={classes.center}>\n                {ad.active_on_council_jobs ? (\n                  <CheckCircleIcon sx={classes.iconGreen} />\n                ) : (\n                  <CancelIcon sx={classes.iconRed} />\n                )}\n              </Box>\n              <Box>{createdAt}</Box>\n              <Box>{ad.created_by}</Box>\n              <Box>{council_jobs_ad_expiry_date}</Box>\n              <Box>{ad.assigned_user || '-'}</Box>\n              <Box sx={classes.actionsContainer}>\n                <Tooltip title=\"Preview ad\">\n                  <IconButton\n                    onClick={() => {\n                      window.location.href = `${BASE_URL}${ad.preview_url}`;\n                    }}\n                  >\n                    <VisibilityIcon fontSize=\"small\" sx={classes.iconGrey} />\n                  </IconButton>\n                </Tooltip>\n                <Tooltip title=\"Edit\">\n                  <IconButton\n                    onClick={() => {\n                      window.location.href = `${BASE_URL}${ad.edit_url}`;\n                    }}\n                  >\n                    <EditIcon fontSize=\"small\" sx={classes.iconGrey} />\n                  </IconButton>\n                </Tooltip>\n                <Tooltip title=\"Clone\">\n                  <IconButton\n                    onClick={() => {\n                      setDialogUrl(`${BASE_URL}${ad.clone_url}`);\n                      setDialogTitle('Are you sure you want to clone this ad?');\n                      setDialogDescription(\n                        'You will have to repost for your ad to be active on CouncilJobs.'\n                      );\n                      setDialogButtonText('Clone ad');\n                      setDialogButtonCallback(() => handleClone);\n                      setDialogOpen(true);\n                    }}\n                  >\n                    <FileCopyIcon sx={classes.iconGrey} />\n                  </IconButton>\n                </Tooltip>\n              </Box>\n            </Box>\n          );\n        })\n      ) : (\n        <Box sx={classes.row}>\n          <Box sx={classes.title}>No ads to display</Box>\n        </Box>\n      )}\n      <GenericDialog\n        url={dialogUrl}\n        title={dialogTitle}\n        description={dialogDescription}\n        buttonText={dialogButtonText}\n        buttonCallback={dialogButtonCallback}\n        callbackLoading={dialogLoading}\n        isDialogOpen={dialogOpen}\n        setDialogOpen={setDialogOpen}\n      />\n      <Snackbar open={isSnackOpen} onClose={() => setIsSnackOpen(false)} message={snackMessage} />\n    </Box>\n  );\n}\n","import React from 'react';\n\nexport default function ApproveSVG() {\n  return (<svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path d=\"M5.37496 11.7503H9.27079C9.47149 11.7503 9.65754 11.7003 9.82896 11.6002C9.9999 11.4996 10.1208 11.3607 10.1916 11.1837L11.6791 7.71283C11.7027 7.6538 11.7204 7.59477 11.7323 7.53574C11.7441 7.47671 11.75 7.41769 11.75 7.35866V6.79199C11.75 6.5913 11.682 6.42295 11.546 6.28695C11.4104 6.15142 11.2423 6.08366 11.0416 6.08366H7.78329L8.20829 3.67533C8.2319 3.55727 8.226 3.44512 8.19059 3.33887C8.15517 3.23262 8.09614 3.13817 8.0135 3.05553L7.49996 2.54199L4.24163 6.08366C4.14718 6.1781 4.07635 6.28435 4.02913 6.40241C3.9819 6.52046 3.95829 6.65033 3.95829 6.79199V10.3337C3.95829 10.7232 4.09713 11.0569 4.37479 11.3345C4.65199 11.6117 4.98538 11.7503 5.37496 11.7503ZM7.49996 14.5837C6.5201 14.5837 5.59927 14.3976 4.73746 14.0255C3.87565 13.6539 3.126 13.1493 2.4885 12.5118C1.851 11.8743 1.34643 11.1246 0.974793 10.2628C0.602682 9.40102 0.416626 8.48019 0.416626 7.50033C0.416626 6.52046 0.602682 5.59963 0.974793 4.73783C1.34643 3.87602 1.851 3.12637 2.4885 2.48887C3.126 1.85137 3.87565 1.34656 4.73746 0.974451C5.59927 0.602812 6.5201 0.416992 7.49996 0.416992C8.47982 0.416992 9.40065 0.602812 10.2625 0.974451C11.1243 1.34656 11.8739 1.85137 12.5114 2.48887C13.1489 3.12637 13.6535 3.87602 14.0251 4.73783C14.3972 5.59963 14.5833 6.52046 14.5833 7.50033C14.5833 8.48019 14.3972 9.40102 14.0251 10.2628C13.6535 11.1246 13.1489 11.8743 12.5114 12.5118C11.8739 13.1493 11.1243 13.6539 10.2625 14.0255C9.40065 14.3976 8.47982 14.5837 7.49996 14.5837ZM7.49996 13.167C9.0819 13.167 10.4218 12.618 11.5198 11.5201C12.6177 10.4222 13.1666 9.08227 13.1666 7.50033C13.1666 5.91838 12.6177 4.57845 11.5198 3.48053C10.4218 2.38262 9.0819 1.83366 7.49996 1.83366C5.91802 1.83366 4.57808 2.38262 3.48017 3.48053C2.38225 4.57845 1.83329 5.91838 1.83329 7.50033C1.83329 9.08227 2.38225 10.4222 3.48017 11.5201C4.57808 12.618 5.91802 13.167 7.49996 13.167Z\" fill=\"#8CCF95\" />\n  </svg>\n  )\n}\n","import React, { useEffect, useState, useCallback, useRef } from 'react';\nimport { classes } from './NewCouncilJobsAd/styles';\nimport Box from '@mui/material/Box';\nimport Skeleton from '@mui/material/Skeleton';\nimport Tabs from '@mui/material/Tabs';\nimport Tab from '@mui/material/Tab';\nimport { ITabs, IJob } from '../../../Job/types';\nimport Stack from '@mui/material/Stack';\nimport IconButton from '@mui/material/IconButton';\nimport ArrowCircleLeftIcon from '@mui/icons-material/ArrowCircleLeft';\nimport moment from 'moment';\nimport Button from '@mui/material/Button';\nimport EditIcon from '@mui/icons-material/Edit';\nimport ApproveSVG from './ApproveSVG';\nimport dompurify from 'dompurify';\nimport StyledSnackbar from '../../CustomUIElements/StyledSnackbar';\nimport CircularProgress from '@mui/material/CircularProgress';\n\nconst BASE_URL = window.location.origin;\n\nexport default function CouncilJobsAd({\n  apiKey,\n  job,\n  jobAdId,\n}: {\n  apiKey: string;\n  job: IJob;\n  jobAdId: number;\n}) {\n  const [ad, setAd] = useState(null);\n  const [loading, setLoading] = useState(false);\n  const [approving, setApproving] = useState(false);\n  const [tabValue, setTabValue] = useState(0);\n  const [indicatorWidth, setIndicatorWidth] = useState(0);\n  const headerRefs = useRef<HTMLDivElement[]>([]);\n  const [snackbar, setSnackbar] = useState<{\n    message: string;\n    state: 'success' | 'warning' | 'error';\n  }>({\n    message: '',\n    state: 'success'\n  });\n\n  const TabPanel = useCallback((props: ITabs) => {\n    const { children, tabValue, index, ...other } = props;\n\n    return (\n      <div\n        role=\"tabpanel\"\n        hidden={tabValue !== index}\n        id={`ads-tabpanel-${index}`}\n        aria-labelledby={`jobs-tab-${index}`}\n        {...other}\n      >\n        {tabValue === index && <>{children}</>}\n      </div>\n    );\n  }, []);\n\n  const handleApprove = async (ad) => {\n    setApproving(true);\n    const url = `/api/v4/council_jobs/jobs/${job.id}/job_ads/${jobAdId}/approve`;\n    try {\n      const response = await fetch(url, {\n        method: 'POST',\n        headers: {\n          'Content-Type': 'application/json',\n          'X-api-authenticate': apiKey\n        }\n      }).then((response) => response.json());\n      if (response.success) {\n        setSnackbar({\n          message: response.success,\n          state: 'success'\n        });\n      } else {\n        setSnackbar({\n          message: response.errors,\n          state: 'error'\n        });\n      }\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setApproving(false);\n    }\n  };\n\n  const getAd = useCallback(async () => {\n    setLoading(true);\n    const url = `/api/v4/council_jobs/jobs/${job.id}/job_ads/${jobAdId}`;\n    try {\n      const response = await fetch(url, {\n        method: 'GET',\n        headers: {\n          'Content-Type': 'application/json',\n          'X-api-authenticate': apiKey\n        }\n      }).then((response) => response.json());\n      setAd(response);\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setLoading(false);\n    }\n  }, [apiKey, job]);\n\n  useEffect(() => {\n    getAd();\n  }, [getAd]);\n\n  useEffect(() => {\n    setIndicatorWidth(headerRefs.current[tabValue].clientWidth - 32);\n  }, [tabValue]);\n\n  return (\n    <Box sx={classes.adPageContainer}>\n      <Box sx={classes.adPageHeader}>\n        {loading ? (\n          <Skeleton animation=\"wave\" width={600} height={56} />\n        ) : (\n          <Box sx={{ color: '#666666' }}>\n            <h4 id=\"reference\">{ad?.reference}</h4>\n            <h1 id=\"title\">{ad?.title}</h1>\n          </Box>\n        )}\n      </Box>\n      <Box sx={classes.tabsContainer}>\n        <Tabs\n          value={tabValue}\n          aria-label=\"Council Jobs Ad Details Tab\"\n          sx={{\n            ...classes.tabs,\n            '& .MuiTabs-indicator': { ...classes.tabIndicator, maxWidth: indicatorWidth + 'px' }\n          }}\n        >\n          <Tab\n            disabled\n            ref={(el) => (el ? (headerRefs.current[0] = el) : null)}\n            label={'Job ad details'}\n          />\n          <TabPanel tabValue={tabValue} index={0}></TabPanel>\n        </Tabs>\n      </Box>\n      {loading ? (\n        <Skeleton animation=\"wave\" sx={{ marginLeft: '1rem', marginBottom: '20px' }} width={200} height={56} />\n      ) : (\n        <Box sx={classes.backToJobAdButton}>\n          <Stack\n            flexDirection=\"row\"\n            alignItems=\"center\"\n            onClick={() => {\n              window.location.href = `${BASE_URL}/admin/jobs/${job.id}/job_ads`;\n            }}\n          >\n            <IconButton sx={classes.iconGrey}>\n              <ArrowCircleLeftIcon />\n            </IconButton>\n            <Box>Back to multiposter</Box>\n          </Stack>\n        </Box>\n      )}\n      {loading ? (\n        <Skeleton animation=\"wave\" sx={{ marginLeft: '1rem' }} width={200} height={56} />\n      ) : (\n        <Box sx={classes.tabContent}>\n          <Box sx={classes.actionsContianer}>\n            <Button\n              variant=\"outlined\"\n              startIcon={<EditIcon />}\n              sx={classes.editButton}\n              onClick={() => {\n                window.location.href = `${BASE_URL}${ad?.edit_url}`;\n              }}\n            >\n              Edit\n            </Button>\n            <Button\n              variant=\"outlined\"\n              startIcon={approving ? <CircularProgress size={16} /> : <ApproveSVG />}\n              sx={classes.approveButton}\n              onClick={() => handleApprove(ad)}\n            >\n              Approve\n            </Button>\n          </Box>\n          <Box sx={{ ...classes.headerContent, marginBottom: '20px' }}>\n            Your full job ad\n          </Box>\n          <Box sx={classes.detailsTitle}>Job title</Box>\n          <Box sx={classes.details}>{ad?.title}</Box>\n          <Box sx={classes.detailsTitle}>Ad details</Box>\n          <Box\n            sx={classes.details}\n            dangerouslySetInnerHTML={{ __html: dompurify.sanitize(ad?.ad_details) }}\n          />\n          <Box id=\"counciljobs-logo\" sx={{ marginTop: '40px', width: '140px !important' }} />\n          <Box sx={classes.detailsTitle}>Employer name</Box>\n          <Box sx={classes.details}>{ad?.council_jobs_employer_name}</Box>\n          <Box sx={classes.detailsTitle}>Ad expiry date</Box>\n          <Box sx={classes.details}>{moment(ad?.council_jobs_ad_expiry_date).format('D MMM YYYY')}</Box>\n          <Box sx={classes.detailsTitle}>Categories</Box>\n          <Box sx={classes.details}>{ad?.council_jobs_categories_to_sentence || '-'}</Box>\n          <Box sx={classes.detailsTitle}>Job type</Box>\n          <Box sx={classes.details}>{ad?.job_type_to_sentence || '-'}</Box>\n          <Box sx={classes.detailsTitle}>Apply type</Box>\n          <Box sx={classes.details}>{ad?.council_jobs_apply_type}</Box>\n          <Box sx={classes.detailsTitle}>Apply value</Box>\n          <Box sx={classes.details}>{ad?.council_jobs_apply_value}</Box>\n          <Box sx={classes.detailsTitle}>Job posting options</Box>\n          <Box sx={classes.details}>{ad?.council_jobs_posting_options ? ad.council_jobs_posting_options.join(', ') : '-'}</Box>\n          <Box sx={{ ...classes.headerContent, marginTop: '40px' }}>\n            Other details\n          </Box>\n          <Box sx={classes.detailsTitle}>Created by</Box>\n          <Box sx={classes.details}>{ad?.created_by}</Box>\n          <Box sx={classes.detailsTitle}>Created at</Box>\n          <Box sx={classes.details}>{moment(ad?.created_at).format('D MMM YYYY HH:mm')}</Box>\n          <Box sx={classes.detailsTitle}>Updated by</Box>\n          <Box sx={classes.details}>{ad?.updated_by}</Box>\n          <Box sx={classes.detailsTitle}>Updated at</Box>\n          <Box sx={classes.details}>{moment(ad?.updated_at).format('D MMM YYYY HH:mm')}</Box>\n        </Box>\n      )}\n      <StyledSnackbar\n        message={snackbar.message}\n        state={snackbar.state}\n        setSnackbarState={setSnackbar}\n      />\n    </Box>\n  )\n}","import React, { useState, useEffect, useCallback, useRef } from 'react';\nimport Button from '@mui/material/Button';\nimport Box from '@mui/material/Box';\nimport TableSkeleton from '../TableSkeleton';\nimport AdTable from './AdTable';\nimport Grid from '@mui/material/Grid';\nimport { classes } from '../styles';\n\nconst BASE_URL = window.location.origin;\n\nexport default function CouncilJobsAds({\n  apiKey,\n  jobId\n}: {\n  apiKey: string;\n  jobId: string | null;\n}) {\n  const [ads, setAds] = useState(null);\n  const [message, setMessage] = useState('');\n  const [loading, setLoading] = useState(true);\n\n  const getAds = useCallback(async () => {\n    setLoading(true);\n    const url = jobId ? `/api/v4/council_jobs/jobs/${jobId}/job_ads?limit=100` : '';\n    try {\n      const response = await fetch(url, {\n        method: 'GET',\n        headers: {\n          'Content-Type': 'application/json',\n          'X-api-authenticate': apiKey\n        }\n      }).then((response) => response.json());\n      setAds(response.ads);\n      setMessage(response.errors);\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setLoading(false);\n    }\n  }, [apiKey, jobId]);\n\n  useEffect(() => {\n    getAds();\n  }, [getAds]);\n\n  return (\n    <Box sx={classes.containerOuter}>\n      <Box sx={classes.container}>\n        <Box sx={classes.banner}>\n          <Box id=\"counciljobs-logo\" sx={{ width: '140px !important' }}></Box>\n          {jobId && (\n            <Button\n              disableElevation\n              sx={{ ...classes.buttonSecondary, ...classes.newAdButton }}\n              id=\"CouncilJobsNewAdMultiposterBtn\"\n              onClick={() => {\n                window.location.href = `${BASE_URL}/admin/jobs/${jobId}/job_ads/new`;\n              }}\n            >\n              New Ad\n            </Button>\n          )}\n        </Box>\n        <Grid\n          container\n          sx={jobId ? { marginTop: '20px', marginBottom: '12px', overflow: 'auto' } : {}}\n        >\n          {loading ? (\n            <TableSkeleton />\n          ) : (\n            ads && <AdTable jobAds={ads} setAds={setAds} apiKey={apiKey} />\n          )}\n        </Grid>\n      </Box>\n    </Box>\n  );\n}\n","import React, { useEffect, useState, useCallback, useRef } from 'react';\nimport { classes } from './styles';\nimport Box from '@mui/material/Box';\nimport Skeleton from '@mui/material/Skeleton';\nimport Tabs from '@mui/material/Tabs';\nimport Tab from '@mui/material/Tab';\nimport { ITabs, IJob } from '../../../../Job/types';\nimport Stack from '@mui/material/Stack';\nimport IconButton from '@mui/material/IconButton';\nimport ArrowCircleLeftIcon from '@mui/icons-material/ArrowCircleLeft';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Checkbox from '@mui/material/Checkbox';\nimport { DebouncedFormTextField } from '../../../CustomUIElements/FormTextField';\nimport HtmlEditor from '../../../Utilities/HtmlEditor';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport TextField from '@mui/material/TextField';\nimport { sharedClasses } from '../../../CustomUIElements/sharedClasses';\nimport FormControl from '@mui/material/FormControl';\nimport InputLabel from '@mui/material/InputLabel';\nimport { SingleDatePicker } from '../../../CustomUIElements/SingleDatePicker';\nimport moment from 'moment';\nimport Button from '@mui/material/Button';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport StyledSnackbar from '../../../CustomUIElements/StyledSnackbar';\n\nconst BASE_URL = window.location.origin;\n\nconst handleInitialContent = (content: string) => {\n  if ((content || '').replace(/(<([^>]+)>)/gi, \"\") === '') {\n    const contentArray = (content || '').split('</div>');\n    if (contentArray.length > 1) {\n      contentArray[0] = contentArray[0] + '<p></p>';\n      return contentArray.join('</div>');\n    }\n  }\n  return content;\n};\n\nconst getDefaults = (options, defaults) => {\n  if (options?.length > 0 && defaults?.length > 0) {\n    const indexs = [];\n    defaults.map((option) => {\n      indexs.push(options[options.findIndex((value) => value?.id === option)]);\n    });\n    return indexs;\n  } else return defaults;\n};\n\nexport default function NewCouncilJobsAd({\n  apiKey,\n  job,\n  jobAdId,\n }: { \n  apiKey: string;\n  job: IJob;\n  jobAdId: number | null;\n}) {\n  const [ad, setAd] = useState(null);\n  const [adDetails, setAdDetails] = useState(handleInitialContent(ad?.ad_details))\n  const [message, setMessage] = useState('');\n  const [loading, setLoading] = useState(false);\n  const [isSaving, setIsSaving] = useState(false);\n  const [tabValue, setTabValue] = useState(0);\n  const [indicatorWidth, setIndicatorWidth] = useState(0);\n  const headerRefs = useRef<HTMLDivElement[]>([]);\n  const [snackbar, setSnackbar] = useState<{\n    message: string;\n    state: 'success' | 'warning' | 'error';\n  }>({\n    message: '',\n    state: 'success'\n  });\n\n  const fieldRefs = {\n    reference: useRef<HTMLInputElement>(null),\n    council_jobs_employer_name: useRef<HTMLInputElement>(null),\n    council_jobs_contact_email: useRef<HTMLInputElement>(null),\n    council_jobs_region: useRef<HTMLInputElement>(null),\n    council_jobs_state: useRef<HTMLInputElement>(null),\n    council_jobs_ad_expiry_date: useRef<HTMLInputElement>(null),\n    council_jobs_job_type: useRef<HTMLInputElement>(null),\n    council_jobs_apply_value: useRef<HTMLInputElement>(null),\n  };\n\n  const TabPanel = useCallback((props: ITabs) => {\n    const { children, tabValue, index, ...other } = props;\n\n    return (\n      <div\n        role=\"tabpanel\"\n        hidden={tabValue !== index}\n        id={`ads-tabpanel-${index}`}\n        aria-labelledby={`jobs-tab-${index}`}\n        {...other}\n      >\n        {tabValue === index && <>{children}</>}\n      </div>\n    );\n  }, []);\n\n  const getAd = useCallback(async () => {\n    setLoading(true);\n    let url = jobAdId ? `/api/v4/council_jobs/jobs/${job.id}/job_ads/${jobAdId}` : `/api/v4/council_jobs/jobs/${job.id}/job_ads/new`;\n    if(window.location.href.includes('clone')) {\n      const url_str = window.location.href;\n      const clone_id = url_str.substring(url_str.indexOf('job_ads') + 8, url_str.indexOf('clone') - 1);\n      url = `/api/v4/council_jobs/jobs/${job.id}/job_ads/${clone_id}/clone`;\n    } \n    const method = window.location.href.includes('clone') ? 'POST' : 'GET';\n    try {\n      const response = await fetch(url, {\n        method: method,\n        headers: {\n          'Content-Type': 'application/json',\n          'X-api-authenticate': apiKey\n        }\n      }).then((response) => response.json());\n      setAd(response);\n      setAdDetails(response.ad_details);\n      setMessage(response.errors);\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setLoading(false);\n    }\n  }, [apiKey, job]);\n\n  const handleSave = async (ad) => {\n    setIsSaving(true);\n    const attributes = {\n      send_to_council_jobs: ad.send_to_council_jobs ? '1' : '0',\n      title: ad.title,\n      ad_details: ad.ad_details,\n      council_jobs_employer_name: ad.council_jobs_employer_name,\n      council_jobs_contact_email: ad.council_jobs_contact_email,\n      council_jobs_region: ad.council_jobs_region,\n      council_jobs_state: ad.council_jobs_state,\n      council_jobs_ad_expiry_date: moment(ad.council_jobs_ad_expiry_date).format('DD/MM/YYYY'),\n      council_jobs_categories: ad.council_jobs_categories,\n      council_jobs_job_type: ad.council_jobs_job_type,\n      council_jobs_apply_type: ad.council_jobs_apply_type,\n      council_jobs_apply_value: ad.council_jobs_apply_value,\n      council_jobs_posting_options: ad.council_jobs_posting_options\n    }\n    const url = jobAdId ? `/api/v4/council_jobs/jobs/${job.id}/job_ads/${jobAdId}` : `/api/v4/council_jobs/jobs/${job.id}/job_ads`;\n    const method = jobAdId ? 'PUT' : 'POST';\n    try {\n      const response = await fetch(url, {\n        method: method,\n        headers: {\n          'Content-Type': 'application/json',\n          'X-api-authenticate': apiKey\n        },\n        body: JSON.stringify({\n          job_ad: attributes\n        }),\n      }).then((response) => response.json());\n      if(response.success) {\n        window.location.href = `${BASE_URL}${response?.preview_url}`;\n        setSnackbar({\n          message: response.success,\n          state: 'success'\n        });\n      } else {\n        setSnackbar({\n          message: response.error,\n          state: 'error'\n        });\n      }\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsSaving(false);\n    }\n  };\n\n  useEffect(() => {\n    getAd();\n  }, [getAd]);\n\n  useEffect(() => {\n    setIndicatorWidth(headerRefs.current[tabValue].clientWidth - 32);\n  }, [tabValue]);\n\n  return (\n    <Box sx={classes.adPageContainer}>\n      <Box sx={classes.adPageHeader}>\n        {loading ? (\n          <Skeleton animation=\"wave\" width={600} height={56} />\n        ) : (\n          <Box sx={{ color: '#666666' }}>\n            <h4 id=\"reference\">{ad?.reference}</h4>\n            <h1 id=\"title\">{ad?.title}</h1>\n          </Box>\n        )}\n      </Box>\n      <Box sx={classes.tabsContainer}>\n        <Tabs\n          value={tabValue}\n          aria-label=\"Council Jobs New Ad Tab\"\n          sx={{\n            ...classes.tabs,\n            '& .MuiTabs-indicator': { ...classes.tabIndicator, maxWidth: indicatorWidth + 'px' }\n          }}\n        >\n          <Tab\n            disabled\n            ref={(el) => (el ? (headerRefs.current[0] = el) : null)}\n            label={'Write job ad details'}\n          />\n          <TabPanel tabValue={tabValue} index={0}></TabPanel>\n        </Tabs>\n      </Box>\n      {loading ? (\n        <Skeleton animation=\"wave\" sx={{ marginLeft: '1rem', marginBottom: '20px' }} width={200} height={56} />\n      ) : (\n        <Box sx={classes.backToJobAdButton}>\n          <Stack\n            flexDirection=\"row\"\n            alignItems=\"center\"\n            onClick={() => {\n              window.location.href = `${BASE_URL}/admin/jobs/${job.id}/job_ads`;\n            }}\n          >\n            <IconButton sx={classes.iconGrey}>\n              <ArrowCircleLeftIcon />\n            </IconButton>\n            <Box>Back</Box>\n          </Stack>\n        </Box>\n      )}\n      {loading ? (\n        <Skeleton animation=\"wave\" sx={{ marginLeft: '1rem' }} width={200} height={56} />\n      ) : (\n        <Box sx={classes.tabContent}>\n          <Box sx={classes.headerContent}>\n            Select advertising service to export\n          </Box>\n          <FormControlLabel\n            control={\n              <Checkbox\n                sx={classes.checkbox}\n                onChange={(event, value) => {\n                  setAd((prev) => ({\n                    ...prev,\n                    send_to_council_jobs: value\n                  }));\n                }}\n                value={ad?.send_to_council_jobs}\n                defaultChecked={ad?.send_to_council_jobs}\n                name={''}\n              />\n            }\n            label={'Send to CouncilJobs'}\n            sx={classes.label}\n          />\n          <Box sx={{...classes.headerContent, marginBottom: '20px' }}>\n            Your full job ad\n          </Box>\n          <DebouncedFormTextField\n            onDebouncedChange={(value: string) => {\n              setAd((prev) => ({\n                ...prev,\n                title: value\n              }));\n            }}\n            id=\"title\"\n            label=\"Job title\"\n            defaultValue={ad?.title}\n            required={true}\n            innerRef={fieldRefs.reference}\n            styles={{ width: '500px' }}\n          />\n          <Box sx={classes.detailsTitle}>\n            Ad details\n          </Box>\n          <HtmlEditor\n            body={handleInitialContent(ad?.ad_details)}\n            onChange={setAdDetails}\n            onBlur={(value) => {\n              setAd((prev) => ({\n                ...prev,\n                ad_details: value\n              }))\n            }}\n          />\n          {ad?.send_to_council_jobs &&\n            <Box sx={classes.modalFormLine}>\n              <Box sx={classes.headerContent}>\n                Council Jobs\n              </Box>\n              <DebouncedFormTextField\n                onDebouncedChange={(value: string) => {\n                  setAd((prev) => ({\n                    ...prev,\n                    council_jobs_employer_name: value\n                  }));\n                }}\n                id=\"employer_name\"\n                label=\"Employer name\"\n                defaultValue={ad?.council_jobs_employer_name}\n                required={true}\n                innerRef={fieldRefs.council_jobs_employer_name}\n                styles={{ width: '500px' }}\n              />\n              <DebouncedFormTextField\n                onDebouncedChange={(value: string) => {\n                  setAd((prev) => ({\n                    ...prev,\n                    council_jobs_contact_email: value\n                  }));\n                }}\n                id=\"contact_email\"\n                label=\"Contact email\"\n                defaultValue={ad?.council_jobs_contact_email}\n                required={false}\n                innerRef={fieldRefs.council_jobs_contact_email}\n                styles={{ width: '500px' }}\n              />\n              <Autocomplete\n                disablePortal\n                options={ad?.region}\n                getOptionLabel={(option) => `${option?.label}`}\n                id=\"region\"\n                value={ad?.region.filter((r) => r.id === ad?.council_jobs_region)[0]}\n                onChange={(event, value) => {\n                  const id = value.id;\n                  setAd((prev) => ({\n                    ...prev,\n                    council_jobs_region: id\n                  }));\n                }}\n                sx={{ width: '500px', ...sharedClasses.formAutocomplete, marginTop: '26px'}}\n                ListboxProps={{\n                  style: {\n                    fontFamily: 'Source Sans Pro, sans-serif',\n                    color: '#333333',\n                    maxHeight: '200px'\n                  }\n                }}\n                renderInput={(params) => (\n                  <TextField\n                    {...params}\n                    label=\"Region\"\n                    required={true}\n                    InputLabelProps={{ shrink: true }}\n                    inputRef={fieldRefs.council_jobs_region}\n                  />\n                )}\n              />\n              <DebouncedFormTextField\n                onDebouncedChange={(value: string) => {\n                  setAd((prev) => ({\n                    ...prev,\n                    council_jobs_state: value\n                  }));\n                }}\n                id=\"state\"\n                label=\"State\"\n                defaultValue={ad?.council_jobs_state}\n                required={false}\n                innerRef={fieldRefs.council_jobs_state}\n                styles={{ width: '500px' }}\n              />\n                <FormControl variant=\"standard\">\n                  <InputLabel shrink htmlFor=\"text-input\" sx={sharedClasses.inputLabel}>\n                    Ad expiry date\n                  </InputLabel>\n                  <SingleDatePicker\n                    value={ad?.council_jobs_ad_expiry_date}\n                    inputStyles={classes.datePicker}\n                    onChange={(value) => {\n                      setAd((prev) => ({\n                        ...prev,\n                        council_jobs_ad_expiry_date: value\n                      }));\n                    }}\n                  />\n                </FormControl>\n              <Autocomplete\n                id=\"categories\"\n                multiple\n                options={ad?.categories_options}\n                getOptionLabel={(option) => `${option?.label}`}\n                value={getDefaults(ad?.categories_options, ad?.council_jobs_categories)}\n                sx={{\n                  ...classes.formAutocomplete,\n                  minWidth: '250px',\n                  width: '500px',\n                  marginTop: '24px'\n                }}\n                ListboxProps={{\n                  style: {\n                    fontFamily: 'Source Sans Pro, sans-serif',\n                    color: '#333333',\n                    maxHeight: '200px'\n                  }\n                }}\n                renderInput={(params) => (\n                  <TextField\n                    {...params}\n                    label=\"Categories\"\n                    required={true}\n                    InputLabelProps={{ shrink: true }}\n                  />\n                )}\n                onChange={(event, value) => {\n                  const ids = value.map((v) => v.id)\n                  setAd((prev) => ({\n                    ...prev,\n                    council_jobs_categories: ids\n                  }));\n                }}\n              />\n              <Autocomplete\n                disablePortal\n                options={ad?.job_type}\n                getOptionLabel={(option) => `${option?.label}`}\n                id=\"job_type\"\n                value={ad?.job_type.filter((t) => t.id.toString() === ad?.council_jobs_job_type)[0]}\n                onChange={(event, value) => {\n                  const id = value.id;\n                  setAd((prev) => ({\n                    ...prev,\n                    council_jobs_job_type: id\n                  }));\n                }}\n                sx={{ width: '500px', ...sharedClasses.formAutocomplete, marginTop: '26px'}}\n                ListboxProps={{\n                  style: {\n                    fontFamily: 'Source Sans Pro, sans-serif',\n                    color: '#333333',\n                    maxHeight: '200px'\n                  }\n                }}\n                renderInput={(params) => (\n                  <TextField\n                    {...params}\n                    label=\"Job type\"\n                    required={true}\n                    InputLabelProps={{ shrink: true }}\n                    inputRef={fieldRefs.council_jobs_job_type}\n                  />\n                )}\n              />\n              <Autocomplete\n                disablePortal\n                options={['Email', 'Website', 'Offline']}\n                id=\"job_type\"\n                value={ad?.council_jobs_apply_type}\n                onChange={(event, value) => {\n                  setAd((prev) => ({\n                    ...prev,\n                    council_jobs_apply_type: value\n                  }));\n                }}\n                sx={{ width: '500px', ...sharedClasses.formAutocomplete, marginTop: '26px'}}\n                ListboxProps={{\n                  style: {\n                    fontFamily: 'Source Sans Pro, sans-serif',\n                    color: '#333333',\n                    maxHeight: '200px'\n                  }\n                }}\n                renderInput={(params) => (\n                  <TextField\n                    {...params}\n                    label=\"Apply type\"\n                    required={true}\n                    InputLabelProps={{ shrink: true }}\n                    inputRef={fieldRefs.council_jobs_job_type}\n                  />\n                )}\n              />\n              <DebouncedFormTextField\n                onDebouncedChange={(value: string) => {\n                  setAd((prev) => ({\n                    ...prev,\n                    council_jobs_apply_value: value\n                  }));\n                }}\n                id=\"apply_value\"\n                label=\"Apply value\"\n                defaultValue={ad?.council_jobs_apply_value}\n                required={false}\n                innerRef={fieldRefs.council_jobs_apply_value}\n                styles={{ width: '500px' }}\n              />\n              <Autocomplete\n                id=\"posting_options\"\n                multiple\n                options={['Premium', 'Hot Job']}\n                value={ad?.council_jobs_posting_options}\n                sx={{\n                  ...classes.formAutocomplete,\n                  minWidth: '250px',\n                  width: '500px',\n                  marginTop: '24px'\n                }}\n                ListboxProps={{\n                  style: {\n                    fontFamily: 'Source Sans Pro, sans-serif',\n                    color: '#333333',\n                    maxHeight: '200px'\n                  }\n                }}\n                renderInput={(params) => (\n                  <TextField\n                    {...params}\n                    label=\"Job posting options\"\n                    required={false}\n                    InputLabelProps={{ shrink: true }}\n                  />\n                )}\n                onChange={(event, value) => {\n                  setAd((prev) => ({\n                    ...prev,\n                    council_jobs_posting_options: value\n                  }));\n                }}\n              />\n            </Box>\n          }\n          <Box sx={classes.modalFooter}>\n            <Button\n              id=\"close-new-field-button\"\n              sx={classes.modalCancelButton}\n              onClick={() => {\n                window.location.href = `${BASE_URL}/admin/jobs/${job.id}/job_ads`;\n              }}\n            >\n              Cancel\n            </Button>\n            <Button\n              id=\"save-council-jobs-ad-button\"\n              type=\"submit\"\n              sx={{ ...classes.modalCreateButton, width: '91px', height: '41px' }}\n              onClick={() => handleSave(ad)}\n            >\n              {isSaving ? <CircularProgress size={20} color=\"inherit\" /> : 'Save'}\n            </Button>\n          </Box>\n        </Box>\n      )}\n      <StyledSnackbar\n        message={snackbar.message}\n        state={snackbar.state}\n        setSnackbarState={setSnackbar}\n      />\n    </Box>\n  )\n}","import React, { useState, useEffect } from 'react';\nimport { classes } from './styles';\nimport Box from '@mui/material/Box';\nimport ArrowRightAltIcon from '@mui/icons-material/ArrowRightAlt';\nimport Dialog from '@mui/material/Dialog';\nimport Button from '@mui/material/Button';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport moment from 'moment-timezone';\nimport { IExpiryDialogProps } from './types';\nimport { SingleDateTimePicker } from '../CustomUIElements/SingleDatePicker';\n\nfunction ExpiryDialog({\n  isExpiryDialogOpen,\n  setExpiryDialogOpen,\n  ad,\n  apiKey,\n  handleSnack,\n  handleLocalExpiryChange\n}: IExpiryDialogProps) {\n  const [isLoading, setIsLoading] = useState(false);\n  const [newExpiryDate, setNewExpiryDate] = useState(moment());\n  const [calendarOpen, setCalendarOpen] = useState(false);\n  const timeZoneString = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\n  useEffect(() => {\n    setNewExpiryDate(moment(ad?.expired_at));\n  }, [setNewExpiryDate, ad]);\n\n  async function handleSave() {\n    setIsLoading(true);\n    try {\n      const response = await fetch(`/api/v4/seek/job_ads/${ad.id}`, {\n        method: 'PUT',\n        headers: {\n          'Content-Type': 'application/json',\n          'X-api-authenticate': apiKey\n        },\n        body: JSON.stringify({\n          title: ad.title,\n          description: ad.description,\n          date: newExpiryDate.format('YYYY-MM-DD')\n        })\n      });\n\n      const seekResponse = await fetch(`/api/v4/seek/job_ads/${ad.id}/ad_posting/update_expiry`, {\n        method: 'POST',\n        headers: { 'X-api-authenticate': apiKey }\n      });\n\n      if (response.status !== 200 && seekResponse.status !== 200) {\n        console.log({ response, seekResponse });\n        setExpiryDialogOpen(false);\n        handleSnack('Error updating expiry date');\n      } else {\n        handleLocalExpiryChange(moment(newExpiryDate).toDate(), ad.id);\n      }\n    } catch (error) {\n      console.error(error);\n      handleSnack('Error updating expiry date');\n    } finally {\n      setIsLoading(false);\n      setExpiryDialogOpen(false);\n    }\n  }\n\n  const calculateMinDate = (published: string) => {\n    const now = moment();\n    const publishedDate = moment(published).add(1, 'day');\n    const diff = now.diff(publishedDate, 'days');\n    if (diff > 0) {\n      return now;\n    } else {\n      return publishedDate;\n    }\n  };\n\n  return (\n    <Dialog\n      open={isExpiryDialogOpen}\n      onClose={() => setExpiryDialogOpen(false)}\n      sx={{ '& .MuiPaper-root': classes.dialog }}\n    >\n      <h4>Ad expiry date</h4>\n      <Box sx={classes.expiryMessage}>\n        Choose a new expiry date to shorten the duration of your job ad\n      </Box>\n      <Box sx={classes.expiryDateMessage}>\n        Your ad will run until 11:59PM {moment().tz(timeZoneString).format('zz')}\n      </Box>\n      {ad?.created_at && ad?.advertisement_published_at && ad?.expired_at && (\n        <>\n          <SingleDateTimePicker\n            open={calendarOpen}\n            onOpen={() => setCalendarOpen(true)}\n            onClose={() => setCalendarOpen(false)}\n            disableMaskedInput\n            value={newExpiryDate}\n            minDate={calculateMinDate(ad.advertisement_published_at)}\n            maxDate={moment(ad.advertisement_published_at).add(29, 'days')}\n            onChange={setNewExpiryDate}\n          />\n\n          <Box sx={classes.expiryPostPickerMessage}>\n            And be live for <span>{moment(newExpiryDate).diff(moment(), 'days')} days</span>\n          </Box>\n          <Box sx={classes.expiryChangePreview}>\n            <Box sx={classes.expiryDateContainer}>\n              <Box sx={classes.expiryTitle}>Expiry (current)</Box>\n              <Box sx={classes.expiryDate}>{moment(ad.expired_at).format('DD MMM YYYY')}</Box>\n            </Box>\n            <ArrowRightAltIcon sx={{ margin: '14px' }} />\n            <Box sx={classes.expiryDateContainer}>\n              <Box sx={classes.expiryTitle}>Expiry (new)</Box>\n              <Box sx={classes.expiryDate}>{moment(newExpiryDate).format('DD MMM YYYY')}</Box>\n            </Box>\n          </Box>\n        </>\n      )}\n      <Box sx={{ ...classes.dialogButtonContainer, marginTop: '30px', marginBottom: '10px' }}>\n        <Button disableElevation sx={classes.buttonDateConfirm} onClick={handleSave}>\n          {isLoading ? <CircularProgress size={20} color=\"inherit\" /> : 'Confirm'}\n        </Button>\n      </Box>\n    </Dialog>\n  );\n}\n\nexport default ExpiryDialog;\n","import React from 'react';\nimport Popover from '@mui/material/Popover';\nimport { IExpiryPopoverProps } from './types';\nimport { classes } from './styles';\n\nexport default function ExpiryPopover({\n  immediateExpiryOnClick,\n  dateExpiryOnClick,\n  expiryActionsAnchorEl,\n  setExpiryActionsAnchorEl,\n  ad\n}: IExpiryPopoverProps) {\n  return (\n    <Popover\n      id=\"actions-menu-popover\"\n      sx={classes.actionsMenu}\n      open={Boolean(expiryActionsAnchorEl)}\n      anchorEl={expiryActionsAnchorEl}\n      onClose={() => {\n        setExpiryActionsAnchorEl(null);\n      }}\n      anchorOrigin={{\n        vertical: 'bottom',\n        horizontal: 'right'\n      }}\n      transformOrigin={{\n        vertical: 'top',\n        horizontal: 'right'\n      }}\n    >\n      <span onClick={() => immediateExpiryOnClick(ad)} className=\"expire-now-seek-button\">Expire now</span>\n      <span onClick={dateExpiryOnClick} className=\"choose-expiry-seek-button\">Choose expiry date</span>\n    </Popover>\n  );\n}\n","import React from 'react';\nimport { Button } from '@mui/material';\nimport SortIcon from '@mui/icons-material/Sort';\n\ninterface FilterButtonProps {\n  selectedAdType: string;\n  setFilterAnchorEl: (el: HTMLElement | null) => void;\n  classes: any;\n}\n\nconst FilterButton: React.FC<FilterButtonProps> = ({\n  selectedAdType,\n  setFilterAnchorEl,\n  classes\n}) => {\n  return (\n    <Button\n      sx={classes.filterButton}\n      startIcon={<SortIcon sx={{ marginRight: '8px' }} />}\n      onClick={(e) => setFilterAnchorEl(e.currentTarget)}\n    >\n      {selectedAdType + ' Ads'}\n    </Button>\n  );\n};\n\nexport default FilterButton;\n","import React from 'react';\nimport { classes } from './styles';\nimport Box from '@mui/material/Box';\nimport Dialog from '@mui/material/Dialog';\nimport Button from '@mui/material/Button';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { IGenericDialogProps } from './types';\n\nfunction GenericDialog({\n  url,\n  title,\n  description,\n  buttonText,\n  buttonCallback,\n  callbackLoading,\n  isDialogOpen,\n  setDialogOpen,\n  dialogAdID\n}: IGenericDialogProps) {\n  return (\n    <Dialog\n      open={isDialogOpen}\n      onClose={() => setDialogOpen(false)}\n      sx={{ '& .MuiPaper-root': classes.dialog }}\n    >\n      <h4>{title}</h4>\n      {description && <span>{description}</span>}\n      <Box sx={classes.dialogButtonContainer}>\n        <Button\n          disableElevation\n          sx={classes.buttonSecondaryLight}\n          onClick={() => setDialogOpen(false)}\n          style={{ padding: '10px 30px' }}\n        >\n          Cancel\n        </Button>\n        <Button\n          disableElevation\n          sx={buttonText === 'Clone ad' ? classes.buttonSecondary : classes.buttonRed}\n          onClick={() => (dialogAdID ? buttonCallback(url, dialogAdID) : buttonCallback(url))}\n          style={{ padding: '10px 30px' }}\n        >\n          {callbackLoading ? <CircularProgress size={20} color=\"inherit\" /> : buttonText}\n        </Button>\n      </Box>\n    </Dialog>\n  );\n}\n\nexport default GenericDialog;\n","import React, { useState, useEffect, useCallback } from 'react';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport TableSkeleton from '../TableSkeleton';\nimport { classes } from '../styles';\n\nexport default function IdibuAds({ apiKey, jobId }: { apiKey: string; jobId: string | null }) {\n  const [newUrl, setNewUrl] = useState(null);\n  const [iframeUrl, setIframeUrl] = useState(null);\n  const [loading, setLoading] = useState(true);\n\n  const getAds = useCallback(async () => {\n    setLoading(true);\n    const url = jobId ? `/api/v4/idibu_ad/job_ads/${jobId}` : '';\n    try {\n      const response = await fetch(url, {\n        method: 'GET',\n        headers: {\n          'Content-Type': 'application/json',\n          'X-api-authenticate': apiKey\n        }\n      }).then((response) => response.json());\n      setNewUrl(response.new_ad_url);\n      setIframeUrl(response.iframe_url);\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setLoading(false);\n    }\n  }, [apiKey, jobId]);\n\n  const createNewJob = () => {\n    window.open(newUrl, '_blank', 'noopener,noreferrer');\n  };\n\n  useEffect(() => {\n    getAds();\n  }, [getAds]);\n\n  return (\n    <Box sx={classes.containerOuter}>\n      <Box sx={classes.container}>\n        <Box sx={classes.banner}>\n          <Box id=\"idibu-logo\"></Box>\n          {jobId && (\n            <Button\n              disableElevation\n              sx={{ ...classes.buttonSecondary, ...classes.newAdButton }}\n              id=\"IdibuNewAdMultiposterBtn\"\n              onClick={createNewJob}\n            >\n              New Ad\n            </Button>\n          )}\n        </Box>\n        {loading && <TableSkeleton />}\n        <iframe className=\"one-whole\" style={{background: '#FFF', borderRadius: '8px', marginTop: '20px'}} src= {iframeUrl}/>\n      </Box>\n    </Box>\n  );\n}\n","import React, { useState, useRef } from 'react';\nimport moment from 'moment';\nimport axios from 'axios';\nimport GenericDialog from '../GenericDialog';\nimport { classes } from '../styles';\nimport { IJobAdIndeedProps, IJobAdIndeed } from '../types';\nimport { Box, Snackbar } from '@mui/material';\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport KeyboardArrowLeftIcon from '@mui/icons-material/KeyboardArrowLeft';\nimport KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight';\nimport ActionButton from '../ActionButton';\nimport ActionPopover from '../ActionPopover';\n\nexport default function AdTable({ ads, jobAds, setAds, adsStatus, apiKey }: IJobAdIndeedProps) {\n  const [dialogUrl, setDialogUrl] = useState('');\n  const [dialogAdID, setDialogAdID] = useState(0);\n  const [dialogTitle, setDialogTitle] = useState('');\n  const [dialogDescription, setDialogDescription] = useState('');\n  const [dialogButtonText, setDialogButtonText] = useState('');\n  const [dialogButtonCallback, setDialogButtonCallback] = useState(null);\n  const [dialogLoading, setDialogLoading] = useState(false);\n  const [dialogOpen, setDialogOpen] = useState(false);\n  const [isSnackOpen, setIsSnackOpen] = useState(false);\n  const [snackMessage, setSnackMessage] = useState('');\n  const [actionsAnchorEl, setActionsAnchorEl] = useState(null);\n  const [selectedAd, setSelectedAd] = useState<IJobAdIndeed | null>(null);\n  const [tableHovered, setTableHovered] = useState(false);\n  const actionCellRef = useRef(null);\n  const jobCellRef = useRef(null);\n  const [canScroll, setCanScroll] = useState([false, true]);\n  const tableRef = useRef<HTMLDivElement>(null);\n\n  function handleSnack(message: string) {\n    setIsSnackOpen(true);\n    setSnackMessage(message);\n  }\n\n  async function handleArchive(url: string, id: number) {\n    setDialogLoading(true);\n    try {\n      const { data } = await axios.put(`${url}`, {\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      });\n      const newAds = Object.assign(jobAds);\n      const index = newAds[adsStatus].findIndex((ad: IJobAdIndeed) => ad.id === id);\n      const copyJob = newAds[adsStatus][index];\n      newAds.archived && newAds.archived.push(copyJob);\n      newAds[adsStatus].splice(index, 1);\n      setAds({ ...newAds });\n      handleSnack(`${data.title} has been archived`);\n    } catch (e) {\n      console.log(e);\n      handleSnack('Could not archive ad');\n    } finally {\n      setDialogLoading(false);\n      setDialogUrl(null);\n      setDialogOpen(false);\n    }\n  }\n\n  async function handleCopy(url: string) {\n    setDialogLoading(true);\n    try {\n      const { data } = await axios.get(`${url}?operation=clone`);\n      window.location.href = data.url;\n    } catch (e) {\n      console.log(e);\n      handleSnack('Could not clone ad');\n    } finally {\n      setDialogLoading(false);\n      setDialogUrl(null);\n      setDialogOpen(false);\n    }\n  }\n\n  async function handleDelete(url: string, id: number) {\n    setDialogLoading(true);\n    try {\n      const { data } = await axios.delete(`${url}`, {\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      });\n      const newAds = Object.assign(jobAds);\n      newAds[adsStatus] = newAds[adsStatus].filter((ad: IJobAdIndeed) => ad.id !== id);\n      setAds({ ...newAds });\n      handleSnack(`${data.title} has been deleted`);\n    } catch (e) {\n      console.log(e);\n      handleSnack('Could not delete ad');\n    } finally {\n      setDialogLoading(false);\n      setDialogUrl(null);\n      setDialogOpen(false);\n    }\n  }\n\n  function isScrollable(element: HTMLElement) {\n    return element && element.scrollWidth > element.clientWidth + 20;\n  }\n\n  const handleScrollableEnter = () => {\n    if (isScrollable(tableRef.current) && ads.length > 0) setTableHovered(true);\n  };\n\n  const handleScrollableExit = () => {\n    setTableHovered(false);\n  };\n\n  const handleScroll = () => {\n    if (tableRef.current.scrollLeft < 10) {\n      setCanScroll([false, true]);\n    } else if (\n      tableRef.current.scrollLeft >\n      tableRef.current.scrollWidth - tableRef.current.clientWidth - 10\n    ) {\n      setCanScroll([true, false]);\n    } else {\n      setCanScroll([true, true]);\n    }\n  };\n\n  const handleScrollLeft = () => {\n    tableRef.current.scrollLeft > 360\n      ? (tableRef.current.scrollLeft -= 300)\n      : (tableRef.current.scrollLeft = 0);\n  };\n\n  const handleScrollRight = () => {\n    tableRef.current.scrollWidth - tableRef.current.clientWidth > 360\n      ? (tableRef.current.scrollLeft += 300)\n      : (tableRef.current.scrollLeft = tableRef.current.scrollWidth - tableRef.current.clientWidth);\n  };\n\n  return (\n    <Box>\n      <Box sx={{ position: 'relative' }}>\n        <Box sx={classes.arrowsContainer}>\n          <Box\n            onClick={handleScrollLeft}\n            onMouseEnter={handleScrollableEnter}\n            sx={{\n              ...classes.leftArrow,\n              ...(tableHovered && canScroll[0] && classes.showArrows),\n              left: `${jobCellRef.current?.getBoundingClientRect().right}px`,\n              top: 0\n            }}\n            id=\"left-arrow\"\n          >\n            <KeyboardArrowLeftIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n          </Box>\n        </Box>\n        <Box sx={classes.arrowsContainer}>\n          <Box\n            onMouseEnter={handleScrollableEnter}\n            onClick={handleScrollRight}\n            sx={{\n              ...classes.rightArrow,\n              ...(tableHovered && canScroll[1] && classes.showArrows),\n              left: `${actionCellRef.current?.getBoundingClientRect().left - 40}px`,\n              top: 0\n            }}\n            id=\"right-arrow\"\n          >\n            <KeyboardArrowRightIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n          </Box>\n        </Box>\n        <Box\n          sx={classes.tableContainer}\n          onMouseEnter={handleScrollableEnter}\n          onMouseLeave={handleScrollableExit}\n          ref={tableRef}\n          onScroll={handleScroll}\n        >\n          <Box sx={classes.table}>\n            <Box sx={{ ...classes.row, ...classes.rowHeader }}>\n              <Box\n                component=\"span\"\n                ref={jobCellRef}\n                sx={{\n                  ...classes.title,\n                  minWidth: '182px',\n                  ...classes.sticky,\n                  ...classes.scrollShadowLeft,\n                  ...(tableHovered && classes.scrollShadowVisible),\n                  left: 0\n                }}\n              >\n                Job\n              </Box>\n              <Box component=\"span\" sx={{ minWidth: '120px' }}>\n                Creation Date\n              </Box>\n              <Box component=\"span\" sx={{ minWidth: '120px' }}>\n                Created By\n              </Box>\n              <Box component=\"span\" sx={{ minWidth: '120px' }}>\n                Expiry\n              </Box>\n              <Box component=\"span\" sx={{ ...classes.center, minWidth: '130px' }}>\n                Active on Indeed\n              </Box>\n              <Box component=\"span\" sx={{ ...classes.center, minWidth: '130px' }}>\n                Sponsored\n              </Box>\n              <Box\n                component=\"span\"\n                sx={{\n                  ...classes.stickyRight,\n                  ...classes.scrollShadowRight,\n                  ...(tableHovered && classes.scrollShadowVisible)\n                }}\n                ref={actionCellRef}\n              ></Box>\n            </Box>\n            {ads && ads.length > 0 ? (\n              ads.map((ad: IJobAdIndeed) => (\n                <Box key={ad.id} sx={classes.row}>\n                  <Box\n                    sx={{\n                      ...classes.title,\n                      minWidth: '182px',\n                      ...classes.sticky,\n                      ...classes.scrollShadowLeft,\n                      ...(tableHovered && classes.scrollShadowVisible)\n                    }}\n                  >\n                    {ad.title}\n                  </Box>\n                  <Box>{moment(ad.created_at).format('D MMM YYYY')}</Box>\n                  <Box>{ad.created_by.name}</Box>\n                  <Box>{ad.expiry ? moment(ad.expiry).format('D MMM YYYY') : 'No expiry'}</Box>\n                  <Box sx={classes.center}>\n                    {ad.status === 'open' ? (\n                      <CheckCircleIcon sx={classes.iconGreen} />\n                    ) : (\n                      <CancelIcon sx={classes.iconRed} />\n                    )}\n                  </Box>\n                  <Box sx={classes.center}>\n                    {ad.sponsored ? (\n                      <CheckCircleIcon sx={classes.iconGreen} />\n                    ) : (\n                      <Box\n                        onClick={() =>\n                          (window.location.href = `/admin/indeed/job_ads/${ad.id}/sponsored_job/edit/`)\n                        }\n                        sx={classes.sponsorText}\n                      >\n                        Sponsor Ad\n                      </Box>\n                    )}\n                  </Box>\n                  <ActionButton\n                    ad={ad}\n                    jobAds={jobAds}\n                    setAds={setAds}\n                    adsStatus={adsStatus}\n                    tableHovered={tableHovered}\n                    apiKey={apiKey}\n                    classes={classes}\n                    adType={'indeed'}\n                    setDialogLoading={setDialogLoading}\n                    setDialogUrl={setDialogUrl}\n                    setDialogOpen={setDialogOpen}\n                    setActionsAnchorEl={setActionsAnchorEl}\n                    setDialogAdID={setDialogAdID}\n                    setDialogTitle={setDialogTitle}\n                    setDialogDescription={setDialogDescription}\n                    setDialogButtonText={setDialogButtonText}\n                    setDialogButtonCallback={setDialogButtonCallback}\n                    setSelectedAd={setSelectedAd}\n                    handleSnack={handleSnack}\n                    handleCopy={handleCopy}\n                    handleArchive={handleArchive}\n                  />\n                </Box>\n              ))\n            ) : (\n              <Box sx={classes.row}>\n                <Box sx={classes.title}>No ads to display</Box>\n              </Box>\n            )}\n          </Box>\n        </Box>\n      </Box>\n      <ActionPopover\n        anchorEl={actionsAnchorEl}\n        onClose={() => {\n          setActionsAnchorEl(null);\n          setTimeout(() => {\n            setSelectedAd(null);\n          }, 300);\n        }}\n        handleCopy={handleCopy}\n        handleArchive={handleArchive}\n        handleDelete={handleDelete}\n        selectedAd={selectedAd}\n        classes={classes}\n        adType={'indeed'}\n        setDialogUrl={setDialogUrl}\n        setDialogTitle={setDialogTitle}\n        setDialogDescription={setDialogDescription}\n        setDialogButtonText={setDialogButtonText}\n        setDialogButtonCallback={setDialogButtonCallback}\n        setDialogOpen={setDialogOpen}\n        setDialogAdID={setDialogAdID}\n      />\n      <GenericDialog\n        url={dialogUrl}\n        title={dialogTitle}\n        description={dialogDescription}\n        buttonText={dialogButtonText}\n        buttonCallback={dialogButtonCallback}\n        callbackLoading={dialogLoading}\n        isDialogOpen={dialogOpen}\n        setDialogOpen={setDialogOpen}\n        dialogAdID={dialogAdID}\n      />\n      <Snackbar open={isSnackOpen} onClose={() => setIsSnackOpen(false)} message={snackMessage} />\n    </Box>\n  );\n}\n","import React, { useState, useEffect, useCallback } from 'react';\nimport {\n  Box,\n  Button,\n  CircularProgress,\n  Pagination,\n  MenuItem,\n  FormControl,\n  Select\n} from '@mui/material';\nimport TableSkeleton from '../TableSkeleton';\nimport GenericDialog from '../GenericDialog';\nimport AdTable from './AdTable';\nimport { classes } from '../styles';\nimport { IJobAdIndeed } from '../types';\nimport FilterButton from '../FilterButton';\nimport AdTypePopover from '../AdTypePopover';\n\nexport default function IndeedAds({ apiKey, jobId }: { apiKey: string; jobId: string | null }) {\n  const [ads, setAds] = useState(null);\n  const [page, setPage] = useState(1);\n  const [maxAds, setMaxAds] = useState(0);\n  const [maxPages, setMaxPages] = useState(0);\n  const [rowsPerPage, setRowsPerPage] = useState(10);\n  const [selectedAdType, setSelectedAdType] = useState('active');\n  const [loading, setLoading] = useState(true);\n  const [loadingCreate, setLoadingCreate] = useState(false);\n  const [filterAnchorEl, setFilterAnchorEl] = useState<HTMLElement | null>(null);\n  const [errorModalOpen, setErrorModalOpen] = useState(false);\n\n  const getInitialAds = useCallback(async () => {\n    setLoading(true);\n    const url = jobId\n      ? `/api/v4/indeed/jobs/${jobId}/job_ads?limit=100`\n      : '/api/v4/indeed/job_ads/active';\n    try {\n      const response = await fetch(url, {\n        method: 'GET',\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      }).then(async (response) => {\n        if (response.ok) {\n          return {\n            data: await response.json(),\n            maxAds: Number(response.headers.get('X-Total-Count')),\n            maxPages: Number(response.headers.get('X-Total-Pages'))\n          };\n        }\n        return response.json().then((error) => {\n          error.code = response.status;\n          throw error;\n        });\n      });\n      if (jobId !== null) {\n        setAds(response.data.job_ads);\n      } else {\n        setAds(response.data);\n        setMaxAds(response.maxAds);\n        setMaxPages(response.maxPages);\n      }\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setLoading(false);\n    }\n  }, [apiKey, jobId]);\n\n  const getAds = async (currentType: string, currentPage: number, currentRows: number) => {\n    if (jobId !== null) return;\n    setLoading(true);\n    const url = `/api/v4/indeed/job_ads/${currentType}?page=${currentPage}&limit=${currentRows}`;\n    try {\n      const response = await fetch(url, {\n        method: 'GET',\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      }).then(async (response) => {\n        if (response.ok) {\n          return {\n            data: await response.json(),\n            maxAds: Number(response.headers.get('X-Total-Count')),\n            maxPages: Number(response.headers.get('X-Total-Pages'))\n          };\n        }\n        return response.json().then((error) => {\n          error.code = response.status;\n          throw error;\n        });\n      });\n      setAds(response.data);\n      setMaxAds(response.maxAds);\n      setMaxPages(response.maxPages);\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setLoading(false);\n    }\n  };\n\n  const createNewJob = useCallback(async () => {\n    setLoadingCreate(true);\n    try {\n      const response = await fetch(`/api/v4/indeed/jobs/${jobId}/job_ads/init_indeed_ad`, {\n        method: 'POST',\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      });\n      if (!response.ok) {\n        setErrorModalOpen(true);\n      } else {\n        const data = await response.json();\n        window.location.href = data.url;\n      }\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setLoadingCreate(false);\n    }\n  }, [apiKey, jobId]);\n\n  const handleAdTypeChange = (adType: string) => {\n    setFilterAnchorEl(null);\n    if (adType === selectedAdType) return;\n    setSelectedAdType(adType);\n    setPage(1);\n    getAds(adType, 1, rowsPerPage);\n  };\n\n  const handlePageChange = (event: React.ChangeEvent, newPage: number) => {\n    if (newPage === page) return;\n    setPage(newPage);\n    getAds(selectedAdType, newPage, rowsPerPage);\n  };\n\n  const handleRowsPerPageChange = (selection: number) => {\n    if (selection === rowsPerPage) return;\n    setRowsPerPage(selection);\n    getAds(selectedAdType, page, selection);\n  };\n\n  useEffect(() => {\n    getInitialAds();\n  }, [getInitialAds]);\n\n  return (\n    <Box sx={classes.containerOuter}>\n      <Box sx={classes.container}>\n        <Box sx={classes.banner}>\n          <FilterButton\n            selectedAdType={selectedAdType}\n            setFilterAnchorEl={setFilterAnchorEl}\n            classes={classes}\n          />\n          {jobId && (\n            <Button\n              disableElevation\n              sx={{ ...classes.buttonSecondary, ...classes.newAdButton }}\n              id=\"IndeedNewAdMultiposterBtn\"\n              onClick={createNewJob}\n            >\n              {loadingCreate ? <CircularProgress size={20} color=\"inherit\" /> : 'New Ad'}\n            </Button>\n          )}\n        </Box>\n        {loading ? (\n          <TableSkeleton />\n        ) : (\n          <AdTable\n            jobAds={ads}\n            ads={ads[selectedAdType as keyof IJobAdIndeed]}\n            setAds={setAds}\n            adsStatus={selectedAdType}\n            isSingleJob={jobId !== null}\n            apiKey={apiKey}\n          />\n        )}\n        {!jobId && (\n          <Box sx={classes.paginationParent}>\n            <Box sx={classes.rowSelectContainer}>\n              <span>Rows per page: </span>\n              <FormControl>\n                <Select\n                  id=\"rows-per-page\"\n                  sx={classes.rowSelect}\n                  value={rowsPerPage}\n                  onChange={(e) => handleRowsPerPageChange(Number(e.target.value))}\n                  displayEmpty\n                  MenuProps={{ sx: classes.paginationMenuItems }}\n                >\n                  <MenuItem id=\"first-rpp-item\" value={10}>\n                    10\n                  </MenuItem>\n                  <MenuItem id=\"second-rpp-item\" value={20}>\n                    20\n                  </MenuItem>\n                  <MenuItem value={30}>30</MenuItem>\n                  <MenuItem value={40}>40</MenuItem>\n                  <MenuItem value={50}>50</MenuItem>\n                </Select>\n              </FormControl>\n            </Box>\n            <Box sx={classes.paginationContainer}>\n              <Pagination\n                id=\"pagination-menu\"\n                count={maxPages}\n                page={page}\n                defaultPage={Math.ceil(maxPages / 2)}\n                siblingCount={0}\n                onChange={handlePageChange}\n                sx={classes.pagination}\n              />\n              <span id=\"total-jobs\">{maxAds} Total</span>\n            </Box>\n          </Box>\n        )}\n      </Box>\n      <AdTypePopover\n        filterAnchorEl={filterAnchorEl}\n        setFilterAnchorEl={setFilterAnchorEl}\n        selectedAdType={selectedAdType}\n        handleAdTypeChange={handleAdTypeChange}\n        classes={classes}\n        adType=\"indeed\"\n      />\n      <GenericDialog\n        url=\"\"\n        callbackLoading={false}\n        dialogAdID={0}\n        setDialogOpen={setErrorModalOpen}\n        isDialogOpen={errorModalOpen}\n        buttonCallback={() => setErrorModalOpen(false)}\n        title=\"Unable to create ad\"\n        description=\"Ads can only be created on jobs with a published state\"\n        buttonText=\"Ok\"\n      />\n    </Box>\n  );\n}\n","import React, { useState, useRef } from 'react';\nimport moment from 'moment';\nimport axios from 'axios';\nimport { classes } from '../styles';\nimport { IAdTableProps, IJobAd } from '../types';\nimport GenericDialog from '../GenericDialog';\nimport ExpiryDialog from '../ExpiryDialog';\nimport ExpiryPopover from '../ExpiryPopover';\nimport { Box, Button, IconButton, Snackbar, Tooltip, Popover } from '@mui/material';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport KeyboardArrowLeftIcon from '@mui/icons-material/KeyboardArrowLeft';\nimport KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight';\nimport EditIcon from '@mui/icons-material/Edit';\nimport ArchiveIcon from '@mui/icons-material/Archive';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport CopyAdIdButton from './CopyAdIdButton';\n\nfunction AdTable({ jobAds, ads, setAds, adsStatus, apiKey, adminUser }: IAdTableProps) {\n  const [dialogUrl, setDialogUrl] = useState('');\n  const [dialogAdID, setDialogAdID] = useState(0);\n  const [dialogTitle, setDialogTitle] = useState('');\n  const [dialogDescription, setDialogDescription] = useState('');\n  const [dialogButtonText, setDialogButtonText] = useState('');\n  const [dialogButtonCallback, setDialogButtonCallback] = useState(null);\n  const [dialogLoading, setDialogLoading] = useState(false);\n  const [dialogOpen, setDialogOpen] = useState(false);\n  const [expiryDialogOpen, setExpiryDialogOpen] = useState(false);\n  const [expiryActionsAnchorEl, setExpiryActionsAnchorEl] = useState(null);\n  const [actionsAnchorEl, setActionsAnchorEl] = useState(null);\n  const [selectedAd, setSelectedAd] = useState<IJobAd | null>(null);\n  const [isSnackOpen, setIsSnackOpen] = useState(false);\n  const [snackMessage, setSnackMessage] = useState('');\n  const [tableHovered, setTableHovered] = useState(false);\n  const actionCellRef = useRef(null);\n  const jobCellRef = useRef(null);\n  const [canScroll, setCanScroll] = useState([false, true]);\n  const tableRef = useRef<HTMLDivElement>(null);\n\n  function handleSnack(message: string) {\n    setIsSnackOpen(true);\n    setSnackMessage(message);\n  }\n\n  function handleButtonStyle(ad: IJobAd) {\n    if (adsStatus === 'active') {\n      return {\n        text: (\n          <>\n            Expire Ad <KeyboardArrowDownIcon sx={classes.downIcon} />\n          </>\n        ),\n        class: classes.buttonExpiry,\n        callback: (event: React.MouseEvent) => openExpiryDialog(ad, event)\n      };\n    } else if (adsStatus === 'draft') {\n      return {\n        text: 'Continue Draft',\n        class: classes.buttonGreenLight,\n        callback: () => handleEdit(ad.edit_url)\n      };\n    } else {\n      return {\n        text: 'Clone Ad',\n        class: classes.buttonSecondaryLight,\n        callback: () => {\n          setDialogUrl(ad.clone_url);\n          setDialogTitle('Are you sure you want to clone this ad?');\n          setDialogDescription('You will have to repost for your ad to be active on SEEK.');\n          setDialogButtonText('Clone ad');\n          setDialogButtonCallback(() => handleCopy);\n          setDialogOpen(true);\n        }\n      };\n    }\n  }\n\n  const handleImmediateExpiry = (ad: IJobAd) => {\n    setDialogAdID(ad.id);\n    setDialogUrl(`/api/v4/seek/job_ads/${ad.id}/ad_posting`);\n    setDialogTitle('Are you sure you want to expire this ad?');\n    setDialogDescription(\n      'This will remove it from SEEK immediately. To repost this ad later you will be charged for a new ad.'\n    );\n    setDialogButtonText('Expire now');\n    setDialogButtonCallback(() => handleExpire);\n    setDialogOpen(true);\n    setExpiryActionsAnchorEl(null);\n  };\n\n  const handleDateExpiry = () => {\n    setExpiryDialogOpen(true);\n    setExpiryActionsAnchorEl(null);\n  };\n\n  const openExpiryDialog = (ad: IJobAd, event: React.MouseEvent) => {\n    setSelectedAd(ad);\n    setExpiryActionsAnchorEl(event.currentTarget);\n  };\n\n  const handleLocalExpiryChange = (newDate, adId) => {\n    const newAds = Object.assign(jobAds);\n    const index = newAds[adsStatus].findIndex((ad: IJobAd) => ad.id === adId);\n    newAds[adsStatus][index].expired_at = newDate;\n    setAds({ ...newAds });\n  };\n\n  async function handleEdit(url: string) {\n    window.location.href = url;\n  }\n\n  async function handleExpire(url: string, id: number) {\n    setDialogLoading(true);\n    try {\n      await axios.delete(`${url}`, {\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      });\n      const newAds = Object.assign(jobAds);\n      const index = newAds[adsStatus].findIndex((ad: IJobAd) => ad.id === id);\n      const copyJob = newAds[adsStatus][index];\n      newAds.expired && newAds.expired.push(copyJob);\n      newAds[adsStatus].splice(index, 1);\n      setAds({ ...newAds });\n      handleSnack('Job has been expired');\n    } catch (e) {\n      console.log(e);\n      handleSnack('Could not expire ad');\n    } finally {\n      setDialogLoading(false);\n      setDialogUrl(null);\n      setDialogOpen(false);\n    }\n  }\n\n  async function handleArchive(url: string, id: number) {\n    setDialogLoading(true);\n    try {\n      const { data } = await axios.delete(`${url}`, {\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      });\n      const newAds = Object.assign(jobAds);\n      const index = newAds[adsStatus].findIndex((ad: IJobAd) => ad.id === id);\n      const copyJob = newAds[adsStatus][index];\n      newAds.archived && newAds.archived.push(copyJob);\n      newAds[adsStatus].splice(index, 1);\n      setAds({ ...newAds });\n      handleSnack(`${data.title} has been archived`);\n    } catch (e) {\n      console.log(e);\n      handleSnack('Could not archive ad');\n    } finally {\n      setDialogLoading(false);\n      setDialogUrl(null);\n      setDialogOpen(false);\n    }\n  }\n\n  async function handleDelete(url: string, id: number) {\n    setDialogLoading(true);\n    try {\n      const { data } = await axios.delete(`${url}`, {\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      });\n      const newAds = Object.assign(jobAds);\n      newAds[adsStatus] = newAds[adsStatus].filter((ad: IJobAd) => ad.id !== id);\n      setAds({ ...newAds });\n      handleSnack(`${data.title} has been deleted`);\n    } catch (e) {\n      console.log(e);\n      handleSnack('Could not delete ad');\n    } finally {\n      setDialogLoading(false);\n      setDialogUrl(null);\n      setDialogOpen(false);\n    }\n  }\n\n  async function handleReplay(url: string) {\n    setDialogLoading(true);\n    try {\n      const { data } = await axios.post(\n        `${url}`,\n        {},\n        {\n          headers: {\n            'X-api-authenticate': apiKey\n          }\n        }\n      );\n      handleSnack('Replay request has been posted successfully');\n      Object.keys(jobAds).forEach((status) => {\n        jobAds[status] = jobAds[status].filter((ad: IJobAd) => ad.id !== data.id);\n      });\n      setAds({ ...jobAds });\n    } catch (e) {\n      console.log(e);\n      handleSnack('Could not replay ad');\n    } finally {\n      setDialogLoading(false);\n      setDialogUrl(null);\n      setDialogOpen(false);\n    }\n  }\n\n  function isScrollable(element: HTMLElement) {\n    return element && element.scrollWidth > element.clientWidth + 20;\n  }\n\n  const handleScrollableEnter = () => {\n    if (isScrollable(tableRef.current) && ads.length > 0) setTableHovered(true);\n  };\n\n  const handleScrollableExit = () => {\n    setTableHovered(false);\n  };\n\n  const handleScroll = () => {\n    if (tableRef.current.scrollLeft < 10) {\n      setCanScroll([false, true]);\n    } else if (\n      tableRef.current.scrollLeft >\n      tableRef.current.scrollWidth - tableRef.current.clientWidth - 10\n    ) {\n      setCanScroll([true, false]);\n    } else {\n      setCanScroll([true, true]);\n    }\n  };\n\n  const handleScrollLeft = () => {\n    tableRef.current.scrollLeft > 360\n      ? (tableRef.current.scrollLeft -= 300)\n      : (tableRef.current.scrollLeft = 0);\n  };\n\n  const handleScrollRight = () => {\n    tableRef.current.scrollWidth - tableRef.current.clientWidth > 360\n      ? (tableRef.current.scrollLeft += 300)\n      : (tableRef.current.scrollLeft = tableRef.current.scrollWidth - tableRef.current.clientWidth);\n  };\n\n  function handleCopy(url: string) {\n    window.location.href = url;\n  }\n\n  const showDeleteOption =\n    adsStatus !== 'active' &&\n    selectedAd?.status !== 'open' &&\n    !selectedAd?.active_on_seek &&\n    !['open', 'archived'].includes(adsStatus);\n\n  const showIcons = (ad: IJobAd) => {\n    switch (adsStatus) {\n      case 'active':\n        return (\n          <>\n            <Tooltip title=\"Edit\">\n              <IconButton\n                sx={classes.icon}\n                onClick={() => handleEdit(ad.edit_url)}\n                className=\"edit-seek-ad-button\"\n              >\n                <EditIcon fontSize=\"small\" sx={classes.iconGrey} />\n              </IconButton>\n            </Tooltip>\n            {adminUser && <CopyAdIdButton ad={ad} handleSnack={handleSnack} />}\n            <IconButton\n              sx={classes.icon}\n              onClick={(e) => {\n                setActionsAnchorEl(e.currentTarget);\n                setSelectedAd(ad);\n              }}\n              className=\"seek-ad-actions-button\"\n            >\n              <MoreVertIcon sx={classes.iconGrey} />\n            </IconButton>\n          </>\n        );\n      case 'draft':\n        return (\n          <Tooltip title=\"Edit\">\n            <IconButton\n              sx={classes.icon}\n              onClick={() => handleEdit(ad.edit_url)}\n              className=\"edit-seek-ad-button\"\n            >\n              <EditIcon fontSize=\"small\" sx={classes.iconGrey} />\n            </IconButton>\n          </Tooltip>\n        );\n      case 'expired':\n        return (\n          <>\n            <Tooltip title=\"Archive\">\n              <IconButton>\n                <ArchiveIcon\n                  sx={classes.iconRed}\n                  onClick={() => {\n                    setDialogUrl(`/api/v4/seek/job_ads/${ad?.id}/archive`);\n                    setDialogAdID(ad?.id);\n                    setDialogTitle('Are you sure you want to archive this ad?');\n                    setDialogDescription(null);\n                    setDialogButtonText('Archive now');\n                    setDialogButtonCallback(() => handleArchive);\n                    setDialogOpen(true);\n                  }}\n                />\n              </IconButton>\n            </Tooltip>\n            {adminUser && <CopyAdIdButton ad={ad} handleSnack={handleSnack} />}\n          </>\n        );\n      case 'archived':\n        return null;\n      default:\n        return null;\n    }\n  };\n\n  return (\n    <Box>\n      <Box sx={{ position: 'relative' }}>\n        <Box sx={classes.arrowsContainer}>\n          <Box\n            onClick={handleScrollLeft}\n            onMouseEnter={handleScrollableEnter}\n            sx={{\n              ...classes.leftArrow,\n              ...(tableHovered && canScroll[0] && classes.showArrows),\n              left: `${jobCellRef.current?.getBoundingClientRect().right}px`,\n              top: 0\n            }}\n            id=\"left-arrow\"\n          >\n            <KeyboardArrowLeftIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n          </Box>\n        </Box>\n        <Box sx={classes.arrowsContainer}>\n          <Box\n            onMouseEnter={handleScrollableEnter}\n            onClick={handleScrollRight}\n            sx={{\n              ...classes.rightArrow,\n              ...(tableHovered && canScroll[1] && classes.showArrows),\n              left: `${actionCellRef.current?.getBoundingClientRect().left - 40}px`,\n              top: 0\n            }}\n            id=\"right-arrow\"\n          >\n            <KeyboardArrowRightIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n          </Box>\n        </Box>\n        <Box\n          sx={classes.tableContainer}\n          onMouseEnter={handleScrollableEnter}\n          onMouseLeave={handleScrollableExit}\n          ref={tableRef}\n          onScroll={handleScroll}\n        >\n          <Box sx={classes.table}>\n            <Box sx={{ ...classes.row, ...classes.rowHeader }}>\n              <Box component=\"span\" sx={{ ...classes.sticky, minWidth: '86px' }}>\n                SEEK Reference\n              </Box>\n              <Box\n                component=\"span\"\n                ref={jobCellRef}\n                sx={{\n                  ...classes.title,\n                  minWidth: '182px',\n                  ...classes.sticky,\n                  ...classes.scrollShadowLeft,\n                  ...(tableHovered && classes.scrollShadowVisible),\n                  left: '86px'\n                }}\n              >\n                Job\n              </Box>\n              <Box component=\"span\" sx={{ minWidth: '120px' }}>\n                Location\n              </Box>\n              <Box component=\"span\" sx={{ minWidth: '120px' }}>\n                Creation Date\n              </Box>\n              <Box component=\"span\" sx={{ minWidth: '120px' }}>\n                Created By\n              </Box>\n              <Box component=\"span\" sx={{ minWidth: '120px' }}>\n                Expiry\n              </Box>\n              <Box\n                component=\"span\"\n                sx={{\n                  ...classes.stickyRight,\n                  ...classes.scrollShadowRight,\n                  ...(tableHovered && classes.scrollShadowVisible)\n                }}\n                ref={actionCellRef}\n              />\n            </Box>\n            {ads && ads.length > 0 ? (\n              ads.map((ad) => (\n                <Box key={ad.id} sx={classes.row}>\n                  <Box sx={{ ...classes.sticky, minWidth: '86px' }}>{ad.reference}</Box>\n                  <Box\n                    sx={{\n                      ...classes.title,\n                      minWidth: '182px',\n                      ...classes.sticky,\n                      ...classes.scrollShadowLeft,\n                      ...(tableHovered && classes.scrollShadowVisible),\n                      left: '86px'\n                    }}\n                  >\n                    {ad.title}\n                  </Box>\n                  <Box>{ad.listing_location_display}</Box>\n                  <Box>{moment(ad.created_at).format('D MMM YYYY')}</Box>\n                  <Box>{ad.created_by ? ad.created_by.name : '-'}</Box>\n                  <Box>\n                    {ad.expired_at ? moment(ad.expired_at).format('D MMM YYYY') : 'No expiry'}\n                  </Box>\n                  <Box\n                    sx={{\n                      ...classes.actionsContainer,\n                      ...classes.stickyRight,\n                      ...classes.scrollShadowRight,\n                      ...(tableHovered && classes.scrollShadowVisible)\n                    }}\n                  >\n                    {adsStatus !== 'legacy' && (\n                      <Box sx={classes.actionButtonContainer} onClick={() => setDialogAdID(ad.id)}>\n                        <Button\n                          sx={{\n                            ...classes.columnRefrence,\n                            ...handleButtonStyle(ad).class,\n                            ...classes.columnButtonPadding,\n                            ...classes.actionButton\n                          }}\n                          disableElevation\n                          size=\"large\"\n                          disabled={adsStatus === 'legacy'}\n                          onClick={handleButtonStyle(ad).callback}\n                        >\n                          {handleButtonStyle(ad).text}\n                        </Button>\n                      </Box>\n                    )}\n                    {showIcons(ad)}\n                  </Box>\n                </Box>\n              ))\n            ) : (\n              <Box sx={classes.row}>\n                <Box sx={classes.title}>No ads to display</Box>\n              </Box>\n            )}\n            <Popover\n              id={actionsAnchorEl ? 'actions-menu-popover' : undefined}\n              sx={{ ...classes.actionsMenu, minWidth: 'unset', width: '135px' }}\n              open={Boolean(actionsAnchorEl)}\n              anchorEl={actionsAnchorEl}\n              onClose={() => {\n                setActionsAnchorEl(null);\n                setTimeout(() => {\n                  setSelectedAd(null);\n                }, 300);\n              }}\n              anchorOrigin={{\n                vertical: 'bottom',\n                horizontal: 'right'\n              }}\n              transformOrigin={{\n                vertical: 'top',\n                horizontal: 'right'\n              }}\n            >\n              {selectedAd && (\n                <>\n                  {adsStatus === 'active' && selectedAd.active_on_seek && (\n                    <span\n                      onClick={() => window.open(selectedAd.seek_live_url, '_blank').focus()}\n                      className=\"preview-seek-ad-button\"\n                    >\n                      Preview ad\n                    </span>\n                  )}\n                  {!['legacy'].includes(adsStatus) && adminUser && (\n                    <span\n                      className=\"preview-seek-ad-button\"\n                      onClick={() => {\n                        setDialogUrl(`/api/v4/seek/job_ads/${selectedAd.id}/webhook_replay`);\n                        setDialogTitle(\n                          'Are you sure you want to replay webhook events of this ad?'\n                        );\n                        setDialogDescription(\n                          'You will have to repost for your ad to be active on Seek.'\n                        );\n                        setDialogButtonText('Replay');\n                        setDialogButtonCallback(() => handleReplay);\n                        setDialogOpen(true);\n                      }}\n                    >\n                      Replay Ad\n                    </span>\n                  )}\n                  {adsStatus === 'legacy' && (\n                    <span onClick={() => (window.location.href = selectedAd.preview_url)}>\n                      Settings\n                    </span>\n                  )}\n                  {!['expired', 'archived', 'legacy'].includes(adsStatus) && (\n                    <span\n                      onClick={() => {\n                        setDialogUrl(selectedAd.clone_url);\n                        setDialogTitle('Are you sure you want to clone this ad?');\n                        setDialogDescription(\n                          'You will have to repost for your ad to be active on Seek.'\n                        );\n                        setDialogButtonText('Clone ad');\n                        setDialogButtonCallback(() => handleCopy);\n                        setDialogOpen(true);\n                      }}\n                      className=\"clone-seek-ad-button\"\n                    >\n                      Clone\n                    </span>\n                  )}\n                  {adsStatus === 'expired' ? (\n                    <span\n                      onClick={() => {\n                        setDialogUrl(`/api/v4/seek/job_ads/${selectedAd.id}/archive`);\n                        setDialogAdID(selectedAd.id);\n                        setDialogTitle('Are you sure you want to archive this ad?');\n                        setDialogDescription(null);\n                        setDialogButtonText('Archive now');\n                        setDialogButtonCallback(() => handleArchive);\n                        setDialogOpen(true);\n                      }}\n                    >\n                      Archive\n                    </span>\n                  ) : (\n                    showDeleteOption && (\n                      <span\n                        onClick={() => {\n                          setDialogUrl(`/api/v4/seek/job_ads/${selectedAd.id}`);\n                          setDialogAdID(selectedAd.id);\n                          setDialogTitle('Are you sure you want to delete this ad?');\n                          setDialogDescription(\n                            'Your job ad will be permanently deleted and you will not be able to recover your ad details.'\n                          );\n                          setDialogButtonText('Delete ad');\n                          setDialogButtonCallback(() => handleDelete);\n                          setDialogOpen(true);\n                        }}\n                      >\n                        Delete\n                      </span>\n                    )\n                  )}\n                </>\n              )}\n            </Popover>\n          </Box>\n        </Box>\n      </Box>\n      <GenericDialog\n        url={dialogUrl}\n        title={dialogTitle}\n        description={dialogDescription}\n        buttonText={dialogButtonText}\n        buttonCallback={dialogButtonCallback}\n        callbackLoading={dialogLoading}\n        isDialogOpen={dialogOpen}\n        dialogAdID={dialogAdID}\n        setDialogOpen={setDialogOpen}\n      />\n      <ExpiryDialog\n        isExpiryDialogOpen={expiryDialogOpen}\n        setExpiryDialogOpen={setExpiryDialogOpen}\n        dialogLoading={dialogLoading}\n        ad={selectedAd}\n        apiKey={apiKey}\n        handleSnack={handleSnack}\n        handleLocalExpiryChange={handleLocalExpiryChange}\n      />\n      <ExpiryPopover\n        immediateExpiryOnClick={handleImmediateExpiry}\n        dateExpiryOnClick={handleDateExpiry}\n        expiryActionsAnchorEl={expiryActionsAnchorEl}\n        setExpiryActionsAnchorEl={setExpiryActionsAnchorEl}\n        ad={selectedAd}\n      />\n      <Snackbar open={isSnackOpen} onClose={() => setIsSnackOpen(false)} message={snackMessage} />\n    </Box>\n  );\n}\n\nexport default AdTable;\n","import React from 'react';\nimport ContentCopyIcon from '@mui/icons-material/ContentCopy';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\nimport { IconButton, Tooltip } from '@mui/material';\nimport { classes } from '../styles';\nimport { IJobAd } from '../types';\n\nfunction CopyAdIdButton({\n  ad,\n  handleSnack\n}: {\n  ad: IJobAd;\n  handleSnack: (message: string) => void;\n}) {\n  if (ad?.advertisement_id) {\n    return (\n      <CopyToClipboard text={ad.advertisement_id} onCopy={() => handleSnack('Ad Id copied')}>\n        <Tooltip title=\"Copy Seek Ad Id\">\n          <IconButton>\n            <ContentCopyIcon fontSize=\"small\" sx={classes.iconGrey} />\n          </IconButton>\n        </Tooltip>\n      </CopyToClipboard>\n    );\n  } else {\n    return <div />;\n  }\n}\n\nexport default CopyAdIdButton;\n","import React, { useEffect, useState } from 'react';\nimport { classes } from './styles';\nimport { Autocomplete, Stack, Dialog, TextField, Typography, FormLabel } from '@mui/material';\nimport ModalFooterButtons from '../../GenericModal/ModalFooterButtons';\nimport { ISeekAccount } from '../types';\nimport { useInitSeekAd } from '../../../../SeekAd/hooks/useInitSeekAd';\n\nfunction CreateAdDialog({\n  jobId,\n  createAdDialogOpen,\n  setCreateAdDialogOpen,\n  setError,\n  seekAccounts\n}: {\n  jobId: string | null;\n  createAdDialogOpen: boolean;\n  setCreateAdDialogOpen: (value: boolean) => void;\n  setError: (error: string) => void;\n  seekAccounts: ISeekAccount[];\n}) {\n  const [selectedSeekAccount, setSelectedSeekAccount] = useState(null);\n  const { mutate, jsonResponse, reset } = useInitSeekAd();\n\n  useEffect(() => {\n    if (jsonResponse.url) {\n      window.location.href = jsonResponse.url;\n    } else if (jsonResponse.errors) {\n      setError(jsonResponse.errors ? jsonResponse.errors[0] : 'Error creating ad');\n      setCreateAdDialogOpen(false);\n      reset();\n    }\n  }, [jsonResponse, reset, setCreateAdDialogOpen, setError]);\n\n  const handleNext = async () => {\n    if (!selectedSeekAccount) return;\n\n    if (selectedSeekAccount) {\n      mutate(jobId, selectedSeekAccount.id);\n    }\n  };\n\n  return (\n    <Dialog open={createAdDialogOpen} onClose={() => setCreateAdDialogOpen(false)}>\n      <Stack sx={classes.dialogContainer}>\n        <Typography sx={classes.dialogTitle}>New SEEK Ad</Typography>\n        <FormLabel required={true} sx={classes.label}>Select account</FormLabel> \n        <Autocomplete\n          disablePortal\n          options={seekAccounts}\n          getOptionLabel={(option) => option.name}\n          value={selectedSeekAccount}\n          renderInput={(params) => <TextField {...params} placeholder='Please select' required />}\n          onChange={(_event, value) => setSelectedSeekAccount(value)}\n          sx={classes.dropdown}\n        />\n        <ModalFooterButtons\n          primaryButtonText='Next'\n          primaryButtonCallback={handleNext}\n          secondaryButtonText='Cancel'\n          secondaryButtonCallback={() => setCreateAdDialogOpen(false)}\n        />\n      </Stack>\n    </Dialog>\n  );\n}\n\nexport default CreateAdDialog;\n","import React, { useState, useEffect, useCallback } from 'react';\nimport {\n  Box,\n  Button,\n  CircularProgress,\n  Pagination,\n  MenuItem,\n  FormControl,\n  Select\n} from '@mui/material';\nimport AdTable from './AdTable';\nimport TableSkeleton from '../TableSkeleton';\nimport GenericDialog from '../GenericDialog';\nimport CreateAdDialog from './CreateAdDialog';\nimport { classes } from '../styles';\nimport { IJobAds } from '../types';\nimport { useSeekAccounts } from '../../../../SeekAd/hooks/useSeekAccounts';\nimport { useInitSeekAd } from '../../../../SeekAd/hooks/useInitSeekAd';\nimport FilterButton from '../FilterButton';\nimport AdTypePopover from '../AdTypePopover';\n\nexport default function SeekAds({ apiKey, jobId }: { apiKey: string; jobId: string | null }) {\n  const [ads, setAds] = useState<IJobAds>(null);\n  const [adminUser, setAdminUser] = useState(false);\n  const [page, setPage] = useState(1);\n  const [maxAds, setMaxAds] = useState(0);\n  const [maxPages, setMaxPages] = useState(0);\n  const [rowsPerPage, setRowsPerPage] = useState(10);\n  const [selectedAdType, setSelectedAdType] = useState('active');\n  const [loading, setLoading] = useState(true);\n  const [loadingCreate, setLoadingCreate] = useState(false);\n  const [filterAnchorEl, setFilterAnchorEl] = useState<HTMLElement | null>(null);\n  const [createAdDialogOpen, setCreateAdDialogOpen] = useState<boolean>(false);\n  const [errorModalOpen, setErrorModalOpen] = useState(false);\n  const [errorMessage, setErrorMessage] = useState('');\n  const { seekAccounts } = useSeekAccounts({ jobId });\n  // TODO: Remove after finishing seek integration upgrade\n  const { mutate, jsonResponse } = useInitSeekAd();\n\n  useEffect(() => {\n    if (jsonResponse.url) {\n      window.location.href = jsonResponse.url;\n      setErrorModalOpen(false);\n    } else if (jsonResponse.errors) {\n      setErrorMessage(jsonResponse.errors ? jsonResponse.errors[0] : 'Error creating ad');\n      setErrorModalOpen(true);\n    } else {\n      setErrorModalOpen(false);\n    }\n  }, [jsonResponse]);\n\n  const getInitialAds = useCallback(async () => {\n    setLoading(true);\n    const url = jobId\n      ? `/api/v4/seek/jobs/${jobId}/job_ads?limit=100`\n      : '/api/v4/seek/job_ads/active';\n    try {\n      const response = await fetch(url, {\n        method: 'GET',\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      }).then(async (response) => {\n        if (response.ok) {\n          return {\n            data: await response.json(),\n            maxAds: Number(response.headers.get('X-Total-Count')),\n            maxPages: Number(response.headers.get('X-Total-Pages'))\n          };\n        }\n        return response.json().then((error) => {\n          error.code = response.status;\n          throw error;\n        });\n      });\n      if (jobId !== null) {\n        setAds(response.data.job_ads);\n        setAdminUser(response.data.admin_user);\n      } else {\n        setAds(response.data);\n        setMaxAds(response.maxAds);\n        setMaxPages(response.maxPages);\n      }\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setLoading(false);\n    }\n  }, [apiKey, jobId]);\n\n  const getAds = async (currentType: string, currentPage: number, currentRows: number) => {\n    if (jobId !== null) return;\n    setLoading(true);\n    const url = `/api/v4/seek/job_ads/${currentType}?page=${currentPage}&limit=${currentRows}`;\n    try {\n      const response = await fetch(url, {\n        method: 'GET',\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      }).then(async (response) => {\n        if (response.ok) {\n          return {\n            data: await response.json(),\n            maxAds: Number(response.headers.get('X-Total-Count')),\n            maxPages: Number(response.headers.get('X-Total-Pages'))\n          };\n        }\n        return response.json().then((error) => {\n          error.code = response.status;\n          throw error;\n        });\n      });\n      setAds(response.data);\n      setMaxAds(response.maxAds);\n      setMaxPages(response.maxPages);\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setLoading(false);\n    }\n  };\n\n  const handleAdTypeChange = (adType: string) => {\n    setFilterAnchorEl(null);\n    if (adType === selectedAdType) return;\n    setSelectedAdType(adType);\n    setPage(1);\n    getAds(adType, 1, rowsPerPage);\n  };\n\n  const handlePageChange = (event: React.ChangeEvent, newPage: number) => {\n    if (newPage === page) return;\n    setPage(newPage);\n    getAds(selectedAdType, newPage, rowsPerPage);\n  };\n\n  const handleRowsPerPageChange = (selection: number) => {\n    if (selection === rowsPerPage) return;\n    setRowsPerPage(selection);\n    getAds(selectedAdType, page, selection);\n  };\n\n  const handleCreateAd = () => {\n    if (seekAccounts && seekAccounts.length > 0) {\n      setCreateAdDialogOpen(true);\n    } else {\n      mutate(jobId);\n    }\n  };\n\n  const setError = (error: string) => {\n    setErrorModalOpen(true);\n    setErrorMessage(error);\n  };\n\n  useEffect(() => {\n    getInitialAds();\n  }, [getInitialAds]);\n\n  return (\n    <Box sx={classes.containerOuter}>\n      <Box sx={classes.container}>\n        <Box sx={classes.banner}>\n          <FilterButton\n            selectedAdType={selectedAdType}\n            setFilterAnchorEl={setFilterAnchorEl}\n            classes={classes}\n          />\n          {jobId && (\n            <Button\n              disableElevation\n              sx={classes.newAdButton}\n              id=\"SeekNewAdMultiposterBtn\"\n              onClick={handleCreateAd}\n            >\n              {loadingCreate ? <CircularProgress size={20} color=\"inherit\" /> : 'New Ad'}\n            </Button>\n          )}\n        </Box>\n        <Box>\n          {loading ? (\n            <TableSkeleton />\n          ) : (\n            <AdTable\n              jobAds={ads}\n              adminUser={adminUser}\n              setAds={setAds}\n              adsStatus={selectedAdType}\n              ads={ads[selectedAdType as keyof IJobAds]}\n              isSingleJob={jobId !== null}\n              apiKey={apiKey}\n            />\n          )}\n        </Box>\n        {!jobId && (\n          <Box sx={classes.paginationParent}>\n            <Box sx={classes.rowSelectContainer}>\n              <span>Rows per page: </span>\n              <FormControl>\n                <Select\n                  id=\"rows-per-page\"\n                  sx={classes.rowSelect}\n                  value={rowsPerPage}\n                  onChange={(e) => handleRowsPerPageChange(Number(e.target.value))}\n                  displayEmpty\n                  MenuProps={{ sx: classes.paginationMenuItems }}\n                >\n                  <MenuItem id=\"first-rpp-item\" value={10}>\n                    10\n                  </MenuItem>\n                  <MenuItem id=\"second-rpp-item\" value={20}>\n                    20\n                  </MenuItem>\n                  <MenuItem value={30}>30</MenuItem>\n                  <MenuItem value={40}>40</MenuItem>\n                  <MenuItem value={50}>50</MenuItem>\n                </Select>\n              </FormControl>\n            </Box>\n            <Box sx={classes.paginationContainer}>\n              <Pagination\n                id=\"pagination-menu\"\n                count={maxPages}\n                page={page}\n                defaultPage={Math.ceil(maxPages / 2)}\n                siblingCount={0}\n                onChange={handlePageChange}\n                sx={classes.pagination}\n              />\n              <span id=\"total-jobs\">{maxAds} Total</span>\n            </Box>\n          </Box>\n        )}\n      </Box>\n      <AdTypePopover\n        filterAnchorEl={filterAnchorEl}\n        setFilterAnchorEl={setFilterAnchorEl}\n        selectedAdType={selectedAdType}\n        handleAdTypeChange={handleAdTypeChange}\n        classes={classes}\n        adType=\"seek\"\n      />\n      <GenericDialog\n        url=\"\"\n        callbackLoading={false}\n        dialogAdID={0}\n        setDialogOpen={setErrorModalOpen}\n        isDialogOpen={errorModalOpen}\n        buttonCallback={() => setErrorModalOpen(false)}\n        title=\"Unable to create ad\"\n        description={errorMessage}\n        buttonText=\"Ok\"\n      />\n      <CreateAdDialog\n        jobId={jobId}\n        seekAccounts={seekAccounts}\n        createAdDialogOpen={createAdDialogOpen}\n        setCreateAdDialogOpen={setCreateAdDialogOpen}\n        setError={setError}\n      />\n    </Box>\n  );\n}\n","import React, { useMemo } from 'react';\nimport Box from '@mui/material/Box';\nimport Skeleton from '@mui/material/Skeleton';\n\ninterface IProps {\n  size?: number;\n  borderType?: 'top' | 'bottom' | 'none';\n  padding?: string;\n  height?: string;\n}\n\nexport default function TableSkeleton({\n  size = 3,\n  borderType = 'top',\n  padding = '20px 0px',\n  height = '40px'\n}: IProps) {\n  const skeletonComponent = useMemo(() => {\n    const boxStyle = {\n      width: '100%',\n      padding: padding,\n      border: borderType === 'none' ? 'none' : 'inherit',\n      borderTop: borderType === 'top' ? '1px solid #eaeaea' : 'none',\n      borderBottom: borderType === 'bottom' ? '1px solid #eaeaea' : 'none'\n    };\n    return [...new Array(size)].map((_, i) => (\n      <Box sx={boxStyle} key={i}>\n        <Skeleton animation=\"wave\" width=\"100%\" height={height} />\n      </Box>\n    ));\n  }, [borderType, size]);\n\n  return (\n    <Box\n      sx={{\n        display: 'flex',\n        flexDirection: 'column',\n        alignItems: 'center',\n        width: '100%'\n      }}\n    >\n      {skeletonComponent}\n    </Box>\n  );\n}\n","import React, { useState, useRef } from 'react';\nimport { classes } from '../styles';\nimport { Box, Snackbar, Button, Tooltip, IconButton } from '@mui/material';\nimport { IJobAdViewjobsProps, IJobAdViewJobs } from '../types';\nimport moment from 'moment';\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport ActionButton from '../ActionButton';\nimport axios from 'axios';\nimport ActionPopover from '../ActionPopover';\nimport GenericDialog from '../GenericDialog';\n\nexport default function AdTable({ ads, jobAds, setAds, adsStatus, apiKey }: IJobAdViewjobsProps) {\n  const [isSnackOpen, setIsSnackOpen] = useState(false);\n  const [snackMessage, setSnackMessage] = useState('');\n  const [tableHovered, setTableHovered] = useState(false);\n  const [dialogUrl, setDialogUrl] = useState('');\n  const [dialogAdID, setDialogAdID] = useState(0);\n  const [dialogTitle, setDialogTitle] = useState('');\n  const [dialogDescription, setDialogDescription] = useState('');\n  const [dialogButtonText, setDialogButtonText] = useState('');\n  const [dialogButtonCallback, setDialogButtonCallback] = useState(null);\n  const [dialogLoading, setDialogLoading] = useState(false);\n  const [dialogOpen, setDialogOpen] = useState(false);\n  const [actionsAnchorEl, setActionsAnchorEl] = useState(null);\n  const [selectedAd, setSelectedAd] = useState<IJobAdViewJobs | null>(null);\n\n  const actionCellRef = useRef(null);\n  const jobCellRef = useRef(null);\n\n  function handleSnack(message: string) {\n    setIsSnackOpen(true);\n    setSnackMessage(message);\n  }\n\n  async function handleArchive(url: string, id: number) {\n    setDialogLoading(true);\n    try {\n      const { data } = await axios.put(`${url}`, {\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      });\n      const newAds = Object.assign(jobAds);\n      const index = newAds[adsStatus].findIndex((ad: IJobAdViewJobs) => ad.id === id);\n      const copyJob = newAds[adsStatus][index];\n      copyJob.status = 'archived';\n      newAds.archived && newAds.archived.push(copyJob);\n      newAds[adsStatus].splice(index, 1);\n      setAds({ ...newAds });\n      handleSnack(`${data.title} has been archived`);\n    } catch (e) {\n      console.log(e);\n      handleSnack('Could not archive ad');\n    } finally {\n      setDialogLoading(false);\n      setDialogUrl(null);\n      setDialogOpen(false);\n    }\n  }\n\n  async function handleCopy(url: string) {\n    setDialogLoading(true);\n    try {\n      const { data } = await axios.get(`${url}?operation=clone`);\n      window.location.href = data.url;\n    } catch (e) {\n      console.log(e);\n      handleSnack('Could not clone ad');\n    } finally {\n      setDialogLoading(false);\n      setDialogUrl(null);\n      setDialogOpen(false);\n    }\n  }\n\n  async function handleDelete(url: string, id: number) {\n    setDialogLoading(true);\n    try {\n      const { data } = await axios.delete(`${url}`, {\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      });\n      const newAds = Object.assign(jobAds);\n      newAds[adsStatus] = newAds[adsStatus].filter((ad: IJobAdViewJobs) => ad.id !== id);\n      setAds({ ...newAds });\n      handleSnack(`${data.title} has been deleted`);\n    } catch (e) {\n      console.log(e);\n      handleSnack('Could not delete ad');\n    } finally {\n      setDialogLoading(false);\n      setDialogUrl(null);\n      setDialogOpen(false);\n    }\n  }\n\n  return (\n    <Box>\n      <Box sx={{ position: 'relative' }}>\n        <Box sx={classes.tableContainer}>\n          <Box sx={classes.table}>\n            <Box sx={{ ...classes.row, ...classes.rowHeader }}>\n              <Box\n                component=\"span\"\n                ref={jobCellRef}\n                sx={{\n                  ...classes.title,\n                  minWidth: '182px',\n                  ...classes.sticky,\n                  ...classes.scrollShadowLeft,\n                  ...(tableHovered && classes.scrollShadowVisible),\n                  left: 0\n                }}\n              >\n                Job\n              </Box>\n              <Box component=\"span\" sx={{ minWidth: '120px' }}>\n                Creation Date\n              </Box>\n              <Box component=\"span\" sx={{ minWidth: '120px' }}>\n                Created By\n              </Box>\n              <Box component=\"span\" sx={{ minWidth: '120px' }}>\n                Expiry\n              </Box>\n              <Box component=\"span\" sx={{ ...classes.center, minWidth: '130px' }}>\n                Active on ViewJobs\n              </Box>\n              <Box component=\"span\" sx={{ ...classes.center, minWidth: '130px' }}>\n                Sponsored\n              </Box>\n              <Box\n                component=\"span\"\n                sx={{\n                  ...classes.stickyRight,\n                  ...classes.scrollShadowRight,\n                  ...(tableHovered && classes.scrollShadowVisible)\n                }}\n                ref={actionCellRef}\n              ></Box>\n            </Box>\n            {ads && ads.length > 0 ? (\n              ads.map((ad: IJobAdViewJobs) => (\n                <Box key={ad.id} sx={classes.row}>\n                  <Box\n                    sx={{\n                      ...classes.title,\n                      minWidth: '182px',\n                      ...classes.sticky,\n                      ...classes.scrollShadowLeft,\n                      ...(tableHovered && classes.scrollShadowVisible)\n                    }}\n                  >\n                    {ad.title}\n                  </Box>\n                  <Box>{moment(ad.created_at).format('D MMM YYYY')}</Box>\n                  <Box>{ad.created_by.name}</Box>\n                  <Box>\n                    {ad.expired_at ? moment(ad.expired_at).format('D MMM YYYY') : 'No expiry'}\n                  </Box>\n                  <Box sx={classes.center}>\n                    {ad.status === 'open' ? (\n                      <CheckCircleIcon sx={classes.iconGreen} />\n                    ) : (\n                      <CancelIcon sx={classes.iconRed} />\n                    )}\n                  </Box>\n                  <Box sx={classes.center}>\n                    {ad.featured ? (\n                      <CheckCircleIcon sx={classes.iconGreen} />\n                    ) : (\n                      <CancelIcon sx={classes.iconRed} />\n                    )}\n                  </Box>\n                  <ActionButton\n                    ad={ad}\n                    jobAds={jobAds}\n                    setAds={setAds}\n                    adsStatus={adsStatus}\n                    tableHovered={tableHovered}\n                    apiKey={apiKey}\n                    classes={classes}\n                    adType={'view_jobs'}\n                    setDialogLoading={setDialogLoading}\n                    setDialogUrl={setDialogUrl}\n                    setDialogOpen={setDialogOpen}\n                    setActionsAnchorEl={setActionsAnchorEl}\n                    setDialogAdID={setDialogAdID}\n                    setDialogTitle={setDialogTitle}\n                    setDialogDescription={setDialogDescription}\n                    setDialogButtonText={setDialogButtonText}\n                    setDialogButtonCallback={setDialogButtonCallback}\n                    setSelectedAd={setSelectedAd}\n                    handleSnack={handleSnack}\n                    handleCopy={handleCopy}\n                    handleArchive={handleArchive}\n                  />\n                </Box>\n              ))\n            ) : (\n              <Box sx={classes.row}>\n                <Box sx={classes.title}>No ads to display</Box>\n              </Box>\n            )}\n          </Box>\n        </Box>\n      </Box>\n      <ActionPopover\n        anchorEl={actionsAnchorEl}\n        onClose={() => {\n          setActionsAnchorEl(null);\n          setTimeout(() => {\n            setSelectedAd(null);\n          }, 300);\n        }}\n        handleCopy={handleCopy}\n        handleArchive={handleArchive}\n        handleDelete={handleDelete}\n        selectedAd={selectedAd}\n        classes={classes}\n        adType={'view_jobs'}\n        setDialogUrl={setDialogUrl}\n        setDialogTitle={setDialogTitle}\n        setDialogDescription={setDialogDescription}\n        setDialogButtonText={setDialogButtonText}\n        setDialogButtonCallback={setDialogButtonCallback}\n        setDialogOpen={setDialogOpen}\n        setDialogAdID={setDialogAdID}\n      />\n      <GenericDialog\n        url={dialogUrl}\n        title={dialogTitle}\n        description={dialogDescription}\n        buttonText={dialogButtonText}\n        buttonCallback={dialogButtonCallback}\n        callbackLoading={dialogLoading}\n        isDialogOpen={dialogOpen}\n        setDialogOpen={setDialogOpen}\n        dialogAdID={dialogAdID}\n      />\n      <Snackbar open={isSnackOpen} onClose={() => setIsSnackOpen(false)} message={snackMessage} />\n    </Box>\n  );\n}\n","import React, { useState, useEffect, useCallback } from 'react';\nimport { Box, Button, CircularProgress } from '@mui/material';\nimport TableSkeleton from '../TableSkeleton';\nimport AdTable from './AdTable';\nimport { classes } from '../styles';\nimport FilterButton from '../FilterButton';\nimport AdTypePopover from '../AdTypePopover';\nimport { IJobAdViewJobs } from '../types';\n\nexport default function ViewJobsAds({ apiKey, jobId }: { apiKey: string; jobId: string | null }) {\n  const [loading, setLoading] = useState(true);\n  const [loadingCreate, setLoadingCreate] = useState(false);\n  const [ads, setAds] = useState(null);\n  const [page, setPage] = useState(1);\n  const [maxAds, setMaxAds] = useState(0);\n  const [maxPages, setMaxPages] = useState(0);\n  const [rowsPerPage, setRowsPerPage] = useState(10);\n  const [selectedAdType, setSelectedAdType] = useState('active');\n  const [filterAnchorEl, setFilterAnchorEl] = useState<HTMLElement | null>(null);\n\n  const getInitialAds = useCallback(async () => {\n    setLoading(true);\n    const url = jobId\n      ? `/api/v4/view_jobs/jobs/${jobId}/job_ads?limit=100`\n      : '/api/v4/view_jobs/job_ads/active';\n    try {\n      const response = await fetch(url, {\n        method: 'GET',\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      }).then(async (response) => {\n        if (response.ok) {\n          return {\n            data: await response.json(),\n            maxAds: Number(response.headers.get('X-Total-Count')),\n            maxPages: Number(response.headers.get('X-Total-Pages'))\n          };\n        }\n        return response.json().then((error) => {\n          error.code = response.status;\n          throw error;\n        });\n      });\n      if (jobId !== null) {\n        setAds(response.data.job_ads);\n      } else {\n        setAds(response.data);\n        setMaxAds(response.maxAds);\n        setMaxPages(response.maxPages);\n      }\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setLoading(false);\n    }\n  }, [apiKey, jobId]);\n\n  const getAds = async (currentType: string, currentPage: number, currentRows: number) => {\n    if (jobId !== null) return;\n    setLoading(true);\n    const url = `/api/v4/view_jobs/job_ads/${currentType}?page=${currentPage}&limit=${currentRows}`;\n    try {\n      const response = await fetch(url, {\n        method: 'GET',\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      }).then(async (response) => {\n        if (response.ok) {\n          return {\n            data: await response.json(),\n            maxAds: Number(response.headers.get('X-Total-Count')),\n            maxPages: Number(response.headers.get('X-Total-Pages'))\n          };\n        }\n        return response.json().then((error) => {\n          error.code = response.status;\n          throw error;\n        });\n      });\n      setAds(response.data);\n      setMaxAds(response.maxAds);\n      setMaxPages(response.maxPages);\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setLoading(false);\n    }\n  };\n\n  const createNewJob = useCallback(async () => {\n    setLoadingCreate(true);\n    try {\n      const response = await fetch(`/api/v4/view_jobs/jobs/${jobId}/job_ads/init_view_jobs_ad`, {\n        method: 'POST',\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      });\n      if (!response.ok) {\n        console.log('Error creating new job ad');\n      } else {\n        const data = await response.json();\n        window.location.href = data.url;\n      }\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setLoadingCreate(false);\n    }\n  }, [apiKey, jobId]);\n\n  const handleAdTypeChange = (adType: string) => {\n    setFilterAnchorEl(null);\n    if (adType === selectedAdType) return;\n    setSelectedAdType(adType);\n    setPage(1);\n    getAds(adType, 1, rowsPerPage);\n  };\n\n  useEffect(() => {\n    getInitialAds();\n  }, [getInitialAds]);\n\n  return (\n    <Box sx={classes.containerOuter}>\n      <Box sx={classes.container}>\n        <Box sx={classes.banner}>\n          <FilterButton\n            selectedAdType={selectedAdType}\n            setFilterAnchorEl={setFilterAnchorEl}\n            classes={classes}\n          />\n          {jobId && (\n            <Button\n              disableElevation\n              sx={{ ...classes.buttonSecondary, ...classes.newAdButton }}\n              id=\"ViewJobsNewAdMultiposterBtn\"\n              onClick={createNewJob}\n            >\n              {loadingCreate ? <CircularProgress size={20} color=\"inherit\" /> : 'New Ad'}\n            </Button>\n          )}\n        </Box>\n        {loading ? (\n          <TableSkeleton />\n        ) : (\n          <AdTable\n            jobAds={ads}\n            ads={ads[selectedAdType as keyof IJobAdViewJobs]}\n            setAds={setAds}\n            adsStatus={selectedAdType}\n            apiKey={apiKey}\n          />\n        )}\n      </Box>\n      <AdTypePopover\n        filterAnchorEl={filterAnchorEl}\n        setFilterAnchorEl={setFilterAnchorEl}\n        selectedAdType={selectedAdType}\n        handleAdTypeChange={handleAdTypeChange}\n        classes={classes}\n        adType=\"viewjobs\"\n      />\n    </Box>\n  );\n}\n","import React from 'react';\nimport { Box, ToggleButtonGroup, ToggleButton, SxProps } from '@mui/material';\nimport { sharedClasses } from '../CustomUIElements/sharedClasses';\n\ninterface IProps {\n  options: { value: string; label: string }[];\n  selected: string;\n  setSelected: (selected: string) => void;\n  sx?: SxProps;\n}\n\nexport const OptionToggleGroup = ({ options, selected, setSelected, sx }: IProps) => {\n  return (\n    <Box sx={{ ...sharedClasses.toggleButtonsContainer, ...sx }}>\n      <ToggleButtonGroup\n        aria-label=\"toggle button group\"\n        exclusive\n        onChange={(_e, value) => {\n          if (value === null) return;\n          setSelected(value);\n        }}\n        value={selected}\n      >\n        {options.map(({ value, label }) => (\n          <ToggleButton key={value} value={value} sx={sharedClasses.toggleButton}>\n            {label}\n          </ToggleButton>\n        ))}\n      </ToggleButtonGroup>\n    </Box>\n  );\n};\n","import React from 'react';\nimport { TableCell, TableRow } from '@mui/material';\n\ntype ConfigOptionType = {\n  name: string;\n  label: string;\n  id: number;\n};\n\nconst ReportTableBody = ({ state }: { state }) => {\n  const { data } = state;\n  return (\n    <>\n      {data?.map((r, i) => (\n        <TableRow key={i} sx={{ width: '100%' }}>\n          {Object.entries(r.attributes).map((option) => {\n            const [key, value] = option as unknown as [string, ConfigOptionType];\n            return <TableCell key={key}>{value ? value : '-'}</TableCell>;\n          })}\n        </TableRow>\n      ))}\n    </>\n  );\n};\n\nexport default ReportTableBody;\n","import React from 'react';\nimport { TableCell, TableHead, TableRow } from '@mui/material';\nimport { styles } from './styles';\nimport { sharedClasses } from '../CustomUIElements/sharedClasses';\n\nconst TableHeader = ({ state }: { state: string[] }) => {\n  return (\n    <TableHead>\n      <TableRow sx={sharedClasses.tableHeaderRow}>\n        {state?.map((option, i: number) => (\n          <TableCell key={i} sx={styles.tableCellData}>\n            {option}\n          </TableCell>\n        ))}\n        <TableCell> </TableCell>\n      </TableRow>\n    </TableHead>\n  );\n};\n\nexport default TableHeader;\n","import React from 'react';\nimport { TableBody, Table, Box, TableContainer, Paper, Skeleton } from '@mui/material';\nimport { styles } from './styles';\nimport TableHeader from './TableHeader';\nimport { PreviewTableType } from '../../../reports/CustomReports/types';\n\ntype Props = {\n  tableHeaders: PreviewTableType['tableHeaders'];\n  data: PreviewTableType['data'];\n  tableBody: React.ReactNode;\n  isLoading: boolean;\n};\nconst PreviewTable = ({ tableHeaders, data, isLoading, tableBody }: Props) => {\n  return (\n    <Box sx={{ paddingLeft: '1rem', paddingTop: `${!data ? '1rem' : '0'} ` }}>\n      <TableContainer sx={{ boxShadow: 'none', scrollBehavior: 'smooth' }} component={Paper}>\n        <Table\n          sx={{\n            ...styles.tableWrapper,\n            'th, td, tr, thead': { padding: '22px 10px', borderBottom: '1px solid #DDDDDD' }\n          }}\n        >\n          {!isLoading && tableHeaders?.length > 0 && <TableHeader state={tableHeaders} />}\n          {!isLoading && tableHeaders?.length > 0 && <TableBody>{tableBody}</TableBody>}\n        </Table>\n        {!isLoading && (data?.length === 0 || !data) && (\n          <Box sx={styles.noRecords}>No Records Found</Box>\n        )}\n        {isLoading && (\n          <>\n            {[...Array(5)].map((_, index) => (\n              <Box key={index} sx={styles.skeletonContainer}>\n                <Skeleton animation=\"wave\" height={60} />\n              </Box>\n            ))}\n          </>\n        )}\n      </TableContainer>\n    </Box>\n  );\n};\n\nexport default PreviewTable;\n","import React, { useState, SetStateAction, Dispatch, useEffect } from 'react';\nimport { useDropzone, FileWithPath } from 'react-dropzone';\nimport axios from 'axios';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport CircularProgressWithLabel from '../../Components/CustomUIElements/CircularProgressWithLabel';\nimport { classes } from './styles';\nimport { IGoogleFile } from '../../ApprovalForms/types';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport useDrivePicker from 'react-google-drive-picker';\n\nexport default function AttachmentAndGoogleDriveSelector({\n  performUpload,\n  apiKey,\n  uploadUrl,\n  onUploadComplete,\n  setFile,\n  setGoogleFileList,\n  maxSize,\n  maxFiles,\n}: {\n  performUpload: boolean;\n  apiKey?: string;\n  uploadUrl?: string;\n  onUploadComplete?: () => void;\n  setFile?: (file: FileWithPath) => void;\n  setGoogleFileList: Dispatch<SetStateAction<IGoogleFile[]>>;\n  maxSize: number;\n  maxFiles?: number;\n}) {\n  const { getRootProps, getInputProps, open } = useDropzone({\n    noClick: true,\n    noKeyboard: true,\n    maxSize,\n    maxFiles: maxFiles ? maxFiles : 0,\n    onDragOver: () => {\n      setIsDraggedOver(true);\n    },\n    onDragLeave: () => {\n      setIsDraggedOver(false);\n    },\n    onDropRejected: () => {\n      setIsRejected(true);\n    },\n    onDrop: (acceptedFiles: FileWithPath[]) => {\n      const parsedFiles = acceptedFiles.map((file) => (\n        new File([file], file.name.replace(/[()]/g, \"\"), { type: file.type })\n      ))\n      if (performUpload) {\n        parsedFiles.forEach((file) => {\n          uploadFiles(file);\n        });\n      }\n      if (setFile) {\n        setFile(parsedFiles);\n        setIsRejected(false);\n      }\n      setIsDraggedOver(false);\n    }\n  });\n\n  const [isDraggedOver, setIsDraggedOver] = useState(false);\n  const [isRejected, setIsRejected] = useState(false);\n  const [isLoading, setIsLoading] = useState(false);\n  const [percentCompleted, setPercentCompleted] = useState(0);\n  const [isGoogleLoading, setIsGoogleLoading] = useState(false);\n  const [error, setError] = useState('');\n  const [client, setClient] = useState('');\n  const [developerKey, setDeveloperKey] = useState('');\n\n  const uploadFiles = async (file: FileWithPath) => {\n    if (!apiKey || !uploadUrl || !onUploadComplete) {\n      console.error(\n        'Missing required parameters for AttachmentSelector component. If performUpload is true, please provide apiKey, uploadUrl, and onUploadComplete.'\n      );\n      return;\n    }\n    setIsLoading(true);\n    const formData = new FormData();\n    formData.append('asset', file);\n    try {\n      const response = await axios.post(uploadUrl, formData, {\n        headers: { 'Content-Type': 'multipart/form-data', 'X-api-authenticate': apiKey },\n        onUploadProgress: (progressEvent) => {\n          setPercentCompleted(Math.round((progressEvent.loaded * 100) / progressEvent.total));\n        }\n      });\n      if (response.status === 201) {\n        setError('');\n        onUploadComplete();\n      }\n    } catch (error) {\n      if (error.response?.data?.errors) {\n        error.response.data.errors === 'Invalid file.'\n          ? setError('Unsupported file type')\n          : setError(error.response.data.errors);\n      }\n      console.log(error);\n    } finally {\n      setIsRejected(false);\n      setIsLoading(false);\n      setPercentCompleted(0);\n    }\n  };\n\n  const [openPicker, authRes] = useDrivePicker();\n  const defaultScopes = 'https://www.googleapis.com/auth/drive.readonly';\n  const [popup, setPopup] = useState(null);\n  const types = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document,' + \n    'application/vnd.oasis.opendocument.text,' + \n    'application/rtf,' +\n    'application/pdf,' +\n    'text/plain,' +\n    'text/csv,' +\n    'text/tab-separated-values,' +\n    'application/zip,' +\n    'application/epub+zip,' +\n    'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,' +\n    'application/x-vnd.oasis.opendocument.spreadsheet,' +\n    'application/vnd.openxmlformats-officedocument.presentationml.presentation,' +\n    'application/vnd.oasis.opendocument.presentation,' +\n    'image/jpeg,' +\n    'image/png,' +\n    'image/svg+xml,' +\n    'application/vnd.google-apps.script+json,'\n  \n  const handleOpenPicker = (client : string, developerKey : string) => {\n    const client_json = JSON.parse(client);\n    openPicker({\n      clientId: client_json.client_id,\n      developerKey: developerKey,\n      viewId: \"DOCS\",\n      viewMimeTypes: types,\n      token: client_json.access_token,\n      showUploadView: true,\n      showUploadFolders: true,\n      supportDrives: true,\n      multiselect: true,\n      customScopes: [defaultScopes],\n      \n      callbackFunction: (data) => {\n        if (data.action === 'picked') {\n          const docsIds = data.docs.map(doc => doc.id);\n          uploadFromGoogleDrive(docsIds);\n        }\n      }\n    })\n  }\n\n  const uploadFromGoogleDrive = async (ids : string[]) => {\n    setIsGoogleLoading(true);\n    try {\n      const response = await fetch(`/api/v4/requisitions/from_google_drive`, {\n        method: 'POST',\n        headers: {\n          'Content-Type': 'application/json',\n          'X-api-authenticate': apiKey,\n        },\n        body: JSON.stringify({\n          ids: ids\n        })\n      }).then((res) => res.json());\n      if (response.files) {\n        setGoogleFileList((previous) => ([ ...previous, ...response.files ]));\n      }\n    } catch (error) {\n      setError(error.response.data.errors);\n    } finally {\n      setIsGoogleLoading(false);\n    }\n  };\n\n  const openPopup = (url, title, w, h) => {\n    const left = (screen.width / 2) - (w / 2);\n    const top = (screen.height / 2) - (h / 2);\n  \n    const popup = window.open(url, title, `width=${w},height=${h},top=${top},left=${left}`);\n    setPopup(popup);\n  }\n\n\n  const openGoogleDrive = async () => {\n    setIsGoogleLoading(true);\n    try {\n      const response = await fetch(`/api/v4/requisitions/new_ui_show_google_files`, {\n        method: 'GET',\n        headers: {\n          'Content-Type': 'application/json',\n          'X-api-authenticate': apiKey\n        }\n      }).then((res) => res.json());\n      if (response.redirect_url) {\n        openPopup(response.redirect_url, 'Popup Window', 400, 550);\n      } else if (response.client) {\n        response.client && setClient(response.client);\n        response.developer_key && setDeveloperKey(response.developer_key);\n        handleOpenPicker(response.client, response.developer_key);\n      }\n    } catch (error) {\n      setError(error.response.data.errors);\n    } finally {\n      setIsGoogleLoading(false);\n    }\n  };\n\n  useEffect(() => {\n    if (popup) {\n      const checkUrlInterval = setInterval(() => {\n        if (popup.closed) {\n          clearInterval(checkUrlInterval);\n        } else if (popup.location.href.includes('code')) {\n          openGoogleDrive();\n          popup.close();\n        }\n      }, 500);\n      return () => {\n        clearInterval(checkUrlInterval);\n      };\n    }\n  }, [popup])\n\n  return (\n    <Box sx={{ width: '100%' }}>\n      <Box\n        {...getRootProps()}\n        sx={{\n          ...classes.dragAreaWithGoogleDrive,\n          ...(isDraggedOver ? classes.dragAreaOver : {})\n        }}\n      >\n        <input {...getInputProps()} />\n        {isLoading ? (\n          <>\n            <CircularProgressWithLabel value={percentCompleted} />\n            <Box sx={{ marginTop: '12px' }}>Uploading...</Box>\n          </>\n        ) : (\n          <>\n            <Box>\n              <svg\n                xmlns=\"http://www.w3.org/2000/svg\"\n                width=\"62px\"\n                height=\"39px\"\n                viewBox=\"0 0 61 39\"\n                version=\"1.1\"\n              >\n                <g id=\"surface1\">\n                  <path\n                    style={{\n                      stroke: 'none',\n                      fillRule: 'nonzero',\n                      fill: 'rgb(51.372549%,51.372549%,51.372549%)',\n                      fillOpacity: 1\n                    }}\n                    d=\"M 34.328125 38.65625 C 34.203125 38.402344 33.976562 38.148438 33.972656 37.894531 C 33.933594 36.039062 33.921875 34.1875 33.9375 32.332031 C 33.953125 30.957031 34.179688 30.757812 35.59375 30.746094 C 36.800781 30.734375 38.011719 30.796875 39.214844 30.714844 C 39.691406 30.707031 40.140625 30.488281 40.441406 30.117188 C 40.535156 29.636719 40.421875 29.140625 40.132812 28.746094 C 39.742188 28.242188 39.304688 27.78125 38.820312 27.367188 C 36.371094 24.898438 33.921875 22.4375 31.46875 19.972656 C 30.523438 19.023438 30.105469 19.042969 29.175781 19.984375 C 26.492188 22.710938 23.800781 25.429688 21.109375 28.148438 C 20.996094 28.261719 20.828125 28.355469 20.785156 28.492188 C 20.617188 28.976562 20.261719 29.566406 20.414062 29.9375 C 20.699219 30.375 21.167969 30.660156 21.683594 30.710938 C 22.820312 30.8125 23.96875 30.710938 25.113281 30.714844 C 26.566406 30.722656 26.710938 30.875 26.710938 32.300781 C 26.707031 34.058594 26.675781 35.816406 26.722656 37.574219 C 26.742188 38.382812 26.503906 38.722656 25.648438 38.71875 C 21.167969 38.6875 16.683594 38.769531 12.203125 38.6875 C 5.507812 38.578125 0.105469 33.140625 0.00390625 26.402344 C -0.160156 20.078125 3.519531 14.664062 9.199219 13.011719 C 10.328125 12.683594 11.5 12.535156 12.671875 12.574219 C 13.535156 12.71875 14.359375 12.160156 14.554688 11.304688 C 15.5625 8.667969 17.164062 6.296875 19.230469 4.382812 C 26.757812 -2.6875 38.09375 -1 43.296875 7.980469 C 43.792969 8.835938 44.234375 9.726562 44.644531 10.625 C 44.769531 11.097656 45.246094 11.382812 45.714844 11.269531 C 49.65625 10.855469 52.5 13.699219 52.09375 17.660156 C 52 18.550781 52.453125 18.640625 53.085938 18.792969 C 57.859375 19.820312 61.160156 24.210938 60.84375 29.113281 C 60.472656 33.945312 56.832031 37.878906 52.066406 38.605469 C 51.875 38.621094 51.6875 38.628906 51.496094 38.625 L 50.523438 38.429688 C 51.761719 38.171875 53.074219 38.085938 54.222656 37.613281 C 58.082031 36.003906 60.445312 32.050781 60.050781 27.867188 C 59.640625 23.515625 56.429688 19.957031 52.167969 19.121094 C 51.328125 18.96875 51.1875 18.699219 51.289062 17.882812 C 51.757812 14.074219 48.898438 11.214844 45.195312 11.734375 C 44.695312 11.859375 44.179688 11.589844 43.996094 11.105469 C 43.132812 9.363281 42.140625 7.691406 41.03125 6.09375 C 38.53125 2.78125 34.722656 0.726562 30.59375 0.464844 C 26.46875 0.203125 22.429688 1.757812 19.535156 4.726562 C 17.464844 6.867188 15.878906 9.425781 14.878906 12.234375 C 14.8125 12.53125 14.628906 12.785156 14.367188 12.933594 C 14.109375 13.085938 13.796875 13.121094 13.511719 13.03125 C 11.125 12.679688 8.691406 13.214844 6.667969 14.535156 C 1.140625 17.976562 -0.851562 25.476562 2.195312 31.539062 C 4.191406 35.496094 7.339844 38.019531 11.832031 38.226562 C 16.207031 38.433594 20.601562 38.273438 24.988281 38.296875 C 25.671875 38.296875 25.96875 38.078125 25.957031 37.355469 C 25.933594 35.695312 25.9375 34.03125 25.984375 32.367188 C 26.011719 31.464844 25.675781 31.085938 24.757812 31.132812 C 23.644531 31.191406 22.53125 31.160156 21.417969 31.167969 C 20.683594 31.171875 20 31.027344 19.632812 30.308594 C 19.230469 29.539062 19.714844 28.964844 20.144531 28.402344 C 20.359375 28.125 20.59375 27.867188 20.847656 27.621094 C 23.019531 25.464844 25.191406 23.308594 27.367188 21.15625 C 27.964844 20.496094 28.601562 19.875 29.273438 19.292969 C 30.34375 18.472656 31.101562 18.570312 32.058594 19.519531 C 33.078125 20.527344 34.078125 21.558594 35.089844 22.574219 C 36.976562 24.476562 38.878906 26.359375 40.746094 28.277344 C 41.859375 29.417969 41.476562 30.675781 39.925781 31.042969 C 39.582031 31.113281 39.234375 31.144531 38.882812 31.140625 C 37.867188 31.152344 36.847656 31.183594 35.832031 31.128906 C 35.023438 31.089844 34.691406 31.34375 34.722656 32.210938 C 34.777344 33.839844 34.785156 35.476562 34.722656 37.101562 C 34.6875 38.035156 35.019531 38.308594 35.925781 38.300781 C 39.800781 38.261719 43.683594 38.28125 47.558594 38.292969 C 48 38.316406 48.441406 38.359375 48.875 38.429688 C 44.496094 38.4375 40.113281 38.4375 35.730469 38.460938 C 35.265625 38.492188 34.796875 38.554688 34.339844 38.652344 \"\n                  />\n                  <path\n                    style={{\n                      stroke: 'none',\n                      fillRule: 'nonzero',\n                      fill: 'rgb(46.27451%,46.27451%,46.27451%)',\n                      fillOpacity: 1\n                    }}\n                    d=\"M 34.328125 38.65625 C 34.789062 38.558594 35.253906 38.496094 35.722656 38.464844 C 40.105469 38.441406 44.484375 38.441406 48.867188 38.433594 L 50.527344 38.433594 L 51.496094 38.625 C 49.886719 38.648438 48.277344 38.691406 46.667969 38.691406 C 42.554688 38.691406 38.441406 38.667969 34.328125 38.65625 \"\n                  />\n                  <path\n                    style={{\n                      stroke: 'none',\n                      fillRule: 'nonzero',\n                      fill: 'rgb(100%,100%,100%)',\n                      fillOpacity: 1\n                    }}\n                    d=\"M 50.527344 38.433594 L 48.867188 38.433594 C 48.429688 38.363281 47.992188 38.320312 47.550781 38.296875 C 43.671875 38.285156 39.792969 38.265625 35.914062 38.304688 C 35.007812 38.3125 34.675781 38.039062 34.710938 37.105469 C 34.773438 35.480469 34.769531 33.84375 34.710938 32.214844 C 34.679688 31.347656 35.011719 31.09375 35.824219 31.132812 C 36.839844 31.1875 37.859375 31.15625 38.875 31.144531 C 39.222656 31.148438 39.574219 31.117188 39.914062 31.046875 C 41.464844 30.679688 41.851562 29.421875 40.738281 28.28125 C 38.867188 26.363281 36.964844 24.480469 35.078125 22.578125 C 34.070312 21.5625 33.070312 20.53125 32.050781 19.523438 C 31.09375 18.574219 30.335938 18.476562 29.265625 19.296875 C 28.589844 19.878906 27.953125 20.5 27.355469 21.160156 C 25.183594 23.316406 23.011719 25.46875 20.839844 27.625 C 20.585938 27.871094 20.351562 28.128906 20.136719 28.40625 C 19.707031 28.964844 19.222656 29.542969 19.621094 30.3125 C 19.992188 31.03125 20.675781 31.175781 21.410156 31.171875 C 22.523438 31.164062 23.636719 31.195312 24.746094 31.136719 C 25.667969 31.089844 26 31.464844 25.976562 32.371094 C 25.929688 34.035156 25.925781 35.695312 25.949219 37.359375 C 25.960938 38.082031 25.664062 38.300781 24.980469 38.296875 C 20.59375 38.277344 16.199219 38.4375 11.824219 38.230469 C 7.332031 38.019531 4.183594 35.503906 2.1875 31.539062 C -0.863281 25.480469 1.128906 17.980469 6.660156 14.539062 C 8.683594 13.21875 11.113281 12.683594 13.5 13.035156 C 13.789062 13.125 14.097656 13.089844 14.359375 12.9375 C 14.617188 12.789062 14.804688 12.535156 14.871094 12.238281 C 15.867188 9.429688 17.457031 6.867188 19.527344 4.730469 C 22.421875 1.761719 26.457031 0.207031 30.585938 0.46875 C 34.710938 0.730469 38.523438 2.785156 41.023438 6.097656 C 42.132812 7.691406 43.125 9.367188 43.988281 11.109375 C 44.167969 11.59375 44.683594 11.863281 45.183594 11.734375 C 48.890625 11.21875 51.746094 14.078125 51.28125 17.886719 C 51.179688 18.703125 51.316406 18.976562 52.160156 19.125 C 56.425781 19.960938 59.636719 23.519531 60.046875 27.875 C 60.4375 32.058594 58.074219 36.011719 54.214844 37.621094 C 53.066406 38.09375 51.753906 38.175781 50.519531 38.4375 \"\n                  />\n                </g>\n              </svg>\n            </Box>\n            {!isDraggedOver ? (\n              <>\n                {!isRejected && !error ? (\n                  <Box>Drag or choose file to upload</Box>\n                ) : (\n                  <Box sx={{ color: '#D6827D' }}>\n                    {isRejected ? 'Files must be under 50mb' : error}\n                  </Box>\n                )}\n                <Box sx={classes.buttonGroup}>\n                  <Button sx={{...classes.selectFilesButton, width: '220px !important'}} onClick={open}>\n                    Choose file\n                  </Button>\n                  <Box>\n                    <Button\n                      sx={classes.selectFilesGoogleButton}\n                      onClick={openGoogleDrive}\n                      startIcon={isGoogleLoading && <CircularProgress size={14} sx={{color: '#5BC4C0'}}/>}\n                    >\n                      Upload from Google Drive\n                    </Button>\n                  </Box>\n                </Box>\n              </>\n            ) : (\n              <Box>{performUpload ? 'Drop files here to upload!' : 'Drop files here to add!'}</Box>\n            )}\n          </>\n        )}\n      </Box>\n      <Box sx={{color: '#939393 !important'}}>Max upload limit per file is 50mb.</Box>\n    </Box>\n  );\n}\n","import React, { Dispatch, SetStateAction, useState } from 'react';\nimport { FileError, FileWithPath, useDropzone } from 'react-dropzone';\nimport axios from 'axios';\nimport CircularProgressWithLabel from '../../Components/CustomUIElements/CircularProgressWithLabel';\nimport { classes } from './styles';\nimport UploadSVG from '../Graphics/UploadSVG';\nimport { Box, Button, Stack } from '@mui/material';\nimport { theme } from '../../../ThemeContext/ThemeObject';\n\nexport default function AttachmentSelector({\n  performUpload,\n  apiKey,\n  uploadUrl,\n  onUploadComplete,\n  setFileList,\n  maxSize,\n  maxFiles,\n  heightOverride,\n  attachment,\n  compact,\n  maxVideoSize,\n  buttonId\n}: {\n  performUpload: boolean;\n  apiKey?: string;\n  uploadUrl?: string;\n  onUploadComplete?: () => void;\n  setFileList?: Dispatch<SetStateAction<FileWithPath[]>>;\n  maxSize: number;\n  maxFiles?: number;\n  heightOverride?: number | string;\n  attachment?: boolean;\n  compact?: boolean;\n  maxVideoSize?: number;\n  buttonId?: string;\n}) {\n  const getMaxSize = (fileType: string): number => {\n    if (fileType.startsWith('video/')) {\n      return maxVideoSize ? maxVideoSize : maxSize;\n    }\n    return maxSize;\n  };\n  const sizeValidator = (file: File): FileError | null => {\n    const maximumSize = getMaxSize(file.type);\n    if (file.size > maximumSize) {\n      return {\n        code: 'file-too-large',\n        message: attachment ? 'Files must be under specified size.' : 'Files must be under 50 MB'\n      };\n    }\n    return null;\n  };\n  const { getRootProps, getInputProps, open, fileRejections } = useDropzone({\n    noClick: true,\n    noKeyboard: true,\n    validator: sizeValidator,\n    maxFiles: maxFiles ? maxFiles : 0,\n    onDragOver: () => {\n      setIsDraggedOver(true);\n    },\n    onDragLeave: () => {\n      setIsDraggedOver(false);\n    },\n    onDropRejected: () => {\n      setIsRejected(true);\n    },\n    onDrop: (acceptedFiles: FileWithPath[]) => {\n      const parsedFiles = acceptedFiles.map(\n        (file) => new File([file], file.name.replace(/[()]/g, ''), { type: file.type })\n      );\n      if (performUpload) {\n        parsedFiles.forEach((file) => {\n          uploadFiles(file);\n        });\n      }\n      if (setFileList) {\n        setFileList(parsedFiles);\n      }\n      setIsDraggedOver(false);\n      setIsRejected(false);\n    }\n  });\n\n  const [isDraggedOver, setIsDraggedOver] = useState(false);\n  const [isRejected, setIsRejected] = useState(false);\n  const [isLoading, setIsLoading] = useState(false);\n  const [percentCompleted, setPercentCompleted] = useState(0);\n  const [error, setError] = useState('');\n\n  const uploadFiles = async (file: FileWithPath) => {\n    if (!apiKey || !uploadUrl || !onUploadComplete) {\n      console.error(\n        'Missing required parameters for AttachmentSelector component. If performUpload is true, please provide apiKey, uploadUrl, and onUploadComplete.'\n      );\n      return;\n    }\n    setIsLoading(true);\n    const formData = new FormData();\n    formData.append('asset', file);\n    try {\n      const response = await axios.post(uploadUrl, formData, {\n        headers: { 'Content-Type': 'multipart/form-data', 'X-api-authenticate': apiKey },\n        onUploadProgress: (progressEvent) => {\n          setPercentCompleted(Math.round((progressEvent.loaded * 100) / progressEvent.total));\n        }\n      });\n      if (response.status === 201 || response.status === 200) {\n        setError('');\n        onUploadComplete();\n      }\n    } catch (error) {\n      if (error.response?.data?.errors) {\n        error.response.data.errors === 'Invalid file.'\n          ? setError('Unsupported file type')\n          : setError(error.response.data.errors);\n      }\n      console.log(error);\n    } finally {\n      setIsRejected(false);\n      setIsLoading(false);\n      setPercentCompleted(0);\n    }\n  };\n  return (\n    <Box sx={{ width: '100%' }}>\n      <Box\n        {...getRootProps()}\n        sx={{\n          ...classes.dragArea,\n          ...(isDraggedOver ? classes.dragAreaOver : {}),\n          ...(heightOverride ? { height: heightOverride } : {}),\n          ...(compact ? { margin: 'unset' } : {})\n        }}\n      >\n        <input {...getInputProps()} />\n        {isLoading ? (\n          <Stack\n            direction={compact ? 'row' : 'column'}\n            alignItems={'center'}\n            spacing={2}\n            sx={{ scale: compact ? '0.6' : '1.0' }}\n          >\n            <CircularProgressWithLabel value={percentCompleted} />\n            <Box sx={{ marginTop: '12px' }}>Uploading...</Box>\n          </Stack>\n        ) : (\n          <Stack\n            direction={compact ? 'row' : 'column'}\n            alignItems={'center'}\n            spacing={2}\n            sx={{ scale: '0.8' }}\n          >\n            <Box sx={{ marginBottom: '12px' }}>\n              <UploadSVG />\n            </Box>\n            {!isDraggedOver ? (\n              <>\n                <Stack>\n                  <Box>{compact ? 'Drag files here or' : 'Drag or choose file to upload'}</Box>\n                </Stack>\n                {(isRejected || error) && (\n                  <Box sx={{ color: '#D6827D' }}>\n                    {isRejected\n                      ? attachment\n                        ? 'Files must be under specified size.'\n                        : 'Files must be under 50 MB'\n                      : error}\n                  </Box>\n                )}\n              </>\n            ) : (\n              <>\n                <Box>\n                  {performUpload ? 'Drop files here to upload!' : 'Drop files here to add!'}\n                </Box>\n                {fileRejections.length > 0 && isDraggedOver && (\n                  <Box sx={{ color: '#D6827D' }}>\n                    {fileRejections.map((fileRejection, index) => (\n                      <Box key={index}>{fileRejection.errors.map((e) => e.message).join(', ')}</Box>\n                    ))}\n                  </Box>\n                )}\n              </>\n            )}\n            <Button\n              id={buttonId}\n              sx={classes.selectFilesButton}\n              onClick={open}\n              className=\"select-files-button\"\n              data-testid=\"select-files-button\"\n            >\n              Choose files\n            </Button>\n            {attachment && (\n              <Stack\n                sx={{\n                  fontStyle: 'italic',\n                  fontWeight: 200,\n                  fontSize: theme.spacing(1.5),\n                  textAlign: 'center',\n                  paddingTop: theme.spacing(0.5)\n                }}\n              >\n                <Box>Maximum size per file: 50MB</Box>\n                <Box>Maximum size per video: 500MB</Box>\n              </Stack>\n            )}\n          </Stack>\n        )}\n      </Box>\n    </Box>\n  );\n}\n","import React, { useState, useEffect } from 'react';\nimport { useDebouncedCallback } from 'use-debounce';\n\nexport default function DebounceInput({\n  children,\n  onDebouncedChange,\n  debounceTime,\n  defaultValue\n}: {\n  children: (props: {\n    value: string | number;\n    onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n  }) => React.ReactNode;\n  onDebouncedChange: (value: string | number) => void;\n  debounceTime?: number;\n  defaultValue?: string | number;\n}) {\n  const [inputValue, setInputValue] = useState(defaultValue || '');\n\n  useEffect(() => {\n    if (defaultValue === 0) {\n      setInputValue(0);\n    } else {\n      setInputValue(defaultValue || '');\n    }\n  }, [defaultValue]);\n\n  const debouncedAPICall = useDebouncedCallback((input) => {\n    onDebouncedChange(input);\n  }, debounceTime || 300);\n\n  const handleChange = (e) => {\n    setInputValue(e.target.value);\n    debouncedAPICall(e.target.value);\n  };\n\n  return <>{children({ value: inputValue, onChange: handleChange })}</>;\n}\n","import React from 'react';\n\nexport default function DocTypeIcon(doctype: string | undefined) {\n  switch (doctype) {\n    case 'pdf':\n      return (\n        <svg style={{ width: '22px', height: '22px' }} viewBox=\"0 0 22 22\">\n          <path\n            fill=\"currentColor\"\n            d=\"M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M9.5 11.5C9.5 12.3 8.8 13 8 13H7V15H5.5V9H8C8.8 9 9.5 9.7 9.5 10.5V11.5M14.5 13.5C14.5 14.3 13.8 15 13 15H10.5V9H13C13.8 9 14.5 9.7 14.5 10.5V13.5M18.5 10.5H17V11.5H18.5V13H17V15H15.5V9H18.5V10.5M12 10.5H13V13.5H12V10.5M7 10.5H8V11.5H7V10.5Z\"\n          />\n        </svg>\n      );\n    case 'doc':\n    case 'docx':\n      return (\n        <svg style={{ width: '22px', height: '22px' }} viewBox=\"0 0 22 22\">\n          <path\n            fill=\"currentColor\"\n            d=\"M15.5,17H14L12,9.5L10,17H8.5L6.1,7H7.8L9.34,14.5L11.3,7H12.7L14.67,14.5L16.2,7H17.9M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z\"\n          />\n        </svg>\n      );\n    case 'xls':\n    case 'xlsx':\n      return (\n        <svg style={{ width: '22px', height: '22px' }} viewBox=\"0 0 22 22\">\n          <path\n            fill=\"currentColor\"\n            d=\"M16.2,17H14.2L12,13.2L9.8,17H7.8L11,12L7.8,7H9.8L12,10.8L14.2,7H16.2L13,12M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z\"\n          />\n        </svg>\n      );\n    case 'ppt':\n    case 'pptx':\n      return (\n        <svg style={{ width: '22px', height: '22px' }} viewBox=\"0 0 22 22\">\n          <path\n            fill=\"currentColor\"\n            d=\"M9.8,13.4H12.3C13.8,13.4 14.46,13.12 15.1,12.58C15.74,12.03 16,11.25 16,10.23C16,9.26 15.75,8.5 15.1,7.88C14.45,7.29 13.83,7 12.3,7H8V17H9.8V13.4M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M9.8,12V8.4H12.1C12.76,8.4 13.27,8.65 13.6,9C13.93,9.35 14.1,9.72 14.1,10.24C14.1,10.8 13.92,11.19 13.6,11.5C13.28,11.81 12.9,12 12.22,12H9.8Z\"\n          />\n        </svg>\n      );\n    case 'zip':\n    case 'rar':\n      return (\n        <svg style={{ width: '22px', height: '22px' }} viewBox=\"0 0 22 22\">\n          <path\n            fill=\"currentColor\"\n            d=\"M14,17H12V15H10V13H12V15H14M14,9H12V11H14V13H12V11H10V9H12V7H10V5H12V7H14M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z\"\n          />\n        </svg>\n      );\n    case 'jpg':\n    case 'jpeg':\n      return (\n        <svg style={{ width: '22px', height: '22px' }} viewBox=\"0 0 24 24\">\n          <path\n            fill=\"currentColor\"\n            d=\"M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M9 13.5C9 14.6 8.1 15 7 15S5 14.6 5 13.5V12H6.5V13.5H7.5V9H9V13.5M14 11.5C14 12.3 13.3 13 12.5 13H11.5V15H10V9H12.5C13.3 9 14 9.7 14 10.5V11.5M19 10.5H16.5V13.5H17.5V12H19V13.7C19 14.4 18.5 15 17.7 15H16.4C15.6 15 15.1 14.3 15.1 13.7V10.4C15 9.7 15.5 9 16.3 9H17.6C18.4 9 18.9 9.7 18.9 10.3V10.5M11.5 10.5H12.5V11.5H11.5V10.5Z\"\n          />\n        </svg>\n      );\n    case 'png':\n      return (\n        <svg style={{ width: '22px', height: '22px' }} viewBox=\"0 0 24 24\">\n          <path\n            fill=\"currentColor\"\n            d=\"M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M9 11.5C9 12.3 8.3 13 7.5 13H6.5V15H5V9H7.5C8.3 9 9 9.7 9 10.5V11.5M14 15H12.5L11.5 12.5V15H10V9H11.5L12.5 11.5V9H14V15M19 10.5H16.5V13.5H17.5V12H19V13.7C19 14.4 18.5 15 17.7 15H16.4C15.6 15 15.1 14.3 15.1 13.7V10.4C15 9.7 15.5 9 16.3 9H17.6C18.4 9 18.9 9.7 18.9 10.3V10.5H19M6.5 10.5H7.5V11.5H6.5V10.5Z\"\n          />\n        </svg>\n      );\n    case 'gif':\n      return (\n        <svg style={{ width: '22px', height: '22px' }} viewBox=\"0 0 22 22\">\n          <path\n            fill=\"currentColor\"\n            d=\"M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M10 10.5H7.5V13.5H8.5V12H10V13.7C10 14.4 9.5 15 8.7 15H7.3C6.5 15 6 14.3 6 13.7V10.4C6 9.7 6.5 9 7.3 9H8.6C9.5 9 10 9.7 10 10.3V10.5M13 15H11.5V9H13V15M17.5 10.5H16V11.5H17.5V13H16V15H14.5V9H17.5V10.5Z\"\n          />\n        </svg>\n      );\n    case 'bmp':\n    case 'tiff':\n    case 'tif':\n    case 'svg':\n    case 'psd':\n    case 'ai':\n      return (\n        <svg style={{ width: '22px', height: '22px' }} viewBox=\"0 0 22 22\">\n          <path\n            fill=\"currentColor\"\n            d=\"M8.5,13.5L11,16.5L14.5,12L19,18H5M21,19V5C21,3.89 20.1,3 19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19Z\"\n          />\n        </svg>\n      );\n    case 'mov':\n    case 'mp4':\n    case 'm4v':\n    case 'avi':\n    case 'wmv':\n    case 'mpg':\n    case 'mpeg':\n    case 'mp2':\n    case 'mpe':\n    case 'ogg':\n    case 'webm':\n    case 'mkv':\n      return (\n        <svg style={{ width: '22px', height: '22px' }} viewBox=\"0 0 22 22\">\n          <path\n            fill=\"currentColor\"\n            d=\"M19 3H5C3.89 3 3 3.89 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.89 20.1 3 19 3M10 16V8L15 12\"\n          />\n        </svg>\n      );\n    case 'mp3':\n    case 'wav':\n    case 'flac':\n    case 'aac':\n    case 'wma':\n    case 'm4a':\n      return (\n        <svg style={{ width: '22px', height: '22px' }} viewBox=\"0 0 22 22\">\n          <path\n            fill=\"currentColor\"\n            d=\"M16,9H13V14.5A2.5,2.5 0 0,1 10.5,17A2.5,2.5 0 0,1 8,14.5A2.5,2.5 0 0,1 10.5,12C11.07,12 11.58,12.19 12,12.5V7H16M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z\"\n          />\n        </svg>\n      );\n    default:\n      return (\n        <svg style={{ width: '22px', height: '22px' }} viewBox=\"0 0 22 22\">\n          <path\n            fill=\"currentColor\"\n            d=\"M14,17H7V15H14M17,13H7V11H17M17,9H7V7H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z\"\n          />\n        </svg>\n      );\n  }\n}\n","import React, { useRef } from 'react';\nimport { Editor } from '@tinymce/tinymce-react';\nimport { HtmlEditorFonts } from './HtmlEditorFonts';\nimport { Box } from '@mui/material';\nimport { IStyle } from '../../../ThemeContext/ThemeObject';\n\nexport default function HtmlEditor({\n  body,\n  onChange,\n  onBlur,\n  maxHeight,\n  readonlyEditor\n}: {\n  body?: string;\n  onChange?: (body: string) => void;\n  onBlur?: (value: string) => void;\n  maxHeight?: number;\n  readonlyEditor?: null | { body: string; styling: IStyle };\n}) {\n  const editorRef = useRef(null);\n  const handleEditorAction = (callback?: (arg: string) => void) => {\n    if (editorRef.current && callback) {\n      callback(editorRef.current.getContent());\n    }\n  };\n  const onEdit = () => handleEditorAction(onChange);\n  const onBlurHandler = () => handleEditorAction(onBlur);\n\n  if (readonlyEditor)\n    return (\n      <Box sx={readonlyEditor.styling}>\n        <Editor initialValue={readonlyEditor.body} disabled={true} />\n      </Box>\n    );\n\n  return (\n    <Editor\n      onBlur={onBlurHandler}\n      onChange={onEdit}\n      onInit={(evt, editor) => (editorRef.current = editor)}\n      initialValue={body}\n      init={{\n        menubar: false,\n        statusbar: false,\n        paste_data_images: false,\n        min_height: 400,\n        max_height: maxHeight || 1000,\n        autoresize_bottom_margin: 0,\n        relative_urls: true,\n        remove_script_host: false,\n        browser_spellcheck: true,\n        convert_urls: false,\n        plugins: [\n          'advlist',\n          'autolink',\n          'autoresize',\n          'lists',\n          'link',\n          'image',\n          'charmap',\n          'preview',\n          'anchor',\n          'media',\n          'table',\n          'code',\n          'powerpaste'\n        ],\n        toolbar1:\n          'bold italic underline forecolor backcolor | fontfamily fontsize blocks | undo redo',\n        toolbar2:\n          'alignleft aligncenter alignright alignjustify bullist numlist outdent indent | link image removeformat table | code preview',\n        powerpaste_word_import: 'prompt',\n        powerpaste_html_import: 'prompt',\n        content_style: `body { font-family:Helvetica,Arial,sans-serif; font-size:14px } ${HtmlEditorFonts.join(\n          ' '\n        )}`,\n        contextmenu: false,\n        font_size_formats: '8px 10px 12px 14px 18px 24px 36px 8pt 10pt 12pt 14pt 18pt 24pt 36pt',\n        font_family_formats:\n          'Arial=arial,helvetica,sans-serif; Arial Black=arial black,avant garde; Book Antiqua=book antiqua,palatino; Comic Sans MS=comic sans ms,sans-serif; Courier New=courier new,courier; Georgia=georgia,palatino; Helvetica=helvetica; Impact=impact,chicago; Nexa=nexa; Symbol=symbol; Tahoma=tahoma,arial,helvetica,sans-serif; Terminal=terminal,monaco; Times New Roman=times new roman,times; Trebuchet MS=trebuchet ms,geneva; Verdana=verdana,geneva; Webdings=webdings; Wingdings=wingdings,zapf dingbats'\n      }}\n    />\n  );\n}\n","import React, { useState, useEffect, FC, PropsWithChildren } from 'react';\nimport { Box, Button, Stack, CircularProgress, SxProps } from '@mui/material';\nimport { FormTextField, MultilineFormTextField } from '../CustomUIElements/FormTextField';\nimport FormRadioButtonGroup from '../CustomUIElements/FormRadioButtonGroup';\nimport FormRadioButtonWithTextInputGroup from '../CustomUIElements/FormRadioButtonWithTextInputGroup';\nimport FormCheckboxGroup from '../CustomUIElements/FormCheckboxGroup';\nimport FormSelectField from '../CustomUIElements/FormSelectField';\nimport DebounceInput from './DebounceInput';\nimport { UncontrolledSingleDatePicker } from '../CustomUIElements/SingleDatePicker';\nimport { classes } from './styles';\nimport { sharedClasses } from '../CustomUIElements/sharedClasses';\nimport moment from 'moment';\nimport dompurify from 'dompurify';\nimport FormRankField from '../CustomUIElements/FormRankField';\nimport AvailabilityPreview from '../../ApprovalForms/Questions/Modals/AvailabilityPreview';\nimport { theme } from '../../../ThemeContext/ThemeObject';\n\nexport interface IApplicantQuestion {\n  id: number;\n  required: boolean;\n  enabled: boolean;\n  position: number;\n  title: string;\n  type: string;\n  field_choices: IFieldChoice[];\n  availability_config: IAvailabilityConfig;\n  original_title: string;\n  for_email_template: boolean;\n  rateable: boolean;\n}\n\nexport interface IAvailabilityConfig {\n  allow_break: boolean;\n  created_at: string;\n  field_id: number;\n  heading_1: string;\n  heading_2: string;\n  id: number;\n  updated_at: string;\n  week_duration: string;\n  week_start_day: number;\n}\n\nexport interface IFieldChoice {\n  id: number;\n  name: string;\n  position: number;\n}\n\ninterface QuestionHTMLProps {\n  sx?: SxProps;\n  html: string | TrustedHTML;\n}\n\nconst QuestionHTML: FC<PropsWithChildren<QuestionHTMLProps>> = ({ html, sx, children }) => {\n  return (\n    <Box sx={{ ...classes.inputLabel, ...sx }}>\n      <span\n        dangerouslySetInnerHTML={{\n          __html: html\n        }}\n      />\n      {children}\n    </Box>\n  );\n};\n\nexport default function QuestionFieldGenerator({\n  question,\n  onChangeCallback,\n  questionRef,\n  questionError,\n  handleLookUpButton,\n  answer,\n  fetchingCSV,\n  disabled = false,\n  inputText,\n  setApprovalFormQuestions,\n  approvalPage,\n  fullWidth\n}: {\n  question: IApplicantQuestion;\n  onChangeCallback: (id: number, value: string | number | Record<string, boolean | string>) => void;\n  questionRef?: (el: HTMLDivElement) => void;\n  questionError?: string;\n  handleLookUpButton?: (questionId: number, positionId: number) => void;\n  answer?: string | Record<string, string>;\n  fetchingCSV?: boolean;\n  disabled?: boolean;\n  inputText?: string;\n  setApprovalFormQuestions?: (value: Record<string, { data: string; inputText: string }>) => void;\n  approvalPage?: boolean;\n  fullWidth?: boolean;\n}) {\n  const csvOptions = ['Please choose...', 'Existing Position', 'New Position'];\n  const [selectedCSVOption, setSelectedCSVOption] = useState<string>(csvOptions[0]);\n  const [positionId, setPositionId] = useState<string>('');\n  const questionHTMLTemplate =\n    dompurify.sanitize(question.title) +\n    (question.required ? `<span style=\"color: ${theme.palette.error.main}\">*</span>` : '');\n\n  useEffect(() => {\n    if (question.type === 'CsvDataLookupField' && answer.length > 0) {\n      setSelectedCSVOption(answer[0]);\n      setPositionId(answer[1]);\n    }\n  }, [answer]);\n\n  switch (question.type) {\n    case 'RadioButtonField':\n      return (\n        <Box>\n          <QuestionHTML\n            html={\n              dompurify.sanitize(question.title.replace(/\\n/g, '<br>')) +\n              (question.required ? `<span style=\"color: ${theme.palette.error.main}\">*</span>` : '')\n            }\n            sx={{\n              ...(question.for_email_template ? { color: '#333333 !important' } : {})\n            }}\n          />\n          {question.for_email_template && approvalPage ? (\n            <FormRadioButtonWithTextInputGroup\n              options={question.field_choices.map((choice) => ({\n                label: choice.name,\n                value: choice.id\n              }))}\n              onChange={(value: string | number) => onChangeCallback(question.id, value)}\n              innerRef={questionRef}\n              error={questionError}\n              defaultValue={answer}\n              draggable={disabled}\n              question={question}\n              inputText={inputText}\n              setApprovalFormQuestions={setApprovalFormQuestions}\n            />\n          ) : (\n            <FormRadioButtonGroup\n              options={question.field_choices.map((choice) => ({\n                label: choice.name,\n                value: choice.id\n              }))}\n              onChange={(value: string | number) => onChangeCallback(question.id, value)}\n              innerRef={questionRef}\n              error={questionError}\n              defaultValue={answer}\n              draggable={disabled}\n            />\n          )}\n        </Box>\n      );\n    case 'CheckBoxField':\n      return (\n        <Box>\n          <QuestionHTML html={questionHTMLTemplate} />\n          <FormCheckboxGroup\n            options={question.field_choices}\n            onChange={(value) => onChangeCallback(question.id, value)}\n            innerRef={questionRef}\n            error={questionError}\n            defaultValues={answer}\n            disabled={disabled}\n          />\n        </Box>\n      );\n    case 'TextField':\n      return (\n        <Box>\n          <QuestionHTML html={questionHTMLTemplate} />\n          <DebounceInput\n            onDebouncedChange={(value: string) => onChangeCallback(question.id, value)}\n            defaultValue={answer}\n          >\n            {({ value, onChange }) => (\n              <FormTextField\n                value={value}\n                onChange={onChange}\n                styles={{ width: '290px' }}\n                innerRef={questionRef}\n                required={question.required}\n                error={questionError}\n                draggable={disabled}\n              />\n            )}\n          </DebounceInput>\n        </Box>\n      );\n    case 'TextAreaField':\n      return (\n        <Box>\n          <QuestionHTML html={questionHTMLTemplate} />\n          <DebounceInput\n            onDebouncedChange={(value: string) => onChangeCallback(question.id, value)}\n            defaultValue={answer}\n          >\n            {({ value, onChange }) => (\n              <MultilineFormTextField\n                value={value}\n                onChange={onChange}\n                styles={{ width: fullWidth ? 'unset' : '600px' }}\n                innerRef={questionRef}\n                error={questionError}\n                required={question.required}\n                draggable={disabled}\n                fullWidth={fullWidth}\n              />\n            )}\n          </DebounceInput>\n        </Box>\n      );\n    case 'SelectField':\n      return (\n        <Box>\n          <QuestionHTML html={questionHTMLTemplate} />\n          <FormSelectField\n            options={question.field_choices.map((choice) => ({\n              label: choice.name,\n              value: choice.id\n            }))}\n            defaultValue={answer}\n            onChange={(value: string | number) => onChangeCallback(question.id, value)}\n            styles={{ width: '290px' }}\n            innerRef={questionRef}\n            error={questionError}\n            required={question.required}\n            isDisabled={disabled}\n          />\n        </Box>\n      );\n    case 'RankField':\n      return (\n        <Box>\n          <QuestionHTML html={questionHTMLTemplate} />\n          <FormRankField\n            choices={question.field_choices}\n            onChange={(value) => onChangeCallback(question.id, value)}\n            innerRef={questionRef}\n            error={questionError}\n            required={question.required}\n            defaultValue={answer}\n            disabled={disabled}\n          />\n        </Box>\n      );\n    case 'DateField':\n      return (\n        <Box>\n          <QuestionHTML html={questionHTMLTemplate} />\n          <Box sx={classes.formDateWrapper} ref={questionRef}>\n            <UncontrolledSingleDatePicker\n              defaultValue={moment(answer)}\n              handleDateChange={(date: Date | null) =>\n                onChangeCallback(question.id, date ? moment(date).format('YYYY-MM-DD') : '')\n              }\n              inputStyles={classes.formDatePickerStyles}\n              disabled={disabled}\n              innerRef={questionRef}\n            />\n            {questionError && <Box sx={sharedClasses.errorBox}>{questionError}</Box>}\n          </Box>\n        </Box>\n      );\n    case 'CsvDataLookupField': {\n      return (\n        <Box>\n          <QuestionHTML html={questionHTMLTemplate} />\n          <FormSelectField\n            options={csvOptions}\n            defaultValue={selectedCSVOption}\n            value={selectedCSVOption}\n            styles={{ width: '290px' }}\n            onChange={(value: string) => setSelectedCSVOption(value)}\n            isDisabled={disabled}\n          />\n          {selectedCSVOption !== csvOptions[0] && (\n            <Stack sx={{ marginTop: 2 }}>\n              {selectedCSVOption === 'Existing Position'\n                ? 'Please enter the Existing Position Number'\n                : 'Please enter the Reports to Manager&apos;s Position Number'}\n              <Stack sx={{ flexDirection: 'row', alignItems: 'center', marginTop: 1 }}>\n                <DebounceInput\n                  onDebouncedChange={(value: string) => {\n                    setPositionId(value);\n                    onChangeCallback(question.id, [selectedCSVOption, value]);\n                  }}\n                  defaultValue={positionId}\n                >\n                  {({ value, onChange }) => (\n                    <FormTextField\n                      value={value}\n                      onChange={onChange}\n                      styles={{ width: '290px' }}\n                      innerRef={questionRef}\n                      required={question.required}\n                      error={questionError}\n                      draggable={disabled}\n                    />\n                  )}\n                </DebounceInput>\n                <Button\n                  sx={classes.lookUpButton}\n                  onClick={() => handleLookUpButton(question.id, positionId)}\n                >\n                  {fetchingCSV ? <CircularProgress size={20} color=\"inherit\" /> : 'Look Up'}\n                </Button>\n              </Stack>\n            </Stack>\n          )}\n        </Box>\n      );\n    }\n    case 'AvailabilityField':\n      return (\n        <Box>\n          <QuestionHTML html={questionHTMLTemplate} />\n          <Box sx={classes.formDateWrapper} ref={questionRef}>\n            <AvailabilityPreview\n              onChange={(value) => onChangeCallback(question.id, value)}\n              availabilityConfig={question.availability_config}\n              answer={answer}\n              error={questionError}\n              disabled={disabled}\n            />\n          </Box>\n        </Box>\n      );\n    case 'JobReferenceLookupField':\n      return null;\n    default:\n      return (\n        <Box>\n          <Box ref={questionRef}>{question.title}</Box>\n          Invalid question type\n        </Box>\n      );\n  }\n}\n","import React from 'react';\nimport Box from '@mui/material/Box';\nimport { FormTextField, MultilineFormTextField } from '../CustomUIElements/FormTextField';\nimport FormRadioButtonGroup from '../CustomUIElements/FormRadioButtonGroup';\nimport FormCheckboxGroup from '../CustomUIElements/FormCheckboxGroup';\nimport FormSelectField from '../CustomUIElements/FormSelectField';\nimport DebounceInput from './DebounceInput';\nimport { UncontrolledSingleDatePicker } from '../CustomUIElements/SingleDatePicker';\nimport { classes } from './styles';\nimport dompurify from 'dompurify';\nimport FormRankField from '../CustomUIElements/FormRankField';\n\nexport interface IApplicantQuestion {\n  id: number;\n  required: boolean;\n  position: number;\n  title: string;\n  type: string;\n  field_choices: IFieldChoice[];\n  field_type: string;\n  availability_config: IAvailabilityConfig;\n  weight: number;\n  enabled: boolean;\n  editable: boolean;\n  deletable: boolean;\n  rateable: boolean;\n  answered: boolean;\n  enabled_for_summary: boolean;\n  is_approval_form_title: boolean | null;\n  for_email_template: boolean;\n  confidential: boolean;\n}\n\nexport interface IAvailabilityConfig {\n  allow_break: boolean;\n  created_at: string;\n  field_id: number;\n  heading_1: string;\n  heading_2: string;\n  id: number;\n  updated_at: string;\n  week_duration: string;\n  week_start_day: number;\n}\n\nexport interface IFieldChoice {\n  id: number;\n  name: string;\n  position: number;\n}\n\nexport default function QuestionFieldViewer({\n  question,\n  draggable\n}: {\n  question: IApplicantQuestion;\n  draggable?: boolean;\n}) {\n  switch (question.type) {\n    case 'RadioButtonField':\n      return (\n        <Box>\n          <Box\n            sx={classes.questionLabel}\n            dangerouslySetInnerHTML={{\n              __html: dompurify.sanitize(question.title.replace(/\\n/g, '<br>'))\n            }}\n          />\n          <FormRadioButtonGroup\n            options={question.field_choices.map((choice) => ({\n              label: choice.name,\n              value: choice.id\n            }))}\n          />\n        </Box>\n      );\n    case 'CheckBoxField':\n      return (\n        <Box>\n          <Box\n            sx={classes.questionLabel}\n            dangerouslySetInnerHTML={{ __html: dompurify.sanitize(question.title) }}\n          />\n          <Box sx={{ right: '12px' }}>\n            <FormCheckboxGroup options={question.field_choices} />\n          </Box>\n        </Box>\n      );\n    case 'TextField':\n      return (\n        <Box>\n          <Box\n            sx={classes.questionLabel}\n            dangerouslySetInnerHTML={{ __html: dompurify.sanitize(question.title) }}\n          />\n          <DebounceInput>{({ value }) => <FormTextField value={value} />}</DebounceInput>\n        </Box>\n      );\n    case 'TextAreaField':\n      return (\n        <Box>\n          <Box\n            sx={classes.questionLabel}\n            dangerouslySetInnerHTML={{ __html: dompurify.sanitize(question.title) }}\n          />\n          <DebounceInput>\n            {({ value }) => (\n              <MultilineFormTextField\n                value={value}\n                styles={{ minWidth: '300px', maxWidth: '600px' }}\n              />\n            )}\n          </DebounceInput>\n        </Box>\n      );\n    case 'SelectField':\n      return (\n        <Box>\n          <Box\n            sx={classes.questionLabel}\n            dangerouslySetInnerHTML={{ __html: dompurify.sanitize(question.title) }}\n          />\n          <FormSelectField\n            options={question.field_choices.map((choice) => ({\n              label: choice.name,\n              value: choice.id\n            }))}\n            defaultValue={''}\n            styles={{\n              width: '222px',\n              '& .MuiInputBase-input': {\n                fontSize: '14px'\n              }\n            }}\n            onChange={{}}\n          />\n        </Box>\n      );\n    case 'RankField':\n      return (\n        <Box>\n          <Box\n            sx={classes.questionLabel}\n            dangerouslySetInnerHTML={{ __html: dompurify.sanitize(question.title) }}\n          />\n          <Box sx={classes.questionsRankInput}>\n            <FormRankField choices={question.field_choices} />\n          </Box>\n        </Box>\n      );\n    case 'DateField':\n      return (\n        <Box>\n          <Box\n            sx={classes.questionLabel}\n            dangerouslySetInnerHTML={{ __html: dompurify.sanitize(question.title) }}\n          />\n          <Box sx={{ marginTop: '10px', ...classes.formDateWrapper }}>\n            <UncontrolledSingleDatePicker defaultValue={null} disabled={true} />\n          </Box>\n        </Box>\n      );\n    case 'CsvDataLookupField':\n      return (\n        <Box>\n          <Box\n            sx={classes.questionLabel}\n            dangerouslySetInnerHTML={{ __html: dompurify.sanitize(question.title) }}\n          />\n          <FormSelectField\n            options={['Please choose...', 'Existing Position', 'New Position']}\n            defaultValue={'Please choose...'}\n            styles={{ width: '222px' }}\n            onChange={{}}\n          />\n        </Box>\n      );\n    case 'AvailabilityField':\n      return (\n        <Box>\n          <Box\n            sx={classes.questionLabel}\n            dangerouslySetInnerHTML={{ __html: dompurify.sanitize(question.title) }}\n          />\n          {/*\n           * Availability fields have previews which don't work well with this flex layout hence\n           * they're rendered separated from this row\n           */}\n        </Box>\n      );\n    case 'JobReferenceLookupField':\n      return null;\n    default:\n      return (\n        <Box>\n          <Box ref={questionRef}>{question.title}</Box>\n          Invalid question type\n        </Box>\n      );\n  }\n}\n","import React from 'react';\nimport Box from '@mui/material/Box';\nimport { FormTextField, MultilineFormTextField } from '../CustomUIElements/FormTextField';\nimport { alpha, styled } from '@mui/material/styles';\nimport MenuItem from '@mui/material/MenuItem';\nimport InputBase from '@mui/material/InputBase';\nimport { classes } from './styles';\nimport dompurify from 'dompurify';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport Select from '@mui/material/Select';\nimport Radio from '@mui/material/Radio';\nimport RadioGroup from '@mui/material/RadioGroup';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport FormGroup from '@mui/material/FormGroup';\nimport Checkbox from '@mui/material/Checkbox';\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\nimport { AdapterMoment } from '@mui/x-date-pickers/AdapterMoment';\nimport moment from 'moment';\nimport Button from '@mui/material/Button';\nimport { SingleDatePicker } from '../CustomUIElements/SingleDatePicker';\n\nexport interface IApplicantRequisition {\n  id: number;\n  question: string;\n  answer:\n    | {\n        id: number;\n        name: string;\n      }\n    | IFieldCheckbox[];\n  type: string;\n  field_choices: IFieldChoice[];\n}\n\nexport interface IFieldChoice {\n  id: number;\n  name: string;\n  position: number;\n}\n\nexport interface IFieldCheckbox {\n  id: number;\n  name: string;\n}\n\nconst SelectInput = styled(InputBase)(() => ({\n  'label + &': {\n    marginTop: '24px'\n  },\n  '& .MuiInputBase-input': {\n    borderRadius: '6px',\n    position: 'relative',\n    backgroundColor: '#FFFFFF',\n    color: '#333333',\n    border: '1px solid #DDDDDD',\n    fontSize: '16px',\n    padding: '6px 10px',\n    margin: '3px 0px',\n    fontFamily: 'Source Sans Pro, sans-serif',\n    '&:focus': {\n      boxShadow: `${alpha(theme.palette.primary.main, 0.25)} 0 0 0 2px`,\n      borderColor: theme.palette.primary.main\n    }\n  },\n  '& .MuiInputBase-input:focus': {\n    backgroundColor: '#ffffff',\n    borderRadius: '6px'\n  },\n  '& .MuiSvgIcon-root': {\n    color: '#AAAAAA',\n    marginRight: '10px',\n    transition: 'all 0.16s ease-in-out'\n  }\n}));\n\nconst menuItemStyle = {\n  fontFamily: 'Source Sans Pro, sans-serif',\n  color: '#333333',\n  maxHeight: '200px'\n};\n\nconst radioStyle = {\n  color: '#DDDDDD',\n  '&.Mui-checked': {\n    color: theme.palette.action.main\n  },\n  '& .MuiSvgIcon-root': {\n    fontSize: '22px'\n  }\n};\n\nconst labelStyle = {\n  '& .MuiTypography-root': {\n    color: '#000 !important',\n    fontSize: '16px',\n    marginLeft: '2px',\n    fontFamily: 'Source Sans Pro, sans-serif'\n  }\n};\n\nconst checkboxStyle = {\n  color: '#DDDDDD',\n  '&.Mui-checked': {\n    color: theme.palette.action.main\n  },\n  '& .MuiSvgIcon-root': {\n    fontSize: '22px'\n  }\n};\n\nconst buttonStyle = {\n  fontFamily: 'Source Sans Pro',\n  fontSize: '12px',\n  fontWeight: 'bold',\n  textTransform: 'none',\n  color: '#5BC4BF',\n  backgroundColor: '#5BC4BF12',\n  borderRadius: '6px',\n  boxShadow: 'none',\n  marginLeft: '20px',\n  '&:hover': {\n    backgroundColor: '#4da8a412',\n    boxShadow: 'none'\n  }\n};\n\nexport default function RequisitionInfoViewer({\n  requisition,\n  index,\n  requisitionInfos,\n  setRequisitionInfos\n}: {\n  requisition: IApplicantRequisition;\n}) {\n  const updateAnswer = (index: number, value: string | number) => {\n    const answers = [...requisitionInfos];\n    answers[index].answer = value;\n    setRequisitionInfos(answers);\n  };\n\n  const updateCheckbox = (index: number, value: number) => {\n    const i = requisitionInfos[index].answer.indexOf(value);\n    if (i < 0) {\n      const answers = [...requisitionInfos];\n      answers[index].answer.push(value);\n      setRequisitionInfos(answers);\n    } else {\n      requisitionInfos[index].answer.splice(i, 1);\n      setRequisitionInfos(requisitionInfos);\n    }\n  };\n\n  switch (requisition.type) {\n    case 'RadioButtonField':\n      return (\n        <Box sx={{ marginTop: '20px' }}>\n          <Box\n            sx={classes.questionLabel}\n            dangerouslySetInnerHTML={{ __html: dompurify.sanitize(requisition.question) }}\n          />\n          <RadioGroup\n            name=\"radio-buttons-group\"\n            value={requisition.answer}\n            onChange={(e) => updateAnswer(index, e.target.value)}\n            sx={{ padding: '8px 0px', flexDirection: 'column' }}\n          >\n            {requisition.field_choices\n              .map((choice) => ({\n                label: choice.name,\n                value: choice.id\n              }))\n              .map((option) => (\n                <FormControlLabel\n                  key={option.value}\n                  value={option.value}\n                  control={<Radio sx={radioStyle} />}\n                  label={option.label}\n                  sx={labelStyle}\n                />\n              ))}\n          </RadioGroup>\n        </Box>\n      );\n    case 'CheckBoxField':\n      return (\n        <Box sx={{ marginTop: '20px' }}>\n          <Box\n            sx={classes.questionLabel}\n            dangerouslySetInnerHTML={{ __html: dompurify.sanitize(requisition.question) }}\n          />\n          <Box sx={{ right: '12px' }}>\n            <FormGroup sx={{ padding: '8px 0px', flexDirection: 'column' }}>\n              {requisition.field_choices\n                .map((choice) => ({\n                  label: choice.name,\n                  value: choice.id\n                }))\n                .map((option) => (\n                  <FormControlLabel\n                    key={option.value}\n                    control={\n                      <Checkbox\n                        sx={checkboxStyle}\n                        onChange={() => updateCheckbox(index, option.value)}\n                        value={option.value}\n                        defaultChecked={requisition.answer.includes(option.value)}\n                        name={option.label}\n                      />\n                    }\n                    label={option.label}\n                    sx={labelStyle}\n                  />\n                ))}\n            </FormGroup>\n          </Box>\n        </Box>\n      );\n    case 'TextField':\n      return (\n        <Box sx={{ marginTop: '20px' }}>\n          <Box\n            sx={classes.questionLabel}\n            dangerouslySetInnerHTML={{ __html: dompurify.sanitize(requisition.question) }}\n          />\n          <FormTextField\n            value={requisition.answer}\n            onChange={(e) => updateAnswer(index, e.target.value)}\n            styles={{ width: '290px' }}\n          />\n        </Box>\n      );\n    case 'TextAreaField':\n      return (\n        <Box sx={{ marginTop: '20px' }}>\n          <Box\n            sx={classes.questionLabel}\n            dangerouslySetInnerHTML={{ __html: dompurify.sanitize(requisition.question) }}\n          />\n          <MultilineFormTextField\n            value={requisition.answer}\n            onChange={(e) => updateAnswer(index, e.target.value)}\n            styles={{ minWidth: '300px', maxWidth: '600px' }}\n          />\n        </Box>\n      );\n    case 'SelectField':\n      return (\n        <Box sx={{ marginTop: '20px' }}>\n          <Box\n            sx={classes.questionLabel}\n            dangerouslySetInnerHTML={{ __html: dompurify.sanitize(requisition.question) }}\n          />\n          <Select\n            sx={{ width: '290px' }}\n            value={requisition.answer}\n            onChange={(e) => updateAnswer(index, e.target.value)}\n            input={<SelectInput />}\n          >\n            {requisition.field_choices\n              .map((choice) => ({\n                label: choice.name,\n                value: choice.id\n              }))\n              .map((option, index) =>\n                typeof option === 'string' ? (\n                  <MenuItem key={index} value={option} sx={menuItemStyle}>\n                    {option}\n                  </MenuItem>\n                ) : (\n                  <MenuItem key={index} value={option.value} sx={menuItemStyle}>\n                    {option.label}\n                  </MenuItem>\n                )\n              )}\n          </Select>\n        </Box>\n      );\n    case 'DateField':\n      return (\n        <Box sx={{ marginTop: '20px' }}>\n          <Box\n            sx={classes.questionLabel}\n            dangerouslySetInnerHTML={{ __html: dompurify.sanitize(requisition.question) }}\n          />\n          <Box sx={{ marginTop: '10px', ...classes.formDateWrapper }}>\n            <LocalizationProvider dateAdapter={AdapterMoment}>\n              <SingleDatePicker\n                value={requisition.answer}\n                disabled={false}\n                onChange={(date) => updateAnswer(index, moment(date).format('YYYY-MM-DD'))}\n              />\n            </LocalizationProvider>\n          </Box>\n        </Box>\n      );\n    case 'AvailabilityField':\n    case 'CsvDataLookupField':\n      return (\n        <Box sx={{ marginTop: '20px' }}>\n          <Box\n            sx={classes.questionLabel}\n            dangerouslySetInnerHTML={{ __html: dompurify.sanitize(requisition.question) }}\n          />\n          <Box sx={{ marginTop: '10px', ...classes.formDateWrapper }}>\n            <Select\n              sx={{ width: '290px' }}\n              value={requisition.answer[0] == 'existing' ? 'Existing Position' : 'New Position'}\n              onChange={{}}\n              input={<SelectInput />}\n              disabled={true}\n            >\n              {['Existing Position', 'New Position'].map((option, index) =>\n                typeof option === 'string' ? (\n                  <MenuItem key={index} value={option} sx={menuItemStyle}>\n                    {option}\n                  </MenuItem>\n                ) : (\n                  <MenuItem key={index} value={option.value} sx={menuItemStyle}>\n                    {option.label}\n                  </MenuItem>\n                )\n              )}\n            </Select>\n            <Box sx={{ marginTop: '10px', ...classes.questionLabel }}>\n              {requisition.answer[0] == 'existing'\n                ? 'Enter Existing Position Number'\n                : 'Enter New Position Number'}\n            </Box>\n            <Box sx={{ display: 'flex', alignItems: 'center' }}>\n              <FormTextField\n                draggable={true}\n                value={requisition.answer[1]}\n                onChange={{}}\n                required={false}\n                styles={{ width: '290px' }}\n              />\n              <Button id=\"csv-look-up-button\" sx={buttonStyle} onClick={{}} disabled={true}>\n                Look up\n              </Button>\n            </Box>\n          </Box>\n        </Box>\n      );\n    case 'JobReferenceLookupField':\n      return null;\n    default:\n      return (\n        <Box>\n          <Box>{requisition.question}</Box>\n          Invalid question type\n        </Box>\n      );\n  }\n}\n","import React, { useState, SetStateAction, Dispatch } from 'react';\nimport { useDropzone, FileWithPath } from 'react-dropzone';\nimport axios from 'axios';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport CircularProgressWithLabel from '../../Components/CustomUIElements/CircularProgressWithLabel';\nimport { humanFileSize } from './humanFileSize';\nimport DocTypeIcon from './DocTypeIcon';\nimport ClearIcon from '@mui/icons-material/Clear';\nimport { classes } from './styles';\n\nexport default function SingleAttachmentSelector({\n  performUpload,\n  apiKey,\n  uploadUrl,\n  onUploadComplete,\n  setFile,\n  file,\n  maxSize\n}: {\n  performUpload: boolean;\n  apiKey?: string;\n  uploadUrl?: string;\n  onUploadComplete?: () => void;\n  setFile?: (file: FileWithPath) => void;\n  file?: FileWithPath | null;\n  maxSize: number;\n}) {\n  const { getRootProps, getInputProps, open } = useDropzone({\n    noClick: true,\n    noKeyboard: true,\n    maxSize,\n    maxFiles: 1,\n    onDragOver: () => {\n      setIsDraggedOver(true);\n    },\n    onDragLeave: () => {\n      setIsDraggedOver(false);\n    },\n    onDropRejected: () => {\n      setIsRejected(true);\n    },\n    onDrop: (acceptedFile: FileWithPath[]) => {\n      if (performUpload) {\n        uploadFiles(acceptedFile[0]);\n      }\n      if (setFile) {\n        setFile(acceptedFile[0]);\n      }\n      setIsDraggedOver(false);\n    }\n  });\n\n  const [isDraggedOver, setIsDraggedOver] = useState(false);\n  const [isRejected, setIsRejected] = useState(false);\n  const [isLoading, setIsLoading] = useState(false);\n  const [percentCompleted, setPercentCompleted] = useState(0);\n  const [error, setError] = useState('');\n  const [isHovered, setIsHovered] = useState(false);\n\n  const uploadFiles = async (file: FileWithPath) => {\n    if (!apiKey || !uploadUrl || !onUploadComplete) {\n      console.error(\n        'Missing required parameters for AttachmentSelector component. If performUpload is true, please provide apiKey, uploadUrl, and onUploadComplete.'\n      );\n      return;\n    }\n    setIsLoading(true);\n    const formData = new FormData();\n    formData.append('asset', file);\n    try {\n      const response = await axios.post(uploadUrl, formData, {\n        headers: { 'Content-Type': 'multipart/form-data', 'X-api-authenticate': apiKey },\n        onUploadProgress: (progressEvent) => {\n          setPercentCompleted(Math.round((progressEvent.loaded * 100) / progressEvent.total));\n        }\n      });\n      if (response.status === 201) {\n        setError('');\n        onUploadComplete();\n      }\n    } catch (error) {\n      if (error.response?.data?.errors) {\n        error.response.data.errors === 'Invalid file.'\n          ? setError('Unsupported file type')\n          : setError(error.response.data.errors);\n      }\n      console.log(error);\n    } finally {\n      setIsRejected(false);\n      setIsLoading(false);\n      setPercentCompleted(0);\n    }\n  };\n\n  return (\n    <Box sx={{ width: '100%' }}>\n      <Box\n        {...getRootProps()}\n        sx={{\n          ...classes.dragAreaSingle,\n          ...(isDraggedOver ? classes.dragAreaOverSingle : {}),\n          ...(file ? { cursor: 'pointer' } : {})\n        }}\n        onMouseEnter={() => setIsHovered(true)}\n        onMouseLeave={() => setIsHovered(false)}\n      >\n        <input {...getInputProps()} />\n        {!isLoading && file && (\n          <Box\n            sx={classes.fileIconContainer}\n            onClick={() => {\n              if (!isHovered) return;\n              setFile && setFile(null);\n            }}\n          >\n            <Box sx={classes.fileIcon}>\n              {isHovered ? (\n                <ClearIcon sx={{ '& svg': { color: '#D6827D !important' } }} />\n              ) : (\n                DocTypeIcon(file.name.split('.').pop())\n              )}\n            </Box>\n            <Box>\n              <Box sx={classes.fileName}>\n                {isHovered ? 'Click to change attachment' : file.name}\n              </Box>\n              <Box sx={classes.fileSize}>{humanFileSize(file.size)}</Box>\n            </Box>\n          </Box>\n        )}\n        {isLoading ? (\n          <>\n            <CircularProgressWithLabel value={percentCompleted} size={30} />\n            <Box sx={{ marginTop: '4px' }}>Uploading...</Box>\n          </>\n        ) : (\n          !file && (\n            <>\n              <Box>\n                <svg\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                  width=\"62px\"\n                  height=\"39px\"\n                  viewBox=\"0 0 61 39\"\n                  version=\"1.1\"\n                >\n                  <g id=\"surface1\">\n                    <path\n                      style={{\n                        stroke: 'none',\n                        fillRule: 'nonzero',\n                        fill: 'rgb(51.372549%,51.372549%,51.372549%)',\n                        fillOpacity: 1\n                      }}\n                      d=\"M 34.328125 38.65625 C 34.203125 38.402344 33.976562 38.148438 33.972656 37.894531 C 33.933594 36.039062 33.921875 34.1875 33.9375 32.332031 C 33.953125 30.957031 34.179688 30.757812 35.59375 30.746094 C 36.800781 30.734375 38.011719 30.796875 39.214844 30.714844 C 39.691406 30.707031 40.140625 30.488281 40.441406 30.117188 C 40.535156 29.636719 40.421875 29.140625 40.132812 28.746094 C 39.742188 28.242188 39.304688 27.78125 38.820312 27.367188 C 36.371094 24.898438 33.921875 22.4375 31.46875 19.972656 C 30.523438 19.023438 30.105469 19.042969 29.175781 19.984375 C 26.492188 22.710938 23.800781 25.429688 21.109375 28.148438 C 20.996094 28.261719 20.828125 28.355469 20.785156 28.492188 C 20.617188 28.976562 20.261719 29.566406 20.414062 29.9375 C 20.699219 30.375 21.167969 30.660156 21.683594 30.710938 C 22.820312 30.8125 23.96875 30.710938 25.113281 30.714844 C 26.566406 30.722656 26.710938 30.875 26.710938 32.300781 C 26.707031 34.058594 26.675781 35.816406 26.722656 37.574219 C 26.742188 38.382812 26.503906 38.722656 25.648438 38.71875 C 21.167969 38.6875 16.683594 38.769531 12.203125 38.6875 C 5.507812 38.578125 0.105469 33.140625 0.00390625 26.402344 C -0.160156 20.078125 3.519531 14.664062 9.199219 13.011719 C 10.328125 12.683594 11.5 12.535156 12.671875 12.574219 C 13.535156 12.71875 14.359375 12.160156 14.554688 11.304688 C 15.5625 8.667969 17.164062 6.296875 19.230469 4.382812 C 26.757812 -2.6875 38.09375 -1 43.296875 7.980469 C 43.792969 8.835938 44.234375 9.726562 44.644531 10.625 C 44.769531 11.097656 45.246094 11.382812 45.714844 11.269531 C 49.65625 10.855469 52.5 13.699219 52.09375 17.660156 C 52 18.550781 52.453125 18.640625 53.085938 18.792969 C 57.859375 19.820312 61.160156 24.210938 60.84375 29.113281 C 60.472656 33.945312 56.832031 37.878906 52.066406 38.605469 C 51.875 38.621094 51.6875 38.628906 51.496094 38.625 L 50.523438 38.429688 C 51.761719 38.171875 53.074219 38.085938 54.222656 37.613281 C 58.082031 36.003906 60.445312 32.050781 60.050781 27.867188 C 59.640625 23.515625 56.429688 19.957031 52.167969 19.121094 C 51.328125 18.96875 51.1875 18.699219 51.289062 17.882812 C 51.757812 14.074219 48.898438 11.214844 45.195312 11.734375 C 44.695312 11.859375 44.179688 11.589844 43.996094 11.105469 C 43.132812 9.363281 42.140625 7.691406 41.03125 6.09375 C 38.53125 2.78125 34.722656 0.726562 30.59375 0.464844 C 26.46875 0.203125 22.429688 1.757812 19.535156 4.726562 C 17.464844 6.867188 15.878906 9.425781 14.878906 12.234375 C 14.8125 12.53125 14.628906 12.785156 14.367188 12.933594 C 14.109375 13.085938 13.796875 13.121094 13.511719 13.03125 C 11.125 12.679688 8.691406 13.214844 6.667969 14.535156 C 1.140625 17.976562 -0.851562 25.476562 2.195312 31.539062 C 4.191406 35.496094 7.339844 38.019531 11.832031 38.226562 C 16.207031 38.433594 20.601562 38.273438 24.988281 38.296875 C 25.671875 38.296875 25.96875 38.078125 25.957031 37.355469 C 25.933594 35.695312 25.9375 34.03125 25.984375 32.367188 C 26.011719 31.464844 25.675781 31.085938 24.757812 31.132812 C 23.644531 31.191406 22.53125 31.160156 21.417969 31.167969 C 20.683594 31.171875 20 31.027344 19.632812 30.308594 C 19.230469 29.539062 19.714844 28.964844 20.144531 28.402344 C 20.359375 28.125 20.59375 27.867188 20.847656 27.621094 C 23.019531 25.464844 25.191406 23.308594 27.367188 21.15625 C 27.964844 20.496094 28.601562 19.875 29.273438 19.292969 C 30.34375 18.472656 31.101562 18.570312 32.058594 19.519531 C 33.078125 20.527344 34.078125 21.558594 35.089844 22.574219 C 36.976562 24.476562 38.878906 26.359375 40.746094 28.277344 C 41.859375 29.417969 41.476562 30.675781 39.925781 31.042969 C 39.582031 31.113281 39.234375 31.144531 38.882812 31.140625 C 37.867188 31.152344 36.847656 31.183594 35.832031 31.128906 C 35.023438 31.089844 34.691406 31.34375 34.722656 32.210938 C 34.777344 33.839844 34.785156 35.476562 34.722656 37.101562 C 34.6875 38.035156 35.019531 38.308594 35.925781 38.300781 C 39.800781 38.261719 43.683594 38.28125 47.558594 38.292969 C 48 38.316406 48.441406 38.359375 48.875 38.429688 C 44.496094 38.4375 40.113281 38.4375 35.730469 38.460938 C 35.265625 38.492188 34.796875 38.554688 34.339844 38.652344 \"\n                    />\n                    <path\n                      style={{\n                        stroke: 'none',\n                        fillRule: 'nonzero',\n                        fill: 'rgb(46.27451%,46.27451%,46.27451%)',\n                        fillOpacity: 1\n                      }}\n                      d=\"M 34.328125 38.65625 C 34.789062 38.558594 35.253906 38.496094 35.722656 38.464844 C 40.105469 38.441406 44.484375 38.441406 48.867188 38.433594 L 50.527344 38.433594 L 51.496094 38.625 C 49.886719 38.648438 48.277344 38.691406 46.667969 38.691406 C 42.554688 38.691406 38.441406 38.667969 34.328125 38.65625 \"\n                    />\n                    <path\n                      style={{\n                        stroke: 'none',\n                        fillRule: 'nonzero',\n                        fill: 'rgb(100%,100%,100%)',\n                        fillOpacity: 1\n                      }}\n                      d=\"M 50.527344 38.433594 L 48.867188 38.433594 C 48.429688 38.363281 47.992188 38.320312 47.550781 38.296875 C 43.671875 38.285156 39.792969 38.265625 35.914062 38.304688 C 35.007812 38.3125 34.675781 38.039062 34.710938 37.105469 C 34.773438 35.480469 34.769531 33.84375 34.710938 32.214844 C 34.679688 31.347656 35.011719 31.09375 35.824219 31.132812 C 36.839844 31.1875 37.859375 31.15625 38.875 31.144531 C 39.222656 31.148438 39.574219 31.117188 39.914062 31.046875 C 41.464844 30.679688 41.851562 29.421875 40.738281 28.28125 C 38.867188 26.363281 36.964844 24.480469 35.078125 22.578125 C 34.070312 21.5625 33.070312 20.53125 32.050781 19.523438 C 31.09375 18.574219 30.335938 18.476562 29.265625 19.296875 C 28.589844 19.878906 27.953125 20.5 27.355469 21.160156 C 25.183594 23.316406 23.011719 25.46875 20.839844 27.625 C 20.585938 27.871094 20.351562 28.128906 20.136719 28.40625 C 19.707031 28.964844 19.222656 29.542969 19.621094 30.3125 C 19.992188 31.03125 20.675781 31.175781 21.410156 31.171875 C 22.523438 31.164062 23.636719 31.195312 24.746094 31.136719 C 25.667969 31.089844 26 31.464844 25.976562 32.371094 C 25.929688 34.035156 25.925781 35.695312 25.949219 37.359375 C 25.960938 38.082031 25.664062 38.300781 24.980469 38.296875 C 20.59375 38.277344 16.199219 38.4375 11.824219 38.230469 C 7.332031 38.019531 4.183594 35.503906 2.1875 31.539062 C -0.863281 25.480469 1.128906 17.980469 6.660156 14.539062 C 8.683594 13.21875 11.113281 12.683594 13.5 13.035156 C 13.789062 13.125 14.097656 13.089844 14.359375 12.9375 C 14.617188 12.789062 14.804688 12.535156 14.871094 12.238281 C 15.867188 9.429688 17.457031 6.867188 19.527344 4.730469 C 22.421875 1.761719 26.457031 0.207031 30.585938 0.46875 C 34.710938 0.730469 38.523438 2.785156 41.023438 6.097656 C 42.132812 7.691406 43.125 9.367188 43.988281 11.109375 C 44.167969 11.59375 44.683594 11.863281 45.183594 11.734375 C 48.890625 11.21875 51.746094 14.078125 51.28125 17.886719 C 51.179688 18.703125 51.316406 18.976562 52.160156 19.125 C 56.425781 19.960938 59.636719 23.519531 60.046875 27.875 C 60.4375 32.058594 58.074219 36.011719 54.214844 37.621094 C 53.066406 38.09375 51.753906 38.175781 50.519531 38.4375 \"\n                    />\n                  </g>\n                </svg>\n              </Box>\n              {!isDraggedOver ? (\n                <Box sx={{ display: 'flex', columnGap: '10px', width: '182px' }}>\n                  {!isRejected && !error ? (\n                    <Box sx={{ display: 'flex', alignItems: 'center' }}>Drag file here or</Box>\n                  ) : (\n                    <Box sx={{ color: '#D6827D' }}>\n                      {isRejected ? 'Files must be under 50mb' : error}\n                    </Box>\n                  )}\n                  <Button sx={classes.selectFilesButtonSingle} onClick={open}>\n                    Choose file\n                  </Button>\n                </Box>\n              ) : (\n                <Box sx={{ width: '182px', textAlign: 'center' }}>\n                  {performUpload ? 'Drop file here to upload!' : 'Drop file here to add!'}\n                </Box>\n              )}\n            </>\n          )\n        )}\n      </Box>\n    </Box>\n  );\n}\n","import { IUserPermissions } from '../sharedTypes';\n\ninterface IPermissions {\n  id: number;\n  name: string;\n  paid_role: boolean;\n  user_type: string;\n  feature_groups: {\n    name: string;\n    permissions: string[];\n  }[];\n}\n\nexport const formatUserPermissions = (data: { roles: IPermissions[] }) => {\n  const allRoles: Record<string, Record<string, boolean>> = {};\n  data.roles.forEach((role: IPermissions) =>\n    role.feature_groups.forEach((group) => {\n      !allRoles[group.name] ? (allRoles[group.name] = {}) : null;\n      group.permissions.forEach((permission) => (allRoles[group.name][permission] = true));\n    })\n  );\n  return allRoles as IUserPermissions;\n};\n\nexport const formatUserPermissionsAsArray = (data: { roles: IPermissions[] }) => {\n  const rolesArray: string[] = [];\n  data.roles.forEach((role: IPermissions) =>\n    role.feature_groups.forEach((group) => {\n      if (rolesArray.includes(group.name)) return;\n      group.permissions.forEach((permission) => rolesArray.push(permission));\n    })\n  );\n  return rolesArray;\n};\n","import { useState, useRef, useEffect, useCallback } from 'react';\nimport { createConsumer } from '@rails/actioncable';\n\nexport const useWebSockets = (channel: string, onReceive: (data: any, UID?: number) => void) => {\n  const [socketConnected, setSocketConnected] = useState(false);\n  const subscription = useRef<any>(null);\n  const consumer = useRef<any>(null);\n\n  useEffect(() => {\n    consumer.current = createConsumer(\n      document?.querySelector('meta[name=\"action-cable-url\"]')?.content\n    );\n  }, []);\n\n  const unsubscribeFromChannel = useCallback(() => {\n    subscription.current && consumer.current.subscriptions.remove(subscription.current);\n    setSocketConnected(false);\n  }, []);\n\n  const subscribeToChannel = useCallback(\n    (UID?: number) => {\n      if (consumer.current.subscriptions.subscriptions.length > 0) return;\n      subscription.current = consumer.current.subscriptions.create(\n        { channel },\n        {\n          connected: () => setSocketConnected(true),\n          received: (data: any) => onReceive(data, UID)\n        }\n      );\n    },\n    [channel, onReceive]\n  );\n\n  return { subscribeToChannel, unsubscribeFromChannel, socketConnected };\n};\n","import { Box } from '@mui/material';\nimport React, { useEffect, useState, useRef } from 'react';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport KpiItem from './components/KpiItem';\nimport KpiBanner from './components/KpiBanner';\nimport PinnedJobs from './components/PinnedJobs';\nimport NewApplicants from './components/NewApplicants';\nimport { IPermissions } from '../Jobs/types';\nimport StyledSnackbar from '../Components/CustomUIElements/StyledSnackbar';\nimport TasksDashboard from './components/TasksDashboard/TasksDashboard';\nimport UpcomingEvents from './components/UpcomingEvents/UpcomingEvents';\nimport dashboardStyles from './styles';\nimport { getPermissions } from '../../shared/permissionHelpers';\n\nconst queryClient = new QueryClient();\n\nfunction Dashboard({\n  apiKey,\n  currentUserId,\n  newCalendarEnabled,\n  userTimeZone\n}: {\n  apiKey: string;\n  currentUserId: number;\n  newCalendarEnabled: boolean;\n  userTimeZone: string;\n}) {\n  const [snackbar, setSnackbar] = useState<{\n    message: string;\n    state: 'success' | 'warning' | 'error';\n  }>({\n    message: '',\n    state: 'success'\n  });\n  const [userPermissions, setUserPermissions] = useState<Record<string, Record<string, boolean>>>(\n    {}\n  );\n  const newApplicationsRef = useRef<HTMLDivElement | null>(null);\n\n  const scrollToComponent = () => {\n    if (newApplicationsRef.current) {\n      newApplicationsRef.current.scrollIntoView({ behavior: 'smooth' });\n    }\n  };\n\n  async function getUserPermissions() {\n    try {\n      const data = await getPermissions();\n      const allRoles: Record<string, Record<string, boolean>> = {};\n      data.roles.forEach((role: IPermissions) =>\n        role.feature_groups.forEach((group) => {\n          !allRoles[group.name] ? (allRoles[group.name] = {}) : null;\n          group.permissions.forEach((permission) => (allRoles[group.name][permission] = true));\n        })\n      );\n      const hasRecruitmentTeamEnabled = data.roles.some((user) => user.recruitment_team_enabled);\n      allRoles['recruitment_team_enabled'] = hasRecruitmentTeamEnabled;\n      setUserPermissions(allRoles);\n    } catch (error) {\n      console.log(error);\n    }\n  }\n\n  useEffect(() => {\n    getUserPermissions();\n  }, []);\n\n  return (\n    <QueryClientProvider client={queryClient}>\n      <Box id=\"dashboard\" sx={styles.container}>\n        <h1 style={styles.header}>My Dashboard</h1>\n        <Box display=\"flex\" flexWrap=\"wrap\" gap=\"40px\">\n          <KpiItem onClick={scrollToComponent} type=\"applications\" />\n          <KpiItem type=\"approvals\" />\n          <KpiItem type=\"events\" />\n          <KpiBanner />\n          <UpcomingEvents\n            setSnackbar={setSnackbar}\n            apiKey={apiKey}\n            currentUserId={currentUserId}\n            newCalendarEnabled={newCalendarEnabled}\n            userPermissions={userPermissions}\n            userTimezone={userTimeZone}\n          />\n          <TasksDashboard setSnackbar={setSnackbar} />\n          <PinnedJobs setSnackbar={setSnackbar} userPermissions={userPermissions} />\n          <Box ref={newApplicationsRef} sx={{ ...dashboardStyles.section, flexBasis: '100%' }}>\n            <NewApplicants setSnackbar={setSnackbar} userPermissions={userPermissions} />\n          </Box>\n        </Box>\n      </Box>\n      <StyledSnackbar\n        message={snackbar.message}\n        state={snackbar.state}\n        setSnackbarState={setSnackbar}\n      />\n    </QueryClientProvider>\n  );\n}\n\nconst styles = {\n  container: {\n    backgroundColor: '#FFFFFF',\n    padding: '40px 56px'\n  },\n  header: {\n    color: '#666666',\n    fontSize: '42px',\n    marginTop: '0px',\n    marginBottom: '40px'\n  }\n};\n\nexport default Dashboard;\n","import React from 'react';\n\nexport default function Banner() {\n  return (\n    <svg\n      width=\"100%\"\n      viewBox=\"0 0 203 131\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      preserveAspectRatio=\"xMinYMin slice\"\n    >\n      <g clipPath=\"url(#clip0_7224_4716)\">\n        <rect width=\"203\" height=\"131\" rx=\"3\" fill=\"#084D6D\" />\n        <g filter=\"url(#filter0_d_7224_4716)\">\n          <path\n            d=\"M128.352 110.363L89.4549 117.092C84.7206 117.911 81.5476 122.407 82.3679 127.134L89.1075 165.971C89.9279 170.698 94.4308 173.867 99.1651 173.047L138.062 166.318C142.796 165.499 145.969 161.003 145.149 156.276L138.409 117.439C137.589 112.712 133.086 109.544 128.352 110.363Z\"\n            fill=\"#E60078\"\n          />\n        </g>\n        <path\n          d=\"M127.896 139.643C126.515 131.564 118.783 126.135 110.659 127.525C102.547 128.915 97.0764 136.613 98.4792 144.703C99.8712 152.792 107.592 158.21 115.716 156.821C123.829 155.431 129.288 147.732 127.896 139.643Z\"\n          fill=\"#E50278\"\n        />\n        <path\n          d=\"M127.896 139.643C129.288 147.732 123.829 155.431 115.716 156.821C107.592 158.21 99.8712 152.781 98.4792 144.703C97.0872 136.624 102.547 128.915 110.659 127.525C118.783 126.135 126.504 131.564 127.896 139.643ZM124.057 141.771C124.742 141.651 125.21 141.011 125.09 140.327C124.971 139.654 124.318 139.187 123.633 139.306C122.948 139.425 122.48 140.077 122.6 140.75C122.72 141.434 123.372 141.89 124.057 141.771ZM120.023 144.366C120.142 144.996 120.74 145.408 121.371 145.289C122.002 145.17 122.393 144.572 122.274 143.932C122.154 143.324 121.556 142.911 120.947 143.02C120.316 143.128 119.903 143.736 120.023 144.366ZM121.741 140.902C121.643 140.262 121.056 139.838 120.425 139.947C119.794 140.055 119.381 140.642 119.49 141.271C119.598 141.89 120.164 142.303 120.784 142.216C121.415 142.129 121.85 141.532 121.741 140.902ZM119.892 136.874C119.25 136.982 118.837 137.569 118.957 138.209C119.066 138.828 119.642 139.23 120.273 139.132C120.903 139.024 121.317 138.459 121.219 137.84C121.121 137.2 120.545 136.776 119.903 136.885L119.892 136.874ZM115.901 138.709C115.999 139.273 116.543 139.654 117.097 139.556C117.641 139.447 118.011 138.926 117.913 138.383C117.815 137.818 117.282 137.438 116.717 137.536C116.173 137.634 115.803 138.166 115.89 138.709H115.901ZM117.38 135.299C117.282 134.735 116.749 134.355 116.184 134.463C115.64 134.561 115.27 135.082 115.357 135.636C115.455 136.201 115.977 136.57 116.553 136.472C117.108 136.374 117.467 135.864 117.369 135.31L117.38 135.299ZM118.446 141.445C118.348 140.891 117.848 140.533 117.282 140.62C116.706 140.707 116.336 141.239 116.434 141.803C116.532 142.346 117.054 142.726 117.597 142.64C118.163 142.553 118.544 142.021 118.446 141.456V141.445ZM118.359 146.766C117.815 146.853 117.423 147.363 117.5 147.917C117.576 148.492 118.098 148.872 118.663 148.785C119.229 148.699 119.598 148.199 119.522 147.645C119.435 147.07 118.924 146.69 118.359 146.777V146.766ZM118.989 144.54C118.902 143.975 118.402 143.617 117.837 143.693C117.26 143.78 116.88 144.29 116.967 144.866C117.065 145.43 117.587 145.81 118.152 145.702C118.707 145.604 119.066 145.094 118.979 144.54H118.989ZM114.346 141.228C113.824 141.315 113.498 141.782 113.595 142.303C113.682 142.792 114.15 143.128 114.639 143.063C115.14 142.987 115.499 142.498 115.422 141.999C115.346 141.489 114.868 141.152 114.357 141.239L114.346 141.228ZM113.574 136.885C114.085 136.798 114.433 136.331 114.346 135.821C114.259 135.321 113.769 134.974 113.269 135.06C112.78 135.147 112.454 135.614 112.53 136.114C112.606 136.635 113.074 136.971 113.585 136.885H113.574ZM116.477 148.134C116.39 147.624 115.901 147.276 115.401 147.363C114.901 147.45 114.563 147.938 114.65 148.449C114.737 148.948 115.205 149.274 115.694 149.187C116.216 149.1 116.553 148.633 116.466 148.123L116.477 148.134ZM115.944 145.039C115.847 144.529 115.368 144.192 114.857 144.29C114.346 144.388 114.031 144.876 114.128 145.387C114.226 145.875 114.694 146.201 115.194 146.114C115.705 146.027 116.042 145.539 115.944 145.028V145.039ZM113.813 132.737C113.726 132.226 113.237 131.89 112.725 131.988C112.236 132.074 111.91 132.541 111.986 133.041C112.062 133.562 112.541 133.899 113.052 133.812C113.563 133.725 113.9 133.247 113.813 132.737ZM117.021 151.196C116.923 150.686 116.434 150.36 115.923 150.468C115.422 150.566 115.107 151.033 115.205 151.533C115.303 152.043 115.781 152.369 116.303 152.26C116.804 152.162 117.119 151.685 117.032 151.196H117.021ZM114.89 138.883C114.792 138.372 114.313 138.046 113.791 138.155C113.291 138.253 112.976 138.72 113.074 139.219C113.161 139.719 113.628 140.044 114.128 139.958C114.65 139.871 114.988 139.393 114.89 138.883ZM111.801 143.41C112.247 143.334 112.551 142.922 112.475 142.477C112.399 142.053 111.964 141.738 111.529 141.803C111.094 141.879 110.79 142.303 110.866 142.737C110.942 143.182 111.355 143.476 111.801 143.4V143.41ZM112.334 146.483C112.78 146.407 113.084 145.995 113.019 145.56C112.954 145.126 112.53 144.822 112.084 144.898C111.638 144.974 111.344 145.376 111.41 145.821C111.486 146.266 111.888 146.559 112.334 146.483ZM110.333 139.675C110.409 140.12 110.833 140.414 111.268 140.338C111.703 140.262 112.008 139.838 111.942 139.404C111.866 138.969 111.431 138.665 110.996 138.741C110.561 138.817 110.257 139.241 110.333 139.675ZM108.615 139.273C108.245 139.339 107.984 139.697 108.038 140.066C108.104 140.435 108.462 140.696 108.832 140.631C109.235 140.566 109.485 140.207 109.409 139.816C109.332 139.436 108.985 139.197 108.604 139.273H108.615ZM109.952 142.911C109.887 142.531 109.539 142.292 109.158 142.346C108.778 142.412 108.517 142.759 108.571 143.128C108.626 143.508 109.017 143.78 109.398 143.715C109.767 143.649 110.018 143.28 109.952 142.911ZM110.485 146.006C110.431 145.626 110.083 145.365 109.702 145.419C109.322 145.474 109.039 145.854 109.104 146.234C109.169 146.603 109.539 146.853 109.909 146.798C110.279 146.733 110.54 146.386 110.485 146.006ZM107.56 143.324C107.505 143.02 107.168 142.792 106.864 142.868C106.559 142.933 106.364 143.237 106.429 143.541C106.494 143.867 106.788 144.062 107.114 143.997C107.418 143.932 107.625 143.628 107.571 143.334L107.56 143.324ZM107.027 140.272C106.983 139.979 106.69 139.751 106.385 139.784C106.059 139.816 105.831 140.12 105.885 140.446C105.929 140.761 106.211 140.978 106.516 140.935C106.831 140.902 107.07 140.587 107.027 140.272ZM107.614 147.07C107.919 147.015 108.136 146.722 108.093 146.418C108.049 146.103 107.734 145.886 107.408 145.941C107.081 145.995 106.875 146.299 106.951 146.625C107.016 146.939 107.299 147.124 107.614 147.07ZM104.569 143.856C104.656 144.127 104.841 144.279 105.113 144.225C105.385 144.171 105.537 143.953 105.483 143.682C105.428 143.432 105.233 143.291 104.961 143.334C104.667 143.378 104.558 143.573 104.569 143.867V143.856ZM105.472 146.386C105.211 146.483 105.059 146.646 105.113 146.939C105.167 147.211 105.363 147.341 105.624 147.298C105.907 147.254 106.059 147.048 106.016 146.766C105.972 146.483 105.755 146.364 105.472 146.375V146.386ZM104.558 141.152C104.841 141.076 104.993 140.891 104.95 140.62C104.906 140.348 104.689 140.196 104.406 140.251C104.145 140.305 104.004 140.479 104.036 140.75C104.08 141.043 104.276 141.152 104.547 141.152H104.558ZM102.579 140.533C102.449 140.783 102.285 140.946 102.318 141.065C102.351 141.185 102.568 141.358 102.688 141.347C102.797 141.337 102.971 141.109 102.971 140.989C102.971 140.87 102.775 140.75 102.59 140.544L102.579 140.533ZM103.667 144.04C103.416 143.91 103.253 143.747 103.134 143.78C103.003 143.812 102.927 144.019 102.829 144.149C102.96 144.247 103.09 144.42 103.221 144.42C103.34 144.42 103.46 144.236 103.667 144.04ZM104.199 147.102C103.938 146.983 103.775 146.842 103.667 146.874C103.547 146.907 103.471 147.113 103.373 147.244C103.503 147.33 103.645 147.504 103.764 147.493C103.884 147.493 103.993 147.298 104.199 147.102ZM101.372 141.239C101.209 141.174 101.1 141.087 101.024 141.098C100.948 141.119 100.894 141.25 100.828 141.326C100.926 141.391 101.013 141.489 101.111 141.499C101.176 141.499 101.252 141.358 101.361 141.239H101.372ZM101.546 144.073C101.459 144.225 101.361 144.333 101.372 144.399C101.394 144.485 101.513 144.54 101.6 144.616C101.676 144.529 101.785 144.442 101.796 144.333C101.796 144.279 101.666 144.192 101.535 144.073H101.546ZM102.449 147.385C102.264 147.32 102.144 147.233 102.057 147.254C101.992 147.265 101.905 147.428 101.916 147.504C101.938 147.58 102.09 147.689 102.155 147.667C102.242 147.645 102.318 147.526 102.449 147.385Z\"\n          fill=\"#0E3880\"\n        />\n        <g filter=\"url(#filter1_d_7224_4716)\">\n          <path\n            d=\"M115.864 41.1175L76.3892 47.9469C71.6548 48.766 68.4819 53.262 69.3022 57.9891L76.1421 97.404C76.9624 102.131 81.4653 105.299 86.1996 104.48L125.675 97.6508C130.409 96.8317 133.582 92.3357 132.762 87.6086L125.922 48.1936C125.102 43.4665 120.599 40.2984 115.864 41.1175Z\"\n            fill=\"#2164F2\"\n          />\n        </g>\n        <path\n          d=\"M99.5341 74.8181C100.491 74.5575 101.448 74.3946 102.329 74.0471C103.21 73.6997 104.015 73.1676 104.874 72.7007C104.896 72.7767 104.928 72.907 104.95 73.0373C105.7 77.3589 106.462 81.6805 107.19 86.013C107.266 86.4908 107.299 86.9903 107.255 87.4681C107.136 88.7928 106.255 89.694 104.928 89.9112C103.623 90.1175 102.503 89.5094 101.981 88.2716C101.829 87.9133 101.72 87.5332 101.644 87.1532C100.937 83.1464 100.252 79.1506 99.5559 75.1438C99.5341 75.0244 99.5341 74.8941 99.5233 74.8289L99.5341 74.8181Z\"\n          fill=\"white\"\n        />\n        <path\n          d=\"M101.579 71.2348C99.2296 71.6474 97.022 70.1164 96.5979 67.7927C96.1738 65.4473 97.7398 63.1996 100.089 62.787C102.394 62.3852 104.645 63.9597 105.059 66.2834C105.472 68.6179 103.917 70.8222 101.579 71.2348Z\"\n          fill=\"white\"\n        />\n        <path\n          d=\"M88.5613 75.5021C88.5178 75.1112 88.4416 74.7203 88.4416 74.3294C88.3329 69.6168 89.5074 65.2843 92.3458 61.4839C94.1184 59.1168 96.326 57.2926 99.2188 56.4239C102.264 55.5118 105.178 55.7073 107.799 57.6726C108.267 58.0201 108.582 58.563 108.963 59.0191C108.995 59.0625 108.974 59.1385 108.985 59.3448C108.626 59.2362 108.332 59.1711 108.049 59.0625C107.31 58.7802 106.581 58.4219 105.82 58.2047C102.09 57.1406 98.7294 57.9767 95.7279 60.3221C92.5415 62.8086 90.6166 66.1422 89.6705 70.0186C89.279 71.6148 89.0833 73.2652 88.8005 74.894C88.7679 75.1003 88.7353 75.2958 88.7026 75.5021C88.6591 75.5021 88.6156 75.5021 88.5721 75.5021H88.5613Z\"\n          fill=\"white\"\n        />\n        <g filter=\"url(#filter2_d_7224_4716)\">\n          <path\n            d=\"M172.262 -59.7715L132.476 -52.8883C127.741 -52.0693 124.569 -47.5732 125.389 -42.8461L132.283 -3.12089C133.103 1.6062 137.606 4.77429 142.34 3.95523L182.126 -2.92793C186.86 -3.74699 190.033 -8.24304 189.213 -12.9701L182.319 -52.6953C181.499 -57.4224 176.996 -60.5905 172.262 -59.7715Z\"\n            fill=\"#3FAED6\"\n          />\n        </g>\n        <g filter=\"url(#filter3_d_7224_4716)\">\n          <path\n            d=\"M185.259 9.72183L146.17 16.4845C141.435 17.3035 138.262 21.7996 139.083 26.5267L145.856 65.5565C146.676 70.2836 151.179 73.4517 155.913 72.6326L195.003 65.8699C199.737 65.0509 202.91 60.5548 202.09 55.8277L195.317 16.798C194.496 12.0709 189.993 8.90277 185.259 9.72183Z\"\n            fill=\"#213D55\"\n          />\n        </g>\n        <path\n          d=\"M149.885 43.709L150.908 43.5352C150.853 43.2095 150.679 42.9163 150.407 42.71C149.961 42.3517 149.309 42.2105 148.428 42.3625C147.547 42.5145 147.08 42.9272 146.906 43.1769C146.732 43.4266 146.492 43.8175 146.732 44.4039C146.862 44.6645 147.09 44.8817 147.362 45.0011C147.819 45.2183 148.385 45.2834 148.602 45.316C148.82 45.3486 149.603 45.3811 149.951 45.5549C150.114 45.6309 150.222 45.772 150.266 45.9458C150.277 46.0652 150.407 46.4018 149.853 46.7167C149.722 46.771 149.004 47.0859 148.33 46.8036C148.167 46.7167 147.982 46.5973 147.884 46.1847L146.862 46.3584C146.916 46.7059 147.101 47.0099 147.384 47.2053C147.873 47.5637 148.667 47.7048 149.559 47.542C150.451 47.3791 151.136 46.9339 151.299 46.315C151.364 45.9892 151.375 45.316 150.69 44.9251C150.396 44.7513 149.951 44.6536 149.668 44.6102C149.385 44.5668 148.308 44.5016 148.026 44.3387C147.743 44.1759 147.732 44.0673 147.689 43.9153C147.645 43.7632 147.699 43.3289 148.232 43.1552C148.765 42.9814 149.7 42.7968 149.896 43.6981L149.885 43.709Z\"\n          fill=\"#F08B1F\"\n        />\n        <path\n          d=\"M152.049 47.0967L152.996 46.9339L152.245 42.6231L152.104 41.7979L151.158 41.9607L152.049 47.0967Z\"\n          fill=\"#F08B1F\"\n        />\n        <path\n          d=\"M152.68 45.5114L153.887 45.3051C153.887 45.3051 154.464 45.2182 154.855 44.9576C155.247 44.7187 155.508 44.3278 155.595 43.8826C155.736 43.1334 155.421 42.4385 155.138 42.1453C154.855 41.8521 154.311 41.4178 153.311 41.5915L151.995 41.8196L152.136 42.6448L153.398 42.4276C153.398 42.4276 154.235 42.2213 154.572 43.0357C154.746 43.5243 154.692 44.0455 154.257 44.3278C154.061 44.469 153.431 44.545 152.506 44.7079L152.702 45.5223L152.68 45.5114Z\"\n          fill=\"#F08B1F\"\n        />\n        <path\n          d=\"M156.758 46.2821L157.52 40.8638L156.693 41.0049L155.747 46.4558L156.758 46.2821Z\"\n          fill=\"#F08B1F\"\n        />\n        <path\n          d=\"M159.303 45.8479L156.747 40.9942L157.574 40.853L160.304 45.6741L159.303 45.8479Z\"\n          fill=\"#F08B1F\"\n        />\n        <path\n          d=\"M158.761 43.8947L156.5 44.2859L156.648 45.1418L158.909 44.7506L158.761 43.8947Z\"\n          fill=\"#F08B1F\"\n        />\n        <path\n          d=\"M160.793 45.5875L161.75 45.4246L161 41.1138L160.858 40.2886L159.901 40.4515L160.793 45.5875Z\"\n          fill=\"#F08B1F\"\n        />\n        <path\n          d=\"M161.424 44.0021L162.631 43.7958C162.631 43.7958 163.207 43.7089 163.599 43.4483C163.99 43.2095 164.251 42.8186 164.338 42.3734C164.48 41.6241 164.164 40.9292 163.882 40.636C163.599 40.3428 163.055 39.9085 162.055 40.0822L160.739 40.3103L160.88 41.1355L162.142 40.9183C162.142 40.9183 162.979 40.712 163.316 41.5264C163.49 42.015 163.436 42.5362 163.001 42.8186C162.805 42.9597 162.174 43.0357 161.25 43.1986L161.446 44.013L161.424 44.0021Z\"\n          fill=\"#F08B1F\"\n        />\n        <path\n          d=\"M163.816 45.0663L164.904 44.8708L163.523 43.0249L162.566 43.3289L163.816 45.0663Z\"\n          fill=\"#F08B1F\"\n        />\n        <path\n          d=\"M165.514 39.4914L164.496 39.6675L165.388 44.803L166.406 44.6269L165.514 39.4914Z\"\n          fill=\"#F08B1F\"\n        />\n        <path\n          d=\"M167.362 39.1591L168.59 38.9419L165.872 43.8499L165.643 42.536L167.362 39.1591Z\"\n          fill=\"#F08B1F\"\n        />\n        <path\n          d=\"M168.351 44.2734L169.482 44.0779L166.796 41.2004L166.328 42.0474L168.351 44.2734Z\"\n          fill=\"#F08B1F\"\n        />\n        <path\n          d=\"M171.555 38.4544L170.526 38.6323L171.417 43.7678L172.446 43.5899L171.555 38.4544Z\"\n          fill=\"white\"\n        />\n        <path\n          d=\"M175.043 37.8484L174.014 38.0264L174.905 43.1619L175.934 42.9839L175.043 37.8484Z\"\n          fill=\"white\"\n        />\n        <path\n          d=\"M175.173 40.342L171.305 41.0112L171.452 41.8564L175.32 41.1872L175.173 40.342Z\"\n          fill=\"white\"\n        />\n        <path\n          d=\"M176.824 37.5381L175.796 37.7161L176.687 42.8516L177.716 42.6736L176.824 37.5381Z\"\n          fill=\"white\"\n        />\n        <path\n          d=\"M178.454 42.5252L179.411 42.3623L178.672 38.0516L178.519 37.2263L177.562 37.3892L178.454 42.5252Z\"\n          fill=\"white\"\n        />\n        <path\n          d=\"M179.085 40.9399L180.292 40.7336C180.292 40.7336 180.868 40.6467 181.26 40.3861C181.651 40.1472 181.912 39.7563 181.999 39.3111C182.141 38.5619 181.825 37.8669 181.543 37.5738C181.26 37.2806 180.716 36.8463 179.716 37.02L178.4 37.248L178.541 38.0733L179.803 37.8561C179.803 37.8561 180.64 37.6498 180.977 38.4642C181.151 38.9528 181.097 39.474 180.662 39.7563C180.466 39.8975 179.835 39.9735 178.911 40.1363L179.107 40.9507L179.085 40.9399Z\"\n          fill=\"white\"\n        />\n        <path\n          d=\"M181.477 42.004L182.576 41.8194L181.184 39.9626L180.227 40.2667L181.477 42.004Z\"\n          fill=\"white\"\n        />\n        <path\n          d=\"M185.947 35.9343L186.099 36.7704L183.337 37.2482L183.565 38.5838L185.979 38.1712L186.132 38.9964L183.707 39.409L183.935 40.7229L186.697 40.2451L186.839 41.0812L183.054 41.7327L182.162 36.6075L185.947 35.9343Z\"\n          fill=\"white\"\n        />\n        <path\n          d=\"M189.72 40.4404C189.72 40.4404 188.872 39.7455 189.111 38.7248C189.351 37.7041 190.155 37.4869 190.514 37.4869C190.514 37.4869 191.058 36.716 191.123 35.7605C191.123 35.7605 192.004 36.2491 192.189 38.019C192.189 38.019 192.863 38.019 193.429 37.7475C193.429 37.7475 193.733 39.1808 192.004 40.2015C192.004 40.2015 195.234 39.7346 194.44 36.1188C194.44 36.1188 193.809 36.4988 193.146 36.564C193.146 36.564 192.407 34.338 190.569 33.415C190.569 33.415 190.71 34.5009 190.025 35.9885C190.025 35.9885 188.644 36.2165 188.263 37.6715C187.883 39.1265 188.85 40.1255 189.72 40.4513V40.4404Z\"\n          fill=\"#F08B1F\"\n        />\n        <g filter=\"url(#filter4_d_7224_4716)\">\n          <path\n            d=\"M22.5159 -44.4727L-16.7129 -37.6859C-21.4473 -36.8669 -24.6202 -32.3708 -23.7999 -27.6437L-17.0028 11.5252C-16.1824 16.2522 -11.6795 19.4203 -6.94517 18.6013L32.2837 11.8145C37.018 10.9955 40.191 6.49941 39.3707 1.77231L32.5735 -37.3966C31.7532 -42.1237 27.2503 -45.2917 22.5159 -44.4727Z\"\n            fill=\"#089247\"\n          />\n        </g>\n        <g filter=\"url(#filter5_d_7224_4716)\">\n          <path\n            d=\"M49.1231 92.2327L9.64777 99.0621C4.91344 99.8812 1.7405 104.377 2.56081 109.104L9.40067 148.519C10.221 153.246 14.7239 156.414 19.4583 155.595L58.9336 148.766C63.6679 147.947 66.8408 143.451 66.0205 138.724L59.1807 99.3089C58.3604 94.5818 53.8574 91.4137 49.1231 92.2327Z\"\n            fill=\"#89C81A\"\n          />\n        </g>\n        <path\n          d=\"M54.9793 117.035L54.8161 116.08L48.911 117.101L50.4118 125.733L51.3688 125.57L50.7054 121.737L55.2403 120.955L55.0771 120L50.5423 120.782L50.042 117.904L54.9901 117.046L54.9793 117.035Z\"\n          fill=\"white\"\n        />\n        <path\n          d=\"M44.2348 118.892L44.0716 117.937L38.1665 118.957L39.6673 127.59L45.5724 126.569L45.4092 125.613L40.4611 126.471L39.9609 123.594L44.4958 122.812L44.3326 121.856L39.7978 122.638L39.2975 119.761L44.2456 118.903L44.2348 118.892Z\"\n          fill=\"white\"\n        />\n        <path\n          d=\"M28.0636 121.694L31.0977 121.172C31.8916 121.031 32.6529 121.563 32.7834 122.356C32.9139 123.149 32.3919 123.909 31.598 124.039L28.5639 124.56L28.0636 121.683V121.694ZM34.2297 128.534L35.4804 128.317L31.6415 125.027L31.772 125.005C33.0987 124.756 33.9687 123.485 33.7186 122.161C33.4794 120.868 32.2396 120 30.9346 120.206L26.9326 120.901L28.4334 129.533L29.4012 129.371L28.7379 125.538L30.3909 125.255L34.2297 128.545V128.534Z\"\n          fill=\"white\"\n        />\n        <path\n          d=\"M13.3932 123.919L14.0784 123.116L18.3957 126.819L15.5682 131.748L14.6547 131.227L17.0472 127.058L13.3932 123.93V123.919Z\"\n          fill=\"black\"\n        />\n        <path\n          d=\"M22.2237 122.399L21.3102 121.878L18.4827 126.808L22.8001 130.511L23.4852 129.707L19.8312 126.58L22.2237 122.41V122.399Z\"\n          fill=\"black\"\n        />\n        <g filter=\"url(#filter6_d_7224_4716)\">\n          <path\n            d=\"M199.986 78.1895L160.51 85.0189C155.776 85.838 152.603 90.334 153.423 95.0611L160.263 134.476C161.084 139.203 165.587 142.371 170.321 141.552L209.796 134.723C214.531 133.904 217.703 129.408 216.883 124.681L210.043 85.2656C209.223 80.5385 204.72 77.3705 199.986 78.1895Z\"\n            fill=\"white\"\n          />\n        </g>\n        <path\n          d=\"M162.359 108.794L163.088 107.491C163.686 107.849 164.436 107.98 165.056 107.871C165.719 107.752 165.98 107.458 165.915 107.057C165.839 106.633 165.426 106.557 164.73 106.416L163.718 106.177C162.881 106.003 162.065 105.482 161.88 104.429C161.663 103.202 162.598 102.018 164.164 101.747C165.045 101.595 165.969 101.769 166.709 102.246L165.991 103.549C165.437 103.289 164.893 103.18 164.425 103.267C163.881 103.365 163.566 103.636 163.642 104.016C163.718 104.44 164.208 104.516 164.904 104.657L165.882 104.874C166.861 105.08 167.514 105.591 167.688 106.622C167.905 107.849 167.057 109.098 165.284 109.402C164.295 109.576 163.251 109.402 162.359 108.805V108.794Z\"\n          fill=\"#084D6D\"\n        />\n        <path\n          d=\"M168.351 105.83C168.025 103.973 169.232 102.659 170.787 102.387C171.472 102.268 172.049 102.409 172.527 102.702L171.896 103.918C171.603 103.777 171.374 103.734 171.124 103.777C170.341 103.908 169.961 104.603 170.124 105.526C170.287 106.448 170.907 106.97 171.603 106.85C171.972 106.785 172.266 106.6 172.516 106.329L173.386 107.306C172.929 107.893 172.244 108.186 171.646 108.294C170.069 108.566 168.667 107.697 168.351 105.83Z\"\n          fill=\"#084D6D\"\n        />\n        <path\n          d=\"M173.332 104.961C173.006 103.104 174.148 101.801 175.572 101.551C176.997 101.302 178.519 102.149 178.835 104.005C179.15 105.862 178.019 107.176 176.594 107.426C175.17 107.675 173.658 106.818 173.343 104.961H173.332ZM177.04 104.32C176.877 103.397 176.475 102.843 175.811 102.952C175.148 103.061 174.952 103.723 175.115 104.657C175.279 105.591 175.692 106.134 176.344 106.025C176.997 105.916 177.203 105.265 177.04 104.32Z\"\n          fill=\"#084D6D\"\n        />\n        <path\n          d=\"M180.009 104.505L179.411 101.03L181.162 100.726L181.727 103.973C181.858 104.755 182.108 104.939 182.554 104.863C182.945 104.798 183.163 104.592 183.391 104.125L182.75 100.444L184.501 100.14L185.468 105.743L184.044 105.993L183.783 105.243H183.739C183.37 105.884 182.902 106.329 182.141 106.459C180.912 106.677 180.238 105.895 179.998 104.494L180.009 104.505Z\"\n          fill=\"#084D6D\"\n        />\n        <path\n          d=\"M186.763 103.397L186.382 101.237L185.621 101.367L185.392 100.064L186.241 99.8576L186.143 98.1094L187.589 97.8596L187.883 99.5752L189.209 99.3472L189.449 100.715L188.122 100.943L188.492 103.082C188.6 103.712 188.938 103.897 189.351 103.832C189.536 103.799 189.721 103.745 189.862 103.658L190.34 104.831C190.069 104.994 189.655 105.178 189.101 105.276C187.698 105.515 186.969 104.722 186.741 103.408L186.763 103.397Z\"\n          fill=\"#084D6D\"\n        />\n        <path\n          d=\"M163.827 114.527L165.589 114.223L166.611 120.098L169.471 119.598L169.721 121.064L165.1 121.867L163.827 114.527Z\"\n          fill=\"#084D6D\"\n        />\n        <path\n          d=\"M169.906 118.154C169.591 116.341 170.711 114.994 172.049 114.766C173.68 114.484 174.669 115.515 174.93 117.046C174.985 117.361 175.007 117.665 174.996 117.828L171.69 118.404C171.983 119.131 172.571 119.37 173.277 119.24C173.68 119.175 174.071 118.979 174.43 118.686L175.181 119.641C174.669 120.163 173.93 120.51 173.267 120.619C171.668 120.901 170.232 120.043 169.906 118.165V118.154ZM173.375 116.894C173.277 116.34 172.962 115.971 172.331 116.08C171.831 116.167 171.472 116.558 171.472 117.231L173.386 116.905L173.375 116.894Z\"\n          fill=\"#084D6D\"\n        />\n        <path\n          d=\"M175.942 118.382C175.735 117.198 176.54 116.395 178.715 115.787C178.585 115.331 178.302 115.103 177.725 115.2C177.269 115.276 176.844 115.515 176.344 115.928L175.539 114.907C176.192 114.332 176.953 113.908 177.834 113.756C179.28 113.506 180.237 114.169 180.542 115.928L181.097 119.109L179.672 119.359L179.454 118.816H179.411C179.02 119.316 178.563 119.696 177.932 119.804C176.91 119.978 176.127 119.326 175.964 118.393L175.942 118.382ZM179.052 117.752L178.9 116.862C177.812 117.198 177.519 117.567 177.595 117.958C177.649 118.284 177.888 118.404 178.28 118.338C178.628 118.273 178.835 118.067 179.063 117.752H179.052Z\"\n          fill=\"#084D6D\"\n        />\n        <path\n          d=\"M181.477 113.268L182.902 113.018L183.195 113.963H183.239C183.511 113.126 184.076 112.67 184.642 112.573C184.968 112.518 185.164 112.518 185.338 112.573L185.262 114.104C185.055 114.104 184.925 114.093 184.674 114.136C184.261 114.212 183.794 114.571 183.63 115.363L184.185 118.567L182.445 118.871L181.477 113.268Z\"\n          fill=\"#084D6D\"\n        />\n        <path\n          d=\"M186.056 112.475L187.48 112.225L187.73 112.898H187.774C188.155 112.356 188.655 111.878 189.427 111.747C190.645 111.541 191.319 112.312 191.558 113.713L192.157 117.187L190.406 117.492L189.84 114.245C189.71 113.463 189.46 113.268 189.014 113.344C188.622 113.409 188.416 113.648 188.122 114.017L188.774 117.774L187.034 118.078L186.067 112.475H186.056Z\"\n          fill=\"#084D6D\"\n        />\n        <path\n          d=\"M192.146 109.673C192.048 109.13 192.396 108.707 192.972 108.609C193.549 108.511 194.016 108.794 194.114 109.326C194.212 109.858 193.864 110.303 193.288 110.401C192.711 110.499 192.243 110.216 192.146 109.673ZM192.548 111.346L194.288 111.041L195.256 116.644L193.516 116.948L192.548 111.346Z\"\n          fill=\"#084D6D\"\n        />\n        <path\n          d=\"M195.724 110.803L197.148 110.553L197.398 111.226H197.442C197.822 110.683 198.323 110.205 199.095 110.075C200.313 109.869 200.987 110.64 201.226 112.04L201.824 115.515L200.074 115.819L199.508 112.573C199.378 111.791 199.127 111.595 198.682 111.671C198.29 111.736 198.083 111.975 197.79 112.344L198.442 116.101L196.702 116.406L195.734 110.803H195.724Z\"\n          fill=\"#084D6D\"\n        />\n        <path\n          d=\"M203.021 116.286C202.945 115.819 203.151 115.407 203.619 115.048V115.005C203.282 114.853 203.021 114.592 202.934 114.136C202.868 113.745 203.053 113.289 203.369 112.964V112.92C202.923 112.714 202.466 112.258 202.357 111.606C202.118 110.238 203.129 109.38 204.358 109.174C204.674 109.12 204.989 109.109 205.261 109.152L207.327 108.794L207.545 110.054L206.664 110.206C206.783 110.347 206.903 110.596 206.957 110.868C207.186 112.171 206.294 112.92 205.043 113.137C204.848 113.17 204.619 113.181 204.358 113.148C204.249 113.278 204.217 113.387 204.239 113.561C204.282 113.832 204.532 113.919 205.13 113.811L206.022 113.658C207.414 113.42 208.262 113.702 208.436 114.712C208.643 115.895 207.556 116.949 205.598 117.285C204.304 117.513 203.173 117.285 202.999 116.286H203.021ZM206.827 115.309C206.773 114.972 206.468 114.951 205.935 115.048L205.391 115.146C204.989 115.211 204.772 115.233 204.587 115.211C204.434 115.396 204.369 115.57 204.402 115.754C204.467 116.156 204.978 116.286 205.707 116.156C206.435 116.026 206.892 115.667 206.827 115.309ZM205.413 111.074C205.315 110.499 204.967 110.26 204.554 110.325C204.141 110.39 203.891 110.738 203.989 111.313C204.086 111.889 204.445 112.149 204.859 112.084C205.272 112.019 205.522 111.661 205.413 111.074Z\"\n          fill=\"#084D6D\"\n        />\n        <g filter=\"url(#filter7_d_7224_4716)\">\n          <path\n            d=\"M35.8531 23.1502L-3.62225 29.9796C-8.35658 30.7987 -11.5295 35.2947 -10.7092 40.0218L-3.86935 79.4368C-3.04903 84.1639 1.4539 87.3319 6.18823 86.5129L45.6635 79.6835C50.3979 78.8644 53.5708 74.3684 52.7505 69.6413L45.9106 30.2263C45.0903 25.4992 40.5874 22.3311 35.8531 23.1502Z\"\n            fill=\"white\"\n          />\n        </g>\n        <path\n          d=\"M9.65223 59.1059C8.52123 59.3013 7.83611 58.4761 7.68386 57.6183C7.53161 56.7605 7.93398 55.7506 9.06498 55.5552C9.94586 55.4032 10.8267 55.9895 11.0116 57.0645C11.1639 58.096 10.5114 58.943 9.65223 59.095V59.1059ZM10.6419 55.4575C10.2504 55.1534 9.69573 54.7951 8.86923 54.9363C7.50986 55.1751 6.66161 56.3696 6.91173 57.7812C7.17273 59.2796 8.44511 60.018 9.68486 59.8117C10.457 59.6814 10.9572 59.2253 11.2074 58.7476H11.24L11.3487 59.3556L12.0991 59.2253L11.3161 54.6865L10.5657 54.8168L10.6745 55.4575H10.6419Z\"\n          fill=\"#73C41D\"\n        />\n        <path\n          d=\"M17.1233 53.5139C16.3186 53.6551 15.851 54.2197 15.7096 54.7301C15.4268 54.2414 14.7743 53.9265 14.0457 54.046C13.4693 54.1437 13.0452 54.5346 12.8168 55.0015H12.7842L12.6863 54.426L11.936 54.5563L12.719 59.0951L13.4693 58.9648L13.0343 56.4457C12.8712 55.501 13.2736 54.8712 14.024 54.7409C14.6873 54.6215 15.2093 55.1318 15.3398 55.881L15.8075 58.5956L16.5796 58.4653L16.1337 55.9245C15.9488 54.8712 16.4817 54.3283 17.1233 54.2197C17.8955 54.0894 18.3413 54.6323 18.461 55.3598L18.9286 58.0744L19.679 57.9441L19.2222 55.2947C18.983 53.9374 18.1456 53.3728 17.1233 53.5465\"\n          fill=\"#73C41D\"\n        />\n        <path\n          d=\"M27.9657 55.9352C27.0849 56.0873 26.1822 55.5009 25.9974 54.4476C25.8234 53.4487 26.3889 52.5909 27.3567 52.4171C28.3246 52.2434 29.1511 52.9058 29.3251 53.8722C29.4991 54.8385 28.9445 55.7615 27.9657 55.9244M27.2371 51.7439C25.856 51.9828 24.9751 53.1881 25.2252 54.5997C25.4754 56.0113 26.7042 56.8473 28.0854 56.6085C29.4665 56.3696 30.3256 55.0774 30.0972 53.7527C29.8471 52.3411 28.6509 51.4942 27.2371 51.7439Z\"\n          fill=\"#73C41D\"\n        />\n        <path\n          d=\"M33.338 55.0017C32.4571 55.1537 31.5545 54.5673 31.3696 53.5141C31.1956 52.5151 31.7611 51.6573 32.729 51.4835C33.6969 51.3098 34.5234 51.9722 34.6974 52.9386C34.8387 53.9375 34.2841 54.8279 33.338 54.9908M32.6094 50.8103C31.2282 51.0492 30.3474 52.2545 30.5975 53.6661C30.8476 55.0777 32.0765 55.9137 33.4576 55.6749C34.8387 55.436 35.6979 54.1438 35.4695 52.8191C35.2194 51.4075 34.0231 50.5606 32.6094 50.8103Z\"\n          fill=\"#73C41D\"\n        />\n        <path\n          d=\"M38.9821 51.8853L36.5461 52.3087L36.209 50.3759L35.6544 50.4737L36.4482 55.0125L37.0029 54.9147L36.6331 52.8082L39.0691 52.3847L39.4389 54.4913L39.9935 54.3935L39.1996 49.8547L38.645 49.9525L38.9821 51.8853Z\"\n          fill=\"#73C41D\"\n        />\n        <path\n          d=\"M40.9614 51.744L40.6786 50.1152L41.5051 49.9741C42.0815 49.8763 42.473 50.1152 42.56 50.6473C42.6361 51.0925 42.3969 51.5051 41.7879 51.6028L40.9614 51.744ZM42.2881 51.972C42.8536 51.7657 43.2342 51.1793 43.1255 50.5496C43.0167 49.9198 42.4839 49.29 41.342 49.4854L40.037 49.7135L40.82 54.2523L41.3746 54.1545L41.0484 52.276L41.6574 52.1675L43.3647 53.8071L44.0607 53.6876L42.2772 51.972H42.2881Z\"\n          fill=\"#73C41D\"\n        />\n        <path\n          d=\"M43.4409 49.1271L44.1586 48.9968L44.1804 49.1163L43.8759 49.1597L44.0281 50.0501L43.8867 50.0718L43.7345 49.1923L43.4626 49.2357L43.4409 49.1271Z\"\n          fill=\"#73C41D\"\n        />\n        <path\n          d=\"M44.9198 49.5832L45.1047 48.834L45.2678 48.8123L45.4962 49.8004L45.3548 49.8221L45.1917 49.0186L45.0068 49.7352L44.8872 49.7569L44.474 49.1489L44.5827 49.9524L44.4413 49.9741L44.3217 48.9751L44.4957 48.9426L44.9198 49.5832Z\"\n          fill=\"#73C41D\"\n        />\n        <path\n          d=\"M4.12773 60.1159C3.18161 60.2788 2.25723 59.6707 2.08323 58.6717C1.90923 57.6728 2.46385 56.7281 3.54048 56.5435C4.6171 56.3589 5.4436 57.1298 5.59585 58.0419C5.76985 59.0409 5.21523 59.9313 4.12773 60.1159ZM3.46435 55.816C2.58348 55.968 2.15935 56.3589 1.88748 56.7498L1.82223 56.8475L1.31111 53.9158L0.56073 54.0461L1.38723 58.8346C1.63736 60.3005 2.94235 61.0389 4.24735 60.8217C5.68285 60.572 6.5746 59.2798 6.33535 57.8682C6.12873 56.5326 4.76935 55.5988 3.47523 55.8268\"\n          fill=\"#73C41D\"\n        />\n        <path\n          d=\"M22.5935 56.9234C21.6473 57.0863 20.723 56.4782 20.549 55.4792C20.375 54.4803 20.9296 53.5356 22.0062 53.351C23.0828 53.1664 23.9093 53.9373 24.0616 54.8495C24.203 55.8484 23.681 56.7388 22.5935 56.9234ZM21.9301 52.6235C21.0492 52.7755 20.6251 53.1664 20.3532 53.5573L20.288 53.655L19.853 51.1685L19.1026 51.2988L19.853 55.6421C20.1031 57.108 21.4081 57.8464 22.7131 57.6292C24.1486 57.3794 25.0403 56.0873 24.8011 54.6757C24.5727 53.351 23.2351 52.4063 21.941 52.6343\"\n          fill=\"#73C41D\"\n        />\n        <path\n          d=\"M0.756475 57.2818C0.756475 57.2818 0.41935 57.2818 0.125726 57.2818C-0.18965 57.2818 -0.331024 57.2818 -0.7769 57.1841C-1.19015 57.0863 -1.6469 56.7606 -2.06015 56.3805C-2.49515 56.0005 -3.45215 55.4576 -3.45215 55.4576C-3.45215 55.4576 -3.20202 55.4467 -2.9084 55.4576C-2.68002 55.4793 -2.09277 55.5444 -1.48377 55.7507C-1.33152 55.7833 -1.26627 55.8268 -1.11402 55.8919C-0.896524 55.9679 -0.668148 56.1308 -0.450648 56.2937C-0.189648 56.4783 0.0387259 56.6411 0.234476 56.804C-0.0156491 56.5108 -0.700773 55.3707 -1.78827 54.5346C-1.88615 54.4369 -1.09227 54.7844 -0.863899 54.9472C-0.200524 55.4576 -0.0591495 55.7725 0.223601 56.2937L0.745602 57.3144L0.756475 57.2818Z\"\n          fill=\"#73C41D\"\n        />\n        <g filter=\"url(#filter8_d_7224_4716)\">\n          <path\n            d=\"M101.266 -26.4384L61.7908 -19.609C57.0564 -18.79 53.8835 -14.2939 54.7038 -9.56681L61.5437 29.8481C62.364 34.5752 66.8669 37.7433 71.6013 36.9243L111.077 30.0949C115.811 29.2758 118.984 24.7798 118.164 20.0527L111.324 -19.3623C110.503 -24.0894 106 -27.2575 101.266 -26.4384Z\"\n            fill=\"white\"\n          />\n        </g>\n        <path\n          d=\"M64.7015 12.1978C64.1251 12.0132 63.6357 11.644 63.2334 11.1662C62.8636 10.6885 62.6026 10.1238 62.4939 9.49406C62.3851 8.86427 62.4395 8.2562 62.6352 7.70242C62.8201 7.12693 63.1899 6.6383 63.6684 6.23655C64.1795 5.82393 64.7776 5.56333 65.3975 5.45474C66.137 5.29187 66.8982 5.42217 67.5942 5.71535L67.094 6.89891C66.6372 6.66002 66.137 6.55144 65.6041 6.63831C65.2017 6.70346 64.8102 6.87719 64.5057 7.14865C64.223 7.38754 63.9946 7.74586 63.9076 8.11505C63.7771 8.49509 63.7554 8.90771 63.8532 9.30947C63.9185 9.71123 64.0816 10.0695 64.2991 10.3844C64.7994 11.0359 65.5932 11.3508 66.398 11.2097C66.8982 11.1228 67.3659 10.8514 67.7139 10.4713L68.573 11.3508C68.0292 11.8938 67.3441 12.2412 66.5937 12.3715C65.963 12.4475 65.3105 12.4041 64.7015 12.1869V12.1978Z\"\n          fill=\"#3067DB\"\n        />\n        <path\n          d=\"M70.7263 5.82399L71.0199 7.53961L73.4233 7.12699L73.5973 8.12596L71.1939 8.53858L71.4875 10.2542L74.3911 9.75471L74.576 10.8188L70.3674 11.5463L69.2364 4.99875L73.4233 4.27124L73.6081 5.33536L70.7371 5.83484L70.7263 5.82399Z\"\n          fill=\"#3067DB\"\n        />\n        <path\n          d=\"M77.7406 7.52882L77.3382 7.59397L77.795 10.2434L76.5117 10.4606L75.3807 3.91299L77.7189 3.51122C78.0886 3.44607 78.5127 3.43522 78.8825 3.53294C79.2522 3.63067 79.5676 3.79355 79.8395 4.07586C80.1114 4.35818 80.3071 4.70565 80.3397 5.08569C80.4485 5.52003 80.3615 5.97607 80.1114 6.34526C79.8612 6.71444 79.4915 7.02934 79.0674 7.20307L81.6991 9.5702L80.144 9.84165L77.7515 7.52882H77.7406ZM77.1642 6.63844L77.9472 6.50814C78.3496 6.44299 78.6215 6.29097 78.8064 6.10637C78.9912 5.92178 79.0782 5.6069 79.0021 5.36801C78.9586 5.08569 78.8064 4.82509 78.5671 4.70565C78.317 4.55363 77.9907 4.54277 77.5884 4.61878L76.8706 4.73822L77.1642 6.64929V6.63844Z\"\n          fill=\"#3067DB\"\n        />\n        <path\n          d=\"M84.3526 9.114L83.0694 9.33117L81.9384 2.78357L83.2216 2.56641L84.3526 9.114Z\"\n          fill=\"#3067DB\"\n        />\n        <path\n          d=\"M89.5618 1.91498C90.1055 2.07786 90.6167 2.4036 90.9755 2.85965C91.3344 3.3157 91.6063 3.86948 91.6715 4.47755C91.7694 5.07476 91.7477 5.68283 91.5628 6.22575C91.3779 6.76866 90.9973 7.2573 90.5514 7.61562C90.0077 7.99567 89.3769 8.26712 88.7244 8.38657L86.6038 8.75575L85.4728 2.20815L87.5934 1.83897C88.2459 1.69781 88.9201 1.70867 89.5726 1.91498H89.5618ZM90.0185 6.4212C90.3557 5.976 90.4753 5.3788 90.3557 4.66215C90.236 3.94549 89.9315 3.48944 89.453 3.15283C88.9854 2.8488 88.3547 2.72935 87.6043 2.85965L86.9192 2.9791L87.6913 7.40931L88.3764 7.28987C89.1594 7.18129 89.6923 6.89896 90.0294 6.4212H90.0185Z\"\n          fill=\"#3067DB\"\n        />\n        <path\n          d=\"M95.2711 7.22485L93.9879 7.44201L92.8569 0.894418L94.1401 0.677246L95.2711 7.22485Z\"\n          fill=\"#3067DB\"\n        />\n        <path\n          d=\"M101.035 4.68396L98.3814 5.14001L98.1095 6.72534L96.7067 6.96422L98.1639 -0.028567L99.4798 -0.256592L103.21 5.83495L101.807 6.07383L101.046 4.66225L101.035 4.68396ZM100.491 3.75014L99.0557 1.20929L98.5554 4.08676L100.491 3.75014Z\"\n          fill=\"#3067DB\"\n        />\n        <path\n          d=\"M109.311 -1.95068L110.442 4.59691L109.256 4.80322L105.254 0.839917L106.037 5.357L104.787 5.57417L103.656 -0.973429L104.841 -1.17974L108.811 2.78357L108.028 -1.73352L109.311 -1.95068Z\"\n          fill=\"#3067DB\"\n        />\n      </g>\n      <defs>\n        <filter\n          id=\"filter0_d_7224_4716\"\n          x=\"76.2388\"\n          y=\"104.234\"\n          width=\"75.0391\"\n          height=\"74.9429\"\n          filterUnits=\"userSpaceOnUse\"\n          colorInterpolationFilters=\"sRGB\"\n        >\n          <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n          <feColorMatrix\n            in=\"SourceAlpha\"\n            type=\"matrix\"\n            values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n            result=\"hardAlpha\"\n          />\n          <feOffset />\n          <feGaussianBlur stdDeviation=\"3\" />\n          <feColorMatrix\n            type=\"matrix\"\n            values=\"0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0.25 0\"\n          />\n          <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_7224_4716\" />\n          <feBlend\n            mode=\"normal\"\n            in=\"SourceGraphic\"\n            in2=\"effect1_dropShadow_7224_4716\"\n            result=\"shape\"\n          />\n        </filter>\n        <filter\n          id=\"filter1_d_7224_4716\"\n          x=\"63.173\"\n          y=\"34.9885\"\n          width=\"75.718\"\n          height=\"75.6206\"\n          filterUnits=\"userSpaceOnUse\"\n          colorInterpolationFilters=\"sRGB\"\n        >\n          <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n          <feColorMatrix\n            in=\"SourceAlpha\"\n            type=\"matrix\"\n            values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n            result=\"hardAlpha\"\n          />\n          <feOffset />\n          <feGaussianBlur stdDeviation=\"3\" />\n          <feColorMatrix\n            type=\"matrix\"\n            values=\"0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0.25 0\"\n          />\n          <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_7224_4716\" />\n          <feBlend\n            mode=\"normal\"\n            in=\"SourceGraphic\"\n            in2=\"effect1_dropShadow_7224_4716\"\n            result=\"shape\"\n          />\n        </filter>\n        <filter\n          id=\"filter2_d_7224_4716\"\n          x=\"119.26\"\n          y=\"-65.9004\"\n          width=\"76.0826\"\n          height=\"75.9846\"\n          filterUnits=\"userSpaceOnUse\"\n          colorInterpolationFilters=\"sRGB\"\n        >\n          <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n          <feColorMatrix\n            in=\"SourceAlpha\"\n            type=\"matrix\"\n            values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n            result=\"hardAlpha\"\n          />\n          <feOffset />\n          <feGaussianBlur stdDeviation=\"3\" />\n          <feColorMatrix\n            type=\"matrix\"\n            values=\"0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0.25 0\"\n          />\n          <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_7224_4716\" />\n          <feBlend\n            mode=\"normal\"\n            in=\"SourceGraphic\"\n            in2=\"effect1_dropShadow_7224_4716\"\n            result=\"shape\"\n          />\n        </filter>\n        <filter\n          id=\"filter3_d_7224_4716\"\n          x=\"132.953\"\n          y=\"3.59277\"\n          width=\"75.2654\"\n          height=\"75.1687\"\n          filterUnits=\"userSpaceOnUse\"\n          colorInterpolationFilters=\"sRGB\"\n        >\n          <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n          <feColorMatrix\n            in=\"SourceAlpha\"\n            type=\"matrix\"\n            values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n            result=\"hardAlpha\"\n          />\n          <feOffset />\n          <feGaussianBlur stdDeviation=\"3\" />\n          <feColorMatrix\n            type=\"matrix\"\n            values=\"0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0.25 0\"\n          />\n          <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_7224_4716\" />\n          <feBlend\n            mode=\"normal\"\n            in=\"SourceGraphic\"\n            in2=\"effect1_dropShadow_7224_4716\"\n            result=\"shape\"\n          />\n        </filter>\n        <filter\n          id=\"filter4_d_7224_4716\"\n          x=\"-29.9291\"\n          y=\"-50.6016\"\n          width=\"75.4289\"\n          height=\"75.3318\"\n          filterUnits=\"userSpaceOnUse\"\n          colorInterpolationFilters=\"sRGB\"\n        >\n          <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n          <feColorMatrix\n            in=\"SourceAlpha\"\n            type=\"matrix\"\n            values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n            result=\"hardAlpha\"\n          />\n          <feOffset />\n          <feGaussianBlur stdDeviation=\"3\" />\n          <feColorMatrix\n            type=\"matrix\"\n            values=\"0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0.25 0\"\n          />\n          <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_7224_4716\" />\n          <feBlend\n            mode=\"normal\"\n            in=\"SourceGraphic\"\n            in2=\"effect1_dropShadow_7224_4716\"\n            result=\"shape\"\n          />\n        </filter>\n        <filter\n          id=\"filter5_d_7224_4716\"\n          x=\"-3.56836\"\n          y=\"86.1038\"\n          width=\"75.718\"\n          height=\"75.6206\"\n          filterUnits=\"userSpaceOnUse\"\n          colorInterpolationFilters=\"sRGB\"\n        >\n          <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n          <feColorMatrix\n            in=\"SourceAlpha\"\n            type=\"matrix\"\n            values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n            result=\"hardAlpha\"\n          />\n          <feOffset />\n          <feGaussianBlur stdDeviation=\"3\" />\n          <feColorMatrix\n            type=\"matrix\"\n            values=\"0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0.25 0\"\n          />\n          <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_7224_4716\" />\n          <feBlend\n            mode=\"normal\"\n            in=\"SourceGraphic\"\n            in2=\"effect1_dropShadow_7224_4716\"\n            result=\"shape\"\n          />\n        </filter>\n        <filter\n          id=\"filter6_d_7224_4716\"\n          x=\"147.294\"\n          y=\"72.0605\"\n          width=\"75.718\"\n          height=\"75.6206\"\n          filterUnits=\"userSpaceOnUse\"\n          colorInterpolationFilters=\"sRGB\"\n        >\n          <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n          <feColorMatrix\n            in=\"SourceAlpha\"\n            type=\"matrix\"\n            values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n            result=\"hardAlpha\"\n          />\n          <feOffset />\n          <feGaussianBlur stdDeviation=\"3\" />\n          <feColorMatrix\n            type=\"matrix\"\n            values=\"0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0.25 0\"\n          />\n          <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_7224_4716\" />\n          <feBlend\n            mode=\"normal\"\n            in=\"SourceGraphic\"\n            in2=\"effect1_dropShadow_7224_4716\"\n            result=\"shape\"\n          />\n        </filter>\n        <filter\n          id=\"filter7_d_7224_4716\"\n          x=\"-16.8384\"\n          y=\"17.0212\"\n          width=\"75.718\"\n          height=\"75.6206\"\n          filterUnits=\"userSpaceOnUse\"\n          colorInterpolationFilters=\"sRGB\"\n        >\n          <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n          <feColorMatrix\n            in=\"SourceAlpha\"\n            type=\"matrix\"\n            values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n            result=\"hardAlpha\"\n          />\n          <feOffset />\n          <feGaussianBlur stdDeviation=\"3\" />\n          <feColorMatrix\n            type=\"matrix\"\n            values=\"0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0.25 0\"\n          />\n          <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_7224_4716\" />\n          <feBlend\n            mode=\"normal\"\n            in=\"SourceGraphic\"\n            in2=\"effect1_dropShadow_7224_4716\"\n            result=\"shape\"\n          />\n        </filter>\n        <filter\n          id=\"filter8_d_7224_4716\"\n          x=\"48.5746\"\n          y=\"-32.5674\"\n          width=\"75.718\"\n          height=\"75.6206\"\n          filterUnits=\"userSpaceOnUse\"\n          colorInterpolationFilters=\"sRGB\"\n        >\n          <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n          <feColorMatrix\n            in=\"SourceAlpha\"\n            type=\"matrix\"\n            values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n            result=\"hardAlpha\"\n          />\n          <feOffset />\n          <feGaussianBlur stdDeviation=\"3\" />\n          <feColorMatrix\n            type=\"matrix\"\n            values=\"0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0.25 0\"\n          />\n          <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_7224_4716\" />\n          <feBlend\n            mode=\"normal\"\n            in=\"SourceGraphic\"\n            in2=\"effect1_dropShadow_7224_4716\"\n            result=\"shape\"\n          />\n        </filter>\n        <clipPath id=\"clip0_7224_4716\">\n          <rect width=\"203\" height=\"131\" rx=\"3\" fill=\"white\" />\n        </clipPath>\n      </defs>\n    </svg>\n  );\n}\n","import React from 'react';\n\nexport default function EventCircle() {\n  return (\n    <svg width=\"17\" height=\"17\" viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n      <circle cx=\"8.5\" cy=\"8.5\" r=\"8.5\" fill=\"#EDF2F5\" />\n      <circle cx=\"8.5\" cy=\"8.5\" r=\"5.5\" fill=\"#D6DEE2\" />\n      <circle cx=\"8.5\" cy=\"8.5\" r=\"2.5\" fill=\"#084D6D\" />\n    </svg>\n  );\n}\n","import { Box } from '@mui/material';\nimport React from 'react';\nimport dashboardStyles from '../styles';\n\nfunction KpiBanner() {\n  return (\n    <Box\n      id=\"dashboard-marketplace\"\n      sx={{ ...dashboardStyles.section, ...dashboardStyles.kpiSection, ...styles.section }}\n      onClick={() => window.open('https://scouttalenthq.com/marketplace', '_blank')}\n    ></Box>\n  );\n}\n\nconst styles = {\n  section: {\n    minWidth: '196px',\n    padding: 0,\n    backgroundImage: `url('/images/dashboard/marketplace_tiles.svg')`,\n    backgroundSize: 'cover',\n    backgroundPosition: 'right',\n    overflow: 'hidden',\n    transition: 'box-shadow 0.3s ease-in-out',\n    '&:hover': {\n      boxShadow: '0px 10px 15px -3px rgba(0,0,0,0.1)',\n      cursor: 'pointer'\n    }\n  }\n};\n\nexport default KpiBanner;\n","import { Box, Skeleton } from '@mui/material';\nimport React from 'react';\nimport dashboardStyles from '../styles';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport { useQuery } from '@tanstack/react-query';\nimport InsertDriveFileRoundedIcon from '@mui/icons-material/InsertDriveFileRounded';\nimport ThumbUpAltRoundedIcon from '@mui/icons-material/ThumbUpAltRounded';\nimport CalendarMonthRoundedIcon from '@mui/icons-material/CalendarMonthRounded';\nimport { IKpiItems } from '../types';\nimport Api from '../API';\n\ninterface IProps {\n  onClick?: () => void;\n  type: keyof IKpiItems;\n}\n\nfunction KpiItem({ onClick, type }: IProps) {\n  const { icon, iconColor, title, link } = getDetails(type);\n  const { isLoading, isSuccess, data } = useQuery({\n    queryKey: ['kpiDashboard'],\n    queryFn: Api.getKpiItems\n  });\n\n  function handleRedirect() {\n    window.location.href = `/admin/${link}`;\n  }\n\n  return (\n    <Box\n      id={`kpi-${type}`}\n      onClick={onClick || handleRedirect}\n      sx={{ ...dashboardStyles.section, ...dashboardStyles.kpiSection, ...styles.section }}\n    >\n      <Box display=\"flex\" justifyContent=\"space-between\" alignItems=\"flex-start\">\n        <Box sx={{ backgroundColor: `${iconColor}33`, borderRadius: '6px' }} p={1}>\n          {icon}\n        </Box>\n        {isLoading && <Skeleton animation=\"wave\" width={30} height={30} />}\n        {isSuccess && !!data[type]?.fluctuation_daily && (\n          <Box\n            sx={{\n              ...styles.fluctuation,\n              color:\n                data[type]?.fluctuation_daily > 0\n                  ? theme.palette.success.main\n                  : theme.palette.error.main\n            }}\n          >\n            {data[type]?.fluctuation_daily > 0 && '+'}\n            {data[type]?.fluctuation_daily}\n          </Box>\n        )}\n      </Box>\n      <Box>\n        <Box style={styles.value}>\n          {isLoading && <Skeleton animation=\"wave\" width={70} height={60} />}\n          {isSuccess &&\n            (data[type]?.value.toLocaleString() ? data[type]?.value.toLocaleString() : 0)}\n        </Box>\n        <Box style={styles.title}>{title}</Box>\n      </Box>\n    </Box>\n  );\n}\n\nfunction getDetails(type: keyof IKpiItems): {\n  title: string;\n  icon: JSX.Element;\n  iconColor: string;\n  link: string;\n} {\n  if (type === 'applications')\n    return {\n      title: 'Today’s new applications',\n      icon: <InsertDriveFileRoundedIcon sx={{ color: '#F478FF' }} fontSize=\"small\" />,\n      iconColor: '#F478FF',\n      link: 'candidates'\n    };\n  if (type === 'approvals')\n    return {\n      title: 'Pending approvals',\n      icon: <ThumbUpAltRoundedIcon sx={{ color: '#91CAFF' }} fontSize=\"small\" />,\n      iconColor: '#91CAFF',\n      link: 'requisitions'\n    };\n  return {\n    title: `Today's Events`,\n    icon: <CalendarMonthRoundedIcon sx={{ color: '#FFCC68' }} fontSize=\"small\" />,\n    iconColor: '#FFCC68',\n    link: 'calendar/events'\n  };\n}\n\nconst styles = {\n  section: {\n    transition: 'box-shadow 0.3s ease-in-out',\n    justifyContent: 'space-between',\n    '&:hover': {\n      boxShadow: '0px 10px 15px -3px rgba(0,0,0,0.05)',\n      cursor: 'pointer'\n    }\n  },\n  value: {\n    fontSize: '36px',\n    fontWeight: 'bold',\n    color: '#333'\n  },\n  title: {\n    color: '#333',\n    fontWeight: '600',\n    fontSize: '16px'\n  },\n  fluctuation: {\n    fontWeight: 'bold',\n    fontSize: '20px'\n  }\n};\n\nexport default KpiItem;\n","import { Skeleton } from '@mui/material';\nimport React from 'react';\n\nexport default function Loader() {\n  return <Skeleton animation=\"wave\" width=\"100%\" height={50} />;\n}\n","import { Box } from '@mui/material';\nimport React, { useState } from 'react';\nimport dashboardStyles from '../styles';\nimport CurrentJobs from '../../Jobs/JobsTable/CurrentJobs';\nimport { jobsConfig } from '../../Jobs/config';\nimport InfoIcon from '@mui/icons-material/Info';\n\ninterface IProps {\n  userPermissions?: Record<string, Record<string, boolean>>;\n  setSnackbar: React.Dispatch<\n    React.SetStateAction<{\n      message: string;\n      state: 'success' | 'warning' | 'error';\n    }>\n  >;\n}\n\nfunction NewApplicants({ userPermissions, setSnackbar }: IProps) {\n  const [page, setPage] = useState(1);\n  const [rowsPerPage, setRowsPerPage] = useState(10);\n  const [order, setOrder] = useState('desc');\n  const [orderBy, setOrderBy] = useState('created_at');\n\n  return (\n    <Box id=\"dashboard-new-applicants\" sx={{ ...dashboardStyles.section, flexBasis: '100%' }}>\n      <Box sx={dashboardStyles.titleContainer}>\n        <Box sx={dashboardStyles.sectionTitle}>Jobs with new Applications</Box>\n        <Box sx={dashboardStyles.noticeContainer}>\n          <InfoIcon sx={dashboardStyles.infoIcon} />\n          <Box sx={{ marginLeft: 1 }}>\n            New Applications are displayed in brackets in the &apos;Applications&apos; column\n          </Box>\n        </Box>\n      </Box>\n      <Box ml={5} mr={5}>\n        <CurrentJobs\n          apiKey={''}\n          sortableColumns={jobsConfig.sortableColumnsDefaults.map((column) => {\n            switch (column.id) {\n              case 'expires_at':\n                return { ...column, enabled: true };\n              case 'notes':\n                return { ...column, enabled: true };\n              case 'assigned_user':\n                return { ...column, enabled: true };\n              case 'recruitment_ad_user':\n                return { ...column, enabled: true };\n              default:\n                return column;\n            }\n          })}\n          rowsPerPage={rowsPerPage}\n          setRowsPerPage={setRowsPerPage}\n          search={''}\n          order={order}\n          setOrder={setOrder}\n          orderBy={orderBy}\n          setOrderBy={setOrderBy}\n          filters={filters}\n          fetchUISwitch={false}\n          page={page}\n          setPage={setPage}\n          filtersApplied={false}\n          userPermissions={userPermissions}\n          setSnackbarState={setSnackbar}\n          density=\"Default\"\n          jobStatusFeature={true}\n          showNewApplicants\n          hideArrows\n        />\n      </Box>\n    </Box>\n  );\n}\n\nconst filters = {\n  state: [],\n  status: [],\n  entity: [],\n  location: [],\n  assigned_user: [],\n  recruitment_ad_user: [],\n  published: [],\n  expiry: [],\n  pinned: true\n};\n\nexport default NewApplicants;\n","import { Box } from '@mui/material';\nimport React, { useState } from 'react';\nimport dashboardStyles from '../styles';\nimport CurrentJobs from '../../Jobs/JobsTable/CurrentJobs';\nimport { jobsConfig } from '../../Jobs/config';\n\ninterface IProps {\n  userPermissions?: Record<string, Record<string, boolean>>;\n  setSnackbar: React.Dispatch<\n    React.SetStateAction<{\n      message: string;\n      state: 'success' | 'warning' | 'error';\n    }>\n  >;\n}\n\nfunction PinnedJobs({ userPermissions, setSnackbar }: IProps) {\n  const [page, setPage] = useState(1);\n  const [rowsPerPage, setRowsPerPage] = useState(10);\n  const [order, setOrder] = useState('desc');\n  const [orderBy, setOrderBy] = useState('created_at');\n\n  return (\n    <Box id=\"dashboard-pinned-jobs\" sx={{ ...dashboardStyles.section, flexBasis: '100%' }}>\n      <Box sx={dashboardStyles.sectionTitle}>Pinned Jobs</Box>\n      <Box ml={5} mr={5}>\n        <CurrentJobs\n          apiKey={''}\n          sortableColumns={jobsConfig.sortableColumnsDefaults.map((column) => {\n            switch (column.id) {\n              case 'expires_at':\n                return { ...column, enabled: true };\n              case 'notes':\n                return { ...column, enabled: true };\n              default:\n                return column;\n            }\n          })}\n          rowsPerPage={rowsPerPage}\n          setRowsPerPage={setRowsPerPage}\n          search={''}\n          order={order}\n          setOrder={setOrder}\n          orderBy={orderBy}\n          setOrderBy={setOrderBy}\n          filters={filters}\n          fetchUISwitch={false}\n          page={page}\n          setPage={setPage}\n          filtersApplied={false}\n          userPermissions={userPermissions}\n          setSnackbarState={setSnackbar}\n          density=\"Default\"\n          jobStatusFeature={true}\n          isDashboard={true}\n          hideArrows\n        />\n      </Box>\n    </Box>\n  );\n}\n\nconst filters = {\n  state: [],\n  status: [],\n  entity: [],\n  location: [],\n  assigned_user: [],\n  recruitment_ad_user: [],\n  published: [],\n  expiry: [],\n  pinned: true\n};\n\nexport default PinnedJobs;\n","import { Box, Link } from '@mui/material';\nimport React from 'react';\nimport { theme } from '../../../../../ThemeContext/ThemeObject';\nimport { ITask } from '../../../types';\nimport {\n  Task as TaskIcon,\n  AccessTime as AccessTimeIcon,\n  CheckCircleOutline as CheckCircleOutlineIcon\n} from '@mui/icons-material';\nimport dayjs from 'dayjs';\n\ninterface IProps {\n  data: ITask;\n  handleCompleteTask: (id: number, completed: boolean) => void;\n}\n\nexport function TaskItem({ data, handleCompleteTask }: IProps) {\n  const isCompleted = dayjs().isAfter(dayjs(data?.completed_at));\n\n  function getColor(priority: IProps['data']['priority']) {\n    if (priority === 'High') {\n      return theme.palette.error.main;\n    }\n    if (priority === 'Normal') {\n      return '#E6A052';\n    }\n    if (priority === 'Low') {\n      return theme.palette.success.main;\n    }\n    return '';\n  }\n\n  return (\n    <Box display=\"flex\" flexDirection=\"row\" justifyContent=\"space-between\" alignItems=\"flex-start\">\n      <Box flexBasis=\"40%\" display=\"flex\" flexDirection=\"row\">\n        <Box mr={2}>\n          <Box sx={{ ...styles.icon, backgroundColor: `${getColor(data.priority)}33` }}>\n            <TaskIcon sx={{ color: getColor(data.priority) }} fontSize=\"small\" />\n          </Box>\n        </Box>\n        <Box>\n          <Box>\n            <Link href={`/admin/tasks/${data.id}`} target=\"_blank\" sx={styles.subject}>\n              {data.subject}\n            </Link>\n          </Box>\n          <Box mt=\"3px\">\n            <Box sx={styles.description}>{data.taskable_type}</Box>\n          </Box>\n        </Box>\n      </Box>\n      <Box ml={2} gap={1} display=\"flex\" flexDirection=\"row\" flexShrink={0}>\n        <Box\n          sx={{\n            ...styles.tag,\n            ...styles.priorityTag,\n            color: getColor(data.priority),\n            backgroundColor: `${getColor(data.priority)}33`\n          }}\n        >\n          {data.priority} Priority\n        </Box>\n        <Box sx={{ ...styles.tag, ...styles.dateTag }}>\n          <AccessTimeIcon sx={{ fontSize: '10px', color: '#666', marginRight: '4px' }} />\n          {dayjs(data.due_at).format('ddd, DD MMM YYYY, h:mma')}\n        </Box>\n        <Box sx={styles.checkTag} onClick={() => handleCompleteTask(data.id, !isCompleted)}>\n          <CheckCircleOutlineIcon\n            sx={{ color: isCompleted ? theme.palette.success.main : '#DDD' }}\n          />\n        </Box>\n      </Box>\n    </Box>\n  );\n}\n\nconst styles = {\n  icon: {\n    borderRadius: '6px',\n    padding: '6px'\n  },\n  subject: {\n    fontSize: '15px',\n    fontWeight: '700',\n    color: '#333 !important'\n  },\n  description: {\n    color: '#666'\n  },\n  tag: {\n    padding: '0 10px',\n    borderRadius: '14px',\n    fontSize: '9px',\n    display: 'flex',\n    justifyContent: 'center',\n    alignItems: 'center',\n    flexShrink: 0\n  },\n  priorityTag: {\n    textTransform: 'uppercase',\n    fontWeight: '700',\n    userSelect: 'none'\n  },\n  dateTag: {\n    backgroundColor: '#F3F3F3',\n    color: '#666'\n  },\n  checkTag: {\n    '&:hover': {\n      cursor: 'pointer',\n      '& svg': {\n        opacity: 0.7\n      }\n    }\n  }\n};\n","import { Box, Button, CircularProgress } from '@mui/material';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport dashboardStyles from '../../styles';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\nimport { useInfiniteQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../API';\nimport AddTasks from '../../../Job/ActionModals/AddTask/AddTasks';\nimport StartWorkFlow from '../../../Job/ActionModals/StartWorkflow/StartWorkFlow';\nimport { TaskItem } from './TaskItem';\nimport Loader from '../Loader';\nimport { NoTasksSVG } from '../../../Components/Icons';\nimport { styles } from './styles';\nimport { EmptyState } from '../../../Components/CustomUIElements/EmptyState';\n\nconst STATUSES = ['Pending', 'Completed'];\n\ninterface IProps {\n  setSnackbar: React.Dispatch<\n    React.SetStateAction<{\n      message: string;\n      state: 'success' | 'warning' | 'error';\n    }>\n  >;\n}\n\nfunction TasksDashboard({ setSnackbar }: IProps) {\n  const tabRef = useRef<HTMLDivElement>();\n  const [tab, setTab] = useState(0);\n  const [tabDimensions, setTabDimensions] = useState<{ width: number; offset: number }[]>([]);\n  const queryClient = useQueryClient();\n\n  const { isLoading, isSuccess, data, fetchNextPage, isFetchingNextPage, hasNextPage, refetch } =\n    useInfiniteQuery({\n      queryKey: ['getTasks', tab],\n      queryFn: ({ queryKey, pageParam = 1 }) =>\n        Api.getTasks({ to_do: queryKey[1] === 0, page: pageParam }),\n      getNextPageParam: (lastPage) => lastPage.nextPage || undefined\n    });\n\n  const { mutate } = useMutation({\n    mutationFn: ({ id, completed }: { id: string; completed: boolean }) =>\n      Api.completeTask(id, completed),\n    onSuccess: (data) => {\n      queryClient.invalidateQueries({ queryKey: ['getTasks'] });\n      setSnackbar({\n        message: data?.message,\n        state: 'success'\n      });\n    },\n    onError: () => {\n      setSnackbar({\n        message: 'Could not update. Please try again.',\n        state: 'error'\n      });\n    }\n  });\n\n  function handleScroll(e: React.UIEvent<HTMLDivElement>) {\n    if (!e) return;\n    const { scrollTop, scrollHeight, clientHeight } = e.currentTarget;\n    if (scrollTop + clientHeight >= scrollHeight) {\n      if (!isFetchingNextPage && hasNextPage) {\n        fetchNextPage();\n      }\n    }\n  }\n\n  useEffect(() => {\n    if (!tabRef.current) return;\n    setTabDimensions(\n      Array.from(tabRef.current.childNodes as NodeListOf<HTMLDivElement>).map((child) => ({\n        offset: child.offsetLeft,\n        width: child.clientWidth\n      }))\n    );\n  }, [tabRef]);\n\n  const handleCompleteTask = useCallback(\n    (id: number, completed: boolean) => {\n      mutate({ id: id.toString(), completed });\n    },\n    [mutate]\n  );\n\n  return (\n    <Box sx={{ ...dashboardStyles.section, ...styles.section }}>\n      <Box sx={{ ...dashboardStyles.sectionTitle, ...styles.sectionTitle }}>\n        <Box>Tasks</Box>\n        <Box display=\"flex\" gap={theme.spacing(2)}>\n          <AddTasks\n            isDashboard\n            buttonElement={<Button sx={styles.button}>Add Task</Button>}\n            apiKey={''}\n            refetch={refetch}\n          />\n          <StartWorkFlow\n            isDashboard\n            buttonElement={<Button sx={styles.button}>Add workflow</Button>}\n            setSnackbarState={setSnackbar}\n            apiKey={''}\n          />\n        </Box>\n      </Box>\n      <Box sx={{ position: 'relative' }}>\n        <Box ref={tabRef} ml={4} mr={4} sx={styles.tabContainer}>\n          {STATUSES.map((item, index) => (\n            <Tab\n              label={item}\n              key={index}\n              isSelected={index === tab}\n              onClick={() => setTab(index)}\n            />\n          ))}\n        </Box>\n        <Box\n          sx={{\n            ...styles.line,\n            width: tabDimensions[tab]?.width,\n            left: tabDimensions[tab]?.offset\n          }}\n        />\n      </Box>\n      <Box sx={styles.taskContainer} onScroll={handleScroll} mr={4} ml={4}>\n        {isLoading &&\n          Array(3)\n            .fill(null)\n            .map((_, i) => <Loader key={i} />)}\n        {isSuccess && (\n          <>\n            {data.pages[0].data.length ? (\n              <>\n                {data.pages.map((page) =>\n                  page.data.map((item) => (\n                    <TaskItem key={item.id} data={item} handleCompleteTask={handleCompleteTask} />\n                  ))\n                )}\n                {isFetchingNextPage && hasNextPage && (\n                  <Box flex={1} justifyContent=\"center\">\n                    <Box display=\"flex\" flex={1} justifyContent=\"center\">\n                      <CircularProgress size={20} sx={{ color: theme.palette.primary.main }} />\n                    </Box>\n                  </Box>\n                )}\n              </>\n            ) : (\n              <EmptyState\n                svgIcon={<NoTasksSVG />}\n                label={`You have no ${tab === 0 ? 'pending' : 'completed'} tasks`}\n              />\n            )}\n          </>\n        )}\n      </Box>\n    </Box>\n  );\n}\n\nconst Tab = ({\n  label,\n  isSelected,\n  onClick\n}: {\n  label: string;\n  isSelected: boolean;\n  onClick: () => void;\n}) => (\n  <Box\n    sx={{\n      ...styles.tab,\n      fontWeight: isSelected ? 600 : undefined,\n      color: isSelected ? theme.palette.primary.main : theme.palette.common.grey\n    }}\n    onClick={onClick}\n  >\n    {label}\n  </Box>\n);\n\nexport default TasksDashboard;\n","import { Box } from '@mui/material';\nimport React from 'react';\nimport { theme } from '../../../../../ThemeContext/ThemeObject';\nimport { ITask } from '../../../types';\nimport TaskIcon from '@mui/icons-material/Task';\nimport CheckCircleOutlineIcon from '@mui/icons-material/CheckCircleOutline';\nimport AccessTimeIcon from '@mui/icons-material/AccessTime';\nimport dayjs from 'dayjs';\n\ninterface IProps {\n  data: ITask;\n  handleCompleteTask: (id: number, completed: boolean) => void;\n}\n\nfunction TaskItem({ data, handleCompleteTask }: IProps) {\n  const isCompleted = dayjs().isAfter(dayjs(data?.completed_at));\n\n  function getColor(priority: IProps['data']['priority']) {\n    if (priority === 'High') {\n      return theme.palette.error.main;\n    }\n    if (priority === 'Normal') {\n      return '#E6A052';\n    }\n    if (priority === 'Low') {\n      return theme.palette.success.main;\n    }\n    return '';\n  }\n\n  return (\n    <Box display=\"flex\" flexDirection=\"row\" justifyContent=\"space-between\" alignItems=\"flex-start\">\n      <Box flexBasis=\"40%\" display=\"flex\" flexDirection=\"row\">\n        <Box mr={2}>\n          <Box sx={{ ...styles.icon, backgroundColor: `${getColor(data.priority)}33` }}>\n            <TaskIcon sx={{ color: getColor(data.priority) }} fontSize=\"small\" />\n          </Box>\n        </Box>\n        <Box>\n          <Box>\n            <Box sx={styles.subject}>\n              <a\n                className={`dashboard-task ${isCompleted ? 'completed' : 'todo'}`}\n                href={`/admin/tasks/${data.id}`}\n                target=\"_blank\"\n                rel=\"noreferrer\"\n              >\n                {data.subject}\n              </a>\n            </Box>\n          </Box>\n          <Box mt=\"3px\">\n            <Box sx={styles.description}>{data.taskable_type}</Box>\n          </Box>\n        </Box>\n      </Box>\n      <Box ml={2} gap={1} display=\"flex\" flexDirection=\"row\" flexShrink={0}>\n        <Box\n          sx={{\n            ...styles.tag,\n            ...styles.priorityTag,\n            color: getColor(data.priority),\n            backgroundColor: `${getColor(data.priority)}33`\n          }}\n        >\n          {data.priority} Priority\n        </Box>\n        <Box sx={{ ...styles.tag, ...styles.dateTag }}>\n          <AccessTimeIcon sx={{ fontSize: '10px', color: '#666', marginRight: '4px' }} />\n          {dayjs(data.due_at).format('ddd, DD MMM YYYY, h:mma')}\n        </Box>\n        <Box sx={styles.checkTag} onClick={() => handleCompleteTask(data.id, !isCompleted)}>\n          <CheckCircleOutlineIcon\n            sx={{ color: isCompleted ? theme.palette.success.main : '#DDD' }}\n          />\n        </Box>\n      </Box>\n    </Box>\n  );\n}\n\nconst styles = {\n  icon: {\n    borderRadius: '6px',\n    padding: '6px'\n  },\n  subject: {\n    '& a': {\n      fontSize: '15px',\n      fontWeight: '700',\n      color: '#333'\n    }\n  },\n  description: {\n    color: '#666'\n  },\n  tag: {\n    padding: '0 10px',\n    borderRadius: '14px',\n    fontSize: '9px',\n    display: 'flex',\n    justifyContent: 'center',\n    alignItems: 'center',\n    flexShrink: 0\n  },\n  priorityTag: {\n    textTransform: 'uppercase',\n    fontWeight: '700',\n    userSelect: 'none'\n  },\n  dateTag: {\n    backgroundColor: '#F3F3F3',\n    color: '#666'\n  },\n  checkTag: {\n    '&:hover': {\n      cursor: 'pointer',\n      '& svg': {\n        opacity: 0.7\n      }\n    }\n  }\n};\n\nexport default TaskItem;\n","import React, { useReducer, Dispatch, SetStateAction, useEffect } from 'react';\nimport { Box, CircularProgress, IconButton, Tooltip } from '@mui/material';\nimport dashboardStyles from '../../styles';\nimport Api from '../../API';\nimport { useInfiniteQuery } from '@tanstack/react-query';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\nimport EventItem from './components/EventItem';\nimport Loader from '../Loader';\nimport { copyEventLinks } from './copyEventLinks';\nimport { FileCopy as FileCopyIcon, Done as DoneIcon } from '@mui/icons-material';\nimport { InitialScoutCalendarState, ScoutCalendarReducer } from '../../../../ScoutCalendar/reducer';\nimport ViewEvent from '../../../../ScoutCalendar/ViewEvent';\nimport CreateEvent from '../../../../ScoutCalendar/CreateEvent/CreateEvent';\nimport { IUserPermissions } from '../../../Components/sharedTypes';\nimport { NoEventsSVG } from '../../../Components/Icons';\nimport { styles } from './styles';\nimport { EmptyState } from '../../../Components/CustomUIElements/EmptyState';\nimport formatToUserTimeZone from '../../../utils/formatToUserTimeZone';\n\nfunction UpcomingEvents({\n  setSnackbar,\n  apiKey,\n  currentUserId,\n  newCalendarEnabled,\n  userPermissions\n}: {\n  setSnackbar: Dispatch<\n    SetStateAction<{ message: string; state: 'success' | 'warning' | 'error' }>\n  >;\n  apiKey: string;\n  currentUserId: number;\n  newCalendarEnabled: boolean;\n  userPermissions: IUserPermissions;\n}) {\n  const [ScoutCalendarState, dispatch] = useReducer(\n    ScoutCalendarReducer,\n    InitialScoutCalendarState\n  );\n  const [copied, setCopied] = React.useState(false);\n  const { isLoading, isSuccess, data, fetchNextPage, isFetchingNextPage, hasNextPage } =\n    useInfiniteQuery({\n      queryKey: ['getEvents'],\n      queryFn: ({ pageParam = 1 }) => Api.getEvents({ page: pageParam }),\n      getNextPageParam: (lastPage) => lastPage.nextPage || undefined\n    });\n\n  function handleScroll(e: React.UIEvent<HTMLDivElement>) {\n    if (!e) return;\n    const { scrollTop, scrollHeight, clientHeight } = e.currentTarget;\n    if (scrollTop + clientHeight >= scrollHeight) {\n      if (!isFetchingNextPage && hasNextPage) {\n        fetchNextPage();\n      }\n    }\n  }\n\n  function calculateAllItems(data: any, hasNextPage: boolean) {\n    const items = data?.pages.flatMap((page: any) => page.data.events) || [];\n    if (!items.length) return [];\n    return items.map((item: any, index: number) => {\n      const dateCurrent = formatToUserTimeZone(items[index].begins_at, 'ymd');\n      const datePrevious = formatToUserTimeZone(items[index - 1]?.begins_at, 'ymd');\n      const dateNext = formatToUserTimeZone(items[index + 1]?.begins_at, 'ymd');\n      const isFirst = dateCurrent !== datePrevious;\n      const isLast = dateCurrent !== dateNext || (index === items.length - 1 && !hasNextPage);\n      return {\n        ...item,\n        isFirst,\n        isLast\n      };\n    });\n  }\n\n  const allItems = calculateAllItems(data, hasNextPage);\n\n  const hasUpcomingEvent = !!allItems?.length;\n\n  // the api key is needed because the events endpoints are using api v2 base controller that requires api key\n  useEffect(() => {\n    dispatch({ type: 'SET_APIKEY', payload: apiKey });\n    dispatch({ type: 'SET_PERMISSIONS', payload: userPermissions });\n  }, [apiKey, userPermissions]);\n\n  return (\n    <Box sx={{ ...dashboardStyles.section, ...styles.section }}>\n      <Box sx={styles.headerContainer}>\n        <Box sx={{ ...dashboardStyles.sectionTitle }}>Upcoming Events</Box>\n        {hasUpcomingEvent && (\n          <Tooltip title={copied ? 'Copied!' : 'Copy event links'} placement=\"top\">\n            <IconButton\n              onClick={() => {\n                copyEventLinks(allItems);\n                setCopied(true);\n                setTimeout(() => {\n                  setCopied(false);\n                }, 1000);\n              }}\n            >\n              {copied ? (\n                <DoneIcon sx={{ color: theme.palette.action.main }} />\n              ) : (\n                <FileCopyIcon sx={{ color: theme.palette.common.darkGrey }} />\n              )}\n            </IconButton>\n          </Tooltip>\n        )}\n      </Box>\n      <Box sx={styles.taskContainer} onScroll={handleScroll} mr={4} ml={4}>\n        {isLoading &&\n          Array(3)\n            .fill(null)\n            .map((_, i) => <Loader key={i} />)}\n        {isSuccess && (\n          <>\n            {hasUpcomingEvent ? (\n              <>\n                {allItems.map((item) => (\n                  <EventItem\n                    key={item.id}\n                    event={item}\n                    ScoutCalendarState={ScoutCalendarState}\n                    dispatch={dispatch}\n                    newCalendarEnabled={newCalendarEnabled}\n                  />\n                ))}\n                {isFetchingNextPage && hasNextPage && (\n                  <Box display=\"flex\" flex={1} justifyContent=\"center\">\n                    <CircularProgress size={20} sx={{ color: theme.palette.primary.main }} />\n                  </Box>\n                )}\n              </>\n            ) : (\n              <EmptyState svgIcon={<NoEventsSVG />} label=\"No upcoming events\" />\n            )}\n          </>\n        )}\n      </Box>\n      {ScoutCalendarState.showCreateEventModal && (\n        <CreateEvent\n          events={allItems}\n          ScoutCalendarState={ScoutCalendarState}\n          dispatch={dispatch}\n          setSnackbar={setSnackbar}\n        />\n      )}\n      {ScoutCalendarState.showViewEventModal && (\n        <ViewEvent\n          events={allItems}\n          ScoutCalendarState={ScoutCalendarState}\n          dispatch={dispatch}\n          setSnackbar={setSnackbar}\n          currentUserId={currentUserId}\n        />\n      )}\n    </Box>\n  );\n}\n\nexport default UpcomingEvents;\n","import React, { useState } from 'react';\nimport { IEvent } from '../../../../Job/types';\nimport { Box, Tooltip } from '@mui/material';\nimport { theme } from '../../../../../ThemeContext/ThemeObject';\n\ninterface IProps {\n  attendees: IEvent['attendees'];\n}\n\nconst HEIGHT = 26;\nconst MARGIN_BOTTOM = 6;\nconst BORDER_HEIGHT = 2;\nconst MAX_CHARACTERS = 30;\n\nexport default function AttendeeList({ attendees }: IProps) {\n  const [isExpanded, setIsExpanded] = useState(false);\n  const [showExpandedItems, setShowExpandedItems] = useState(false);\n\n  const filteredAttendees = attendees.filter((attendee) => attendee.type === 'Candidate');\n\n  const handleExpandClick = () => {\n    if (isExpanded) {\n      setIsExpanded(false);\n      setTimeout(() => {\n        setShowExpandedItems(false);\n      }, 500);\n    } else {\n      setIsExpanded(true);\n      setShowExpandedItems(true);\n    }\n  };\n\n  function getHeight() {\n    if (!isExpanded) {\n      return `${HEIGHT}px`;\n    } else {\n      return `${HEIGHT * (filteredAttendees.length + 1) + MARGIN_BOTTOM * filteredAttendees.length}px`;\n    }\n  }\n\n  const displayBadge = filteredAttendees.length > 1 && !isExpanded;\n\n  return (\n    <Box sx={{ ...styles.container, ...{ height: getHeight() } }}>\n      <Box display=\"flex\">\n        {filteredAttendees.length > 0 && (\n          <Attendee\n            attendee={filteredAttendees[0]}\n            badge={{\n              show: displayBadge,\n              handleExpandClick,\n              numberOfAttendees: filteredAttendees.length - 1\n            }}\n          />\n        )}\n      </Box>\n      {showExpandedItems &&\n        filteredAttendees\n          .slice(1)\n          .map((attendee) => <Attendee key={attendee.id} attendee={attendee} />)}\n      {isExpanded && (\n        <Box onClick={handleExpandClick} sx={{ ...styles.item, ...styles.showLess }}>\n          Show less\n        </Box>\n      )}\n    </Box>\n  );\n}\n\nfunction Attendee({\n  attendee,\n  badge\n}: {\n  attendee: IEvent['attendees'][0];\n  badge?: {\n    show: boolean;\n    handleExpandClick: () => void;\n    numberOfAttendees: number;\n  };\n}) {\n  const [showTooltip, setShowTooltip] = useState<boolean>(false);\n  const tagText = `${attendee.type}: ${attendee.name}`;\n  const label = tagText.length > MAX_CHARACTERS ? tagText.slice(0, MAX_CHARACTERS) + '…' : tagText;\n\n  const handleMouseEnter = (): void => {\n    if (tagText.length >= MAX_CHARACTERS) {\n      setShowTooltip(true);\n    }\n  };\n\n  return (\n    <>\n      <Tooltip key={attendee.id} title={attendee.name} placement=\"top\" open={showTooltip}>\n        <Box\n          key={attendee.id}\n          sx={{\n            ...styles.item,\n            ...{ width: badge?.show ? '82.5%' : '100%' },\n            ...(attendee.application_url && { cursor: 'pointer' })\n          }}\n          onMouseEnter={handleMouseEnter}\n          onMouseLeave={() => setShowTooltip(false)}\n          onClick={() => attendee.application_url && window.open(attendee.application_url, '_self')}\n          onAuxClick={() =>\n            attendee.application_url && window.open(attendee.application_url, '_blank')\n          }\n        >\n          {label}\n        </Box>\n      </Tooltip>\n      {badge?.show && (\n        <Box onClick={badge.handleExpandClick} sx={styles.badge}>\n          {`+${badge.numberOfAttendees}`}\n        </Box>\n      )}\n    </>\n  );\n}\n\nconst styles = {\n  container: {\n    transition: 'height 0.5s cubic-bezier(.75,.34,.19,.79)',\n    overflow: 'hidden'\n  },\n  item: {\n    backgroundColor: '#EDF2F5',\n    color: theme.palette.primary.main,\n    borderRadius: HEIGHT / 2,\n    height: HEIGHT,\n    textAlign: 'center',\n    fontWeight: '600',\n    marginBottom: `${MARGIN_BOTTOM}px`,\n    overflow: 'hidden',\n    whiteSpace: 'nowrap',\n    padding: '0 18px',\n    border: `${BORDER_HEIGHT}px solid white`,\n    zIndex: 1,\n    lineHeight: `${HEIGHT - BORDER_HEIGHT * 2}px`,\n    transition: 'width 0.5s cubic-bezier(.75,.34,.19,.79)',\n    fontSize: '13px'\n  },\n  badge: {\n    backgroundColor: '#EDF2F5',\n    color: theme.palette.primary.main,\n    borderRadius: HEIGHT / 2,\n    height: HEIGHT,\n    border: `${BORDER_HEIGHT}px solid white`,\n    textAlign: 'center',\n    fontWeight: '600',\n    transform: 'translateX(-22.5%)',\n    userSelect: 'none',\n    lineHeight: `${HEIGHT - BORDER_HEIGHT * 2}px`,\n    transition: 'opacity 0.5s, width 0.5s cubic-bezier(.75,.34,.19,.79)',\n    width: '17.5%',\n    cursor: 'pointer'\n  },\n  showLess: {\n    fontSize: '12px',\n    cursor: 'pointer',\n    userSelect: 'none',\n    width: '100px',\n    margin: 'auto'\n  }\n};\n","import React, { Dispatch } from 'react';\nimport { IEvent } from '../../../../Job/types';\nimport { Box } from '@mui/material';\nimport dayjs from 'dayjs';\nimport { theme } from '../../../../../ThemeContext/ThemeObject';\nimport EventCircle from '../../../assets/EventCircle';\nimport AttendeeList from './AttendeeList';\nimport { ScoutCalendarState, ScoutCalendarAction } from '../../../../../ScoutCalendar/types';\nimport { connectingLine } from '../../../../shared/styleClasses';\nimport formatToUserTimeZone from '../../../../utils/formatToUserTimeZone';\n\ninterface IProps {\n  event: IEvent & { isFirst: boolean; isLast: boolean };\n  ScoutCalendarState: ScoutCalendarState;\n  dispatch: Dispatch<ScoutCalendarAction>;\n  newCalendarEnabled: boolean;\n}\n\nfunction EventItem({ event, ScoutCalendarState, dispatch, newCalendarEnabled }: IProps) {\n  const { createEventObject } = ScoutCalendarState;\n  function handleSelectEvent(event: IEvent) {\n    dispatch({\n      type: 'SET_CREATE_EVENT_OBJECT',\n      payload: {\n        ...createEventObject,\n        eventName: event.subject,\n        eventDescription: event.note || '',\n        maxCandidates: event.max_candidates.toString(),\n        recruiters: event.attendees\n          .filter((a) => a.type === 'User')\n          .map((a) => ({\n            id: a.id,\n            name: a.name,\n            checked: false,\n            attendeeId: a.attendee_id,\n            state: a.state\n          })),\n        eventType: event.event_type,\n        duration: event.duration_in_minutes.toString(),\n        eventDate: new Date(event.begins_at),\n        eventId: event.id,\n        candidates: event.attendees.filter((a) => a.type === 'Candidate'),\n        dates: [new Date(event.begins_at)],\n        owner: event.owner\n      }\n    });\n    dispatch({ type: 'SET_SHOW_VIEW_EVENT_MODAL', payload: true });\n  }\n  return (\n    <Box\n      display=\"flex\"\n      flexDirection=\"column\"\n      justifyContent=\"space-between\"\n      alignItems=\"flex-start\"\n    >\n      {event.isFirst && (\n        <Box sx={styles.date}>{formatToUserTimeZone(event.begins_at, 'shortWithDayOfWeek')}</Box>\n      )}\n      <Box\n        display=\"flex\"\n        width=\"100%\"\n        justifyContent=\"space-between\"\n        alignItems=\"flex-start\"\n        gap=\"24px\"\n      >\n        <Box display=\"flex\" height=\"100%\">\n          <Box sx={{ ...styles.lineContainer, ...(!event.isLast && { ...styles.connectingLine }) }}>\n            <EventCircle />\n          </Box>\n          <Box sx={styles.infoContainer}>\n            <Box>{formatToUserTimeZone(event.begins_at, 'onlyTime')}</Box>\n            {newCalendarEnabled ? (\n              <Box onClick={() => handleSelectEvent(event)} sx={styles.eventSubject}>\n                {event.subject}\n              </Box>\n            ) : (\n              <Box>\n                <a\n                  className=\"dashboard-event\"\n                  href={`/admin/calendar/events/${event.id}`}\n                  target=\"_blank\"\n                  rel=\"noreferrer\"\n                >\n                  {event.subject}\n                </a>\n              </Box>\n            )}\n            <Box>{event.job_title}</Box>\n          </Box>\n        </Box>\n        <Box sx={styles.candidatesContainer}>\n          {!!event.attendees?.length && <AttendeeList attendees={event.attendees} />}\n        </Box>\n        <Box sx={styles.timeContainer}>\n          <Box>{event.duration}</Box>\n        </Box>\n      </Box>\n    </Box>\n  );\n}\n\nconst styles = {\n  date: {\n    textTransform: 'uppercase',\n    color: '#333',\n    marginBottom: theme.spacing(2),\n    marginTop: theme.spacing(2),\n    fontWeight: '600'\n  },\n  lineContainer: {\n    marginRight: theme.spacing(2),\n    position: 'relative',\n    '& svg': {\n      width: '30px',\n      height: '30px'\n    }\n  },\n  connectingLine,\n  infoContainer: {\n    '& > div:nth-child(1)': {\n      color: '#666',\n      fontWeight: '700',\n      fontSize: '13px',\n      textTransform: 'uppercase'\n    },\n    '& > div:nth-child(2) a': {\n      color: '#333',\n      fontWeight: '700',\n      fontSize: '18px'\n    },\n    '& > div:nth-child(3)': {\n      color: '#666',\n      fontSize: '14px'\n    }\n  },\n  candidatesContainer: {\n    display: 'flex',\n    width: '40%',\n    position: 'relative',\n    justifyContent: 'center'\n  },\n  timeContainer: {\n    background: '#F2F2F2',\n    borderRadius: '4px',\n    padding: '6px 0',\n    color: '#666666',\n    fontWeight: '700',\n    width: '80px',\n    textAlign: 'center',\n    fontSize: '14px',\n    flexShrink: 0\n  },\n  eventSubject: {\n    cursor: 'pointer',\n    color: '#333',\n    fontWeight: '700',\n    fontSize: '18px',\n    '&:hover': {\n      textDecoration: 'underline'\n    }\n  }\n};\n\nexport default EventItem;\n","import { IEvent } from '../../../Job/types';\nimport { copyRichHTML } from '../../../Components/Utilities/copyToClipboard';\n\nexport const copyEventLinks = (events: IEvent[]) => {\n  const eventLinks = events.map((event) => {\n    const eventDate = new Date(event.begins_at);\n    const eventDateString = eventDate.toLocaleDateString('en-US', {\n      weekday: 'long',\n      year: 'numeric',\n      month: 'long',\n      day: 'numeric'\n    });\n    const eventTimeString = eventDate.toLocaleTimeString('en-US', {\n      hour: 'numeric',\n      minute: 'numeric'\n    });\n    const eventDateTimeString = `${eventDateString} at ${eventTimeString}`;\n    const eventLink = `<a href=\"${window.location.origin}/admin/calendar/events/${event.id}\" target=\"_blank\" rel=\"noreferrer\">${eventDateTimeString}: ${event.subject}</a>`;\n    const candidateLinks = event.attendees\n      .filter((attendee) => attendee.type === 'Candidate')\n      .map(\n        (attendee) =>\n          `<a href=\"${attendee.application_url}\" target=\"_blank\" rel=\"noreferrer\">${attendee.name}</a>`\n      )\n      .join(', ');\n    return `<li>${eventLink}${candidateLinks && ' - Candidates: ' + candidateLinks}</li>`;\n  });\n  const eventLinksHTML = `<ul>${eventLinks.join('')}</ul>`;\n  copyRichHTML(eventLinksHTML);\n};\n","import React from 'react';\nimport Box from '@mui/material/Box';\nimport InfoIcon from '@mui/icons-material/Info';\nimport { classes } from '../styles';\nimport { classes as sharedClasses } from '../../Questions/styles';\nimport { QuestionsList } from './QuestionsList';\nimport { StyledSnackbarProps } from '../../../Components/CustomUIElements/StyledSnackbar';\n\nconst AIStudioSettings = ({\n  jobId,\n  setSnackbarState\n}: {\n  jobId: number;\n  setSnackbarState: StyledSnackbarProps['setSnackbarState'];\n}) => {\n  return (\n    <Box sx={classes.tabContent}>\n      <Box sx={classes.headerContent}>AI Studio settings</Box>\n      <Box\n        sx={{\n          ...sharedClasses.noticeContainer,\n          justifyContent: 'flex-start',\n          margin: '0 0 18px 0'\n        }}\n      >\n        <InfoIcon sx={{ ...sharedClasses.infoIcon, marginTop: '2px' }} />\n        <Box sx={{ marginLeft: 1 }}>\n          All changes in this section will be automatically saved and applied immediately.\n        </Box>\n      </Box>\n      <Box sx={classes.bodyContainer}>\n        <Box sx={classes.headerContent}>Application summaries question selection</Box>\n        <Box sx={classes.editInfoText}>\n          Select the screening questions you want to include when generating AI application\n          summaries, AI insights or interview questions for this job. All questions will be included\n          by default.\n        </Box>\n      </Box>\n      <QuestionsList jobId={jobId} setSnackbarState={setSnackbarState} />\n    </Box>\n  );\n};\n\nexport default AIStudioSettings;\n","import React, { useEffect, useState } from 'react';\nimport { Box, FormControlLabel, Switch, Skeleton } from '@mui/material';\nimport { classes } from '../styles';\nimport { classes as switchClasses } from '../../../../AIStudio/SharedComponents/styles';\nimport QuestionFieldViewer, {\n  IApplicantQuestion\n} from '../../../Components/Utilities/QuestionFieldViewer';\nimport { handleAPIRequest } from '../../../Components/Utilities/handleAPIRequest';\nimport { StyledSnackbarProps } from '../../../Components/CustomUIElements/StyledSnackbar';\n\nexport const QuestionsList = ({\n  jobId,\n  setSnackbarState\n}: {\n  jobId: number;\n  setSnackbarState: StyledSnackbarProps['setSnackbarState'];\n}) => {\n  const [questions, setQuestions] = useState<IApplicantQuestion[]>([]);\n  const [loadingQuestions, setLoadingQuestions] = useState(true);\n\n  useEffect(() => {\n    handleAPIRequest({\n      url: `/api/v4/fields?job_id=${jobId}`,\n      method: 'GET',\n      onSuccess: (data) => {\n        setQuestions(data.fields);\n      },\n      setLoaderState: setLoadingQuestions,\n      setSnackbarState,\n      successMessage: { show: false }\n    });\n  }, [jobId, setSnackbarState]);\n\n  const handleSwitchChange = (index: number, fieldId: number) => {\n    // Optimistically update the UI\n    const newQuestions = [...questions];\n    newQuestions[index].enabled_for_summary = !newQuestions[index].enabled_for_summary;\n    setQuestions(newQuestions);\n\n    // Send the API request\n    handleAPIRequest({\n      url: `/api/v4/fields/${fieldId}?job_id=${jobId}`,\n      method: 'PUT',\n      body: { enabled_for_summary: newQuestions[index].enabled_for_summary },\n      onFailure: () => {\n        // Revert the UI if the API request fails\n        const newQuestions = [...questions];\n        newQuestions[index].enabled_for_summary = !newQuestions[index].enabled_for_summary;\n        setQuestions(newQuestions);\n      },\n      setSnackbarState,\n      successMessage: { show: true, message: 'Question updated successfully' }\n    });\n  };\n\n  if (loadingQuestions) {\n    return (\n      <Box sx={classes.questionsContainer}>\n        {Array.from(Array(3).keys()).map((_, index) => (\n          <Skeleton variant=\"rectangular\" sx={classes.questionSkeleton} key={index} />\n        ))}\n      </Box>\n    );\n  }\n  return (\n    <Box sx={classes.questionsContainer}>\n      {questions.map((item, index) => (\n        <Box sx={classes.question} key={item.id}>\n          <Box sx={{ maxWidth: '640px' }}>\n            <QuestionFieldViewer question={item} />\n          </Box>\n          <Box sx={classes.switchContainer}>\n            <FormControlLabel\n              sx={\n                !item.enabled_for_summary\n                  ? { ...switchClasses.switchLabels, ...switchClasses.labelActive }\n                  : switchClasses.switchLabels\n              }\n              control={\n                <Switch\n                  sx={\n                    item.enabled_for_summary ? switchClasses.aiSwitchActive : switchClasses.switch\n                  }\n                  checked={item.enabled_for_summary as boolean}\n                  onChange={() => handleSwitchChange(index, item.id)}\n                />\n              }\n              label=\"Include\"\n              labelPlacement=\"end\"\n            />\n          </Box>\n        </Box>\n      ))}\n    </Box>\n  );\n};\n","import React, { Dispatch, SetStateAction, useRef } from 'react';\nimport Box from '@mui/material/Box';\nimport { IJob } from '../../../Job/types';\nimport { classes } from '../styles';\nimport { MultilineFormTextField } from '../../../Components/CustomUIElements/FormTextField';\n\nexport default function GoogleScript({\n  apiKey,\n  job,\n  googleScriptTabJobData,\n  setGoogleScriptTabJobData,\n  setIsEdited\n}: { apiKey: string, job: IJob, setIsEdited: Dispatch<SetStateAction<boolean>> }) {  \n  const templateRef = useRef<HTMLInputElement>(null);\n\n  return (\n    <Box sx={classes.tabContent}>\n      <Box id=\"template-title\" sx={classes.headerContent}>\n        Google conversion script\n      </Box>\n      <Box sx={classes.bodyContainer}>\n        <Box sx={classes.modalFormLine}>\n          <MultilineFormTextField\n            value={googleScriptTabJobData?.google_conversion_script?.value}\n            onChange={(e) => {\n              setGoogleScriptTabJobData((prev) => ({\n                ...prev,\n                google_conversion_script: { ...prev.google_conversion_script, value: e.target.value },\n              }))\n              setIsEdited(true);\n            }}\n            styles={{ maxWidth: '900px' }}\n            rows={14}\n            innerRef={templateRef}\n            required={false}\n          />\n        </Box>\n      </Box>\n      <Box sx={classes.hintText}>\n        This script will be embedded on the \"Application Success\" page. It is strongly recommended you perform a test application after changing this script, to test for faulty HTML/Javascript.\n      </Box>\n    </Box>\n  );\n}\n","import React, { Dispatch, useState, useEffect, useCallback, SetStateAction } from 'react';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport TextField from '@mui/material/TextField';\nimport Box from '@mui/material/Box';\nimport Api from '../../../Job/API';\nimport { classes } from '../styles';\n\nexport default function PanelWorkflow({\n  apiKey,\n  jobId,\n  chairsOptions,\n  setChairsOptions,\n  panelWorkflowTabJobData,\n  setPanelWorkflowTabJobData,\n  setIsEdited\n}: { apiKey: string, jobId: string, setIsEdited: Dispatch<SetStateAction<boolean>> }) {\n  const [isLoading, setIsLoading] = useState(false);\n\n  const fetchWorkflowData = useCallback(async () => {\n    setIsLoading(true);\n      try {\n        const response = await Api.getJobPanelChairs({ 'X-api-authenticate': apiKey }, jobId);\n        setChairsOptions(response?.panel_chairs);\n      } catch (error) {\n        console.log(error);\n      } finally {\n        setIsLoading(false);\n      }\n  }, [apiKey, jobId]);\n\n  useEffect(() => {\n    chairsOptions?.length === 0 && !isLoading && fetchWorkflowData();\n  }, [fetchWorkflowData]);\n\n  const getDefaults = (options, defaults) => {\n    if (options?.length > 0 && defaults?.length > 0) {\n      const ids = defaults.map(item => item.id);\n      const selected = options.filter((option) => ids.indexOf(option?.id) >= 0);\n      return selected;\n    } else return [];\n  };\n\n  return (\n    <Box sx={classes.tabContent}>\n      <Box id=\"panel-workflow-title\" sx={classes.headerContent}>\n        Panel workflow\n      </Box>\n      <Box sx={{...classes.modalFormLine, marginBottom: 3}}>\n        <Box sx={{ position: 'relative', marginBottom: '4px' }}>\n          <Autocomplete\n            id=\"panelChairs\"\n            multiple\n            options={chairsOptions}\n            getOptionLabel={(option) => `${option?.firstname} ${option?.lastname}`}\n            value={getDefaults(chairsOptions, panelWorkflowTabJobData?.panel_chairs?.value)}\n            loading={chairsOptions?.length < 1}\n            loadingText={isLoading ? \"Loading Panel chairs...\" : \"No Panel chairs\"}\n            sx={{ ...classes.formAutocomplete, minWidth: '250px', width: '100%', marginTop: '24px' }}\n            ListboxProps={{\n              style: {\n                fontFamily: 'Source Sans Pro, sans-serif',\n                color: '#333333',\n                maxHeight: '200px'\n              }\n            }}\n            renderInput={(params) => (\n              <TextField\n                {...params}\n                label=\"Panel chairs\"\n                InputLabelProps={{ shrink: true }}\n              />\n            )}\n            onChange={(event, value) => {\n              setPanelWorkflowTabJobData((prev) => ({\n                ...prev,\n                panel_chairs: { ...prev.panel_chairs, value },\n              }))\n              setIsEdited(true);\n            }}\n          />\n        </Box>\n      </Box>\n      <Box sx={{...classes.modalFormLine, marginBottom: 3}}>\n        <Box sx={{ position: 'relative', marginBottom: '4px' }}>\n          <Autocomplete\n            id=\"panelMembers\"\n            multiple\n            options={chairsOptions}\n            getOptionLabel={(option) => `${option?.firstname} ${option?.lastname}`}\n            value={getDefaults(chairsOptions, panelWorkflowTabJobData?.panel_members?.value)}\n            loading={chairsOptions?.length < 1}\n            loadingText={isLoading ? \"Loading Panel members...\" : \"No Panel members\"}\n            sx={{ ...classes.formAutocomplete, minWidth: '250px', width: '100%', marginTop: '24px' }}\n            ListboxProps={{\n              style: {\n                fontFamily: 'Source Sans Pro, sans-serif',\n                color: '#333333',\n                maxHeight: '200px'\n              }\n            }}\n            renderInput={(params) => (\n              <TextField\n                {...params}\n                label=\"Panel members\"\n                InputLabelProps={{ shrink: true }}\n              />\n            )}\n            onChange={(event, value) => {\n              setPanelWorkflowTabJobData((prev) => ({\n                ...prev,\n                panel_members: { ...prev.panel_members, value },\n              }))\n              setIsEdited(true);\n            }}\n          />\n        </Box>\n      </Box>\n      <Box sx={{...classes.modalFormLine, marginBottom: 3}}>\n        <Box sx={{ position: 'relative', marginBottom: '4px' }}>\n          <Autocomplete\n            id=\"panelObservers\"\n            multiple\n            options={chairsOptions}\n            getOptionLabel={(option) => `${option?.firstname} ${option?.lastname}`}\n            value={getDefaults(chairsOptions, panelWorkflowTabJobData?.panel_observers?.value)}\n            loading={chairsOptions?.length < 1}\n            loadingText={isLoading ? \"Loading Panel observers...\" : \"No Panel observers\"}\n            sx={{ ...classes.formAutocomplete, minWidth: '250px', width: '100%', marginTop: '24px' }}\n            ListboxProps={{\n              style: {\n                fontFamily: 'Source Sans Pro, sans-serif',\n                color: '#333333',\n                maxHeight: '200px'\n              }\n            }}\n            renderInput={(params) => (\n              <TextField\n                {...params}\n                label=\"Panel observers\"\n                InputLabelProps={{ shrink: true }}\n              />\n            )}\n            onChange={(event, value) => {\n              setPanelWorkflowTabJobData((prev) => ({\n                ...prev,\n                panel_observers: { ...prev.panel_observers, value },\n              }))\n              setIsEdited(true);\n            }}\n          />\n        </Box>\n      </Box>\n    </Box>\n  );\n}\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { Box, Button, Stack } from '@mui/material';\nimport { classes } from '../styles';\nimport { FormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport RequisitionInfoViewer from '../../../Components/Utilities/RequisitionInfoViewer';\n\nexport default function RequisitionInfo({\n  apiKey,\n  jobId,\n  setSnackbar,\n  requisitionInfoTabJobData,\n  setRequisitionInfoTabJobData\n}: {\n  apiKey: string;\n  jobId: number;\n  setSnackbar: StyledSnackbarProps['setSnackbarState'];\n}) {\n  const [editable, setEditable] = useState(true);\n  const [requisitionInfoId, setRequisitionInfoId] = useState();\n  const [requisitionInfos, setRequisitionInfos] = useState([]);\n\n  const getRequisitionInfos = useCallback(async () => {\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}`, {\n        method: 'GET',\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      }).then((response) => response.json());\n      if (response.requisition_info?.requisition_id) {\n        setRequisitionInfoId(response.requisition_info.requisition_id);\n        setEditable(false);\n        setRequisitionInfos(response.requisition_info.answers);\n      }\n    } catch (error) {\n      console.log(error);\n    }\n  }, [apiKey, jobId]);\n\n  const createRequisitionInfos = async (id: number) => {\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/requisition_info?requisition_id=${id}`, {\n        method: 'POST',\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      }).then((response) => response.json());\n      setRequisitionInfos(response.requisition_info);\n    } catch (error) {\n      console.log(error);\n    } finally {\n      getRequisitionInfos();\n    }\n  };\n\n  const updateRequisitionInfos = async () => {\n    const attributes = {};\n    requisitionInfos.map((requisition, index) => {\n      if (['TextField', 'TextAreaField', 'DateField'].includes(requisition.type)) {\n        attributes[index] = {\n          data: requisition.answer,\n          field_id: requisition.field_id,\n          id: requisition.id\n        };\n      } else if (['SelectField', 'RadioButtonField'].includes(requisition.type)) {\n        attributes[index] = {\n          field_choice_id: requisition.answer,\n          field_id: requisition.field_id,\n          id: requisition.id\n        };\n      } else if (['CheckBoxField'].includes(requisition.type)) {\n        attributes[index] = {\n          field_choice_ids: requisition.answer,\n          field_id: requisition.field_id,\n          id: requisition.id\n        };\n      }\n    });\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/requisition_info`, {\n        method: 'PATCH',\n        headers: {\n          'Content-Type': 'application/json',\n          'X-api-authenticate': apiKey\n        },\n        body: JSON.stringify({\n          requisition_info: {\n            answers_attributes: attributes\n          }\n        })\n      }).then((response) => response.json());\n      setSnackbar({\n        message: 'Requisition info has been updated',\n        state: 'success'\n      });\n    } catch (error) {\n      console.log(error);\n      setSnackbar({\n        message: error.errors,\n        state: 'error'\n      });\n    }\n  };\n\n  useEffect(() => {\n    getRequisitionInfos();\n  }, [getRequisitionInfos]);\n\n  return (\n    <Box sx={classes.tabContent}>\n      <Box id=\"template-title\" sx={classes.headerContent}>\n        Requisition info\n      </Box>\n      <Box sx={classes.bodyContainer}>\n        <Box sx={classes.modalFormLine}>\n          <Box sx={{ display: 'flex', alignItems: 'center' }}>\n            <Stack flexGrow=\"0.5\" maxWidth=\"250px\">\n              <FormTextField\n                draggable={!editable}\n                value={requisitionInfoId}\n                label={'Approval ID'}\n                onChange={(e) => setRequisitionInfoId(e.target.value)}\n                required={false}\n              />\n            </Stack>\n            <Button\n              id=\"get-requisition-info-button\"\n              sx={classes.modalCreateRequisitionButton}\n              onClick={() => createRequisitionInfos(requisitionInfoId)}\n              disabled={!editable}\n            >\n              Get requisition information\n            </Button>\n          </Box>\n          {requisitionInfos && requisitionInfos.length > 0 && (\n            <Box sx={classes.requisitionWrapper}>\n              {requisitionInfos.map((requisition, index) => (\n                <Box key={requisition.id}>\n                  {requisition.type === 'AvailabilityField' ||\n                  requisition.type === 'JobReferenceLookupField' ? (\n                    <span />\n                  ) : (\n                    <Box sx={{ marginRight: 'auto', ...classes.requisitionInput }}>\n                      <RequisitionInfoViewer\n                        index={index}\n                        requisition={requisition}\n                        requisitionInfos={requisitionInfos}\n                        setRequisitionInfos={setRequisitionInfos}\n                        draggable={false}\n                      />\n                    </Box>\n                  )}\n                </Box>\n              ))}\n              <Button\n                id=\"update-requisition-info-button\"\n                sx={classes.updateRequisitionButton}\n                onClick={updateRequisitionInfos}\n              >\n                Update requisition information\n              </Button>\n            </Box>\n          )}\n        </Box>\n      </Box>\n    </Box>\n  );\n}\n","import React, { Dispatch, SetStateAction } from 'react';\nimport Box from '@mui/material/Box';\nimport { IJob } from '../../../Job/types';\nimport { classes } from '../styles';\nimport { DebouncedFormTextField } from '../../../Components/CustomUIElements/FormTextField';\n\nexport default function Revolve({\n  apiKey,\n  job,\n  revolveTabJobData,\n  setRevolveTabJobData,\n  setIsEdited\n}: { apiKey: string, job: IJob, setIsEdited: Dispatch<SetStateAction<boolean>> }) {\n\n  return (\n    <Box sx={classes.tabContent}>\n      <Box id=\"template-title\" sx={classes.headerContent}>\n        Revolve\n      </Box>\n      <Box sx={classes.bodyContainer}>\n        <Box sx={classes.modalFormLine}>\n          <DebouncedFormTextField\n            onDebouncedChange={(value: string) => {\n              setRevolveTabJobData((prev) => ({\n                ...prev,\n                revolve_position_title: { ...prev.revolve_position_title, value }\n              }))\n              setIsEdited(true);\n            }}\n            id=\"revolve\"\n            label=\"Position title\"\n            defaultValue={revolveTabJobData?.revolve_position_title?.value}\n            required={revolveTabJobData?.revolve_position_title?.required}\n            error={revolveTabJobData?.revolve_position_title?.error}\n            styles={{ width: '250px' }}\n          />\n        </Box>\n      </Box>\n    </Box>\n  );\n}\n","import React from 'react';\nimport { Box } from '@mui/material';\n\nfunction NoTestsImage() {\n  return (\n    <Box>\n      <svg\n        id=\"Group_605\"\n        data-name=\"Group 605\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        width=\"181.013\"\n        height=\"156.432\"\n        viewBox=\"0 0 181.013 156.432\"\n      >\n        <defs>\n          <clipPath id=\"clip-path\">\n            <rect\n              id=\"Rectangle_793\"\n              data-name=\"Rectangle 793\"\n              width=\"181.013\"\n              height=\"156.432\"\n              fill=\"none\"\n            />\n          </clipPath>\n        </defs>\n        <g id=\"Group_604\" data-name=\"Group 604\" clipPath=\"url(#clip-path)\">\n          <path\n            id=\"Path_270\"\n            data-name=\"Path 270\"\n            d=\"M199.211,510.074c10.846,3.907-15.96,9.207-19.723,9.589-40.618,4.115-84.568,2.2-124.808-3.044a15.57,15.57,0,0,1-4.721-1.122c-9.948-4.87,22.007-8.173,24.974-8.428,11.029-.948,22.234-1.566,33.357-1.669,15.763-.146,77.475-.168,90.921,4.675\"\n            transform=\"translate(-34.746 -365.459)\"\n            fill=\"#eee\"\n          />\n          <path\n            id=\"Path_271\"\n            data-name=\"Path 271\"\n            d=\"M177.979,111.146V14.238A10.456,10.456,0,0,0,167.6,3.708H10.381A10.456,10.456,0,0,0,0,14.238v96.908a10.456,10.456,0,0,0,10.381,10.53H167.6a10.456,10.456,0,0,0,10.381-10.53\"\n            transform=\"translate(0 -2.682)\"\n            fill=\"#e3e3e3\"\n          />\n          <path\n            id=\"Path_272\"\n            data-name=\"Path 272\"\n            d=\"M256.286,441.848l-5-21.991h-29.9l-5,21.991c-6.256.869-16.465,5.07-16.465,10.122h72.824c0-5.052-10.209-9.253-16.465-10.122\"\n            transform=\"translate(-144.581 -303.627)\"\n            fill=\"#e3e3e3\"\n          />\n          <path\n            id=\"Path_273\"\n            data-name=\"Path 273\"\n            d=\"M269.321,448.588l-4.379-19.731H240.1a2.7,2.7,0,0,0-2.641,2.128l-4.193,19.264c-5.828.8-15.338,3.569-15.338,8.229h67.841c0-4.66-10.618-9.089-16.446-9.89\"\n            transform=\"translate(-157.597 -310.136)\"\n            fill=\"#f9f9f9\"\n          />\n          <path\n            id=\"Path_274\"\n            data-name=\"Path 274\"\n            d=\"M218.254,428.876l-4.3,18.916.743-.515a33.32,33.32,0,0,0-11.412,3.851c-2.416,1.358-5.8,3.638-5.8,6.785a.409.409,0,0,0,.435.394h72.824c.267,0,.914-.119.914-.515,0-3.165-3.263-5.394-5.721-6.762a33.009,33.009,0,0,0-11.179-3.754l.429.275-4.253-19.267c-.126-.572-1.466-.228-1.337.358l4.253,19.267c.042.191.266.252.429.275a31.656,31.656,0,0,1,10.3,3.405c2.281,1.226,5.732,3.34,5.732,6.323l.915-.515H198.4l.435.394c0-3,3.346-5.071,5.661-6.3a31.441,31.441,0,0,1,10.061-3.311c.3-.044.668-.183.744-.515l4.3-18.916c.138-.608-1.224-.43-1.349.121\"\n            transform=\"translate(-142.819 -309.51)\"\n            fill=\"#cfcfcf\"\n          />\n          <path\n            id=\"Path_275\"\n            data-name=\"Path 275\"\n            d=\"M294.731,498.408h-24.02c-1.173,0-2.347-.017-3.519,0-.875.017-2.17.264-2.642,1.114-.441.794.375,1.266,1.107,1.253,8.018-.15,16.053,0,24.073,0H293.2a3.115,3.115,0,0,0,2.642-1.114c.446-.8-.38-1.253-1.107-1.253\"\n            transform=\"translate(-191.224 -360.428)\"\n            fill=\"#e3e3e3\"\n          />\n          <path\n            id=\"Path_276\"\n            data-name=\"Path 276\"\n            d=\"M188.649,107.129V12.04A10.332,10.332,0,0,0,178.316,1.708H21.832A10.332,10.332,0,0,0,11.5,12.04v95.089a10.332,10.332,0,0,0,10.332,10.332H178.316a10.333,10.333,0,0,0,10.332-10.332\"\n            transform=\"translate(-8.316 -1.235)\"\n            fill=\"#fff\"\n          />\n          <path\n            id=\"Path_277\"\n            data-name=\"Path 277\"\n            d=\"M187.552,105.836V17.945c0-2.315.012-4.631,0-6.945A10.9,10.9,0,0,0,176.588.013c-4.257-.028-8.515,0-12.772,0H22.085c-2.491,0-4.856.089-7.157,1.3a10.99,10.99,0,0,0-5.875,9.552c-.007.465,0,.93,0,1.4v91.187c0,3.318.123,6.473,2.364,9.236,2.471,3.048,6.008,4,9.743,4H161.527c4.906,0,9.813.027,14.719,0a11.18,11.18,0,0,0,11.307-10.852c.012-.665-1.34-.446-1.35.118a9.794,9.794,0,0,1-8.439,9.749,15.97,15.97,0,0,1-1.823.063H21.241c-4.288,0-8.253-1.879-10.033-6.029-1.013-2.362-.805-4.952-.805-7.46V11.931c0-.523-.013-1.049.007-1.571a9.738,9.738,0,0,1,9-9.408C20.583.887,21.764.934,22.933.934h150c1.173,0,2.349-.026,3.522,0,5.872.128,9.748,5.028,9.748,10.63v94.389c0,.666,1.35.444,1.35-.118\"\n            transform=\"translate(-6.545 0)\"\n            fill=\"#cfcfcf\"\n          />\n          <path\n            id=\"Path_278\"\n            data-name=\"Path 278\"\n            d=\"M197.533,34.186H45.656a4.4,4.4,0,0,0-4.4,4.4v81.866a4.4,4.4,0,0,0,4.4,4.4H190.418a11.513,11.513,0,0,0,11.514-11.513V38.584a4.4,4.4,0,0,0-4.4-4.4\"\n            transform=\"translate(-29.836 -24.722)\"\n            fill=\"#f9f9f9\"\n          />\n          <path\n            id=\"Path_279\"\n            data-name=\"Path 279\"\n            d=\"M196.018,32.756H46.833c-.9,0-1.8-.028-2.691,0a5.2,5.2,0,0,0-5.327,4.887c-.017.487,0,.979,0,1.467v79.343c0,.5-.03,1.016.017,1.514a4.8,4.8,0,0,0,4.856,4.227c1.151.032,2.308,0,3.46,0H184.132c1.347,0,2.695.007,4.042,0a12.575,12.575,0,0,0,12.043-8.273c.786-2.31.61-4.794.61-7.2V39.209c0-.56.014-1.123,0-1.683a4.8,4.8,0,0,0-4.809-4.77c-.52-.022-1.417.736-.516.774,4.135.176,3.987,4.031,3.987,6.98v68.976c0,2.828.091,5.562-1.291,8.175a10.967,10.967,0,0,1-10.087,5.757H54.89c-3.563,0-7.152.125-10.714,0a4.178,4.178,0,0,1-4.022-4.215c-.02-.613,0-1.23,0-1.843V38.6c0-2.431.739-4.977,3.71-5.072,3.966-.125,7.956,0,11.923,0H195.5c.513,0,1.415-.774.516-.774\"\n            transform=\"translate(-28.063 -23.679)\"\n            fill=\"#cfcfcf\"\n          />\n          <path\n            id=\"Path_280\"\n            data-name=\"Path 280\"\n            d=\"M312.77,106.292a23.523,23.523,0,0,0,4.062-1.369l4.921,3.619,6.494-5.132-2.36-5.566a23.707,23.707,0,0,0,2.475-3.928l5.976-.383,1.675-8.106-5.176-2.64a23.478,23.478,0,0,0-.625-4.774c-.009-.037-.02-.072-.029-.109l4.147-3.958L330.4,66.66l-5.425,1.25a23.591,23.591,0,0,0-3.851-3.488l.608-5.475-7.692-3.058-3.25,4.309a23.292,23.292,0,0,0-5.375-.181l-2.974-4.465-7.858,2.6.28,5.382a23.392,23.392,0,0,0-4.171,3.342l-5.21-1.527L281.139,72.4l3.788,4.065a23.375,23.375,0,0,0-.986,5.042l-5.148,2.256,1.2,8.19,5.76.71a23.276,23.276,0,0,0,2.355,4.235l-2.607,5.268,6.182,5.5,5.067-3.288a23.583,23.583,0,0,0,4.282,1.672l1.435,5.9,8.274.243,1.791-5.85c.08-.018.16-.032.24-.05m-14.442-28.5a10.855,10.855,0,1,1,3.54,14.937,10.855,10.855,0,0,1-3.54-14.937\"\n            transform=\"translate(-201.614 -40.173)\"\n            fill=\"#e3e3e3\"\n          />\n          <path\n            id=\"Path_281\"\n            data-name=\"Path 281\"\n            d=\"M336.274,90.591a21.037,21.037,0,0,0-.56-4.273c-.008-.033-.018-.065-.026-.1l3.712-3.543-3.515-6.522-4.856,1.119a21.1,21.1,0,0,0-3.447-3.122l.544-4.9-6.885-2.737-2.909,3.857a20.85,20.85,0,0,0-4.81-.162l-2.662-4-7.033,2.329.251,4.817a20.955,20.955,0,0,0-3.734,2.991l-4.663-1.367-3.891,6.305,3.39,3.638a20.93,20.93,0,0,0-.882,4.513l-4.608,2.02,1.072,7.331,5.155.635a20.841,20.841,0,0,0,2.108,3.791l-2.334,4.715,5.534,4.926,4.535-2.943a21.132,21.132,0,0,0,3.833,1.5l1.284,5.28,7.405.217,1.6-5.236c.072-.016.143-.028.215-.045a21.031,21.031,0,0,0,3.636-1.226l4.4,3.239,5.812-4.594-2.112-4.982a21.2,21.2,0,0,0,2.215-3.515l5.349-.343,1.5-7.255ZM324.686,96.9a10.855,10.855,0,1,1-3.54-14.937,10.855,10.855,0,0,1,3.54,14.937\"\n            transform=\"translate(-209.495 -47.884)\"\n            fill=\"#eaeaea\"\n          />\n          <path\n            id=\"Path_282\"\n            data-name=\"Path 282\"\n            d=\"M311.132,105.459a27.446,27.446,0,0,0,4.235-1.433l-.811-.008,4.921,3.619a.874.874,0,0,0,.959-.081l6.494-5.132c.126-.1.3-.3.225-.484l-1.7-4.008c-.131-.309-.718-1.2-.654-1.543.011-.056.92-1.078,1.046-1.272a26.523,26.523,0,0,0,1.392-2.415l-.7.413,5.976-.383a.78.78,0,0,0,.737-.54l1.676-8.106a.356.356,0,0,0-.162-.335l-3.07-1.566a8.038,8.038,0,0,1-1.766-.9c-.04-.038-.212-.071-.246-.126-.171-.272.243.576.048-.239-.147-.614-.1-1.359-.177-1.982a12.8,12.8,0,0,1-.437-2.393c-.032.316-.214.259.087.053a12.324,12.324,0,0,0,1.367-1.3l2.555-2.439a.393.393,0,0,0,.053-.492l-3.927-7.286c-.125-.231-.528-.211-.735-.164L323.1,66.16l.735.164a18.337,18.337,0,0,0-3.194-3.011c-.518-.346-.492-.115-.563-.5a4.22,4.22,0,0,1,.115-1.035q.232-2.087.463-4.174a.393.393,0,0,0-.291-.4l-7.692-3.057a.9.9,0,0,0-.945.253l-3.25,4.309.791-.289a26.588,26.588,0,0,0-5.547-.184l.553.195L301.3,53.965a.7.7,0,0,0-.735-.164L292.7,56.4c-.193.064-.568.244-.555.509l.213,4.1a3.924,3.924,0,0,1,.05.949c-.106.462.113.076-.365.377a21.976,21.976,0,0,0-3.671,3.047l.945-.254-5.21-1.526a.9.9,0,0,0-1.025.374l-4.347,7.045a.356.356,0,0,0,.027.371l2.777,2.981c.3.326.884.813.917,1.137a12.491,12.491,0,0,1-.55,1.935,25.709,25.709,0,0,0-.408,2.811l.381-.445-5.148,2.256a.564.564,0,0,0-.372.573l1.2,8.19c.028.193.275.287.437.307l5.76.71-.437-.307c.28.637.573,1.266.9,1.881q.34.642.72,1.263c.128.21.606.729.639.831.093.29-.377,1.021-.587,1.445l-1.895,3.828a.365.365,0,0,0,.124.463l6.182,5.5c.255.226.721.073.959-.081l5.067-3.287-.829.145c.764.378,1.538.73,2.336,1.031.265.1,1.649.4,1.679.432.292.315.349,1.434.447,1.837l.973,4a.474.474,0,0,0,.437.307l8.274.243c.284.008.77-.079.871-.409l1.791-5.85-.517.381.24-.05c.84-.177.585-1.091-.246-.916l-.24.051a.74.74,0,0,0-.516.381l-1.791,5.85.871-.409-8.274-.242.437.307-1-4.127a7.018,7.018,0,0,0-.416-1.711c-.429-.732-2.169-.932-2.957-1.259-.855-.356-1.593-1.028-2.486-.579a16.665,16.665,0,0,0-1.489.966l-3.544,2.3.959-.081-6.182-5.5.124.463,2.607-5.268a.366.366,0,0,0-.027-.371,25.426,25.426,0,0,1-1.513-2.47c-.273-.515-.457-1.514-.939-1.857A3.838,3.838,0,0,0,283,90.731l-4.537-.559.437.307-1.2-8.19-.373.574,5.148-2.256a.618.618,0,0,0,.381-.445,25.718,25.718,0,0,1,.408-2.811c.115-.552.735-1.883.569-2.36-.142-.407-.7-.807-.985-1.111L281,71.893a5.346,5.346,0,0,0-.746-.8c-.4-.272-.005-.338-.221.063,1.3-2.408,2.895-4.691,4.331-7.019l-1.025.374,5.21,1.527a.951.951,0,0,0,.945-.253,24.834,24.834,0,0,1,4.055-3.234.545.545,0,0,0,.234-.356q-.14-2.691-.28-5.382l-.554.509,7.858-2.6-.735-.164,2.974,4.465a.62.62,0,0,0,.553.2,24.9,24.9,0,0,1,5.2.177.918.918,0,0,0,.791-.289l3.25-4.309-.945.254,7.692,3.057-.292-.4q-.244,2.2-.489,4.4c-.04.36-.238.973-.054,1.315.242.45,1.186.92,1.582,1.258a24.3,24.3,0,0,1,2.269,2.23.733.733,0,0,0,.735.164l5.425-1.25-.735-.164,3.927,7.286c.017-.164.035-.327.053-.492l-4.147,3.959a.426.426,0,0,0-.109.376,22.055,22.055,0,0,1,.645,4.755.366.366,0,0,0,.162.335l3.307,1.687c.4.2,1.24.854,1.693.864.327.006-.055-.013,0-.2-.049.155-.054.325-.1.481-.711,2.453-1.049,5.075-1.567,7.578l.737-.54-4.774.306a4.174,4.174,0,0,0-1.558.172c-.517.28-.731,1.074-1,1.546a24.469,24.469,0,0,1-1.734,2.578c-.069.091-.161.253-.109.376l2.36,5.566.225-.484-6.494,5.132.959-.081-3.8-2.8a5.03,5.03,0,0,0-1.249-.888c-.53-.155-1.086.236-1.551.42a24.062,24.062,0,0,1-3.02.942c-.83.206-.584,1.122.246.916\"\n            transform=\"translate(-199.854 -38.882)\"\n            fill=\"#cfcfcf\"\n          />\n          <path\n            id=\"Path_283\"\n            data-name=\"Path 283\"\n            d=\"M344.1,121.226a10.089,10.089,0,0,1,11.133-4.385,10.565,10.565,0,0,1,7.579,8.932,10.4,10.4,0,0,1-5.687,10.455,10.2,10.2,0,0,1-11.72-2.236,10.641,10.641,0,0,1-1.3-12.766c.379-.639-.979-.658-1.279-.153a11.338,11.338,0,0,0,1.231,13.372,11.682,11.682,0,0,0,12.658,3,11.533,11.533,0,0,0,7.517-10.994,11.36,11.36,0,0,0-7.865-10.4,11.889,11.889,0,0,0-13.541,5.026c-.4.619.964.644,1.279.153\"\n            transform=\"translate(-246.745 -83.529)\"\n            fill=\"#cfcfcf\"\n          />\n          <path\n            id=\"Path_284\"\n            data-name=\"Path 284\"\n            d=\"M196.861,234.476a16.167,16.167,0,0,0,2.945-.221l2.668,3.256,5.211-2.318-.626-4.118a16.317,16.317,0,0,0,2.322-2.2l4.055.764,2.5-5.125-3-2.645a16.184,16.184,0,0,0,.4-3.294c0-.026,0-.051,0-.078l3.444-1.935-1.378-5.534-3.835-.091a16.252,16.252,0,0,0-1.976-2.986l1.34-3.551-4.613-3.354-2.9,2.322a16.034,16.034,0,0,0-3.557-1.038l-1.224-3.488-5.689.4-.731,3.64a16.129,16.129,0,0,0-3.355,1.519l-3.217-1.908-4.1,3.961,1.835,3.36a16.107,16.107,0,0,0-1.518,3.2l-3.822.628-.6,5.672,3.724,1.456a16.027,16.027,0,0,0,.849,3.229l-2.639,3.072,3.188,4.729,3.943-1.33a16.258,16.258,0,0,0,2.573,1.846l-.049,4.183,5.482,1.574,2.194-3.6c.056,0,.112.006.169.007m-4.778-21.488a7.479,7.479,0,1,1-.185,10.575,7.479,7.479,0,0,1,.185-10.575\"\n            transform=\"translate(-128.31 -143.797)\"\n            fill=\"#e3e3e3\"\n          />\n          <path\n            id=\"Path_285\"\n            data-name=\"Path 285\"\n            d=\"M216.713,226.9a14.491,14.491,0,0,0,.355-2.948c0-.023,0-.046,0-.069l3.082-1.732-1.234-4.953-3.432-.082a14.546,14.546,0,0,0-1.768-2.672l1.2-3.179-4.129-3-2.6,2.078a14.352,14.352,0,0,0-3.184-.929l-1.1-3.122-5.092.355-.655,3.259a14.434,14.434,0,0,0-3,1.36l-2.88-1.708-3.673,3.545,1.642,3.007a14.432,14.432,0,0,0-1.359,2.862l-3.421.562-.535,5.077,3.333,1.3a14.348,14.348,0,0,0,.76,2.89l-2.362,2.749,2.854,4.233,3.529-1.191a14.553,14.553,0,0,0,2.3,1.653l-.044,3.744,4.907,1.408,1.963-3.222c.051,0,.1.006.151.007a14.491,14.491,0,0,0,2.636-.2l2.388,2.914,4.664-2.075-.56-3.686a14.613,14.613,0,0,0,2.078-1.969l3.629.684,2.239-4.588Zm-8.812,2.235a7.479,7.479,0,1,1,.185-10.575,7.479,7.479,0,0,1-.185,10.575\"\n            transform=\"translate(-133.738 -149.182)\"\n            fill=\"#eaeaea\"\n          />\n          <path\n            id=\"Path_286\"\n            data-name=\"Path 286\"\n            d=\"M195.027,233.681a19.286,19.286,0,0,0,2.945-.221l-.553-.195,2.667,3.256a.783.783,0,0,0,.908.1l5.211-2.318a.563.563,0,0,0,.372-.573l-.626-4.118-.225.484a19.87,19.87,0,0,0,2.438-2.307l-.791.289,4.055.764a.872.872,0,0,0,.871-.409l2.5-5.125a.364.364,0,0,0-.124-.462l-2.193-1.931a2.815,2.815,0,0,1-.549-.483c-.188-.313-.118-.06-.123-.284-.007-.267.291-1.084.332-1.469a13.317,13.317,0,0,0,.088-1.514l-.381.445,3.444-1.935c.2-.113.438-.31.372-.573l-1.378-5.534a.475.475,0,0,0-.437-.307l-2.325-.055a4.037,4.037,0,0,1-1.3-.031c-.528-.26.4.381-.043-.211-.26-.345-.457-.79-.7-1.153-.281-.425-.961-1.019-.967-1.261a4.565,4.565,0,0,1,.453-1.2l.813-2.154a.364.364,0,0,0-.124-.462l-4.613-3.354a.874.874,0,0,0-.959.081l-2.9,2.322.829-.145a19.009,19.009,0,0,0-3.711-1.073l.437.307-1.224-3.488a.566.566,0,0,0-.609-.31l-5.689.4a.78.78,0,0,0-.737.54l-.731,3.64.554-.509a19.226,19.226,0,0,0-3.528,1.583l.811.008-3.217-1.908a.9.9,0,0,0-1.075.189l-4.1,3.961a.393.393,0,0,0-.052.492l1.3,2.379c.1.178.546.736.524.959a.535.535,0,0,0-.518.525l-.231.449a18.352,18.352,0,0,0-.784,1.875l.7-.413-3.821.628c-.289.048-.7.19-.737.54q-.3,2.836-.6,5.672a.393.393,0,0,0,.292.4l2.115.827a5.514,5.514,0,0,1,1.284.5c.058.047.258.053.3.118a.446.446,0,0,0-.085.686q.074.351.169.7c.083.315.45.992.471,1.182s.089-.044-.039.237a5.665,5.665,0,0,1-.87,1.013l-1.587,1.847a.393.393,0,0,0-.053.492l3.188,4.729a.7.7,0,0,0,.735.164l3.943-1.33-.638-.072c.46.392.928.77,1.424,1.115a5.293,5.293,0,0,0,.987.419c.142.2-.012,1.028-.015,1.27q-.017,1.445-.034,2.89a.393.393,0,0,0,.291.4l5.482,1.573a.9.9,0,0,0,1.025-.374l2.194-3.6-.871.41.169.007c.649.028,1.365-.933.463-.972l-.169-.007a.917.917,0,0,0-.871.409l-2.194,3.6,1.025-.374-5.482-1.574.292.4q.017-1.508.035-3.017a4.2,4.2,0,0,0,.014-1.166c-.211-.618-1.152-.941-1.679-1.33-.569-.421-.958-1-1.694-.924a5.714,5.714,0,0,0-1.1.371l-2.844.959.735.164-3.188-4.729-.052.492,2.639-3.072a.429.429,0,0,0,.109-.376,18.208,18.208,0,0,1-.566-1.814,5.147,5.147,0,0,0-.34-1.531c-.177-.229-.657-.325-.906-.422l-3.044-1.19.291.4q.3-2.836.6-5.672l-.737.54,3.821-.628c.244-.04.6-.144.7-.413a18.426,18.426,0,0,1,.785-1.875c.184-.372.756-1.044.772-1.451.011-.265-.259-.6-.378-.817l-1.522-2.786q-.026.246-.053.492l4.1-3.961-1.075.189,3.218,1.908a.855.855,0,0,0,.811.008,18.325,18.325,0,0,1,1.627-.853,12.91,12.91,0,0,0,1.728-.667c.365-.242.383-.477.468-.878.227-1.066.43-2.138.644-3.207l-.736.54,5.689-.4-.609-.31,1.224,3.488a.5.5,0,0,0,.437.307,17.356,17.356,0,0,1,3.4,1,.918.918,0,0,0,.829-.145l2.9-2.322-.959.081,4.613,3.354-.124-.463c-.383,1.014-.773,2.026-1.148,3.043a1.36,1.36,0,0,0-.164.879c.1.415.821,1.062,1.068,1.435.332.5.626,1.02.907,1.55a.542.542,0,0,0,.38.192l3.835.091-.437-.307,1.378,5.534.372-.573-3.444,1.935c-.153.086-.383.238-.381.445a15.781,15.781,0,0,1-.4,3.371.367.367,0,0,0,.162.335l3,2.645-.124-.463-2.5,5.125.871-.409-2.924-.551a5.749,5.749,0,0,0-1.13-.213c-.76.025-1.063.618-1.571,1.125s-1.531,1.014-1.651,1.74a3.96,3.96,0,0,0,.157,1.03l.469,3.088.372-.573-5.211,2.318.908.1-2.147-2.62c-.184-.225-.4-.629-.682-.759a2.062,2.062,0,0,0-1.115.031,18.055,18.055,0,0,1-2.222.118c-.763,0-1.026.977-.119.979\"\n            transform=\"translate(-126.535 -142.513)\"\n            fill=\"#cfcfcf\"\n          />\n          <path\n            id=\"Path_287\"\n            data-name=\"Path 287\"\n            d=\"M223.113,243.525a6.781,6.781,0,0,1,9.788.468,7.148,7.148,0,0,1-.35,9.729,6.744,6.744,0,0,1-9.848-.665,7.184,7.184,0,0,1,.526-9.639c.586-.6-.7-.822-1.119-.394a7.979,7.979,0,0,0-1.6,9.112,8.109,8.109,0,0,0,8.09,4.392,8.313,8.313,0,0,0,7.109-5.834,7.9,7.9,0,0,0-3.305-8.782,8.439,8.439,0,0,0-10.176,1c-.666.61.39,1.066.887.61\"\n            transform=\"translate(-158.896 -174.029)\"\n            fill=\"#cfcfcf\"\n          />\n        </g>\n      </svg>\n    </Box>\n  );\n}\n\nexport default NoTestsImage;\n","import React, { useState, useEffect, useCallback } from 'react';\nimport {\n  Box,\n  Skeleton,\n  Button,\n  IconButton,\n  Table,\n  TableBody,\n  TableCell,\n  TableContainer,\n  TableHead,\n  TableRow,\n  CircularProgress\n} from '@mui/material';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport EditIcon from '@mui/icons-material/Edit';\nimport { classes } from '../styles';\nimport SkeletonTable from '../../shared/SkeletonTable';\nimport { IAutomatedTestProps, IAutomatedTest } from '../../types';\nimport { IApplicationStatus } from '../../../Job/types';\nimport TestGridModal from './TestGridModal';\nimport NoTestsImage from './NoTests';\n\nexport default function TestGrid({ apiKey, jobId, setSnackbar }: IAutomatedTestProps) {\n  const [loading, setLoading] = useState({\n    automatedTests: true,\n    applicationStatuses: true,\n    testGridPackages: true\n  });\n  const [isDeleting, setIsDeleting] = useState(-1);\n  const [automatedTests, setAutomatedTests] = useState<IAutomatedTest[]>([]);\n  const [applicationStatuses, setApplicationStatuses] = useState<IApplicationStatus[]>([]);\n  const [testGridPackages, setTestGridPackages] = useState<{ value: string; label: string }[]>([]);\n  const [modalOpen, setModalOpen] = useState(false);\n  const [testIndex, setTestIndex] = useState(-1);\n\n  const getAutomatedTests = useCallback(async () => {\n    setLoading((prev) => ({ ...prev, automatedTests: true }));\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/test_grid_tests`, {\n        method: 'GET',\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      });\n      const { test_grid_tests } = await response.json();\n      setAutomatedTests(test_grid_tests);\n    } catch (error) {\n      setSnackbar({\n        message: error.message || 'Error fetching automated tests',\n        state: 'error'\n      });\n    } finally {\n      setLoading((prev) => ({ ...prev, automatedTests: false }));\n    }\n  }, [apiKey, jobId, setSnackbar]);\n\n  const getTestgridPackages = useCallback(async () => {\n    setLoading((prev) => ({ ...prev, testGridPackages: true }));\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/test_grid_packages`, {\n        method: 'GET',\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      });\n      const { test_grid_packages } = await response.json();\n      setTestGridPackages(test_grid_packages);\n    } catch (error) {\n      setSnackbar({\n        message: error.message || 'Error fetching application statuses',\n        state: 'error'\n      });\n    } finally {\n      setLoading((prev) => ({ ...prev, testGridPackages: false }));\n    }\n  }, [apiKey, jobId, setSnackbar]);\n\n  const getApplicationStatuses = useCallback(async () => {\n    setLoading((prev) => ({ ...prev, applicationStatuses: true }));\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/job_application_statuses`, {\n        method: 'GET',\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      });\n      const { job_application_statuses } = await response.json();\n      job_application_statuses.shift(); // Remove \"New\" status from array\n      setApplicationStatuses(job_application_statuses);\n    } catch (error) {\n      setSnackbar({\n        message: error.message || 'Error fetching application statuses',\n        state: 'error'\n      });\n    } finally {\n      setLoading((prev) => ({ ...prev, applicationStatuses: false }));\n    }\n  }, [apiKey, jobId, setSnackbar]);\n\n  const handleOpenModal = (index: number) => {\n    setTestIndex(index);\n    setModalOpen(true);\n  };\n\n  const removeAutomatedTest = async (index: number) => {\n    setIsDeleting(index);\n    try {\n      const response = await fetch(\n        `/api/v4/jobs/${jobId}/test_grid_tests/${automatedTests[index].id}`,\n        {\n          method: 'DELETE',\n          headers: {\n            'X-api-authenticate': apiKey\n          }\n        }\n      );\n      if (response.ok) {\n        setSnackbar({\n          message: 'Automated test deleted successfully',\n          state: 'success'\n        });\n        const newAutomatedTests = [...automatedTests];\n        newAutomatedTests.splice(index, 1);\n        setAutomatedTests(newAutomatedTests);\n      } else {\n        throw new Error('Error deleting automated test');\n      }\n    } catch (error) {\n      setSnackbar({\n        message: error.message || 'Error deleting automated test',\n        state: 'error'\n      });\n    } finally {\n      setIsDeleting(-1);\n    }\n  };\n\n  useEffect(() => {\n    getAutomatedTests();\n    getApplicationStatuses();\n    getTestgridPackages();\n  }, [getApplicationStatuses, getAutomatedTests, getTestgridPackages]);\n\n  return (\n    <Box sx={classes.testGridContainer}>\n      <Box sx={classes.titleAndButtonContainer}>\n        <h2>Automated testgrid</h2>\n        <Button sx={classes.newButton} onClick={() => handleOpenModal(-1)}>\n          Create automated test\n        </Button>\n      </Box>\n      {loading.automatedTests || automatedTests.length > 0 ? (\n        <TableContainer sx={classes.tableContainer}>\n          <Table sx={classes.table} aria-label=\"auto email replies table\">\n            <TableHead>\n              <TableRow>\n                <TableCell>Package</TableCell>\n                <TableCell>Trigger status</TableCell>\n                <TableCell>Pass percentage</TableCell>\n                <TableCell>Pass status</TableCell>\n                <TableCell>Fail status</TableCell>\n                <TableCell align=\"right\">{/*Action column*/}</TableCell>\n              </TableRow>\n            </TableHead>\n            {loading.automatedTests || loading.applicationStatuses\n              ? <SkeletonTable rows={5} cols={6} />\n              : (\n                <TableBody>\n                  {automatedTests.map((reply, index) => (\n                    <TableRow key={reply.id}>\n                      <TableCell>\n                        {testGridPackages.find((tgPackage) => tgPackage.value === reply.package)\n                          ?.label ?? '-'}\n                      </TableCell>\n                      <TableCell>\n                        {applicationStatuses.find((status) => status.id === reply.trigger_status_id)\n                          ?.name ?? '-'}\n                      </TableCell>\n                      <TableCell>{`${reply.pass_at}% or greater`}</TableCell>\n                      <TableCell>\n                        {applicationStatuses.find((status) => status.id === reply.pass_status_id)\n                          ?.name ?? '-'}\n                      </TableCell>\n                      <TableCell>\n                        {applicationStatuses.find((status) => status.id === reply.fail_status_id)\n                          ?.name ?? '-'}\n                      </TableCell>\n                      <TableCell sx={classes.tableActions}>\n                        <IconButton\n                          sx={classes.tableEditButton}\n                          onClick={() => handleOpenModal(index)}\n                        >\n                          <EditIcon />\n                        </IconButton>\n                        <IconButton\n                          sx={classes.tableDeleteButton}\n                          onClick={() => removeAutomatedTest(index)}\n                        >\n                          {isDeleting === index ? (\n                            <CircularProgress size={24} color=\"inherit\" />\n                          ) : (\n                            <DeleteIcon />\n                          )}\n                        </IconButton>\n                      </TableCell>\n                    </TableRow>\n                  ))}\n                </TableBody>\n              )}\n          </Table>\n        </TableContainer>\n      ) : (\n        <Box sx={classes.noTests}>\n          <NoTestsImage />\n          <Box>No automated tests have been created for this job</Box>\n        </Box>\n      )}\n      <TestGridModal\n        apiKey={apiKey}\n        jobId={jobId}\n        modalOpen={modalOpen}\n        setModalOpen={setModalOpen}\n        automatedTests={automatedTests}\n        setAutomatedTests={setAutomatedTests}\n        applicationStatuses={applicationStatuses}\n        testGridPackages={testGridPackages}\n        testIndex={testIndex}\n        loading={loading}\n        setSnackbar={setSnackbar}\n      />\n    </Box>\n  );\n}\n","import React, { useState, useEffect, useRef } from 'react';\nimport {\n  Box,\n  Modal,\n  Button,\n  Autocomplete,\n  TextField,\n  Slider,\n  CircularProgress\n} from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { ITestGridProps } from '../../types';\nimport { IApplicationStatus } from '../../../Job/types';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\n\nexport default function TestGridModal({\n  apiKey,\n  jobId,\n  modalOpen,\n  setModalOpen,\n  automatedTests,\n  setAutomatedTests,\n  applicationStatuses,\n  testGridPackages,\n  testIndex,\n  loading,\n  setSnackbar\n}: ITestGridProps) {\n  const [isSending, setIsSending] = useState(false);\n  const [selectedPackage, setSelectedPackage] = useState<{ value: string; label: string } | null>(\n    null\n  );\n  const [selectedTriggerStatus, setSelectedTriggerStatus] = useState<IApplicationStatus | null>(\n    null\n  );\n  const [passAt, setPassAt] = useState(0);\n  const [selectedPassStatus, setSelectedPassStatus] = useState<IApplicationStatus | null>(null);\n  const [selectedFailStatus, setSelectedFailStatus] = useState<IApplicationStatus | null>(null);\n  const [errors, setErrors] = useState({\n    package: '',\n    trigger: '',\n    pass: '',\n    passStatus: '',\n    failStatus: ''\n  });\n\n  const refObject = {\n    package: useRef<HTMLDivElement>(null),\n    trigger: useRef<HTMLDivElement>(null),\n    pass: useRef<HTMLDivElement>(null),\n    passStatus: useRef<HTMLDivElement>(null),\n    failStatus: useRef<HTMLDivElement>(null)\n  };\n\n  const handleSubmit = async () => {\n    let errorRef = '';\n    if (\n      !selectedPackage ||\n      (automatedTests.some((test) => test.package === selectedPackage.value) &&\n        selectedPackage.value !== automatedTests[testIndex].package)\n    ) {\n      setErrors((prev) => ({\n        ...prev,\n        package: !selectedPackage ? 'Please select a package' : 'Package already being used'\n      }));\n      errorRef = errorRef || 'package';\n    }\n    if (!selectedTriggerStatus) {\n      setErrors((prev) => ({ ...prev, trigger: 'Please select a trigger status' }));\n      errorRef = errorRef || 'trigger';\n    }\n    if (!passAt) {\n      setErrors((prev) => ({ ...prev, pass: 'Please select a trigger percentage' }));\n      errorRef = errorRef || 'pass';\n    }\n    if (!selectedPassStatus) {\n      setErrors((prev) => ({ ...prev, passStatus: 'Please select a pass status' }));\n      errorRef = errorRef || 'passStatus';\n    }\n    if (!selectedFailStatus) {\n      setErrors((prev) => ({ ...prev, failStatus: 'Please select a fail status' }));\n      errorRef = errorRef || 'failStatus';\n    }\n    if (errorRef) {\n      refObject[errorRef as keyof typeof refObject].current?.scrollIntoView({\n        behavior: 'smooth',\n        block: 'center'\n      });\n      return;\n    }\n    try {\n      setIsSending(true);\n      if (testIndex === -1) {\n        const response = await fetch(`/api/v4/jobs/${jobId}/test_grid_tests`, {\n          method: 'POST',\n          headers: {\n            'Content-Type': 'application/json',\n            'X-api-authenticate': apiKey\n          },\n          body: JSON.stringify({\n            package: selectedPackage?.value,\n            trigger_status_id: selectedTriggerStatus?.id,\n            pass_at: passAt,\n            pass_status_id: selectedPassStatus?.id,\n            fail_status_id: selectedFailStatus?.id\n          })\n        });\n        const data = await response.json();\n        if (response.ok) {\n          setAutomatedTests((prev) => [...prev, data]);\n          setSnackbar({\n            message: 'Automated test created successfully',\n            state: 'success'\n          });\n          setModalOpen(false);\n        } else {\n          throw new Error('Error creating automated test');\n        }\n      } else {\n        const response = await fetch(\n          `/api/v4/jobs/${jobId}/test_grid_tests/${automatedTests[testIndex].id}`,\n          {\n            method: 'PUT',\n            headers: {\n              'Content-Type': 'application/json',\n              'X-api-authenticate': apiKey\n            },\n            body: JSON.stringify({\n              package: selectedPackage?.value,\n              trigger_status_id: selectedTriggerStatus?.id,\n              pass_at: passAt,\n              pass_status_id: selectedPassStatus?.id,\n              fail_status_id: selectedFailStatus?.id\n            })\n          }\n        );\n        const data = await response.json();\n        if (response.ok) {\n          setAutomatedTests((prev) => {\n            const newTests = [...prev];\n            newTests[testIndex] = data;\n            return newTests;\n          });\n          setSnackbar({\n            message: 'Auto reply updated successfully',\n            state: 'success'\n          });\n          setModalOpen(false);\n        } else {\n          throw new Error('Error updating auto reply');\n        }\n      }\n    } catch (error) {\n      setSnackbar({\n        message: error.message || 'Error creating/updating automated test',\n        state: 'error'\n      });\n    } finally {\n      setIsSending(false);\n    }\n  };\n\n  useEffect(() => {\n    setErrors({\n      package: '',\n      trigger: '',\n      pass: '',\n      passStatus: '',\n      failStatus: ''\n    });\n    if (testIndex === -1) {\n      setSelectedPackage(null);\n      setSelectedTriggerStatus(null);\n      setPassAt(0);\n      setSelectedPassStatus(null);\n      setSelectedFailStatus(null);\n      return;\n    }\n    setSelectedPackage(\n      testGridPackages.find((p) => p.value === automatedTests[testIndex].package) || null\n    );\n    setSelectedTriggerStatus(\n      applicationStatuses.find(\n        (status) => status.id === automatedTests[testIndex].trigger_status_id\n      ) || null\n    );\n    setPassAt(automatedTests[testIndex].pass_at);\n    setSelectedPassStatus(\n      applicationStatuses.find(\n        (status) => status.id === automatedTests[testIndex].pass_status_id\n      ) || null\n    );\n    setSelectedFailStatus(\n      applicationStatuses.find(\n        (status) => status.id === automatedTests[testIndex].fail_status_id\n      ) || null\n    );\n  }, [applicationStatuses, automatedTests, testGridPackages, testIndex]);\n\n  return (\n    <Modal\n      open={modalOpen}\n      onClose={() => setModalOpen(false)}\n      aria-labelledby=\"new-test-grid-modal\"\n    >\n      <Box sx={classes.actionsModalReducedPadding}>\n        <CloseIcon onClick={() => setModalOpen(false)} sx={classes.closeIcon} />\n        <Box sx={classes.actionModalHeader}>\n          {`${testIndex === -1 ? 'New' : 'Edit'} automated test`}\n        </Box>\n        <Box\n          sx={classes.modalContent}\n          aria-label={`${testIndex === -1 ? 'New' : 'Edit'} automated test modal content`}\n        >\n          <Box\n            role=\"form\"\n            id=\"automated-test-form\"\n            aria-label=\"automated test form\"\n            sx={{ height: '100%', overflowX: 'clip' }}\n          >\n            <Box sx={{ ...classes.actionModalFormLine, marginTop: '20px' }} ref={refObject.package}>\n              <Autocomplete\n                options={testGridPackages}\n                getOptionLabel={(option) => option.label}\n                onChange={(event, value) => {\n                  setSelectedPackage(value);\n                  setErrors((prev) => ({ ...prev, package: '' }));\n                }}\n                loading={loading.testGridPackages}\n                loadingText=\"Loading packages...\"\n                value={selectedPackage}\n                sx={{ ...sharedClasses.formAutocomplete, width: '287px' }}\n                ListboxProps={{\n                  style: {\n                    fontFamily: 'Source Sans Pro, sans-serif',\n                    color: '#333333',\n                    maxHeight: '200px'\n                  }\n                }}\n                renderInput={(params) => (\n                  <TextField\n                    {...params}\n                    label=\"Package status\"\n                    InputLabelProps={{ shrink: true }}\n                  />\n                )}\n              />\n              {errors.package && <Box sx={classes.formError}>{errors.package}</Box>}\n            </Box>\n            <Box>\n              <Box\n                sx={{ ...classes.actionModalFormLine, marginBottom: '18px' }}\n                ref={refObject.trigger}\n              >\n                <Autocomplete\n                  options={applicationStatuses}\n                  getOptionLabel={(option) => option.name}\n                  onChange={(event, value) => {\n                    setSelectedTriggerStatus(value);\n                    setErrors((prev) => ({ ...prev, trigger: '' }));\n                  }}\n                  loading={loading.applicaitonStatuses}\n                  loadingText=\"Loading statuses...\"\n                  value={selectedTriggerStatus}\n                  sx={{ ...sharedClasses.formAutocomplete, width: '287px' }}\n                  ListboxProps={{\n                    style: {\n                      fontFamily: 'Source Sans Pro, sans-serif',\n                      color: '#333333',\n                      maxHeight: '200px'\n                    }\n                  }}\n                  renderInput={(params) => (\n                    <TextField\n                      {...params}\n                      label=\"Trigger status\"\n                      InputLabelProps={{ shrink: true }}\n                    />\n                  )}\n                />\n                {errors.trigger && <Box sx={classes.formError}>{errors.trigger}</Box>}\n              </Box>\n              <Box sx={classes.sliderLine} ref={refObject.pass}>\n                <Box sx={classes.inputLabel}>Pass percentage</Box>\n                <Slider\n                  sx={classes.percentageSlider}\n                  value={passAt}\n                  onChange={(event, value: number | number[]) => setPassAt(value as number)}\n                  valueLabelDisplay=\"on\"\n                  valueLabelFormat={(value: number) => `${value}%`}\n                />\n              </Box>\n              <Box sx={classes.actionModalFormLine} ref={refObject.passStatus}>\n                <Autocomplete\n                  options={applicationStatuses}\n                  getOptionLabel={(option) => option.name}\n                  onChange={(event, value) => {\n                    setSelectedPassStatus(value);\n                    setErrors((prev) => ({ ...prev, passStatus: '' }));\n                  }}\n                  loading={loading.applicaitonStatuses}\n                  loadingText=\"Loading statuses...\"\n                  value={selectedPassStatus}\n                  sx={{ ...sharedClasses.formAutocomplete, width: '287px' }}\n                  ListboxProps={{\n                    style: {\n                      fontFamily: 'Source Sans Pro, sans-serif',\n                      color: '#333333',\n                      maxHeight: '200px'\n                    }\n                  }}\n                  renderInput={(params) => (\n                    <TextField {...params} label=\"Pass status\" InputLabelProps={{ shrink: true }} />\n                  )}\n                />\n                {errors.passStatus && <Box sx={classes.formError}>{errors.passStatus}</Box>}\n              </Box>\n              <Box sx={classes.actionModalFormLine} ref={refObject.failStatus}>\n                <Autocomplete\n                  options={applicationStatuses}\n                  getOptionLabel={(option) => option.name}\n                  onChange={(event, value) => {\n                    setSelectedFailStatus(value);\n                    setErrors((prev) => ({ ...prev, failStatus: '' }));\n                  }}\n                  loading={loading.applicaitonStatuses}\n                  loadingText=\"Loading statuses...\"\n                  value={selectedFailStatus}\n                  sx={{ ...sharedClasses.formAutocomplete, width: '287px' }}\n                  ListboxProps={{\n                    style: {\n                      fontFamily: 'Source Sans Pro, sans-serif',\n                      color: '#333333',\n                      maxHeight: '200px'\n                    }\n                  }}\n                  renderInput={(params) => (\n                    <TextField {...params} label=\"Fail status\" InputLabelProps={{ shrink: true }} />\n                  )}\n                />\n                {errors.failStatus && <Box sx={classes.formError}>{errors.failStatus}</Box>}\n              </Box>\n            </Box>\n          </Box>\n        </Box>\n        <Box sx={classes.modalFooter}>\n          <Button\n            id=\"close-test-grid-button\"\n            sx={classes.modalCancelButton}\n            onClick={() => setModalOpen(false)}\n          >\n            Cancel\n          </Button>\n          <Button\n            id=\"send-test-grid-button\"\n            type=\"submit\"\n            sx={{ ...classes.modalSendButton, width: '71px', height: '41px' }}\n            onClick={handleSubmit}\n          >\n            {isSending ? <CircularProgress size={20} color=\"inherit\" /> : 'Save'}\n          </Button>\n        </Box>\n      </Box>\n    </Modal>\n  );\n}\n","import React, { useState, useCallback, useEffect } from 'react';\nimport {\n  Box,\n  Skeleton,\n  Button,\n  IconButton,\n  Table,\n  TableBody,\n  TableCell,\n  TableContainer,\n  TableHead,\n  TableRow,\n  CircularProgress\n} from '@mui/material';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport EditIcon from '@mui/icons-material/Edit';\nimport NewAutoForward from './NewAutoForward';\nimport ImmediateChangesNotice from '../shared/ImmediateChangesNotice';\nimport SkeletonTable from '../../shared/SkeletonTable';\nimport { classes } from '../styles';\nimport { IStatusTransitionsProps, IAutoForwarders } from '../../types';\nimport { IApplicationStatus, IEmailTemplate } from '../../../Job/types';\nimport { immutableRemove } from '../../../Components/Utilities/immutableRemove';\n\nexport default function AutoForward({ apiKey, jobId, setSnackbar }: IStatusTransitionsProps) {\n  const [loading, setLoading] = useState({\n    autoForwarders: true,\n    applicationStatuses: true,\n    templatesList: true\n  });\n  const [isDeleting, setIsDeleting] = useState(-1);\n  const [autoForwarders, setAutoForwarders] = useState<IAutoForwarders[]>([]);\n  const [applicationStatuses, setApplicationStatuses] = useState<IApplicationStatus[]>([]);\n  const [templates, setTemplates] = useState([]);\n  const [modalOpen, setModalOpen] = useState(false);\n  const [forwardIndex, setForwardIndex] = useState(0);\n\n  const getAutoForwarders = useCallback(async () => {\n    setLoading((prev) => ({ ...prev, autoForwarders: true }));\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/auto_forwarders`, {\n        method: 'GET',\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      });\n      const { auto_forwarders } = await response.json();\n      setAutoForwarders(auto_forwarders);\n    } catch (error) {\n      setSnackbar({\n        message: error.message || 'Error fetching auto forwarders',\n        state: 'error'\n      });\n    } finally {\n      setLoading((prev) => ({ ...prev, autoForwarders: false }));\n    }\n  }, [apiKey, jobId, setSnackbar]);\n\n  const getApplicationStatuses = useCallback(async () => {\n    setLoading((prev) => ({ ...prev, applicationStatuses: true }));\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/job_application_statuses`, {\n        method: 'GET',\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      });\n      const { job_application_statuses } = await response.json();\n      setApplicationStatuses(job_application_statuses);\n    } catch (error) {\n      setSnackbar({\n        message: error.message || 'Error fetching status transitions',\n        state: 'error'\n      });\n    } finally {\n      setLoading((prev) => ({ ...prev, applicationStatuses: false }));\n    }\n  }, [apiKey, jobId, setSnackbar]);\n\n  const getTemplatesAndPlaceholders = useCallback(async () => {\n    setLoading((prev) => ({ ...prev, templatesList: true }));\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/email_templates`, {\n        method: 'GET',\n        headers: {\n          'Content-Type': 'application/json',\n          'X-api-authenticate': apiKey\n        }\n      }).then((res) => res.json());\n      setTemplates(\n        response.email_templates.map(\n          (template: IEmailTemplate) => `${template.id} - ${template.name}`\n        )\n      );\n    } catch (error) {\n      setSnackbar({\n        message: 'Error fetching templates',\n        state: 'error'\n      });\n    } finally {\n      setLoading((prev) => ({ ...prev, templatesList: false }));\n    }\n  }, [apiKey, jobId, setSnackbar]);\n\n  const removeAutoForwarder = async (index: number) => {\n    setIsDeleting(index);\n    try {\n      const response = await fetch(\n        `/api/v4/jobs/${jobId}/auto_forwarders/${autoForwarders[index].id}`,\n        {\n          method: 'DELETE',\n          headers: {\n            'Content-Type': 'application/json',\n            'X-api-authenticate': apiKey\n          }\n        }\n      );\n      if (response.ok) {\n        setAutoForwarders(immutableRemove(autoForwarders, index));\n        setSnackbar({\n          message: 'Auto forwarder deleted successfully',\n          state: 'success'\n        });\n      } else {\n        throw new Error('Error deleting auto forwarder');\n      }\n    } catch (error) {\n      setSnackbar({\n        message: error.message || 'Error removing auto forwarder',\n        state: 'error'\n      });\n    } finally {\n      setIsDeleting(-1);\n    }\n  };\n\n  const handleOpenModal = (index: number) => {\n    setForwardIndex(index);\n    setModalOpen(true);\n  };\n\n  useEffect(() => {\n    getAutoForwarders();\n    getApplicationStatuses();\n    getTemplatesAndPlaceholders();\n  }, [getApplicationStatuses, getAutoForwarders, getTemplatesAndPlaceholders]);\n\n  return (\n    <Box sx={classes.automationContainer}>\n      <Box sx={classes.titleAndButtonContainer}>\n        <h2>Auto forward</h2>\n        <Button\n          data-testid=\"add-auto-forwarding-button\"\n          sx={classes.newButton}\n          onClick={() => handleOpenModal(-1)}\n        >\n          New auto forwarding config\n        </Button>\n      </Box>\n      <ImmediateChangesNotice />\n      {loading.autoForwarders || autoForwarders.length > 0 ? (\n        <TableContainer sx={classes.tableContainer}>\n          <Table sx={classes.table} aria-label=\"auto forwarders table\">\n            <TableHead>\n              <TableRow>\n                <TableCell>Trigger Status</TableCell>\n                <TableCell>Recipient Emails</TableCell>\n                <TableCell align=\"right\">{/*Action column*/}</TableCell>\n              </TableRow>\n            </TableHead>\n            {loading.autoForwarders || loading.applicationStatuses || loading.templatesList\n              ? <SkeletonTable rows={5} cols={3} />\n              : (\n                <TableBody>\n                  {autoForwarders.map((forwarder, index) => (\n                    <TableRow key={forwarder.id}>\n                      <TableCell>\n                        {applicationStatuses.find(\n                          (status) => status.id === forwarder.trigger_status_id\n                        )?.name ?? '-'}\n                      </TableCell>\n                      <TableCell>{forwarder.recipient_emails}</TableCell>\n                      <TableCell sx={classes.tableActions}>\n                        <IconButton\n                          id=\"auto-forward-edit-button\"\n                          data-testid=\"auto-forward-edit-button\"\n                          sx={classes.tableEditButton}\n                          onClick={() => handleOpenModal(index)}\n                        >\n                          <EditIcon />\n                        </IconButton>\n                        <IconButton\n                          id=\"auto-forward-delete-button\"\n                          data-testid=\"auto-forward-delete-button\"\n                          sx={classes.tableDeleteButton}\n                          onClick={() => removeAutoForwarder(index)}\n                        >\n                          {isDeleting === index ? (\n                            <CircularProgress size={24} color=\"inherit\" />\n                          ) : (\n                            <DeleteIcon />\n                          )}\n                        </IconButton>\n                      </TableCell>\n                    </TableRow>\n                  ))}\n                </TableBody>\n              )}\n          </Table>\n        </TableContainer>\n      ) : (\n        <Box sx={classes.noAutoForwarders}>\n          No auto forwarders configured. Click on the button above to create one.\n        </Box>\n      )}\n      {!loading.autoForwarders && !loading.applicationStatuses && (\n        <NewAutoForward\n          jobId={jobId}\n          apiKey={apiKey}\n          modalOpen={modalOpen}\n          setModalOpen={setModalOpen}\n          autoForwarders={autoForwarders}\n          setAutoForwarders={setAutoForwarders}\n          applicationStatuses={applicationStatuses || []}\n          emailTemplates={templates}\n          forwardIndex={modalOpen ? forwardIndex : -1}\n          isLoadingTemplateList={loading.templatesList}\n          setSnackbar={setSnackbar}\n        />\n      )}\n    </Box>\n  );\n}\n","import React, { useState, useEffect, useRef, useCallback } from 'react';\nimport {\n  Box,\n  Modal,\n  Button,\n  Autocomplete,\n  TextField,\n  Skeleton,\n  CircularProgress\n} from '@mui/material';\nimport MultiTagInput from '../../../Components/CustomUIElements/MultiTagInput';\nimport CancelButton from '../shared/CancelButton';\nimport { Virtualize } from '../../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { IAutoModalProps } from '../../types';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport { IApplicationStatus } from '../../../Job/types';\nimport { stringToSeconds } from '../../../Components/Utilities/stringToSeconds';\nimport { secondsToString } from '../../../Components/Utilities/secondsToString';\nimport dompurify from 'dompurify';\nimport VisibilityIcon from '@mui/icons-material/Visibility';\nimport DelaySelectWrapper from '../shared/DelaySelectWrapper';\n\nexport default function NewAutoForward({\n  jobId,\n  apiKey,\n  modalOpen,\n  setModalOpen,\n  autoForwarders,\n  setAutoForwarders,\n  applicationStatuses,\n  emailTemplates,\n  isLoadingTemplateList,\n  forwardIndex,\n  setSnackbar\n}: IAutoModalProps) {\n  const [tempEmails, setTempEmails] = useState<string[]>([]);\n  const [isSending, setIsSending] = useState(false);\n  const [selectedTemplate, setSelectedTemplate] = useState<string | null>(null);\n  const [isLoadingTemplate, setIsLoadingTemplate] = useState(false);\n  const [delay, setDelay] = useState('None');\n  const [selectedStatus, setSelectedStatus] = useState<IApplicationStatus | null>(null);\n  const [body, setBody] = useState('');\n  const [errors, setErrors] = useState({\n    status: '',\n    template: '',\n    emails: ''\n  });\n\n  const refObject = {\n    status: useRef<HTMLDivElement>(null),\n    template: useRef<HTMLDivElement>(null),\n    emails: useRef<HTMLDivElement>(null)\n  };\n\n  const handleSelectTemplate = useCallback(\n    async (value: string) => {\n      if (!value) {\n        setSelectedTemplate(null);\n        setBody('');\n        return;\n      }\n      setIsLoadingTemplate(true);\n      setBody(\n        '<p style=\"text-align: center;\"><span style=\"font-size: 14pt;\"><strong>Loading template...</strong></span></p>'\n      );\n      const id = value.split(' -')[0];\n      setSelectedTemplate(value);\n      try {\n        const response = await fetch(`/api/v4/jobs/${jobId}/email_templates/${id}`, {\n          method: 'GET',\n          headers: {\n            'X-api-authenticate': apiKey\n          }\n        });\n        const data = await response.json();\n        setBody(data.body);\n      } catch (error) {\n        setBody(\n          '<p style=\"text-align: center;\"><span style=\"font-size: 14pt;\"><strong>Error loading template</strong></span></p>'\n        );\n      } finally {\n        setIsLoadingTemplate(false);\n      }\n    },\n    [apiKey, jobId]\n  );\n\n  const emailIsValid = (email: string) => {\n    const simpleEmailRex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n    if (simpleEmailRex.test(String(email).toLowerCase())) {\n      setErrors((prev) => ({ ...prev, emails: '' }));\n      return true;\n    }\n\n    return false;\n  };\n\n  const handleSubmit = async () => {\n    let errorRef = '';\n    if (!selectedStatus) {\n      setErrors((prev) => ({ ...prev, status: 'Please select a status' }));\n      errorRef = errorRef || 'status';\n    }\n    if (!tempEmails.length) {\n      setErrors((prev) => ({ ...prev, emails: 'Please enter at least one email address' }));\n      errorRef = errorRef || 'emails';\n    }\n    if (errorRef) {\n      refObject[errorRef as keyof typeof refObject].current?.scrollIntoView({\n        behavior: 'smooth',\n        block: 'center'\n      });\n      return;\n    }\n    try {\n      setIsSending(true);\n      if (forwardIndex === -1) {\n        const response = await fetch(`/api/v4/jobs/${jobId}/auto_forwarders`, {\n          method: 'POST',\n          headers: {\n            'Content-Type': 'application/json',\n            'X-api-authenticate': apiKey\n          },\n          body: JSON.stringify({\n            auto_forwarder: {\n              trigger_status_id: selectedStatus?.id,\n              email_template_id: selectedTemplate?.split(' -')[0],\n              recipient_emails: tempEmails.join(', '),\n              delay: stringToSeconds(delay)\n            }\n          })\n        });\n        const data = await response.json();\n        if (response.ok) {\n          setAutoForwarders((prev) => [...prev, data]);\n          setSnackbar({\n            message: 'Auto forwarder created successfully',\n            state: 'success'\n          });\n          setModalOpen(false);\n        } else {\n          throw new Error('Error creating auto forwarder');\n        }\n      } else {\n        const response = await fetch(\n          `/api/v4/jobs/${jobId}/auto_forwarders/${autoForwarders[forwardIndex].id}`,\n          {\n            method: 'PUT',\n            headers: {\n              'Content-Type': 'application/json',\n              'X-api-authenticate': apiKey\n            },\n            body: JSON.stringify({\n              auto_forwarder: {\n                trigger_status_id: selectedStatus?.id,\n                email_template_id: selectedTemplate?.split(' -')[0],\n                recipient_emails: tempEmails.join(', '),\n                delay: stringToSeconds(delay)\n              }\n            })\n          }\n        );\n        const data = await response.json();\n        if (response.ok) {\n          setAutoForwarders((prev) => {\n            const newAutoForwarders = [...prev];\n            newAutoForwarders[forwardIndex] = data;\n            return newAutoForwarders;\n          });\n          setSnackbar({\n            message: 'Auto forwarder updated successfully',\n            state: 'success'\n          });\n          setModalOpen(false);\n        } else {\n          throw new Error('Error updating auto forwarder');\n        }\n      }\n    } catch (error) {\n      setSnackbar({\n        message: error.message || 'Error saving auto-forwarder',\n        state: 'error'\n      });\n    } finally {\n      setIsSending(false);\n    }\n  };\n\n  useEffect(() => {\n    setErrors({\n      status: '',\n      template: '',\n      emails: ''\n    });\n    if (forwardIndex === -1) {\n      setTempEmails([]);\n      setSelectedTemplate(null);\n      setDelay('None');\n      setSelectedStatus(null);\n      setBody('');\n      return;\n    }\n    setTempEmails(autoForwarders[forwardIndex].recipient_emails.split(','));\n    setSelectedStatus(\n      applicationStatuses.find(\n        (status) => status.id === autoForwarders[forwardIndex].trigger_status_id\n      ) || null\n    );\n    setDelay(secondsToString(autoForwarders[forwardIndex].delay));\n  }, [applicationStatuses, autoForwarders, forwardIndex]);\n\n  useEffect(() => {\n    if (forwardIndex !== -1) {\n      const emailTemplate =\n        emailTemplates.find(\n          (template) =>\n            template.split(' - ')[0] === autoForwarders[forwardIndex].email_template_id.toString()\n        ) || null;\n      setSelectedTemplate(emailTemplate);\n      if (emailTemplate) {\n        handleSelectTemplate(emailTemplate);\n      }\n    }\n  }, [autoForwarders, emailTemplates, forwardIndex, handleSelectTemplate]);\n\n  return (\n    <Modal\n      open={modalOpen}\n      onClose={() => setModalOpen(false)}\n      aria-labelledby=\"new-auto-forward-modal\"\n    >\n      <Box sx={classes.actionsModalReducedPadding}>\n        <CloseIcon onClick={() => setModalOpen(false)} sx={classes.closeIcon} />\n        <Box sx={classes.actionModalHeader}>{`${\n          forwardIndex === -1 ? 'New' : 'Edit'\n        } auto forward config`}</Box>\n        <Box\n          sx={classes.modalContent}\n          aria-label={`${forwardIndex === -1 ? 'New' : 'Edit'} auto forward modal content`}\n        >\n          <Box\n            role=\"form\"\n            id=\"auto-forward-form\"\n            aria-label=\"Auto forward form\"\n            sx={{ height: '100%', overflowX: 'clip' }}\n          >\n            <Box\n              sx={{ ...classes.actionModalFormLine, marginTop: '20px', marginBottom: '40px' }}\n              ref={refObject.status}\n            >\n              <Autocomplete\n                data-testid=\"trigger-status-autocomplete-auto-forward\"\n                options={applicationStatuses}\n                getOptionLabel={(option) => option.name}\n                onChange={(event, value) => {\n                  setSelectedStatus(value);\n                  setErrors((prev) => ({ ...prev, status: '' }));\n                }}\n                value={selectedStatus}\n                sx={{ ...sharedClasses.formAutocomplete, width: '287px' }}\n                ListboxProps={{\n                  style: {\n                    fontFamily: 'Source Sans Pro, sans-serif',\n                    color: '#333333',\n                    maxHeight: '200px'\n                  }\n                }}\n                renderInput={(params) => (\n                  <TextField\n                    {...params}\n                    label=\"Trigger status\"\n                    InputLabelProps={{ shrink: true }}\n                  />\n                )}\n                renderOption={(props, option, state) => {\n                  return (\n                    <li {...props} key={option.id} data-testid={`option-${state.index}`}>\n                      {option.name}\n                    </li>\n                  );\n                }}\n              />\n              {errors.status && <Box sx={classes.formError}>{errors.status}</Box>}\n            </Box>\n            <Box>\n              <Box sx={classes.actionModalFormLine} ref={refObject.template}>\n                <Virtualize\n                  value={selectedTemplate}\n                  passOptions={emailTemplates}\n                  setValue={(value: string) => {\n                    handleSelectTemplate(value);\n                    setErrors((prev) => ({ ...prev, template: '' }));\n                  }}\n                  passedStyles={{\n                    ...sharedClasses.formAutocomplete,\n                    width: '600px',\n                    marginTop: '20px'\n                  }}\n                  label=\"Template\"\n                  loading={isLoadingTemplateList}\n                  loadingText=\"Loading template list...\"\n                />\n                {errors.template && <Box sx={classes.formError}>{errors.template}</Box>}\n              </Box>\n              {selectedTemplate &&\n                forwardIndex !== -1 &&\n                (isLoadingTemplate || (forwardIndex !== -1 && !selectedTemplate) ? (\n                  <Skeleton\n                    variant=\"rectangular\"\n                    animation=\"wave\"\n                    height={400}\n                    width={'96%'}\n                    sx={classes.previewSkeleton}\n                  />\n                ) : (\n                  <Box sx={{ ...classes.htmlContent }}>\n                    <Box sx={{ ...classes.previewHeader }}>\n                      <VisibilityIcon />\n                      Preview\n                    </Box>\n                    <Box\n                      sx={classes.emailPreview}\n                      dangerouslySetInnerHTML={{\n                        __html: dompurify.sanitize(body)\n                      }}\n                    />\n                  </Box>\n                ))}\n            </Box>\n            <Box sx={classes.actionModalFormLine} ref={refObject.emails}>\n              <MultiTagInput\n                tags={tempEmails}\n                setTags={(emails) => {\n                  setTempEmails(emails);\n                  setErrors((prev) => ({ ...prev, emails: '' }));\n                }}\n                validation={emailIsValid}\n                validationMessage=\"Must input valid email\"\n                label=\"Recipient email address/s\"\n                width=\"600px\"\n                error={errors.emails}\n              />\n            </Box>\n            <DelaySelectWrapper delay={delay} setDelay={setDelay} />\n          </Box>\n        </Box>\n        <Box sx={classes.modalFooter}>\n          <CancelButton scope='auto-forward' setModalOpen={setModalOpen} />\n          <Button\n            id=\"send-auto-forward-button\"\n            data-testid=\"send-auto-forward-button\"\n            type=\"submit\"\n            sx={{ ...classes.modalSendButton, width: '71px', height: '41px' }}\n            onClick={handleSubmit}\n          >\n            {isSending ? <CircularProgress size={20} color=\"inherit\" /> : 'Save'}\n          </Button>\n        </Box>\n      </Box>\n    </Modal>\n  );\n}\n","import React, { useState, useCallback, useEffect } from 'react';\nimport {\n  Box,\n  Skeleton,\n  Button,\n  IconButton,\n  Table,\n  TableBody,\n  TableCell,\n  TableContainer,\n  TableHead,\n  TableRow,\n  CircularProgress\n} from '@mui/material';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport EditIcon from '@mui/icons-material/Edit';\nimport NewAutoReply from './NewAutoReply';\nimport ImmediateChangesNotice from '../shared/ImmediateChangesNotice';\nimport SkeletonTable from '../../shared/SkeletonTable';\nimport { classes } from '../styles';\nimport { IStatusTransitionsProps, IAutoReplies } from '../../types';\nimport { IApplicationStatus, IEmailTemplate } from '../../../Job/types';\nimport { immutableRemove } from '../../../Components/Utilities/immutableRemove';\n\nexport default function AutoReply({ apiKey, jobId, setSnackbar }: IStatusTransitionsProps) {\n  const [loading, setLoading] = useState({\n    autoReplies: true,\n    applicationStatuses: true,\n    templatesList: true,\n    careAdvantageEvents: true\n  });\n  const [isDeleting, setIsDeleting] = useState(-1);\n  const [autoReplies, setAutoReplies] = useState<IAutoReplies[]>([]);\n  const [applicationStatuses, setApplicationStatuses] = useState<IApplicationStatus[]>([]);\n  const [templates, setTemplates] = useState([]);\n  const [hasCareAdvantageIntegration, setHasCareAdvantageIntegration] = useState(false);\n  const [careAdvantageEvents, setCareAdvantageEvents] = useState([]);\n  const [modalOpen, setModalOpen] = useState(false);\n  const [replyIndex, setReplyIndex] = useState(0);\n\n  const getAutoReplies = useCallback(async () => {\n    setLoading((prev) => ({ ...prev, autoReplies: true }));\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/auto_emails`, {\n        method: 'GET',\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      });\n      const { auto_emails } = await response.json();\n      setAutoReplies(auto_emails);\n    } catch (error) {\n      setSnackbar({\n        message: error.message || 'Error fetching auto emails',\n        state: 'error'\n      });\n    } finally {\n      setLoading((prev) => ({ ...prev, autoReplies: false }));\n    }\n  }, [apiKey, jobId, setSnackbar]);\n\n  const getApplicationStatuses = useCallback(async () => {\n    setLoading((prev) => ({ ...prev, applicationStatuses: true }));\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/job_application_statuses`, {\n        method: 'GET',\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      });\n      const { job_application_statuses } = await response.json();\n      setApplicationStatuses(job_application_statuses);\n    } catch (error) {\n      setSnackbar({\n        message: error.message || 'Error fetching application statuses',\n        state: 'error'\n      });\n    } finally {\n      setLoading((prev) => ({ ...prev, applicationStatuses: false }));\n    }\n  }, [apiKey, jobId, setSnackbar]);\n\n  const getTemplatesAndPlaceholders = useCallback(async () => {\n    setLoading((prev) => ({ ...prev, templatesList: true }));\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/email_templates`, {\n        method: 'GET',\n        headers: {\n          'Content-Type': 'application/json',\n          'X-api-authenticate': apiKey\n        }\n      }).then((res) => res.json());\n      setTemplates(\n        response.email_templates.map(\n          (template: IEmailTemplate) => `${template.id} - ${template.name}`\n        )\n      );\n    } catch (error) {\n      setSnackbar({\n        message: 'Error fetching templates',\n        state: 'error'\n      });\n    } finally {\n      setLoading((prev) => ({ ...prev, templatesList: false }));\n    }\n  }, [apiKey, jobId, setSnackbar]);\n\n  const getCareAdvantageEvents = useCallback(async () => {\n    setLoading((prev) => ({ ...prev, careAdvantageEvents: true }));\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/auto_emails/care_advantage_events`, {\n        method: 'GET',\n        headers: {\n          'Content-Type': 'application/json',\n          'X-api-authenticate': apiKey\n        }\n      }).then((res) => res.json());\n      setHasCareAdvantageIntegration(response.has_care_advantage_integration);\n      setCareAdvantageEvents(response.care_advantage_events);\n    } catch (error) {\n      setSnackbar({\n        message: 'Error fetching care advantage events',\n        state: 'error'\n      });\n    } finally {\n      setLoading((prev) => ({ ...prev, careAdvantageEvents: false }));\n    }\n  }, [apiKey, jobId, setSnackbar]);\n\n  const removeAutoReplies = async (index: number) => {\n    setIsDeleting(index);\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/auto_emails/${autoReplies[index].id}`, {\n        method: 'DELETE',\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      });\n      if (response.ok) {\n        setSnackbar({\n          message: 'Auto email deleted successfully',\n          state: 'success'\n        });\n        setAutoReplies(immutableRemove(autoReplies, index));\n      } else {\n        throw new Error('Error deleting auto email');\n      }\n    } catch (error) {\n      setSnackbar({\n        message: error.message || 'Error deleting auto email',\n        state: 'error'\n      });\n    } finally {\n      setIsDeleting(-1);\n    }\n  };\n\n  const handleOpenModal = (index: number) => {\n    setReplyIndex(index);\n    setModalOpen(true);\n  };\n\n  useEffect(() => {\n    getAutoReplies();\n    getApplicationStatuses();\n    getTemplatesAndPlaceholders();\n    getCareAdvantageEvents();\n  }, [getApplicationStatuses, getAutoReplies, getTemplatesAndPlaceholders, getCareAdvantageEvents]);\n\n  return (\n    <Box sx={classes.automationContainer}>\n      <Box sx={classes.titleAndButtonContainer}>\n        <h2>Auto email reply</h2>\n        <Button\n          id=\"new-auto-email-reply-button\"\n          data-testid=\"new-auto-email-reply-button\"\n          sx={classes.newButton}\n          onClick={() => handleOpenModal(-1)}\n        >\n          New auto email reply\n        </Button>\n      </Box>\n      <ImmediateChangesNotice />\n      {loading.autoReplies || (autoReplies && autoReplies.length > 0) ? (\n        <TableContainer sx={classes.tableContainer}>\n          <Table sx={classes.table} aria-label=\"auto email replies table\">\n            <TableHead>\n              <TableRow>\n                <TableCell>Trigger status</TableCell>\n                <TableCell>Email template</TableCell>\n                {/* <TableCell>Sender email</TableCell> */}\n                <TableCell align=\"right\">{/*Action column*/}</TableCell>\n              </TableRow>\n            </TableHead>\n            {loading.autoReplies || loading.applicationStatuses\n              ? <SkeletonTable rows={5} cols={3} />\n              : (\n                <TableBody>\n                  {autoReplies.map((reply, index) => (\n                    <TableRow key={reply.id}>\n                      <TableCell>\n                        {applicationStatuses.find((status) => status.id === reply.trigger_status_id)\n                          ?.name ?? '-'}\n                      </TableCell>\n                      <TableCell>{reply.email_template_name || '-'}</TableCell>\n                      {/* <TableCell>{reply.email_setting || '-'}</TableCell> */}\n                      <TableCell sx={classes.tableActions}>\n                        <IconButton\n                          id=\"auto-email-reply-edit-button\"\n                          data-testid=\"auto-email-reply-edit-button\"\n                          sx={classes.tableEditButton}\n                          onClick={() => handleOpenModal(index)}\n                        >\n                          <EditIcon />\n                        </IconButton>\n                        <IconButton\n                          id=\"auto-email-reply-delete-button\"\n                          data-testid=\"auto-email-reply-delete-button\"\n                          sx={classes.tableDeleteButton}\n                          onClick={() => removeAutoReplies(index)}\n                        >\n                          {isDeleting === index ? (\n                            <CircularProgress size={24} color=\"inherit\" />\n                          ) : (\n                            <DeleteIcon />\n                          )}\n                        </IconButton>\n                      </TableCell>\n                    </TableRow>\n                  ))}\n              </TableBody>\n            )}\n          </Table>\n        </TableContainer>\n      ) : (\n        <Box sx={classes.noAutoForwarders}>\n          No auto replies configured. Click on the button above to create one.\n        </Box>\n      )}\n      {!loading.autoReplies && !loading.applicationStatuses && (\n        <NewAutoReply\n          jobId={jobId}\n          apiKey={apiKey}\n          modalOpen={modalOpen}\n          setModalOpen={setModalOpen}\n          autoReplies={autoReplies}\n          setAutoReplies={setAutoReplies}\n          applicationStatuses={applicationStatuses || []}\n          emailTemplates={templates}\n          replyIndex={modalOpen ? replyIndex : -1}\n          isLoadingTemplateList={loading.templatesList}\n          hasCareAdvantageIntegration={hasCareAdvantageIntegration}\n          careAdvantageEvents={careAdvantageEvents}\n          setSnackbar={setSnackbar}\n        />\n      )}\n    </Box>\n  );\n}\n","import React, { useState, useEffect, useRef, useCallback } from 'react';\nimport {\n  Box,\n  Modal,\n  Button,\n  Autocomplete,\n  TextField,\n  Skeleton,\n  CircularProgress\n} from '@mui/material';\nimport CancelButton from '../shared/CancelButton';\nimport { Virtualize } from '../../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { IAutoReplyProps } from '../../types';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport { IApplicationStatus } from '../../../Job/types';\nimport dompurify from 'dompurify';\nimport { FormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport { stringToSeconds } from '../../../Components/Utilities/stringToSeconds';\nimport { secondsToString } from '../../../Components/Utilities/secondsToString';\nimport DelaySelectWrapper from '../shared/DelaySelectWrapper';\nimport VisibilityIcon from '@mui/icons-material/Visibility';\n\nexport default function NewAutoReply({\n  jobId,\n  apiKey,\n  modalOpen,\n  setModalOpen,\n  autoReplies,\n  setAutoReplies,\n  applicationStatuses,\n  emailTemplates,\n  isLoadingTemplateList,\n  replyIndex,\n  hasCareAdvantageIntegration,\n  careAdvantageEvents,\n  setSnackbar\n}: IAutoReplyProps) {\n  const [isSending, setIsSending] = useState(false);\n  const [selectedTemplate, setSelectedTemplate] = useState<string | null>(null);\n  const [selectedEvent, setSelectedEvent] = useState<string | null>(null);\n  const [isLoadingTemplate, setIsLoadingTemplate] = useState(false);\n  const [emailSetting, setEmailSetting] = useState('');\n  const [delay, setDelay] = useState('None');\n  const [selectedStatus, setSelectedStatus] = useState<IApplicationStatus | null>(null);\n  const [body, setBody] = useState('');\n  const [errors, setErrors] = useState({\n    status: '',\n    template: '',\n    email: ''\n  });\n\n  const refObject = {\n    status: useRef<HTMLDivElement>(null),\n    template: useRef<HTMLDivElement>(null),\n    email: useRef<HTMLDivElement>(null)\n  };\n\n  const handleSelectTemplate = useCallback(\n    async (value: string) => {\n      if (!value) {\n        setSelectedTemplate(null);\n        setBody('');\n        return;\n      }\n      setIsLoadingTemplate(true);\n      setBody(\n        '<p style=\"text-align: center;\"><span style=\"font-size: 14pt;\"><strong>Loading template...</strong></span></p>'\n      );\n      const id = value.split(' -')[0];\n      setSelectedTemplate(value);\n      try {\n        const response = await fetch(`/api/v4/jobs/${jobId}/email_templates/${id}`, {\n          method: 'GET',\n          headers: {\n            'X-api-authenticate': apiKey\n          }\n        });\n        const data = await response.json();\n        setBody(data.body);\n      } catch (error) {\n        setBody(\n          '<p style=\"text-align: center;\"><span style=\"font-size: 14pt;\"><strong>Error loading template</strong></span></p>'\n        );\n      } finally {\n        setIsLoadingTemplate(false);\n      }\n    },\n    [apiKey, jobId]\n  );\n\n  const emailIsValid = (email: string) => {\n    const simpleEmailRex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n    if (email === '' || simpleEmailRex.test(String(email).toLowerCase())) {\n      setErrors((prev) => ({ ...prev, email: '' }));\n      return true;\n    }\n  };\n\n  const handleSubmit = async () => {\n    let errorRef = '';\n    if (!selectedStatus) {\n      setErrors((prev) => ({ ...prev, status: 'Please select a status' }));\n      errorRef = errorRef || 'status';\n    }\n    if (!selectedTemplate) {\n      setErrors((prev) => ({ ...prev, template: 'Please select a template' }));\n      errorRef = errorRef || 'template';\n    }\n    if (!emailIsValid(emailSetting)) {\n      setErrors((prev) => ({\n        ...prev,\n        email: 'Please enter a valid email or leave this field blank'\n      }));\n      errorRef = errorRef || 'email';\n    }\n    if (errorRef) {\n      refObject[errorRef as keyof typeof refObject].current?.scrollIntoView({\n        behavior: 'smooth',\n        block: 'center'\n      });\n      return;\n    }\n    try {\n      setIsSending(true);\n      const targetEvent = careAdvantageEvents.find((event) => event.name === selectedEvent);\n      if (replyIndex === -1) {\n        const response = await fetch(`/api/v4/jobs/${jobId}/auto_emails`, {\n          method: 'POST',\n          headers: {\n            'Content-Type': 'application/json',\n            'X-api-authenticate': apiKey\n          },\n          body: JSON.stringify({\n            trigger_status_id: selectedStatus?.id,\n            email_template_id: selectedTemplate?.split(' -')[0],\n            email_setting: emailSetting,\n            delay: stringToSeconds(delay),\n            care_advantage_event_id: targetEvent ? targetEvent.id : ''\n          })\n        });\n        const data = await response.json();\n        if (response.ok) {\n          setAutoReplies((prev) => [...prev, data]);\n          setSnackbar({\n            message: 'Auto reply created successfully',\n            state: 'success'\n          });\n          setModalOpen(false);\n        } else {\n          throw new Error('Error creating new auto reply');\n        }\n      } else {\n        const response = await fetch(\n          `/api/v4/jobs/${jobId}/auto_emails/${autoReplies[replyIndex].id}`,\n          {\n            method: 'PUT',\n            headers: {\n              'Content-Type': 'application/json',\n              'X-api-authenticate': apiKey\n            },\n            body: JSON.stringify({\n              trigger_status_id: selectedStatus?.id,\n              email_template_id: selectedTemplate?.split(' -')[0],\n              email_setting: emailSetting,\n              delay: stringToSeconds(delay),\n              care_advantage_event_id: targetEvent ? targetEvent.id : ''\n            })\n          }\n        );\n        const data = await response.json();\n        if (response.ok) {\n          setAutoReplies((prev) => {\n            const newReplies = [...prev];\n            newReplies[replyIndex] = data;\n            return newReplies;\n          });\n          setSnackbar({\n            message: 'Auto reply updated successfully',\n            state: 'success'\n          });\n          setModalOpen(false);\n        } else {\n          throw new Error('Error updating auto reply');\n        }\n      }\n    } catch (error) {\n      setSnackbar({\n        message: error.message || 'Something went wrong, please try again',\n        state: 'error'\n      });\n    } finally {\n      setIsSending(false);\n    }\n  };\n\n  useEffect(() => {\n    setErrors({\n      status: '',\n      template: '',\n      email: ''\n    });\n    if (replyIndex === -1) {\n      setEmailSetting('');\n      setSelectedTemplate(null);\n      setDelay('None');\n      setSelectedStatus(null);\n      setBody('');\n      return;\n    }\n    setEmailSetting(autoReplies[replyIndex].email_setting || '');\n    setSelectedStatus(\n      applicationStatuses.find(\n        (status) => status.id === autoReplies[replyIndex].trigger_status_id\n      ) || null\n    );\n    setDelay(secondsToString(autoReplies[replyIndex].delay));\n  }, [applicationStatuses, autoReplies, replyIndex]);\n\n  useEffect(() => {\n    if (replyIndex !== -1) {\n      const emailTemplate =\n        emailTemplates.find(\n          (template) =>\n            template.split(' - ')[0] === autoReplies[replyIndex].email_template_id.toString()\n        ) || null;\n      setSelectedTemplate(emailTemplate);\n      hasCareAdvantageIntegration &&\n        setSelectedEvent(autoReplies[replyIndex].care_advantage_event_name);\n      if (emailTemplate) {\n        handleSelectTemplate(emailTemplate);\n      }\n    }\n  }, [autoReplies, emailTemplates, replyIndex, hasCareAdvantageIntegration, handleSelectTemplate]);\n\n  return (\n    <Modal\n      open={modalOpen}\n      onClose={() => setModalOpen(false)}\n      aria-labelledby=\"new-auto-email-reply-modal\"\n    >\n      <Box sx={classes.actionsModalReducedPadding}>\n        <CloseIcon onClick={() => setModalOpen(false)} sx={classes.closeIcon} />\n        <Box sx={classes.actionModalHeader}>{`${\n          replyIndex === -1 ? 'New' : 'Edit'\n        } auto email reply`}</Box>\n        <Box\n          sx={classes.modalContent}\n          aria-label={`${replyIndex === -1 ? 'New' : 'Edit'} auto email reply modal content`}\n        >\n          <Box\n            role=\"form\"\n            id=\"auto-email-reply-form\"\n            aria-label=\"Auto email reply form\"\n            sx={{ height: '100%', overflowX: 'clip' }}\n          >\n            <Box\n              sx={{ ...classes.actionModalFormLine, marginTop: '20px', marginBottom: '40px' }}\n              ref={refObject.status}\n            >\n              <Autocomplete\n                id=\"trigger-status-autocomplete\"\n                data-testid=\"trigger-status-autocomplete-autoreply\"\n                options={applicationStatuses}\n                getOptionLabel={(option) => option.name}\n                onChange={(event, value) => {\n                  setSelectedStatus(value);\n                  setErrors((prev) => ({ ...prev, status: '' }));\n                }}\n                value={selectedStatus}\n                sx={{ ...sharedClasses.formAutocomplete, width: '287px' }}\n                ListboxProps={{\n                  style: {\n                    fontFamily: 'Source Sans Pro, sans-serif',\n                    color: '#333333',\n                    maxHeight: '200px'\n                  }\n                }}\n                renderInput={(params) => (\n                  <TextField\n                    {...params}\n                    label=\"Trigger status\"\n                    InputLabelProps={{ shrink: true }}\n                  />\n                )}\n                renderOption={(props, option, state) => {\n                  return (\n                    <li {...props} key={option.id} data-testid={`option-${state.index}`}>\n                      {option.name}\n                    </li>\n                  );\n                }}\n              />\n              {errors.status && <Box sx={classes.formError}>{errors.status}</Box>}\n            </Box>\n            <Box>\n              <Box sx={classes.actionModalFormLine} ref={refObject.template}>\n                <Virtualize\n                  value={selectedTemplate}\n                  passOptions={emailTemplates}\n                  setValue={(value: string) => {\n                    handleSelectTemplate(value);\n                    setErrors((prev) => ({ ...prev, template: '' }));\n                  }}\n                  passedStyles={{\n                    ...sharedClasses.formAutocomplete,\n                    width: '600px',\n                    marginTop: '20px'\n                  }}\n                  label=\"Template\"\n                  loading={isLoadingTemplateList}\n                  loadingText=\"Loading template list...\"\n                />\n                {errors.template && <Box sx={classes.formError}>{errors.template}</Box>}\n              </Box>\n              {(selectedTemplate || replyIndex !== -1) &&\n                (isLoadingTemplate || (replyIndex !== -1 && !selectedTemplate) ? (\n                  <Skeleton\n                    variant=\"rectangular\"\n                    animation=\"wave\"\n                    height={400}\n                    width={'96%'}\n                    sx={classes.previewSkeleton}\n                  />\n                ) : (\n                  <Box sx={{ ...classes.htmlContent }}>\n                    <Box sx={{ ...classes.previewHeader }}>\n                      <VisibilityIcon />\n                      Preview\n                    </Box>\n                    <Box\n                      sx={classes.emailPreview}\n                      dangerouslySetInnerHTML={{\n                        __html: dompurify.sanitize(body)\n                      }}\n                    />\n                  </Box>\n                ))}\n            </Box>\n            <Box sx={classes.actionModalFormLine} ref={refObject.email}>\n              <FormTextField\n                onChange={(event) => {\n                  setEmailSetting(event.target.value);\n                  setErrors((prev) => ({ ...prev, email: '' }));\n                }}\n                value={emailSetting}\n                id=\"sender email\"\n                label=\"Sender email (optional)\"\n                error={errors.email}\n                styles={{ width: '290px' }}\n              />\n            </Box>\n            <DelaySelectWrapper delay={delay} setDelay={setDelay} />\n            {hasCareAdvantageIntegration && (\n              <Box sx={{ ...classes.actionModalFormLine, rowGap: '0px !important' }}>\n                <Virtualize\n                  value={selectedEvent}\n                  passOptions={careAdvantageEvents.map((event) => event.name)}\n                  setValue={(value: string) => {\n                    setSelectedEvent(value);\n                  }}\n                  passedStyles={{\n                    ...sharedClasses.formAutocomplete,\n                    width: '600px',\n                    marginTop: '20px'\n                  }}\n                  label=\"Select a Care Advantage Event\"\n                />\n                <Box sx={classes.placeholderText}>\n                  Placeholder to use: {'{'}CARE_ADVANTAGE_INVITE_LINK{'}'}\n                </Box>\n              </Box>\n            )}\n          </Box>\n        </Box>\n        <Box sx={classes.modalFooter}>\n          <CancelButton scope='auto-reply' setModalOpen={setModalOpen} />\n          <Button\n            id=\"send-auto-reply-button\"\n            data-testid=\"send-auto-reply-button\"\n            type=\"submit\"\n            sx={{ ...classes.modalSendButton, width: '71px', height: '41px' }}\n            onClick={handleSubmit}\n          >\n            {isSending ? <CircularProgress size={20} color=\"inherit\" /> : 'Save'}\n          </Button>\n        </Box>\n      </Box>\n    </Modal>\n  );\n}\n","import React, { useCallback, useEffect, useState } from 'react';\nimport {\n  Box,\n  Button,\n  CircularProgress,\n  IconButton,\n  Table,\n  TableBody,\n  TableCell,\n  TableContainer,\n  TableHead,\n  TableRow\n} from '@mui/material';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport EditIcon from '@mui/icons-material/Edit';\nimport NewAutoSMSForward from './NewAutoSMSForward';\nimport ImmediateChangesNotice from '../shared/ImmediateChangesNotice';\nimport SkeletonTable from '../../shared/SkeletonTable';\nimport { classes } from '../styles';\nimport { IAutoSmsForward, IStatusTransitionsProps } from '../../types';\nimport { IApplicationStatus } from '../../../Job/types';\nimport { immutableRemove } from '../../../Components/Utilities/immutableRemove';\nimport RecruitApiClient from '../../../../../components/RecruitApiClient';\n\nexport default function AutoSMSForward({ apiKey, jobId, setSnackbar }: IStatusTransitionsProps) {\n  const [loading, setLoading] = useState({\n    autoForwards: true,\n    applicationStatuses: true,\n    templatesList: true\n  });\n  const [isDeleting, setIsDeleting] = useState(-1);\n  const [autoForwards, setAutoForwards] = useState<IAutoSmsForward[]>([]);\n  const [applicationStatuses, setApplicationStatuses] = useState<IApplicationStatus[]>([]);\n  const [templates, setTemplates] = useState([]);\n  const [modalOpen, setModalOpen] = useState(false);\n  const [forwardIndex, setForwardIndex] = useState(0);\n\n  const getAutoForwards = useCallback(async () => {\n    setLoading((prev) => ({ ...prev, autoForwards: true }));\n    try {\n      const {\n        res: { auto_sms_forwards }\n      } = await RecruitApiClient.get<{ auto_sms_forwards: IAutoSmsForward[] }>(\n        `/api/v4/jobs/${jobId}/auto_sms_forwards`\n      );\n      setAutoForwards(auto_sms_forwards);\n    } catch (error: any) {\n      setSnackbar({\n        message: error.message || 'Error fetching auto SMS forwards',\n        state: 'error'\n      });\n    } finally {\n      setLoading((prev) => ({ ...prev, autoForwards: false }));\n    }\n  }, [jobId, setSnackbar]);\n\n  const getApplicationStatuses = useCallback(async () => {\n    setLoading((prev) => ({ ...prev, applicationStatuses: true }));\n    try {\n      const {\n        res: { job_application_statuses }\n      } = await RecruitApiClient.get<{ job_application_statuses: IApplicationStatus[] }>(\n        `/api/v4/jobs/${jobId}/job_application_statuses`\n      );\n      setApplicationStatuses(job_application_statuses);\n    } catch (error: any) {\n      setSnackbar({\n        message: error.message || 'Error fetching application statuses',\n        state: 'error'\n      });\n    } finally {\n      setLoading((prev) => ({ ...prev, applicationStatuses: false }));\n    }\n  }, [jobId, setSnackbar]);\n\n  const getTemplatesAndPlaceholders = useCallback(async () => {\n    setLoading((prev) => ({ ...prev, templatesList: true }));\n    try {\n      const {\n        res: { sms_templates }\n      } = await RecruitApiClient.get<{ sms_templates: [] }>(\n        `/api/v4/jobs/${jobId}/sms_templates?kind=custom`\n      );\n      setTemplates(sms_templates);\n    } catch (error) {\n      setSnackbar({\n        message: 'Error fetching templates',\n        state: 'error'\n      });\n    } finally {\n      setLoading((prev) => ({ ...prev, templatesList: false }));\n    }\n  }, [jobId, setSnackbar]);\n\n  const removeAutoForwards = async (index: number) => {\n    setIsDeleting(index);\n    try {\n      await RecruitApiClient.delete(\n        `/api/v4/jobs/${jobId}/auto_sms_forwards/${autoForwards[index].id}`\n      );\n      setSnackbar({\n        message: 'Auto SMS forward deleted successfully',\n        state: 'success'\n      });\n      setAutoForwards(immutableRemove(autoForwards, index));\n    } catch (error: any) {\n      setSnackbar({\n        message: error.message || 'Error deleting auto SMS forward',\n        state: 'error'\n      });\n    } finally {\n      setIsDeleting(-1);\n    }\n  };\n\n  const handleOpenModal = (index: number) => {\n    setForwardIndex(index);\n    setModalOpen(true);\n  };\n\n  useEffect(() => {\n    getAutoForwards();\n    getApplicationStatuses();\n    getTemplatesAndPlaceholders();\n  }, [getApplicationStatuses, getAutoForwards, getTemplatesAndPlaceholders]);\n\n  return (\n    <Box sx={classes.automationContainer}>\n      <Box sx={classes.titleAndButtonContainer}>\n        <h2>Auto SMS forward</h2>\n        <Button\n          id='new-auto-sms-forward-button'\n          data-testid='new-auto-sms-forward-button'\n          sx={classes.newButton}\n          onClick={() => handleOpenModal(-1)}\n        >\n          New auto SMS forward\n        </Button>\n      </Box>\n      <ImmediateChangesNotice />\n      {loading.autoForwards || (autoForwards && autoForwards.length > 0) ? (\n        <TableContainer sx={classes.tableContainer}>\n          <Table sx={classes.table} aria-label='auto sms forwards table'>\n            <TableHead>\n              <TableRow>\n                <TableCell>Trigger status</TableCell>\n                <TableCell>Phones</TableCell>\n                <TableCell align='right'>{/*Action column*/}</TableCell>\n              </TableRow>\n            </TableHead>\n            {loading.autoForwards || loading.applicationStatuses ? (\n                <SkeletonTable rows={5} cols={3} />\n              ) : (\n                <TableBody>\n                  {autoForwards.map((forward, index) => (\n                    <TableRow key={forward.id}>\n                      <TableCell>\n                        {applicationStatuses.find((status) => status.id === forward.trigger_status_id)\n                          ?.name ?? '-'}\n                      </TableCell>\n                      <TableCell>{forward.phones.join(', ') || '-'}</TableCell>\n                      <TableCell sx={classes.tableActions}>\n                        <IconButton\n                          id='auto-sms-forward-edit-button'\n                          data-testid='auto-sms-forward-edit-button'\n                          sx={classes.tableEditButton}\n                          onClick={() => handleOpenModal(index)}\n                        >\n                          <EditIcon />\n                        </IconButton>\n                        <IconButton\n                          id='auto-sms-forward-delete-button'\n                          data-testid='auto-sms-forward-delete-button'\n                          sx={classes.tableDeleteButton}\n                          onClick={() => removeAutoForwards(index)}\n                        >\n                          {isDeleting === index ? (\n                            <CircularProgress size={24} color='inherit' />\n                          ) : (\n                            <DeleteIcon />\n                          )}\n                        </IconButton>\n                      </TableCell>\n                    </TableRow>\n                  ))}\n                </TableBody>\n            )}\n          </Table>\n        </TableContainer>\n      ) : (\n        <Box sx={classes.noAutoForwarders}>\n          No auto forwards configured. Click on the button above to create one.\n        </Box>\n      )}\n      {!loading.autoForwards && !loading.applicationStatuses && (\n        <NewAutoSMSForward\n          jobId={jobId}\n          apiKey={apiKey}\n          modalOpen={modalOpen}\n          setModalOpen={setModalOpen}\n          autoForwards={autoForwards}\n          setAutoForwards={setAutoForwards}\n          applicationStatuses={applicationStatuses || []}\n          smsTemplates={templates}\n          forwardIndex={modalOpen ? forwardIndex : -1}\n          isLoadingTemplateList={loading.templatesList}\n          setSnackbar={setSnackbar}\n        />\n      )}\n    </Box>\n  );\n}\n","import React, { useState, useEffect, useRef, useCallback } from 'react';\nimport {\n  Box,\n  Modal,\n  Button,\n  Autocomplete,\n  TextField,\n  Skeleton,\n  CircularProgress\n} from '@mui/material';\nimport MultiTagInput from '../../../Components/CustomUIElements/MultiTagInput';\nimport CancelButton from '../shared/CancelButton';\nimport { Virtualize } from '../../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { IAutoSmsForward, IAutoSmsForwardProps } from '../../types';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport { IApplicationStatus, ISMSTemplate } from '../../../Job/types';\nimport { stringToSeconds } from '../../../Components/Utilities/stringToSeconds';\nimport { secondsToString } from '../../../Components/Utilities/secondsToString';\nimport { getBodyFromSmsTemplateValue } from '../helpers/getBodyFromSmsTemplateValue';\nimport RecruitApiClient from '../../../../../components/RecruitApiClient';\nimport VisibilityIcon from '@mui/icons-material/Visibility';\nimport DelaySelectWrapper from '../shared/DelaySelectWrapper';\n\nexport default function NewAutoSMSForward({\n  jobId,\n  apiKey,\n  modalOpen,\n  setModalOpen,\n  autoForwards,\n  setAutoForwards,\n  applicationStatuses,\n  smsTemplates,\n  isLoadingTemplateList,\n  forwardIndex,\n  setSnackbar\n}: IAutoSmsForwardProps) {\n  const [tempPhones, setTempPhones] = useState<string[]>([]);\n  const [isSending, setIsSending] = useState(false);\n  const [selectedTemplate, setSelectedTemplate] = useState<string | null>(null);\n  const [delay, setDelay] = useState('None');\n  const [selectedStatus, setSelectedStatus] = useState<IApplicationStatus | null>(null);\n  const [body, setBody] = useState('');\n  const [errors, setErrors] = useState({\n    status: '',\n    template: '',\n    phones: ''\n  });\n  const smsTemplateOptions = smsTemplates.map(\n    (template: ISMSTemplate) => `${template.id} - ${template.title}`\n  );\n\n  const refObject = {\n    status: useRef<HTMLDivElement>(null),\n    template: useRef<HTMLDivElement>(null),\n    phones: useRef<HTMLDivElement>(null)\n  };\n\n  const handleSelectTemplate = useCallback(\n    (value: string) => {\n      setSelectedTemplate(value || null);\n      setBody(getBodyFromSmsTemplateValue(value, smsTemplates));\n    },\n    [smsTemplates]\n  );\n\n  const phoneIsValid = (phone: string) => {\n    const regex = /^\\+?\\(?[0-9]{1,4}\\)?[- \\.0-9]*$/;\n    if (regex.test(String(phone).toLowerCase())) {\n      setErrors((prev) => ({ ...prev, phones: '' }));\n      return true;\n    }\n\n    return false;\n  };\n\n  const handleSubmit = async () => {\n    let errorRef = '';\n    if (!selectedStatus) {\n      setErrors((prev) => ({ ...prev, status: 'Please select a status' }));\n      errorRef = errorRef || 'status';\n    }\n    if (!selectedTemplate) {\n      setErrors((prev) => ({ ...prev, template: 'Please select a template' }));\n      errorRef = errorRef || 'template';\n    }\n    if (!tempPhones.length) {\n      setErrors((prev) => ({ ...prev, phones: 'Please enter at least one phone number' }));\n      errorRef = errorRef || 'phones';\n    }\n    if (errorRef) {\n      refObject[errorRef as keyof typeof refObject].current?.scrollIntoView({\n        behavior: 'smooth',\n        block: 'center'\n      });\n      return;\n    }\n    try {\n      setIsSending(true);\n      const jsonBody = {\n        trigger_status_id: selectedStatus?.id,\n        sms_template_id: selectedTemplate?.split(' -')[0],\n        phones: tempPhones.join(', '),\n        delay: stringToSeconds(delay)\n      };\n      if (forwardIndex === -1) {\n        const { res } = await RecruitApiClient.post<IAutoSmsForward>(\n          `/api/v4/jobs/${jobId}/auto_sms_forwards`,\n          jsonBody\n        );\n        setAutoForwards((prev) => [...prev, res]);\n        setSnackbar({\n          message: 'Auto forward created successfully',\n          state: 'success'\n        });\n        setModalOpen(false);\n      } else {\n        const { res } = await RecruitApiClient.put<IAutoSmsForward>(\n          `/api/v4/jobs/${jobId}/auto_sms_forwards/${autoForwards[forwardIndex].id}`,\n          jsonBody\n        );\n        setAutoForwards((prev) => {\n          const newForward = [...prev];\n          newForward[forwardIndex] = res;\n          return newForward;\n        });\n        setSnackbar({\n          message: 'Auto forward updated successfully',\n          state: 'success'\n        });\n        setModalOpen(false);\n      }\n    } catch (error: any) {\n      setSnackbar({\n        message: error.message || 'Something went wrong, please try again',\n        state: 'error'\n      });\n    } finally {\n      setIsSending(false);\n    }\n  };\n\n  useEffect(() => {\n    setErrors({\n      status: '',\n      template: '',\n      phones: ''\n    });\n    if (forwardIndex === -1) {\n      setTempPhones([]);\n      setSelectedTemplate(null);\n      setDelay('None');\n      setSelectedStatus(null);\n      setBody('');\n      return;\n    }\n    setTempPhones(autoForwards[forwardIndex].phones);\n    setSelectedStatus(\n      applicationStatuses.find(\n        (status) => status.id === autoForwards[forwardIndex].trigger_status_id\n      ) || null\n    );\n    setDelay(secondsToString(autoForwards[forwardIndex].delay));\n  }, [applicationStatuses, autoForwards, forwardIndex]);\n\n  useEffect(() => {\n    if (forwardIndex !== -1) {\n      const smsTemplate =\n        smsTemplateOptions.find(\n          (template) =>\n            template.split(' - ')[0] === autoForwards[forwardIndex].sms_template_id.toString()\n        ) || null;\n      setSelectedTemplate(smsTemplate);\n      if (smsTemplate) {\n        handleSelectTemplate(smsTemplate);\n      }\n    }\n  }, [autoForwards, smsTemplates, forwardIndex, handleSelectTemplate]);\n\n  return (\n    <Modal\n      open={modalOpen}\n      onClose={() => setModalOpen(false)}\n      aria-labelledby='new-auto-sms-forward-modal'\n    >\n      <Box sx={classes.actionsModalReducedPadding}>\n        <CloseIcon onClick={() => setModalOpen(false)} sx={classes.closeIcon} />\n        <Box sx={classes.actionModalHeader}>{`${\n          forwardIndex === -1 ? 'New' : 'Edit'\n        } auto SMS forward`}</Box>\n        <Box\n          sx={classes.modalContent}\n          aria-label={`${forwardIndex === -1 ? 'New' : 'Edit'} auto sms forward modal content`}\n        >\n          <Box\n            role='form'\n            id='auto-sms-forward-form'\n            aria-label='Auto sms forward form'\n            sx={{ height: '100%', overflowX: 'clip' }}\n          >\n            <Box\n              sx={{ ...classes.actionModalFormLine, marginTop: '20px', marginBottom: '40px' }}\n              ref={refObject.status}\n            >\n              <Autocomplete\n                id='trigger-status-autocomplete'\n                data-testid='trigger-status-autocomplete-autoforward'\n                options={applicationStatuses}\n                getOptionLabel={(option) => option.name}\n                onChange={(event, value) => {\n                  setSelectedStatus(value);\n                  setErrors((prev) => ({ ...prev, status: '' }));\n                }}\n                value={selectedStatus}\n                sx={{ ...sharedClasses.formAutocomplete, width: '287px' }}\n                ListboxProps={{\n                  style: {\n                    fontFamily: 'Source Sans Pro, sans-serif',\n                    color: '#333333',\n                    maxHeight: '200px'\n                  }\n                }}\n                renderInput={(params) => (\n                  <TextField\n                    {...params}\n                    label='Trigger status'\n                    InputLabelProps={{ shrink: true }}\n                  />\n                )}\n                renderOption={(props, option, state) => {\n                  return (\n                    <li {...props} key={option.id} data-testid={`option-${state.index}`}>\n                      {option.name}\n                    </li>\n                  );\n                }}\n              />\n              {errors.status && <Box sx={classes.formError}>{errors.status}</Box>}\n            </Box>\n            <Box>\n              <Box sx={classes.actionModalFormLine} ref={refObject.template}>\n                <Virtualize\n                  value={selectedTemplate}\n                  passOptions={smsTemplateOptions}\n                  setValue={(value: string) => {\n                    handleSelectTemplate(value);\n                    setErrors((prev) => ({ ...prev, template: '' }));\n                  }}\n                  passedStyles={{\n                    ...sharedClasses.formAutocomplete,\n                    width: '600px',\n                    marginTop: '20px'\n                  }}\n                  label='Template'\n                  loading={isLoadingTemplateList}\n                  loadingText='Loading template list...'\n                />\n                {errors.template && <Box sx={classes.formError}>{errors.template}</Box>}\n              </Box>\n              {(selectedTemplate || forwardIndex !== -1) &&\n                (forwardIndex !== -1 && !selectedTemplate ? (\n                  <Skeleton\n                    variant='rectangular'\n                    animation='wave'\n                    height={400}\n                    width={'96%'}\n                    sx={classes.previewSkeleton}\n                  />\n                ) : (\n                  <Box sx={{ ...classes.htmlContent }}>\n                    <Box sx={{ ...classes.previewHeader }}>\n                      <VisibilityIcon />\n                      Preview\n                    </Box>\n                    <Box>{body}</Box>\n                  </Box>\n                ))}\n            </Box>\n            <Box sx={classes.actionModalFormLine} ref={refObject.phones}>\n              <MultiTagInput\n                tags={tempPhones}\n                setTags={(phones) => {\n                  setTempPhones(phones);\n                  setErrors((prev) => ({ ...prev, phones: '' }));\n                }}\n                validation={phoneIsValid}\n                validationMessage='Must input valid phone'\n                label='Recipient phone number/s'\n                width='600px'\n                error={errors.phones}\n              />\n            </Box>\n            <DelaySelectWrapper delay={delay} setDelay={setDelay} />\n          </Box>\n        </Box>\n        <Box sx={classes.modalFooter}>\n          <CancelButton scope='auto-sms-forward' setModalOpen={setModalOpen} />\n          <Button\n            id='send-auto-forward-button'\n            data-testid='send-auto-forward-button'\n            type='submit'\n            sx={{ ...classes.modalSendButton, width: '71px', height: '41px' }}\n            onClick={handleSubmit}\n          >\n            {isSending ? <CircularProgress size={20} color='inherit' /> : 'Save'}\n          </Button>\n        </Box>\n      </Box>\n    </Modal>\n  );\n}\n","import React, { useCallback, useEffect, useState } from 'react';\nimport {\n  Box,\n  Button,\n  CircularProgress,\n  IconButton,\n  Table,\n  TableBody,\n  TableCell,\n  TableContainer,\n  TableHead,\n  TableRow\n} from '@mui/material';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport EditIcon from '@mui/icons-material/Edit';\nimport NewAutoSMSReply from './NewAutoSMSReply';\nimport ImmediateChangesNotice from '../shared/ImmediateChangesNotice';\nimport SkeletonTable from '../../shared/SkeletonTable';\nimport { classes } from '../styles';\nimport { IAutoSmsReply, IStatusTransitionsProps } from '../../types';\nimport { IEventType } from '../../../../ScoutCalendar/types';\nimport { IApplicationStatus } from '../../../Job/types';\nimport { immutableRemove } from '../../../Components/Utilities/immutableRemove';\nimport RecruitApiClient from '../../../../../components/RecruitApiClient';\n\nexport default function AutoSMSReply({ apiKey, jobId, setSnackbar }: IStatusTransitionsProps) {\n  const [loading, setLoading] = useState({\n    autoReplies: true,\n    applicationStatuses: true,\n    templatesList: true,\n    eventTypes: true\n  });\n  const [isDeleting, setIsDeleting] = useState(-1);\n  const [autoReplies, setAutoReplies] = useState<IAutoSmsReply[]>([]);\n  const [applicationStatuses, setApplicationStatuses] = useState<IApplicationStatus[]>([]);\n  const [templates, setTemplates] = useState([]);\n  const [eventTypes, setEventTypes] = useState<IEventType[]>([]);\n  const [modalOpen, setModalOpen] = useState(false);\n  const [replyIndex, setReplyIndex] = useState(0);\n\n  const getAutoReplies = useCallback(async () => {\n    setLoading((prev) => ({ ...prev, autoReplies: true }));\n    try {\n      const {\n        res: { auto_sms_replies }\n      } = await RecruitApiClient.get<{ auto_sms_replies: IAutoSmsReply[] }>(\n        `/api/v4/jobs/${jobId}/auto_sms_replies`\n      );\n      setAutoReplies(auto_sms_replies);\n    } catch (error) {\n      setSnackbar({\n        message: error.message || 'Error fetching auto SMS replies',\n        state: 'error'\n      });\n    } finally {\n      setLoading((prev) => ({ ...prev, autoReplies: false }));\n    }\n  }, [jobId, setSnackbar]);\n\n  const getApplicationStatuses = useCallback(async () => {\n    setLoading((prev) => ({ ...prev, applicationStatuses: true }));\n    try {\n      const {\n        res: { job_application_statuses }\n      } = await RecruitApiClient.get<{ job_application_statuses: IApplicationStatus[] }>(\n        `/api/v4/jobs/${jobId}/job_application_statuses`\n      );\n      setApplicationStatuses(job_application_statuses);\n    } catch (error: any) {\n      setSnackbar({\n        message: error.message || 'Error fetching application statuses',\n        state: 'error'\n      });\n    } finally {\n      setLoading((prev) => ({ ...prev, applicationStatuses: false }));\n    }\n  }, [jobId, setSnackbar]);\n\n  const getTemplatesAndPlaceholders = useCallback(async () => {\n    setLoading((prev) => ({ ...prev, templatesList: true }));\n    try {\n      const {\n        res: { sms_templates }\n      } = await RecruitApiClient.get<{ sms_templates: [] }>(\n        `/api/v4/jobs/${jobId}/sms_templates?kind=custom`\n      );\n      setTemplates(sms_templates);\n    } catch (error: any) {\n      setSnackbar({\n        message: 'Error fetching templates',\n        state: 'error'\n      });\n    } finally {\n      setLoading((prev) => ({ ...prev, templatesList: false }));\n    }\n  }, [jobId, setSnackbar]);\n\n  const getEventTypes = useCallback(async () => {\n    setLoading((prev) => ({ ...prev, eventTypes: true }));\n    try {\n      const response = await fetch(`/api/v4/calendar/event_types`, {\n        method: 'GET',\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      });\n      const { event_types } = await response.json();\n      setEventTypes(event_types);\n    } catch (error) {\n      setSnackbar({\n        message: 'Error fetching event types',\n        state: 'error'\n      });\n    } finally {\n      setLoading((prev) => ({ ...prev, eventTypes: false }));\n    }\n  }, [apiKey, setSnackbar]);\n\n  const removeAutoReplies = async (index: number) => {\n    setIsDeleting(index);\n    try {\n      await RecruitApiClient.delete(\n        `/api/v4/jobs/${jobId}/auto_sms_replies/${autoReplies[index].id}`\n      );\n      setSnackbar({\n        message: 'Auto SMS reply deleted successfully',\n        state: 'success'\n      });\n      setAutoReplies(immutableRemove(autoReplies, index));\n    } catch (error: any) {\n      setSnackbar({\n        message: error.message || 'Error deleting auto SMS reply',\n        state: 'error'\n      });\n    } finally {\n      setIsDeleting(-1);\n    }\n  };\n\n  const handleOpenModal = (index: number) => {\n    setReplyIndex(index);\n    setModalOpen(true);\n  };\n\n  useEffect(() => {\n    getAutoReplies();\n    getApplicationStatuses();\n    getTemplatesAndPlaceholders();\n    getEventTypes();\n  }, [getApplicationStatuses, getAutoReplies, getTemplatesAndPlaceholders, getEventTypes]);\n\n  return (\n    <Box sx={classes.automationContainer}>\n      <Box sx={classes.titleAndButtonContainer}>\n        <h2>Auto SMS reply</h2>\n        <Button\n          id=\"new-auto-sms-reply-button\"\n          data-testid=\"new-auto-sms-reply-button\"\n          sx={classes.newButton}\n          onClick={() => handleOpenModal(-1)}\n        >\n          New auto SMS reply\n        </Button>\n      </Box>\n      <ImmediateChangesNotice />\n      {loading.autoReplies || (autoReplies && autoReplies.length > 0) ? (\n        <TableContainer sx={classes.tableContainer}>\n          <Table sx={classes.table} aria-label=\"auto sms replies table\">\n            <TableHead>\n              <TableRow>\n                <TableCell>Trigger status</TableCell>\n                <TableCell>SMS template</TableCell>\n                <TableCell align=\"right\">{/*Action column*/}</TableCell>\n              </TableRow>\n            </TableHead>\n            {loading.autoReplies || loading.applicationStatuses\n              ? <SkeletonTable rows={5} cols={3} />\n              : (\n                <TableBody>\n                  {autoReplies.map((reply, index) => (\n                    <TableRow key={reply.id}>\n                      <TableCell>\n                        {applicationStatuses.find((status) => status.id === reply.trigger_status_id)\n                          ?.name ?? '-'}\n                      </TableCell>\n                      <TableCell>{reply.sms_template_name || '-'}</TableCell>\n                      <TableCell sx={classes.tableActions}>\n                        <IconButton\n                          id=\"auto-sms-reply-edit-button\"\n                          data-testid=\"auto-sms-reply-edit-button\"\n                          sx={classes.tableEditButton}\n                          onClick={() => handleOpenModal(index)}\n                        >\n                          <EditIcon />\n                        </IconButton>\n                        <IconButton\n                          id=\"auto-sms-reply-delete-button\"\n                          data-testid=\"auto-sms-reply-delete-button\"\n                          sx={classes.tableDeleteButton}\n                          onClick={() => removeAutoReplies(index)}\n                        >\n                          {isDeleting === index ? (\n                            <CircularProgress size={24} color=\"inherit\" />\n                          ) : (\n                            <DeleteIcon />\n                          )}\n                        </IconButton>\n                      </TableCell>\n                    </TableRow>\n                  ))}\n                </TableBody>\n            )}\n          </Table>\n        </TableContainer>\n      ) : (\n        <Box sx={classes.noAutoForwarders}>\n          No auto replies configured. Click on the button above to create one.\n        </Box>\n      )}\n      {!loading.autoReplies && !loading.applicationStatuses && (\n        <NewAutoSMSReply\n          jobId={jobId}\n          apiKey={apiKey}\n          modalOpen={modalOpen}\n          setModalOpen={setModalOpen}\n          autoReplies={autoReplies}\n          setAutoReplies={setAutoReplies}\n          applicationStatuses={applicationStatuses || []}\n          smsTemplates={templates}\n          replyIndex={modalOpen ? replyIndex : -1}\n          isLoadingTemplateList={loading.templatesList}\n          eventTypes={eventTypes}\n          isLoadingEventTypes={loading.eventTypes}\n          setSnackbar={setSnackbar}\n        />\n      )}\n    </Box>\n  );\n}\n","import React, { useState, useEffect, useRef, useCallback } from 'react';\nimport {\n  Box,\n  Modal,\n  Button,\n  Autocomplete,\n  TextField,\n  Skeleton,\n  CircularProgress\n} from '@mui/material';\nimport CancelButton from '../shared/CancelButton';\nimport { Virtualize } from '../../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { IAutoSmsReplyProps } from '../../types';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport { IApplicationStatus, ISMSTemplate } from '../../../Job/types';\nimport { stringToSeconds } from '../../../Components/Utilities/stringToSeconds';\nimport { secondsToString } from '../../../Components/Utilities/secondsToString';\nimport VisibilityIcon from '@mui/icons-material/Visibility';\nimport { getBodyFromSmsTemplateValue } from '../helpers/getBodyFromSmsTemplateValue';\nimport DelaySelectWrapper from '../shared/DelaySelectWrapper';\n\nexport default function NewAutoSMSReply({\n  jobId,\n  apiKey,\n  modalOpen,\n  setModalOpen,\n  autoReplies,\n  setAutoReplies,\n  applicationStatuses,\n  smsTemplates,\n  eventTypes,\n  isLoadingTemplateList,\n  isLoadingEventTypes,\n  replyIndex,\n  setSnackbar\n}: IAutoSmsReplyProps) {\n  const [isSending, setIsSending] = useState(false);\n  const [selectedTemplate, setSelectedTemplate] = useState<string | null>(null);\n  const [selectedEventType, setSelectedEventType] = useState<string | null>(null);\n  const [delay, setDelay] = useState('None');\n  const [selectedStatus, setSelectedStatus] = useState<IApplicationStatus | null>(null);\n  const [body, setBody] = useState('');\n  const [errors, setErrors] = useState({\n    status: '',\n    template: ''\n  });\n  const smsTemplateOptions = smsTemplates.map(\n    (template: ISMSTemplate) => `${template.id} - ${template.title}`\n  );\n\n  const refObject = {\n    status: useRef<HTMLDivElement>(null),\n    template: useRef<HTMLDivElement>(null)\n  };\n\n  const handleSelectTemplate = useCallback((value: string) => {\n    setSelectedTemplate(value || null);\n    setBody(getBodyFromSmsTemplateValue(value, smsTemplates));\n  }, [smsTemplates]);\n\n  const handleSubmit = async () => {\n    let errorRef = '';\n    if (!selectedStatus) {\n      setErrors((prev) => ({ ...prev, status: 'Please select a status' }));\n      errorRef = errorRef || 'status';\n    }\n    if (!selectedTemplate) {\n      setErrors((prev) => ({ ...prev, template: 'Please select a template' }));\n      errorRef = errorRef || 'template';\n    }\n    if (errorRef) {\n      refObject[errorRef as keyof typeof refObject].current?.scrollIntoView({\n        behavior: 'smooth',\n        block: 'center'\n      });\n      return;\n    }\n    try {\n      setIsSending(true);\n      if (replyIndex === -1) {\n        const response = await fetch(`/api/v4/jobs/${jobId}/auto_sms_replies`, {\n          method: 'POST',\n          headers: {\n            'Content-Type': 'application/json',\n            'X-api-authenticate': apiKey\n          },\n          body: JSON.stringify({\n            trigger_status_id: selectedStatus?.id,\n            sms_template_id: selectedTemplate?.split(' -')[0],\n            event_type_id: selectedEventType ? selectedEventType.split(' -')[0] : null,\n            delay: stringToSeconds(delay)\n          })\n        });\n        const data = await response.json();\n        if (response.ok) {\n          setAutoReplies((prev) => [...prev, data]);\n          setSnackbar({\n            message: 'Auto reply created successfully',\n            state: 'success'\n          });\n          setModalOpen(false);\n        } else {\n          throw new Error('Error creating new auto reply');\n        }\n      } else {\n        const response = await fetch(\n          `/api/v4/jobs/${jobId}/auto_sms_replies/${autoReplies[replyIndex].id}`,\n          {\n            method: 'PUT',\n            headers: {\n              'Content-Type': 'application/json',\n              'X-api-authenticate': apiKey\n            },\n            body: JSON.stringify({\n              trigger_status_id: selectedStatus?.id,\n              sms_template_id: selectedTemplate?.split(' -')[0],\n              event_type_id: selectedEventType ? selectedEventType.split(' -')[0] : null,\n              delay: stringToSeconds(delay)\n            })\n          }\n        );\n        const data = await response.json();\n        if (response.ok) {\n          setAutoReplies((prev) => {\n            const newReplies = [...prev];\n            newReplies[replyIndex] = data;\n            return newReplies;\n          });\n          setSnackbar({\n            message: 'Auto reply updated successfully',\n            state: 'success'\n          });\n          setModalOpen(false);\n        } else {\n          throw new Error('Error updating auto reply');\n        }\n      }\n    } catch (error: any) {\n      setSnackbar({\n        message: error.message || 'Something went wrong, please try again',\n        state: 'error'\n      });\n    } finally {\n      setIsSending(false);\n    }\n  };\n\n  useEffect(() => {\n    setErrors({\n      status: '',\n      template: ''\n    });\n    if (replyIndex === -1) {\n      setSelectedTemplate(null);\n      setDelay('None');\n      setSelectedStatus(null);\n      setBody('');\n      return;\n    }\n    const autoReply = autoReplies[replyIndex];\n    if (!autoReply) {\n      return;\n    }\n    const eventType = eventTypes.find((eventType) => eventType.id === autoReply.event_type_id);\n    if (eventType) {\n      setSelectedEventType(`${eventType.id} - ${eventType.name}`);\n    }\n    setSelectedStatus(\n      applicationStatuses.find((status) => status.id === autoReply.trigger_status_id) || null\n    );\n    setDelay(secondsToString(autoReply.delay));\n  }, [applicationStatuses, autoReplies, replyIndex, eventTypes]);\n\n  useEffect(() => {\n    if (replyIndex !== -1) {\n      const smsTemplate =\n        smsTemplateOptions.find(\n          (template) =>\n            template.split(' - ')[0] === autoReplies[replyIndex].sms_template_id.toString()\n        ) || null;\n      setSelectedTemplate(smsTemplate);\n      if (smsTemplate) {\n        handleSelectTemplate(smsTemplate);\n      }\n    }\n  }, [autoReplies, smsTemplates, replyIndex, handleSelectTemplate]);\n\n  return (\n    <Modal\n      open={modalOpen}\n      onClose={() => setModalOpen(false)}\n      aria-labelledby=\"new-auto-sms-reply-modal\"\n    >\n      <Box sx={classes.actionsModalReducedPadding}>\n        <CloseIcon onClick={() => setModalOpen(false)} sx={classes.closeIcon} />\n        <Box sx={classes.actionModalHeader}>{`${\n          replyIndex === -1 ? 'New' : 'Edit'\n        } auto SMS reply`}</Box>\n        <Box\n          sx={classes.modalContent}\n          aria-label={`${replyIndex === -1 ? 'New' : 'Edit'} auto sms reply modal content`}\n        >\n          <Box\n            role=\"form\"\n            id=\"auto-sms-reply-form\"\n            aria-label=\"Auto sms reply form\"\n            sx={{ height: '100%', overflowX: 'clip' }}\n          >\n            <Box\n              sx={{ ...classes.actionModalFormLine, marginTop: '20px', marginBottom: '40px' }}\n              ref={refObject.status}\n            >\n              <Autocomplete\n                id=\"trigger-status-autocomplete\"\n                data-testid=\"trigger-status-autocomplete-autoreply\"\n                options={applicationStatuses}\n                getOptionLabel={(option) => option.name}\n                onChange={(event, value) => {\n                  setSelectedStatus(value);\n                  setErrors((prev) => ({ ...prev, status: '' }));\n                }}\n                value={selectedStatus}\n                sx={{ ...sharedClasses.formAutocomplete, width: '287px' }}\n                ListboxProps={{\n                  style: {\n                    fontFamily: 'Source Sans Pro, sans-serif',\n                    color: '#333333',\n                    maxHeight: '200px'\n                  }\n                }}\n                renderInput={(params) => (\n                  <TextField\n                    {...params}\n                    label=\"Trigger status\"\n                    InputLabelProps={{ shrink: true }}\n                  />\n                )}\n                renderOption={(props, option, state) => {\n                  return (\n                    <li {...props} key={option.id} data-testid={`option-${state.index}`}>\n                      {option.name}\n                    </li>\n                  );\n                }}\n              />\n              {errors.status && <Box sx={classes.formError}>{errors.status}</Box>}\n            </Box>\n            <Box>\n              <Box sx={classes.actionModalFormLine} ref={refObject.template}>\n                <Virtualize\n                  value={selectedTemplate}\n                  passOptions={smsTemplateOptions}\n                  setValue={(value: string) => {\n                    handleSelectTemplate(value);\n                    setErrors((prev) => ({ ...prev, template: '' }));\n                  }}\n                  passedStyles={{\n                    ...sharedClasses.formAutocomplete,\n                    width: '600px',\n                    marginTop: '20px'\n                  }}\n                  label=\"Template\"\n                  loading={isLoadingTemplateList}\n                  loadingText=\"Loading template list...\"\n                />\n                {errors.template && <Box sx={classes.formError}>{errors.template}</Box>}\n              </Box>\n              {(selectedTemplate || replyIndex !== -1) &&\n                (replyIndex !== -1 && !selectedTemplate ? (\n                  <Skeleton\n                    variant=\"rectangular\"\n                    animation=\"wave\"\n                    height={400}\n                    width={'96%'}\n                    sx={classes.previewSkeleton}\n                  />\n                ) : (\n                  <Box sx={{ ...classes.htmlContent }}>\n                    <Box sx={{ ...classes.previewHeader }}>\n                      <VisibilityIcon />\n                      Preview\n                    </Box>\n                    <Box>{body}</Box>\n                  </Box>\n                ))}\n            </Box>\n            {body?.includes('{INTERVIEW_URL}') && (\n              <Box sx={classes.actionModalFormLine} ref={refObject.template}>\n                <Virtualize\n                  value={selectedEventType}\n                  passOptions={eventTypes.map((eventType) => `${eventType.id} - ${eventType.name}`)}\n                  setValue={setSelectedEventType}\n                  passedStyles={{\n                    ...sharedClasses.formAutocomplete,\n                    width: '600px',\n                    marginTop: '20px'\n                  }}\n                  label='Automatically invite to event type'\n                  loading={isLoadingEventTypes}\n                  loadingText='Loading event types list...'\n                />\n                {errors.template && <Box sx={classes.formError}>{errors.template}</Box>}\n              </Box>\n            )}\n            <DelaySelectWrapper delay={delay} setDelay={setDelay} />\n          </Box>\n        </Box>\n        <Box sx={classes.modalFooter}>\n          <CancelButton scope='auto-sms-reply' setModalOpen={setModalOpen} />\n          <Button\n            id=\"send-auto-reply-button\"\n            data-testid=\"send-auto-reply-button\"\n            type=\"submit\"\n            sx={{ ...classes.modalSendButton, width: '71px', height: '41px' }}\n            onClick={handleSubmit}\n          >\n            {isSending ? <CircularProgress size={20} color=\"inherit\" /> : 'Save'}\n          </Button>\n        </Box>\n      </Box>\n    </Modal>\n  );\n}\n","import React, { useState, useCallback, useEffect } from 'react';\nimport { Box, Skeleton, ToggleButton, ToggleButtonGroup } from '@mui/material';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport QuestionBased from './QuestionBased';\nimport RatingBased from './RatingBased';\nimport InfoIcon from '@mui/icons-material/Info';\nimport { IAutoStatusesProps, IQuestionBasedAS, IRatingBasedAS } from '../../types';\nimport { IApplicationStatus } from '../../../Job/types';\nimport InfoBox from '../../../Components/CustomUIElements/InfoBox';\n\nexport default function AutoStatuses({\n  apiKey,\n  jobId,\n  setSnackbar,\n  jobQuestions,\n  handleEditTabChange\n}: IAutoStatusesProps) {\n  const [loading, setLoading] = useState({\n    applicationStatuses: true,\n    questionBased: true,\n    ratingBased: true\n  });\n  const [questionBasedAS, setQuestionBasedAS] = useState<IQuestionBasedAS[]>([]);\n  const [ratingBasedAS, setRatingBasedAS] = useState<IRatingBasedAS[]>([]);\n  const [applicationStatuses, setApplicationStatuses] = useState<IApplicationStatus[]>([]);\n  const [selected, setSelected] = useState('questionBased');\n  const [hasRadioButtonQuestions, setHasRadioButtonQuestions] = useState(true);\n\n  const getApplicationStatuses = useCallback(async () => {\n    setLoading((prev) => ({ ...prev, applicationStatuses: true }));\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/job_application_statuses`, {\n        method: 'GET',\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      });\n      const { job_application_statuses } = await response.json();\n      job_application_statuses.shift(); // Remove \"New\" status from array\n      setApplicationStatuses(job_application_statuses);\n    } catch (error) {\n      setSnackbar({\n        message: 'Error fetching question based auto statuses',\n        state: 'error'\n      });\n    } finally {\n      setLoading((prev) => ({ ...prev, applicationStatuses: false }));\n    }\n  }, [apiKey, jobId, setSnackbar]);\n\n  const getQuestionBasedAS = useCallback(async () => {\n    setLoading((prev) => ({ ...prev, questionBased: true }));\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/auto_status_question_based`, {\n        method: 'GET',\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      }).then((response) => response.json());\n      if (response.errors) {\n        setHasRadioButtonQuestions(false);\n      } else {\n        setQuestionBasedAS(response.auto_statuses_question_based);\n      }\n    } catch (error) {\n      setSnackbar({\n        message: error.message || 'Error fetching question based auto statuses',\n        state: 'error'\n      });\n    } finally {\n      setLoading((prev) => ({ ...prev, questionBased: false }));\n    }\n  }, [apiKey, jobId, setSnackbar]);\n\n  const getRatingBasedAS = useCallback(async () => {\n    setLoading((prev) => ({ ...prev, ratingBased: true }));\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/auto_status_rating_based`, {\n        method: 'GET',\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      });\n      const { auto_statuses_rating_based } = await response.json();\n      setRatingBasedAS(auto_statuses_rating_based);\n    } catch (error) {\n      setSnackbar({\n        message: error.message || 'Error fetching rating based auto statuses',\n        state: 'error'\n      });\n    } finally {\n      setLoading((prev) => ({ ...prev, ratingBased: false }));\n    }\n  }, [apiKey, jobId, setSnackbar]);\n\n  const handleToggle = (event: React.MouseEvent<HTMLElement>, newSelected: string) => {\n    if (newSelected !== null) {\n      setSelected(newSelected);\n    }\n  };\n\n  useEffect(() => {\n    getApplicationStatuses();\n    getQuestionBasedAS();\n    getRatingBasedAS();\n  }, [getApplicationStatuses, getQuestionBasedAS, getRatingBasedAS]);\n\n  return (\n    <Box sx={classes.automationContainer}>\n      <h2 data-testid=\"auto-statuses-header\">Auto statuses</h2>\n      <InfoBox message=\"Any changes here will be automatically saved and will be applied immediately.\" />\n      <Box sx={classes.toggleButtonsContainer}>\n        <ToggleButtonGroup\n          value={selected}\n          exclusive\n          onChange={handleToggle}\n          aria-label=\"question or rating based\"\n        >\n          <ToggleButton\n            data-testid=\"question-based-toggle-button\"\n            value=\"questionBased\"\n            sx={sharedClasses.toggleButton}\n          >\n            Question Based\n          </ToggleButton>\n          <ToggleButton\n            data-testid=\"rating-based-toggle-button\"\n            value=\"ratingBased\"\n            sx={sharedClasses.toggleButton}\n          >\n            Rating Based\n          </ToggleButton>\n        </ToggleButtonGroup>\n      </Box>\n      {selected === 'questionBased' ? (\n        !loading.questionBased && !loading.applicationStatuses ? (\n          <QuestionBased\n            apiKey={apiKey}\n            jobId={jobId}\n            setSnackbar={setSnackbar}\n            autoStatuses={questionBasedAS}\n            setAutoStatuses={setQuestionBasedAS}\n            applicationStatuses={applicationStatuses}\n            hasRadioButtonQuestions={hasRadioButtonQuestions}\n            handleEditTabChange={handleEditTabChange}\n          />\n        ) : (\n          <Skeleton\n            variant=\"rectangular\"\n            animation=\"wave\"\n            height={450}\n            width={'100%'}\n            sx={{ borderRadius: '8px' }}\n          />\n        )\n      ) : !loading.ratingBased && !loading.applicationStatuses ? (\n        <RatingBased\n          apiKey={apiKey}\n          jobId={jobId}\n          setSnackbar={setSnackbar}\n          autoStatuses={ratingBasedAS}\n          setAutoStatuses={setRatingBasedAS}\n          applicationStatuses={applicationStatuses}\n        />\n      ) : (\n        <Skeleton\n          variant=\"rectangular\"\n          animation=\"wave\"\n          height={450}\n          width={'100%'}\n          sx={{ borderRadius: '8px' }}\n        />\n      )}\n    </Box>\n  );\n}\n","import React from 'react';\n\nexport default function NoAutoStatusSVG() {\nreturn (<svg id=\"Group_605\" data-name=\"Group 605\" xmlns=\"http://www.w3.org/2000/svg\" xmlnsxlink=\"http://www.w3.org/1999/xlink\" width=\"181.013\" height=\"156.432\" viewBox=\"0 0 181.013 156.432\">\n<defs>\n  <clipPath id=\"clip-path\">\n    <rect id=\"Rectangle_793\" data-name=\"Rectangle 793\" width=\"181.013\" height=\"156.432\" fill=\"none\"/>\n  </clipPath>\n</defs>\n<g id=\"Group_604\" data-name=\"Group 604\" clip-path=\"url(#clip-path)\">\n  <path id=\"Path_270\" data-name=\"Path 270\" d=\"M199.211,510.074c10.846,3.907-15.96,9.207-19.723,9.589-40.618,4.115-84.568,2.2-124.808-3.044a15.57,15.57,0,0,1-4.721-1.122c-9.948-4.87,22.007-8.173,24.974-8.428,11.029-.948,22.234-1.566,33.357-1.669,15.763-.146,77.475-.168,90.921,4.675\" transform=\"translate(-34.746 -365.459)\" fill=\"#eee\"/>\n  <path id=\"Path_271\" data-name=\"Path 271\" d=\"M177.979,111.146V14.238A10.456,10.456,0,0,0,167.6,3.708H10.381A10.456,10.456,0,0,0,0,14.238v96.908a10.456,10.456,0,0,0,10.381,10.53H167.6a10.456,10.456,0,0,0,10.381-10.53\" transform=\"translate(0 -2.682)\" fill=\"#e3e3e3\"/>\n  <path id=\"Path_272\" data-name=\"Path 272\" d=\"M256.286,441.848l-5-21.991h-29.9l-5,21.991c-6.256.869-16.465,5.07-16.465,10.122h72.824c0-5.052-10.209-9.253-16.465-10.122\" transform=\"translate(-144.581 -303.627)\" fill=\"#e3e3e3\"/>\n  <path id=\"Path_273\" data-name=\"Path 273\" d=\"M269.321,448.588l-4.379-19.731H240.1a2.7,2.7,0,0,0-2.641,2.128l-4.193,19.264c-5.828.8-15.338,3.569-15.338,8.229h67.841c0-4.66-10.618-9.089-16.446-9.89\" transform=\"translate(-157.597 -310.136)\" fill=\"#f9f9f9\"/>\n  <path id=\"Path_274\" data-name=\"Path 274\" d=\"M218.254,428.876l-4.3,18.916.743-.515a33.32,33.32,0,0,0-11.412,3.851c-2.416,1.358-5.8,3.638-5.8,6.785a.409.409,0,0,0,.435.394h72.824c.267,0,.914-.119.914-.515,0-3.165-3.263-5.394-5.721-6.762a33.009,33.009,0,0,0-11.179-3.754l.429.275-4.253-19.267c-.126-.572-1.466-.228-1.337.358l4.253,19.267c.042.191.266.252.429.275a31.656,31.656,0,0,1,10.3,3.405c2.281,1.226,5.732,3.34,5.732,6.323l.915-.515H198.4l.435.394c0-3,3.346-5.071,5.661-6.3a31.441,31.441,0,0,1,10.061-3.311c.3-.044.668-.183.744-.515l4.3-18.916c.138-.608-1.224-.43-1.349.121\" transform=\"translate(-142.819 -309.51)\" fill=\"#cfcfcf\"/>\n  <path id=\"Path_275\" data-name=\"Path 275\" d=\"M294.731,498.408h-24.02c-1.173,0-2.347-.017-3.519,0-.875.017-2.17.264-2.642,1.114-.441.794.375,1.266,1.107,1.253,8.018-.15,16.053,0,24.073,0H293.2a3.115,3.115,0,0,0,2.642-1.114c.446-.8-.38-1.253-1.107-1.253\" transform=\"translate(-191.224 -360.428)\" fill=\"#e3e3e3\"/>\n  <path id=\"Path_276\" data-name=\"Path 276\" d=\"M188.649,107.129V12.04A10.332,10.332,0,0,0,178.316,1.708H21.832A10.332,10.332,0,0,0,11.5,12.04v95.089a10.332,10.332,0,0,0,10.332,10.332H178.316a10.333,10.333,0,0,0,10.332-10.332\" transform=\"translate(-8.316 -1.235)\" fill=\"#fff\"/>\n  <path id=\"Path_277\" data-name=\"Path 277\" d=\"M187.552,105.836V17.945c0-2.315.012-4.631,0-6.945A10.9,10.9,0,0,0,176.588.013c-4.257-.028-8.515,0-12.772,0H22.085c-2.491,0-4.856.089-7.157,1.3a10.99,10.99,0,0,0-5.875,9.552c-.007.465,0,.93,0,1.4v91.187c0,3.318.123,6.473,2.364,9.236,2.471,3.048,6.008,4,9.743,4H161.527c4.906,0,9.813.027,14.719,0a11.18,11.18,0,0,0,11.307-10.852c.012-.665-1.34-.446-1.35.118a9.794,9.794,0,0,1-8.439,9.749,15.97,15.97,0,0,1-1.823.063H21.241c-4.288,0-8.253-1.879-10.033-6.029-1.013-2.362-.805-4.952-.805-7.46V11.931c0-.523-.013-1.049.007-1.571a9.738,9.738,0,0,1,9-9.408C20.583.887,21.764.934,22.933.934h150c1.173,0,2.349-.026,3.522,0,5.872.128,9.748,5.028,9.748,10.63v94.389c0,.666,1.35.444,1.35-.118\" transform=\"translate(-6.545 0)\" fill=\"#cfcfcf\"/>\n  <path id=\"Path_278\" data-name=\"Path 278\" d=\"M197.533,34.186H45.656a4.4,4.4,0,0,0-4.4,4.4v81.866a4.4,4.4,0,0,0,4.4,4.4H190.418a11.513,11.513,0,0,0,11.514-11.513V38.584a4.4,4.4,0,0,0-4.4-4.4\" transform=\"translate(-29.836 -24.722)\" fill=\"#f9f9f9\"/>\n  <path id=\"Path_279\" data-name=\"Path 279\" d=\"M196.018,32.756H46.833c-.9,0-1.8-.028-2.691,0a5.2,5.2,0,0,0-5.327,4.887c-.017.487,0,.979,0,1.467v79.343c0,.5-.03,1.016.017,1.514a4.8,4.8,0,0,0,4.856,4.227c1.151.032,2.308,0,3.46,0H184.132c1.347,0,2.695.007,4.042,0a12.575,12.575,0,0,0,12.043-8.273c.786-2.31.61-4.794.61-7.2V39.209c0-.56.014-1.123,0-1.683a4.8,4.8,0,0,0-4.809-4.77c-.52-.022-1.417.736-.516.774,4.135.176,3.987,4.031,3.987,6.98v68.976c0,2.828.091,5.562-1.291,8.175a10.967,10.967,0,0,1-10.087,5.757H54.89c-3.563,0-7.152.125-10.714,0a4.178,4.178,0,0,1-4.022-4.215c-.02-.613,0-1.23,0-1.843V38.6c0-2.431.739-4.977,3.71-5.072,3.966-.125,7.956,0,11.923,0H195.5c.513,0,1.415-.774.516-.774\" transform=\"translate(-28.063 -23.679)\" fill=\"#cfcfcf\"/>\n  <path id=\"Path_280\" data-name=\"Path 280\" d=\"M312.77,106.292a23.523,23.523,0,0,0,4.062-1.369l4.921,3.619,6.494-5.132-2.36-5.566a23.707,23.707,0,0,0,2.475-3.928l5.976-.383,1.675-8.106-5.176-2.64a23.478,23.478,0,0,0-.625-4.774c-.009-.037-.02-.072-.029-.109l4.147-3.958L330.4,66.66l-5.425,1.25a23.591,23.591,0,0,0-3.851-3.488l.608-5.475-7.692-3.058-3.25,4.309a23.292,23.292,0,0,0-5.375-.181l-2.974-4.465-7.858,2.6.28,5.382a23.392,23.392,0,0,0-4.171,3.342l-5.21-1.527L281.139,72.4l3.788,4.065a23.375,23.375,0,0,0-.986,5.042l-5.148,2.256,1.2,8.19,5.76.71a23.276,23.276,0,0,0,2.355,4.235l-2.607,5.268,6.182,5.5,5.067-3.288a23.583,23.583,0,0,0,4.282,1.672l1.435,5.9,8.274.243,1.791-5.85c.08-.018.16-.032.24-.05m-14.442-28.5a10.855,10.855,0,1,1,3.54,14.937,10.855,10.855,0,0,1-3.54-14.937\" transform=\"translate(-201.614 -40.173)\" fill=\"#e3e3e3\"/>\n  <path id=\"Path_281\" data-name=\"Path 281\" d=\"M336.274,90.591a21.037,21.037,0,0,0-.56-4.273c-.008-.033-.018-.065-.026-.1l3.712-3.543-3.515-6.522-4.856,1.119a21.1,21.1,0,0,0-3.447-3.122l.544-4.9-6.885-2.737-2.909,3.857a20.85,20.85,0,0,0-4.81-.162l-2.662-4-7.033,2.329.251,4.817a20.955,20.955,0,0,0-3.734,2.991l-4.663-1.367-3.891,6.305,3.39,3.638a20.93,20.93,0,0,0-.882,4.513l-4.608,2.02,1.072,7.331,5.155.635a20.841,20.841,0,0,0,2.108,3.791l-2.334,4.715,5.534,4.926,4.535-2.943a21.132,21.132,0,0,0,3.833,1.5l1.284,5.28,7.405.217,1.6-5.236c.072-.016.143-.028.215-.045a21.031,21.031,0,0,0,3.636-1.226l4.4,3.239,5.812-4.594-2.112-4.982a21.2,21.2,0,0,0,2.215-3.515l5.349-.343,1.5-7.255ZM324.686,96.9a10.855,10.855,0,1,1-3.54-14.937,10.855,10.855,0,0,1,3.54,14.937\" transform=\"translate(-209.495 -47.884)\" fill=\"#eaeaea\"/>\n  <path id=\"Path_282\" data-name=\"Path 282\" d=\"M311.132,105.459a27.446,27.446,0,0,0,4.235-1.433l-.811-.008,4.921,3.619a.874.874,0,0,0,.959-.081l6.494-5.132c.126-.1.3-.3.225-.484l-1.7-4.008c-.131-.309-.718-1.2-.654-1.543.011-.056.92-1.078,1.046-1.272a26.523,26.523,0,0,0,1.392-2.415l-.7.413,5.976-.383a.78.78,0,0,0,.737-.54l1.676-8.106a.356.356,0,0,0-.162-.335l-3.07-1.566a8.038,8.038,0,0,1-1.766-.9c-.04-.038-.212-.071-.246-.126-.171-.272.243.576.048-.239-.147-.614-.1-1.359-.177-1.982a12.8,12.8,0,0,1-.437-2.393c-.032.316-.214.259.087.053a12.324,12.324,0,0,0,1.367-1.3l2.555-2.439a.393.393,0,0,0,.053-.492l-3.927-7.286c-.125-.231-.528-.211-.735-.164L323.1,66.16l.735.164a18.337,18.337,0,0,0-3.194-3.011c-.518-.346-.492-.115-.563-.5a4.22,4.22,0,0,1,.115-1.035q.232-2.087.463-4.174a.393.393,0,0,0-.291-.4l-7.692-3.057a.9.9,0,0,0-.945.253l-3.25,4.309.791-.289a26.588,26.588,0,0,0-5.547-.184l.553.195L301.3,53.965a.7.7,0,0,0-.735-.164L292.7,56.4c-.193.064-.568.244-.555.509l.213,4.1a3.924,3.924,0,0,1,.05.949c-.106.462.113.076-.365.377a21.976,21.976,0,0,0-3.671,3.047l.945-.254-5.21-1.526a.9.9,0,0,0-1.025.374l-4.347,7.045a.356.356,0,0,0,.027.371l2.777,2.981c.3.326.884.813.917,1.137a12.491,12.491,0,0,1-.55,1.935,25.709,25.709,0,0,0-.408,2.811l.381-.445-5.148,2.256a.564.564,0,0,0-.372.573l1.2,8.19c.028.193.275.287.437.307l5.76.71-.437-.307c.28.637.573,1.266.9,1.881q.34.642.72,1.263c.128.21.606.729.639.831.093.29-.377,1.021-.587,1.445l-1.895,3.828a.365.365,0,0,0,.124.463l6.182,5.5c.255.226.721.073.959-.081l5.067-3.287-.829.145c.764.378,1.538.73,2.336,1.031.265.1,1.649.4,1.679.432.292.315.349,1.434.447,1.837l.973,4a.474.474,0,0,0,.437.307l8.274.243c.284.008.77-.079.871-.409l1.791-5.85-.517.381.24-.05c.84-.177.585-1.091-.246-.916l-.24.051a.74.74,0,0,0-.516.381l-1.791,5.85.871-.409-8.274-.242.437.307-1-4.127a7.018,7.018,0,0,0-.416-1.711c-.429-.732-2.169-.932-2.957-1.259-.855-.356-1.593-1.028-2.486-.579a16.665,16.665,0,0,0-1.489.966l-3.544,2.3.959-.081-6.182-5.5.124.463,2.607-5.268a.366.366,0,0,0-.027-.371,25.426,25.426,0,0,1-1.513-2.47c-.273-.515-.457-1.514-.939-1.857A3.838,3.838,0,0,0,283,90.731l-4.537-.559.437.307-1.2-8.19-.373.574,5.148-2.256a.618.618,0,0,0,.381-.445,25.718,25.718,0,0,1,.408-2.811c.115-.552.735-1.883.569-2.36-.142-.407-.7-.807-.985-1.111L281,71.893a5.346,5.346,0,0,0-.746-.8c-.4-.272-.005-.338-.221.063,1.3-2.408,2.895-4.691,4.331-7.019l-1.025.374,5.21,1.527a.951.951,0,0,0,.945-.253,24.834,24.834,0,0,1,4.055-3.234.545.545,0,0,0,.234-.356q-.14-2.691-.28-5.382l-.554.509,7.858-2.6-.735-.164,2.974,4.465a.62.62,0,0,0,.553.2,24.9,24.9,0,0,1,5.2.177.918.918,0,0,0,.791-.289l3.25-4.309-.945.254,7.692,3.057-.292-.4q-.244,2.2-.489,4.4c-.04.36-.238.973-.054,1.315.242.45,1.186.92,1.582,1.258a24.3,24.3,0,0,1,2.269,2.23.733.733,0,0,0,.735.164l5.425-1.25-.735-.164,3.927,7.286c.017-.164.035-.327.053-.492l-4.147,3.959a.426.426,0,0,0-.109.376,22.055,22.055,0,0,1,.645,4.755.366.366,0,0,0,.162.335l3.307,1.687c.4.2,1.24.854,1.693.864.327.006-.055-.013,0-.2-.049.155-.054.325-.1.481-.711,2.453-1.049,5.075-1.567,7.578l.737-.54-4.774.306a4.174,4.174,0,0,0-1.558.172c-.517.28-.731,1.074-1,1.546a24.469,24.469,0,0,1-1.734,2.578c-.069.091-.161.253-.109.376l2.36,5.566.225-.484-6.494,5.132.959-.081-3.8-2.8a5.03,5.03,0,0,0-1.249-.888c-.53-.155-1.086.236-1.551.42a24.062,24.062,0,0,1-3.02.942c-.83.206-.584,1.122.246.916\" transform=\"translate(-199.854 -38.882)\" fill=\"#cfcfcf\"/>\n  <path id=\"Path_283\" data-name=\"Path 283\" d=\"M344.1,121.226a10.089,10.089,0,0,1,11.133-4.385,10.565,10.565,0,0,1,7.579,8.932,10.4,10.4,0,0,1-5.687,10.455,10.2,10.2,0,0,1-11.72-2.236,10.641,10.641,0,0,1-1.3-12.766c.379-.639-.979-.658-1.279-.153a11.338,11.338,0,0,0,1.231,13.372,11.682,11.682,0,0,0,12.658,3,11.533,11.533,0,0,0,7.517-10.994,11.36,11.36,0,0,0-7.865-10.4,11.889,11.889,0,0,0-13.541,5.026c-.4.619.964.644,1.279.153\" transform=\"translate(-246.745 -83.529)\" fill=\"#cfcfcf\"/>\n  <path id=\"Path_284\" data-name=\"Path 284\" d=\"M196.861,234.476a16.167,16.167,0,0,0,2.945-.221l2.668,3.256,5.211-2.318-.626-4.118a16.317,16.317,0,0,0,2.322-2.2l4.055.764,2.5-5.125-3-2.645a16.184,16.184,0,0,0,.4-3.294c0-.026,0-.051,0-.078l3.444-1.935-1.378-5.534-3.835-.091a16.252,16.252,0,0,0-1.976-2.986l1.34-3.551-4.613-3.354-2.9,2.322a16.034,16.034,0,0,0-3.557-1.038l-1.224-3.488-5.689.4-.731,3.64a16.129,16.129,0,0,0-3.355,1.519l-3.217-1.908-4.1,3.961,1.835,3.36a16.107,16.107,0,0,0-1.518,3.2l-3.822.628-.6,5.672,3.724,1.456a16.027,16.027,0,0,0,.849,3.229l-2.639,3.072,3.188,4.729,3.943-1.33a16.258,16.258,0,0,0,2.573,1.846l-.049,4.183,5.482,1.574,2.194-3.6c.056,0,.112.006.169.007m-4.778-21.488a7.479,7.479,0,1,1-.185,10.575,7.479,7.479,0,0,1,.185-10.575\" transform=\"translate(-128.31 -143.797)\" fill=\"#e3e3e3\"/>\n  <path id=\"Path_285\" data-name=\"Path 285\" d=\"M216.713,226.9a14.491,14.491,0,0,0,.355-2.948c0-.023,0-.046,0-.069l3.082-1.732-1.234-4.953-3.432-.082a14.546,14.546,0,0,0-1.768-2.672l1.2-3.179-4.129-3-2.6,2.078a14.352,14.352,0,0,0-3.184-.929l-1.1-3.122-5.092.355-.655,3.259a14.434,14.434,0,0,0-3,1.36l-2.88-1.708-3.673,3.545,1.642,3.007a14.432,14.432,0,0,0-1.359,2.862l-3.421.562-.535,5.077,3.333,1.3a14.348,14.348,0,0,0,.76,2.89l-2.362,2.749,2.854,4.233,3.529-1.191a14.553,14.553,0,0,0,2.3,1.653l-.044,3.744,4.907,1.408,1.963-3.222c.051,0,.1.006.151.007a14.491,14.491,0,0,0,2.636-.2l2.388,2.914,4.664-2.075-.56-3.686a14.613,14.613,0,0,0,2.078-1.969l3.629.684,2.239-4.588Zm-8.812,2.235a7.479,7.479,0,1,1,.185-10.575,7.479,7.479,0,0,1-.185,10.575\" transform=\"translate(-133.738 -149.182)\" fill=\"#eaeaea\"/>\n  <path id=\"Path_286\" data-name=\"Path 286\" d=\"M195.027,233.681a19.286,19.286,0,0,0,2.945-.221l-.553-.195,2.667,3.256a.783.783,0,0,0,.908.1l5.211-2.318a.563.563,0,0,0,.372-.573l-.626-4.118-.225.484a19.87,19.87,0,0,0,2.438-2.307l-.791.289,4.055.764a.872.872,0,0,0,.871-.409l2.5-5.125a.364.364,0,0,0-.124-.462l-2.193-1.931a2.815,2.815,0,0,1-.549-.483c-.188-.313-.118-.06-.123-.284-.007-.267.291-1.084.332-1.469a13.317,13.317,0,0,0,.088-1.514l-.381.445,3.444-1.935c.2-.113.438-.31.372-.573l-1.378-5.534a.475.475,0,0,0-.437-.307l-2.325-.055a4.037,4.037,0,0,1-1.3-.031c-.528-.26.4.381-.043-.211-.26-.345-.457-.79-.7-1.153-.281-.425-.961-1.019-.967-1.261a4.565,4.565,0,0,1,.453-1.2l.813-2.154a.364.364,0,0,0-.124-.462l-4.613-3.354a.874.874,0,0,0-.959.081l-2.9,2.322.829-.145a19.009,19.009,0,0,0-3.711-1.073l.437.307-1.224-3.488a.566.566,0,0,0-.609-.31l-5.689.4a.78.78,0,0,0-.737.54l-.731,3.64.554-.509a19.226,19.226,0,0,0-3.528,1.583l.811.008-3.217-1.908a.9.9,0,0,0-1.075.189l-4.1,3.961a.393.393,0,0,0-.052.492l1.3,2.379c.1.178.546.736.524.959a.535.535,0,0,0-.518.525l-.231.449a18.352,18.352,0,0,0-.784,1.875l.7-.413-3.821.628c-.289.048-.7.19-.737.54q-.3,2.836-.6,5.672a.393.393,0,0,0,.292.4l2.115.827a5.514,5.514,0,0,1,1.284.5c.058.047.258.053.3.118a.446.446,0,0,0-.085.686q.074.351.169.7c.083.315.45.992.471,1.182s.089-.044-.039.237a5.665,5.665,0,0,1-.87,1.013l-1.587,1.847a.393.393,0,0,0-.053.492l3.188,4.729a.7.7,0,0,0,.735.164l3.943-1.33-.638-.072c.46.392.928.77,1.424,1.115a5.293,5.293,0,0,0,.987.419c.142.2-.012,1.028-.015,1.27q-.017,1.445-.034,2.89a.393.393,0,0,0,.291.4l5.482,1.573a.9.9,0,0,0,1.025-.374l2.194-3.6-.871.41.169.007c.649.028,1.365-.933.463-.972l-.169-.007a.917.917,0,0,0-.871.409l-2.194,3.6,1.025-.374-5.482-1.574.292.4q.017-1.508.035-3.017a4.2,4.2,0,0,0,.014-1.166c-.211-.618-1.152-.941-1.679-1.33-.569-.421-.958-1-1.694-.924a5.714,5.714,0,0,0-1.1.371l-2.844.959.735.164-3.188-4.729-.052.492,2.639-3.072a.429.429,0,0,0,.109-.376,18.208,18.208,0,0,1-.566-1.814,5.147,5.147,0,0,0-.34-1.531c-.177-.229-.657-.325-.906-.422l-3.044-1.19.291.4q.3-2.836.6-5.672l-.737.54,3.821-.628c.244-.04.6-.144.7-.413a18.426,18.426,0,0,1,.785-1.875c.184-.372.756-1.044.772-1.451.011-.265-.259-.6-.378-.817l-1.522-2.786q-.026.246-.053.492l4.1-3.961-1.075.189,3.218,1.908a.855.855,0,0,0,.811.008,18.325,18.325,0,0,1,1.627-.853,12.91,12.91,0,0,0,1.728-.667c.365-.242.383-.477.468-.878.227-1.066.43-2.138.644-3.207l-.736.54,5.689-.4-.609-.31,1.224,3.488a.5.5,0,0,0,.437.307,17.356,17.356,0,0,1,3.4,1,.918.918,0,0,0,.829-.145l2.9-2.322-.959.081,4.613,3.354-.124-.463c-.383,1.014-.773,2.026-1.148,3.043a1.36,1.36,0,0,0-.164.879c.1.415.821,1.062,1.068,1.435.332.5.626,1.02.907,1.55a.542.542,0,0,0,.38.192l3.835.091-.437-.307,1.378,5.534.372-.573-3.444,1.935c-.153.086-.383.238-.381.445a15.781,15.781,0,0,1-.4,3.371.367.367,0,0,0,.162.335l3,2.645-.124-.463-2.5,5.125.871-.409-2.924-.551a5.749,5.749,0,0,0-1.13-.213c-.76.025-1.063.618-1.571,1.125s-1.531,1.014-1.651,1.74a3.96,3.96,0,0,0,.157,1.03l.469,3.088.372-.573-5.211,2.318.908.1-2.147-2.62c-.184-.225-.4-.629-.682-.759a2.062,2.062,0,0,0-1.115.031,18.055,18.055,0,0,1-2.222.118c-.763,0-1.026.977-.119.979\" transform=\"translate(-126.535 -142.513)\" fill=\"#cfcfcf\"/>\n  <path id=\"Path_287\" data-name=\"Path 287\" d=\"M223.113,243.525a6.781,6.781,0,0,1,9.788.468,7.148,7.148,0,0,1-.35,9.729,6.744,6.744,0,0,1-9.848-.665,7.184,7.184,0,0,1,.526-9.639c.586-.6-.7-.822-1.119-.394a7.979,7.979,0,0,0-1.6,9.112,8.109,8.109,0,0,0,8.09,4.392,8.313,8.313,0,0,0,7.109-5.834,7.9,7.9,0,0,0-3.305-8.782,8.439,8.439,0,0,0-10.176,1c-.666.61.39,1.066.887.61\" transform=\"translate(-158.896 -174.029)\" fill=\"#cfcfcf\"/>\n</g>\n</svg>\n)\n}\n","import React, { useCallback, useState, useEffect } from 'react';\nimport { Box, Button, IconButton, CircularProgress, Stack } from '@mui/material';\nimport AddIcon from '@mui/icons-material/Add';\nimport ClearIcon from '@mui/icons-material/Clear';\nimport AddCircleIcon from '@mui/icons-material/AddCircle';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport { classes } from '../styles';\nimport { IQuestionBasedProps } from '../../types';\nimport FormSelectField from '../../../Components/CustomUIElements/FormSelectField';\nimport NoAutoStatusSVG from './NoAutoStatusSVG';\nimport Switch from '@mui/material/Switch';\n\nexport default function QuestionBased({\n  apiKey,\n  jobId,\n  setSnackbar,\n  autoStatuses,\n  setAutoStatuses,\n  applicationStatuses,\n  hasRadioButtonQuestions,\n  handleEditTabChange\n}: IQuestionBasedProps) {\n  const [isLoading, setIsLoading] = useState({\n    new: false,\n    delete: -1,\n    addField: -1,\n    deleteField: [-1, -1],\n    updateField: [-1, -1]\n  });\n  const [hoveredField, setHoveredField] = useState([-1, -1]);\n\n  const [radioQuestions, setRadioQuestions] = useState([]);\n\n  const getRadioButtonQuestions = useCallback(async () => {\n    try {\n      const response = await fetch(`/api/v4/fields?job_id=${jobId}`, {\n        method: 'GET',\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      }).then((response) => response.json());\n      setRadioQuestions(response.fields.filter((question) => question.type === 'RadioButtonField'));\n    } catch (error) {\n      console.log(error);\n    }\n  }, [apiKey, jobId]);\n\n  const handleAddNewAutoStatus = async () => {\n    setIsLoading({ ...isLoading, new: true });\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/auto_status_question_based`, {\n        method: 'POST',\n        headers: {\n          'X-api-authenticate': apiKey,\n          'Content-Type': 'application/json'\n        },\n        body: JSON.stringify({\n          auto_status_question_based: {\n            status_id: applicationStatuses[0].id,\n            auto_status_conditions_attributes: {\n              0: {\n                field_id: radioQuestions[0]?.id,\n                field_choice_id: radioQuestions[0]?.field_choices[0]?.id\n              }\n            }\n          }\n        })\n      });\n      if (response.ok) {\n        const data = await response.json();\n        setAutoStatuses([...autoStatuses, data]);\n      } else {\n        throw new Error('Error adding auto status');\n      }\n    } catch (error) {\n      setSnackbar({\n        message: error.message || 'Error creating auto status',\n        state: 'error'\n      });\n    } finally {\n      setIsLoading({ ...isLoading, new: false });\n    }\n  };\n\n  const handleNewAutoStatusField = async (index: number) => {\n    const tempAutoStatus = JSON.parse(JSON.stringify(autoStatuses));\n    const filteredQuestion = radioQuestions?.filter(\n      (question) => !tempAutoStatus[index].fields.map((f) => f.question.id).includes(question.id)\n    );\n    tempAutoStatus[index].fields.push({\n      question: {\n        id: filteredQuestion[0].id,\n        title: filteredQuestion[0].title\n      },\n      choice: {\n        id: filteredQuestion[0].field_choices[0].id,\n        name: filteredQuestion[0].field_choices[0].name\n      }\n    });\n    setIsLoading({ ...isLoading, addField: index });\n    const payload = {\n      auto_status_question_based: {\n        status_id: tempAutoStatus[index].status.id,\n        auto_status_conditions_attributes: {}\n      }\n    };\n    tempAutoStatus[index].fields.forEach((field, i) => {\n      payload.auto_status_question_based.auto_status_conditions_attributes[i] = {\n        id: field.id,\n        field_id: field.question.id,\n        field_choice_id: field.choice.id\n      };\n    });\n    try {\n      const response = await fetch(\n        `/api/v4/jobs/${jobId}/auto_status_question_based/${autoStatuses[index].id}`,\n        {\n          method: 'PUT',\n          headers: {\n            'X-api-authenticate': apiKey,\n            'Content-Type': 'application/json'\n          },\n          body: JSON.stringify(payload)\n        }\n      );\n      const data = await response.json();\n      if (response.ok) {\n        tempAutoStatus[index] = data;\n        setAutoStatuses(tempAutoStatus);\n      } else {\n        throw new Error('Error adding auto status field');\n      }\n    } catch (error) {\n      setSnackbar({\n        message: error.message || 'Error adding auto status field',\n        state: 'error'\n      });\n    } finally {\n      setIsLoading({ ...isLoading, addField: -1 });\n    }\n  };\n\n  const handleRemoveField = async (index: number, fieldIndex: number) => {\n    setIsLoading({ ...isLoading, deleteField: [index, fieldIndex] });\n    const tempAutoStatus = JSON.parse(JSON.stringify(autoStatuses));\n    tempAutoStatus[index].fields.splice(fieldIndex, 1);\n    setIsLoading({ ...isLoading, deleteField: [index, fieldIndex] });\n    const payload = {\n      auto_status_question_based: {\n        status_id: tempAutoStatus[index].status.id,\n        auto_status_conditions_attributes: {}\n      }\n    };\n    tempAutoStatus[index].fields.forEach((field, i) => {\n      payload.auto_status_question_based.auto_status_conditions_attributes[i] = {\n        id: field.id,\n        field_id: field.question.id,\n        field_choice_id: field.choice.id\n      };\n    });\n    try {\n      const response = await fetch(\n        `/api/v4/jobs/${jobId}/auto_status_question_based/${autoStatuses[index].id}`,\n        {\n          method: 'PUT',\n          headers: {\n            'X-api-authenticate': apiKey,\n            'Content-Type': 'application/json'\n          },\n          body: JSON.stringify(payload)\n        }\n      );\n      const data = await response.json();\n      if (response.ok) {\n        tempAutoStatus[index] = data;\n        setAutoStatuses(tempAutoStatus);\n      } else {\n        throw new Error('Error removing auto status field');\n      }\n    } catch (error) {\n      setSnackbar({\n        message: error.message || 'Error removing auto status field',\n        state: 'error'\n      });\n    } finally {\n      setIsLoading({ ...isLoading, deleteField: [-1, -1] });\n    }\n  };\n\n  const handleDeleteAutoStatus = async (index: number) => {\n    const autoStatusesCopy = JSON.parse(JSON.stringify(autoStatuses));\n    autoStatusesCopy.splice(index, 1);\n    setIsLoading({ ...isLoading, delete: index });\n    try {\n      const response = await fetch(\n        `/api/v4/jobs/${jobId}/auto_status_question_based/${autoStatuses[index].id}`,\n        {\n          method: 'DELETE',\n          headers: {\n            'X-api-authenticate': apiKey,\n            'Content-Type': 'application/json'\n          }\n        }\n      );\n      if (response.ok) {\n        setAutoStatuses(autoStatusesCopy);\n      } else {\n        throw new Error('Error deleting auto status');\n      }\n    } catch (error) {\n      setSnackbar({\n        message: error.message || 'Error deleting auto status',\n        state: 'error'\n      });\n    } finally {\n      setIsLoading({ ...isLoading, delete: -1 });\n    }\n  };\n\n  const handleChangeStatus = async (index: number, statusId: number) => {\n    const prevAutoStatuses = JSON.parse(JSON.stringify(autoStatuses));\n    const tempAutoStatus = JSON.parse(JSON.stringify(autoStatuses));\n    tempAutoStatus[index].status.id = statusId;\n    setAutoStatuses(tempAutoStatus);\n    const payload = {\n      auto_status_question_based: {\n        status_id: statusId,\n        auto_status_conditions_attributes: {}\n      }\n    };\n    tempAutoStatus[index].fields.forEach((field, i) => {\n      payload.auto_status_question_based.auto_status_conditions_attributes[i] = {\n        id: field.id,\n        field_id: field.question.id,\n        field_choice_id: field.choice.id\n      };\n    });\n    try {\n      const response = await fetch(\n        `/api/v4/jobs/${jobId}/auto_status_question_based/${autoStatuses[index].id}`,\n        {\n          method: 'PUT',\n          headers: {\n            'X-api-authenticate': apiKey,\n            'Content-Type': 'application/json'\n          },\n          body: JSON.stringify(payload)\n        }\n      );\n      if (!response.ok) {\n        setAutoStatuses(prevAutoStatuses);\n        throw new Error('Error updating auto status');\n      }\n    } catch (error) {\n      setSnackbar({\n        message: error.message || 'Error updating auto status',\n        state: 'error'\n      });\n    }\n  };\n\n  const handleChangeField = async (\n    index: number,\n    fieldIndex: number,\n    value: number,\n    type: 'q' | 'a'\n  ) => {\n    const prevAutoStatuses = JSON.parse(JSON.stringify(autoStatuses));\n    const tempAutoStatus = JSON.parse(JSON.stringify(autoStatuses));\n    if (type === 'q') {\n      setIsLoading({ ...isLoading, updateField: [index, fieldIndex] });\n      tempAutoStatus[index].fields[fieldIndex].question.id = value;\n      tempAutoStatus[index].fields[fieldIndex].choice.id = radioQuestions.find(\n        (question) => question.id === value\n      )?.field_choices[0].id;\n    } else {\n      tempAutoStatus[index].fields[fieldIndex].choice.id = value;\n    }\n    setAutoStatuses(tempAutoStatus);\n    const payload = {\n      auto_status_question_based: {\n        status_id: tempAutoStatus[index].status.id,\n        auto_status_conditions_attributes: {}\n      }\n    };\n    tempAutoStatus[index].fields.forEach((field, i) => {\n      payload.auto_status_question_based.auto_status_conditions_attributes[i] = {\n        id: field.id,\n        field_id: field.question.id,\n        field_choice_id: field.choice.id\n      };\n    });\n    try {\n      const response = await fetch(\n        `/api/v4/jobs/${jobId}/auto_status_question_based/${autoStatuses[index].id}`,\n        {\n          method: 'PUT',\n          headers: {\n            'X-api-authenticate': apiKey,\n            'Content-Type': 'application/json'\n          },\n          body: JSON.stringify(payload)\n        }\n      );\n      if (!response.ok) {\n        setAutoStatuses(prevAutoStatuses);\n        throw new Error('Error updating auto status field');\n      }\n    } catch (error) {\n      setSnackbar({\n        message: error.message || 'Error updating auto status field',\n        state: 'error'\n      });\n    } finally {\n      setIsLoading({ ...isLoading, updateField: [-1, -1] });\n    }\n  };\n\n  const handleEnableStatus = async (index: number, id: number) => {\n    const prevAutoStatuses = JSON.parse(JSON.stringify(autoStatuses));\n    const tempAutoStatus = JSON.parse(JSON.stringify(autoStatuses));\n    tempAutoStatus[index].enabled = !autoStatuses[index].enabled;\n    setAutoStatuses(tempAutoStatus);\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/auto_status_question_based/${id}`, {\n        method: 'PUT',\n        headers: {\n          'X-api-authenticate': apiKey,\n          'Content-Type': 'application/json'\n        },\n        body: JSON.stringify({\n          enabled: tempAutoStatus[index].enabled\n        })\n      });\n      if (!response.ok) {\n        setAutoStatuses(prevAutoStatuses);\n        throw new Error('Error updating auto status');\n      }\n    } catch (error) {\n      setSnackbar({\n        message: 'There was an error saving your changes',\n        state: 'error'\n      });\n    }\n  };\n\n  useEffect(() => {\n    getRadioButtonQuestions();\n  }, [getRadioButtonQuestions]);\n\n  return (\n    <Box sx={classes.autoStatusesContainer}>\n      <Box sx={{ position: 'relative' }}>\n        {hasRadioButtonQuestions ? (\n          <>\n            {autoStatuses &&\n              autoStatuses?.map((autoStatus, statusIndex) => (\n                <Box sx={{ position: 'relative', display: 'flex' }} key={autoStatus.id}>\n                  <Box sx={classes.autoStatusesSubContainer} key={autoStatus.id}>\n                    {autoStatus.fields?.map((field, fieldIndex) => (\n                      <Box\n                        sx={classes.statusFormLine}\n                        key={field.id}\n                        onMouseEnter={() => setHoveredField([statusIndex, fieldIndex])}\n                        onMouseLeave={() => setHoveredField([-1, -1])}\n                      >\n                        <Box\n                          component={'h4'}\n                          sx={{ marginRight: fieldIndex === 0 ? '31px' : '8px' }}\n                        >\n                          {fieldIndex === 0 ? 'If' : 'and'}\n                        </Box>\n                        <FormSelectField\n                          label=\"Variable\"\n                          isDisabled={!radioQuestions}\n                          defaultValue={field.question.id ? field.question.id.toString() : ''}\n                          options={radioQuestions\n                            .filter(\n                              (question) =>\n                                question.id === field.question.id ||\n                                !autoStatus.fields?.map((f) => f.question.id).includes(question.id)\n                            )\n                            ?.map((question) => ({\n                              value: question.id.toString(),\n                              label: question.title\n                            }))}\n                          onChange={(value) =>\n                            handleChangeField(statusIndex, fieldIndex, Number(value), 'q')\n                          }\n                          styles={{ width: '290px' }}\n                        />\n                        <h4>equals</h4>\n                        <FormSelectField\n                          label=\"Answer\"\n                          options={radioQuestions\n                            .filter(\n                              (question) =>\n                                question.id === field.question.id || field.question.id === 0\n                            )[0]\n                            ?.field_choices?.map((choice) => ({\n                              value: choice.id.toString(),\n                              label: choice.name\n                            }))}\n                          defaultValue={field.choice.id ? field.choice.id.toString() : ''}\n                          onChange={(value) =>\n                            handleChangeField(statusIndex, fieldIndex, Number(value), 'a')\n                          }\n                          styles={{ width: '290px' }}\n                          isDisabled={\n                            !autoStatuses[statusIndex]?.fields[fieldIndex]?.question.id ||\n                            (isLoading.updateField[0] === statusIndex &&\n                              isLoading.updateField[1] === fieldIndex)\n                          }\n                        />\n                        {hoveredField[1] > 0 &&\n                          hoveredField.join('') === `${statusIndex}${fieldIndex}` && (\n                            <IconButton\n                              onClick={() => handleRemoveField(statusIndex, fieldIndex)}\n                              sx={classes.clearButton}\n                            >\n                              {isLoading.deleteField.join('') === `${statusIndex}${fieldIndex}` ? (\n                                <CircularProgress size={20} />\n                              ) : (\n                                <ClearIcon />\n                              )}\n                            </IconButton>\n                          )}\n                      </Box>\n                    ))}\n                    {autoStatus?.fields?.length < radioQuestions?.length && (\n                      <Box sx={classes.statusFormLine}>\n                        <Button\n                          startIcon={\n                            isLoading.addField === statusIndex ? (\n                              <CircularProgress size={22} />\n                            ) : (\n                              <AddIcon />\n                            )\n                          }\n                          onClick={() => handleNewAutoStatusField(statusIndex)}\n                          sx={classes.addNewFieldButton}\n                        >\n                          and\n                        </Button>\n                      </Box>\n                    )}\n                    <Box sx={classes.statusFormLine}>\n                      <h4>then</h4>\n                      <FormSelectField\n                        label=\"Status\"\n                        options={\n                          applicationStatuses\n                            ? applicationStatuses?.map((status) => ({\n                                value: status.id.toString(),\n                                label: status.name\n                              }))\n                            : []\n                        }\n                        defaultValue={autoStatus.status.id ? autoStatus.status.id.toString() : ''}\n                        onChange={(value) => handleChangeStatus(statusIndex, Number(value))}\n                        styles={{ width: '290px' }}\n                      />\n                    </Box>\n                  </Box>\n                  <Box\n                    sx={{\n                      ...classes.switchContainer,\n                      fontWeight: autoStatus.enabled ? 'bold' : ''\n                    }}\n                  >\n                    <Box sx={{ marginTop: '12px' }}>\n                      <Switch\n                        sx={autoStatus.enabled ? classes.switchActive : classes.switch}\n                        checked={autoStatus.enabled}\n                        size=\"small\"\n                        onChange={() => handleEnableStatus(statusIndex, autoStatus.id)}\n                      />\n                      <Stack sx={{ marginTop: 1, fontSize: '12px' }}>Enabled</Stack>\n                    </Box>\n                  </Box>\n                  <IconButton\n                    data-testid=\"delete-auto-status\"\n                    sx={classes.deleteButton}\n                    onClick={() => handleDeleteAutoStatus(statusIndex)}\n                    disabled={isLoading.delete === statusIndex}\n                  >\n                    {isLoading.delete === statusIndex ? (\n                      <CircularProgress size={26} />\n                    ) : (\n                      <DeleteIcon />\n                    )}\n                  </IconButton>\n                </Box>\n              ))}\n            {autoStatuses && autoStatuses.length > 0 ? (\n              <IconButton\n                sx={classes.addNewStatusButton}\n                onClick={handleAddNewAutoStatus}\n                disabled={isLoading.new}\n              >\n                {isLoading.new ? <CircularProgress size={21} /> : <AddCircleIcon />}\n              </IconButton>\n            ) : (\n              <Box sx={{ ...classes.noQuestionsContainer, margin: '100px 0px' }}>\n                <Box>\n                  <NoAutoStatusSVG />\n                </Box>\n                <Box sx={classes.noQuestionsText}>You have no auto statuses.</Box>\n                <Button\n                  data-testid=\"add-new-status-button\"\n                  startIcon={isLoading.new ? <CircularProgress size={26} /> : <AddCircleIcon />}\n                  onClick={handleAddNewAutoStatus}\n                  sx={classes.noStatusesAddButton}\n                >\n                  Add new status\n                </Button>\n              </Box>\n            )}\n          </>\n        ) : (\n          <Box sx={{ ...classes.noQuestionsContainer, margin: '100px 0px' }}>\n            <Box>\n              <NoAutoStatusSVG />\n            </Box>\n            <Box sx={classes.noQuestionsText}>\n              Question based auto statuses can only be used with radio button question types.\n              <br />\n              You have currently no radio button questions.\n            </Box>\n            <Button\n              data-testid=\"create-radio-button\"\n              startIcon={isLoading.new ? <CircularProgress size={26} /> : <AddCircleIcon />}\n              onClick={(e) => handleEditTabChange(e, 4)}\n              sx={classes.noStatusesAddButton}\n            >\n              Create radio button questions\n            </Button>\n          </Box>\n        )}\n      </Box>\n    </Box>\n  );\n}\n","import React, { useState } from 'react';\nimport { Box, Button, Slider, IconButton, CircularProgress, Stack } from '@mui/material';\nimport FormSelectField from '../../../Components/CustomUIElements/FormSelectField';\nimport AddCircleIcon from '@mui/icons-material/AddCircle';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport { classes } from '../styles';\nimport { IRatingBasedProps } from '../../types';\nimport { useDebouncedCallback } from 'use-debounce';\nimport Switch from '@mui/material/Switch';\n\nexport default function RatingBased({\n  apiKey,\n  jobId,\n  setSnackbar,\n  autoStatuses,\n  setAutoStatuses,\n  applicationStatuses\n}: IRatingBasedProps) {\n  const [isLoading, setIsLoading] = useState({\n    new: false,\n    delete: -1\n  });\n\n  const handleRatingChange = async (value: number[], index: number) => {\n    const tempAutoStatus = [...autoStatuses];\n    const prevAutoStatus = [...autoStatuses];\n    tempAutoStatus[index].rating_range = {\n      min: value[0],\n      max: value[1]\n    };\n    setAutoStatuses(tempAutoStatus);\n    try {\n      const response = await fetch(\n        `/api/v4/jobs/${jobId}/auto_status_rating_based/${autoStatuses[index].id}`,\n        {\n          method: 'PUT',\n          headers: {\n            'X-api-authenticate': apiKey,\n            'Content-Type': 'application/json'\n          },\n          body: JSON.stringify({\n            auto_status_rating_based: {\n              status_id: autoStatuses[index].status.id,\n              min_rating: value[0],\n              max_rating: value[1]\n            }\n          })\n        }\n      );\n      if (!response.ok) {\n        throw new Error('Error updating auto status');\n      }\n    } catch (error) {\n      setSnackbar({\n        message: error.message || 'Error updating auto status',\n        state: 'error'\n      });\n      setAutoStatuses(prevAutoStatus);\n    }\n  };\n\n  const handleStatusChange = async (value: string | number, index: number) => {\n    const tempAutoStatus = [...autoStatuses];\n    const prevAutoStatus = [...autoStatuses];\n    tempAutoStatus[index].status.id = parseInt(value as string);\n    setAutoStatuses(tempAutoStatus);\n    try {\n      const response = await fetch(\n        `/api/v4/jobs/${jobId}/auto_status_rating_based/${autoStatuses[index].id}`,\n        {\n          method: 'PUT',\n          headers: {\n            'X-api-authenticate': apiKey,\n            'Content-Type': 'application/json'\n          },\n          body: JSON.stringify({\n            auto_status_rating_based: {\n              status_id: value,\n              min_rating: autoStatuses[index].rating_range.min,\n              max_rating: autoStatuses[index].rating_range.max\n            }\n          })\n        }\n      );\n      if (!response.ok) {\n        throw new Error('Error updating auto status');\n      }\n    } catch (error) {\n      setSnackbar({\n        message: error.message || 'Error updating auto status',\n        state: 'error'\n      });\n      setAutoStatuses(prevAutoStatus);\n    }\n  };\n\n  const handleNewAutoStatus = async () => {\n    setIsLoading((prev) => ({ ...prev, new: true }));\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/auto_status_rating_based`, {\n        method: 'POST',\n        headers: {\n          'X-api-authenticate': apiKey,\n          'Content-Type': 'application/json'\n        },\n        body: JSON.stringify({\n          status_id: applicationStatuses[0].id,\n          min_rating: 0,\n          max_rating: 100\n        })\n      });\n      const data = await response.json();\n      if (response.ok) {\n        setAutoStatuses((prev) => [...prev, data]);\n      } else {\n        throw new Error('Error creating new auto status');\n      }\n    } catch (error) {\n      setSnackbar({\n        message: error.message || 'Error creating new auto status',\n        state: 'error'\n      });\n    } finally {\n      setIsLoading((prev) => ({ ...prev, new: false }));\n    }\n  };\n\n  const handleDeleteAutoStatus = async (index: number) => {\n    setIsLoading((prev) => ({ ...prev, delete: index }));\n    try {\n      const response = await fetch(\n        `/api/v4/jobs/${jobId}/auto_status_rating_based/${autoStatuses[index].id}`,\n        {\n          method: 'DELETE',\n          headers: {\n            'X-api-authenticate': apiKey,\n            'Content-Type': 'application/json'\n          }\n        }\n      );\n      if (response.ok) {\n        const autoStatusesCopy = [...autoStatuses];\n        autoStatusesCopy.splice(index, 1);\n        setAutoStatuses(autoStatusesCopy);\n      } else {\n        throw new Error('Error deleting auto status');\n      }\n    } catch (error) {\n      setSnackbar({\n        message: error.message || 'Error deleting auto status',\n        state: 'error'\n      });\n    } finally {\n      setIsLoading((prev) => ({ ...prev, delete: -1 }));\n    }\n  };\n\n  const handleEnableStatus = async (index: number, id: number) => {\n    const prevAutoStatuses = [...autoStatuses];\n    const tempAutoStatus = [...autoStatuses];\n    tempAutoStatus[index].enabled = !autoStatuses[index].enabled;\n    setAutoStatuses(tempAutoStatus);\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/auto_status_rating_based/${id}`, {\n        method: 'PUT',\n        headers: {\n          'X-api-authenticate': apiKey,\n          'Content-Type': 'application/json'\n        },\n        body: JSON.stringify({\n          enabled: tempAutoStatus[index].enabled\n        })\n      });\n      if (!response.ok) {\n        setAutoStatuses(prevAutoStatuses);\n        throw new Error('Error updating auto status');\n      }\n    } catch (error) {\n      setSnackbar({\n        message: 'There was an error saving your changes',\n        state: 'error'\n      });\n    }\n  };\n\n  return (\n    <Box sx={classes.autoStatusesContainer}>\n      <Box sx={{ position: 'relative' }}>\n        {autoStatuses.map((ratingBased, index) => (\n          <Box sx={{ position: 'relative', display: 'flex' }} key={ratingBased.id}>\n            <Box sx={classes.autoStatusesSubContainer} key={ratingBased.id}>\n              <Box sx={classes.statusFormLine}>\n                <Box component={'h4'}>If candidate rating is</Box>\n              </Box>\n              <Box sx={classes.statusFormLine}>\n                <DebouncedSlider\n                  initialValue={[ratingBased.rating_range.min, ratingBased.rating_range.max]}\n                  onChange={(e, value) => handleRatingChange(value as number[], index)}\n                />\n              </Box>\n              <Box sx={classes.statusFormLine}>\n                <Box component={'h4'}>then set status to</Box>\n                <FormSelectField\n                  label=\" \"\n                  options={applicationStatuses.map((status) => ({\n                    value: status.id.toString(),\n                    label: status.name\n                  }))}\n                  defaultValue={ratingBased.status.id ? ratingBased.status.id.toString() : ''}\n                  onChange={(value) => handleStatusChange(value, index)}\n                  styles={{ width: '290px' }}\n                />\n              </Box>\n            </Box>\n            <Box sx={{ ...classes.switchContainer, fontWeight: ratingBased.enabled ? 'bold' : '' }}>\n              <Box sx={{ marginTop: '12px' }}>\n                <Switch\n                  sx={ratingBased.enabled ? classes.switchActive : classes.switch}\n                  checked={ratingBased.enabled}\n                  size=\"small\"\n                  onChange={() => handleEnableStatus(index, ratingBased.id)}\n                />\n                <Stack sx={{ marginTop: 1, fontSize: '12px' }}>Enabled</Stack>\n              </Box>\n            </Box>\n            <IconButton\n              data-testid=\"delete-rating-button\"\n              sx={classes.deleteButton}\n              onClick={() => handleDeleteAutoStatus(index)}\n              disabled={isLoading.delete === index}\n            >\n              {isLoading.delete === index ? <CircularProgress size={26} /> : <DeleteIcon />}\n            </IconButton>\n          </Box>\n        ))}\n        {autoStatuses && autoStatuses.length > 0 ? (\n          <IconButton\n            data-testid=\"add-rating-button\"\n            sx={classes.addNewStatusButton}\n            onClick={handleNewAutoStatus}\n            disabled={isLoading.new}\n          >\n            {isLoading.new ? <CircularProgress size={21} /> : <AddCircleIcon />}\n          </IconButton>\n        ) : (\n          <Button\n            data-testid=\"add-rating-button\"\n            startIcon={isLoading.new ? <CircularProgress size={26} /> : <AddCircleIcon />}\n            onClick={handleNewAutoStatus}\n            sx={classes.noStatusesAddButton}\n          >\n            Add new status\n          </Button>\n        )}\n      </Box>\n    </Box>\n  );\n}\n\nfunction DebouncedSlider({\n  initialValue,\n  onChange\n}: {\n  initialValue: number[];\n  onChange: (e: any, value: number | number[]) => void;\n}) {\n  const [value, setValue] = useState(initialValue);\n  const debouncedOnChange = useDebouncedCallback((value) => {\n    onChange(undefined, value);\n  }, 500);\n\n  const handleChange = (event, newValue: number[]) => {\n    setValue(newValue);\n    debouncedOnChange(newValue);\n  };\n\n  return (\n    <Slider\n      sx={classes.ratingSlider}\n      getAriaLabel={() => 'Applicant rating slider'}\n      value={value}\n      onChange={handleChange}\n      valueLabelDisplay=\"on\"\n      valueLabelFormat={(value: number) => `${value}%`}\n      getAriaValueText={(value: number) => `${value}%`}\n    />\n  );\n}\n","import React, { useState, useEffect, useCallback } from 'react';\nimport { Box, Skeleton, Button, IconButton } from '@mui/material';\nimport AddCircleIcon from '@mui/icons-material/AddCircle';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport ImmediateChangesNotice from '../shared/ImmediateChangesNotice';\nimport FormSelectField from '../../../Components/CustomUIElements/FormSelectField';\nimport { classes } from '../styles';\nimport { IStatusTransitions, IStatusTransitionsProps } from '../../types';\nimport { IApplicationStatus } from '../../../Job/types';\nimport { FormNumberField } from '../../../Components/CustomUIElements/FormTextField';\nimport { useDebouncedCallback } from 'use-debounce';\n\nexport default function TimeBased({ apiKey, jobId, setSnackbar }: IStatusTransitionsProps) {\n  const [loading, setLoading] = useState({ statusTransitions: true, applicationStatuses: true });\n  const [applicationStatuses, setApplicationStatuses] = useState<IApplicationStatus[]>([]);\n  const [statusTransitions, setStatusTransitions] = useState<IStatusTransitions[]>([]);\n  const [numberError, setNumberError] = useState<boolean[]>([]);\n\n  const getApplicationStatuses = useCallback(async () => {\n    setLoading((prev) => ({ ...prev, applicationStatuses: true }));\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/job_application_statuses`, {\n        method: 'GET',\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      });\n      const { job_application_statuses } = await response.json();\n      setApplicationStatuses(job_application_statuses);\n    } catch (error) {\n      setSnackbar({\n        message: error.message || 'Error fetching status transitions',\n        state: 'error'\n      });\n    } finally {\n      setLoading((prev) => ({ ...prev, applicationStatuses: false }));\n    }\n  }, [apiKey, jobId, setSnackbar]);\n\n  const getStatusTransitions = useCallback(async () => {\n    setLoading((prev) => ({ ...prev, statusTransitions: true }));\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/status_transitions`, {\n        method: 'GET',\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      });\n      const { status_transitions } = await response.json();\n      setStatusTransitions(status_transitions);\n    } catch (error) {\n      setSnackbar({\n        message: error.message || 'Error fetching status transitions',\n        state: 'error'\n      });\n    } finally {\n      setLoading((prev) => ({ ...prev, statusTransitions: false }));\n    }\n  }, [apiKey, jobId, setSnackbar]);\n\n  const handleChange = useCallback(\n    async (value, index, type, statusTransition) => {\n      try {\n        const response = await fetch(\n          `/api/v4/jobs/${jobId}/status_transitions/${statusTransition.id}`,\n          {\n            method: 'PUT',\n            headers: {\n              'X-api-authenticate': apiKey,\n              'Content-Type': 'application/json'\n            },\n            body: JSON.stringify({\n              status_transition: {\n                ...statusTransition,\n                [type]: value\n              }\n            })\n          }\n        );\n        if (!response.ok) {\n          const body = await response.json();\n          throw new Error(body.errors || 'Error updating auto status');\n        }\n        setStatusTransitions((prev) => {\n          const newStatusTransitions = [...prev];\n          newStatusTransitions[index][type as keyof typeof newStatusTransitions[0]] = value;\n          return newStatusTransitions;\n        });\n      } catch (error) {\n        setSnackbar({\n          message: error.message || 'Error updating auto status',\n          state: 'error'\n        });\n      }\n    },\n    [apiKey, jobId, setSnackbar]\n  );\n\n  const handleNewStatusTransition = useCallback(async () => {\n    setLoading((prev) => ({ ...prev, statusTransitions: true }));\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/status_transitions`, {\n        method: 'POST',\n        headers: {\n          'X-api-authenticate': apiKey,\n          'Content-Type': 'application/json'\n        },\n        body: JSON.stringify({\n          from_status_id: 0,\n          to_status_id: 0,\n          days: 10\n        })\n      });\n      const data = await response.json();\n      if (response.ok) {\n        setStatusTransitions((prev) => [...prev, data]);\n      } else {\n        throw new Error('Error creating new auto status');\n      }\n    } catch (error) {\n      setSnackbar({\n        message: error.message || 'Error creating new auto status',\n        state: 'error'\n      });\n    } finally {\n      setLoading((prev) => ({ ...prev, statusTransitions: false }));\n    }\n  }, []);\n\n  const handleDeleteStatusTransition = useCallback(async (index, id) => {\n    setLoading((prev) => ({ ...prev, delete: index }));\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/status_transitions/${id}`, {\n        method: 'DELETE',\n        headers: {\n          'X-api-authenticate': apiKey,\n          'Content-Type': 'application/json'\n        }\n      });\n      if (response.ok) {\n        setStatusTransitions((prev) => {\n          const newStatusTransitions = [...prev];\n          newStatusTransitions.splice(index, 1);\n          return newStatusTransitions;\n        });\n      } else {\n        throw new Error('Error deleting status transition');\n      }\n    } catch (error) {\n      setSnackbar({\n        message: error?.message || 'Error deleting status transition',\n        state: 'error'\n      });\n    } finally {\n      setLoading((prev) => ({ ...prev, delete: -1 }));\n    }\n  }, []);\n\n  const debouncedNumberInputCallback = useDebouncedCallback((e, index, statusTransition) => {\n    if (Number(e.target.value) > 0) {\n      handleChange(e.target.value, index, 'days', statusTransition);\n    } else {\n      setSnackbar({\n        message: 'Days must be a valid number greater than 0',\n        state: 'error'\n      });\n    }\n  }, 500);\n\n  useEffect(() => {\n    getApplicationStatuses();\n    getStatusTransitions();\n  }, [getApplicationStatuses, getStatusTransitions]);\n\n  return (\n    <Box sx={classes.automationContainer}>\n      <h2 data-testid=\"status-transition-header\">Status transition</h2>\n      <ImmediateChangesNotice />\n      {!loading.applicationStatuses && !loading.statusTransitions ? (\n        <Box sx={classes.autoStatusesContainer}>\n          <Box sx={{ position: 'relative' }}>\n            {statusTransitions?.map((statusTransition, index) => (\n              <Box sx={classes.autoStatusesSubContainer} key={statusTransition.id}>\n                <Box sx={classes.statusFormLine}>\n                  <FormSelectField\n                    label=\"From status\"\n                    options={applicationStatuses.map((status) => ({\n                      value: status.id.toString(),\n                      label: status.name\n                    }))}\n                    defaultValue={\n                      statusTransition.from_status_id\n                        ? statusTransition.from_status_id.toString()\n                        : ''\n                    }\n                    onChange={(value) =>\n                      handleChange(value, index, 'from_status_id', statusTransition)\n                    }\n                    styles={{ width: '290px' }}\n                  />\n                  <Box component={'h4'}>to</Box>\n                  <FormSelectField\n                    label=\"To status\"\n                    options={applicationStatuses.map((status) => ({\n                      value: status.id.toString(),\n                      label: status.name\n                    }))}\n                    defaultValue={\n                      statusTransition.to_status_id ? statusTransition.to_status_id.toString() : ''\n                    }\n                    onChange={(value) =>\n                      handleChange(value, index, 'to_status_id', statusTransition)\n                    }\n                    styles={{ width: '290px' }}\n                  />\n                  <Box component={'h4'}>after</Box>\n                </Box>\n                <Box sx={classes.statusFormLine}>\n                  <FormNumberField\n                    label=\" \"\n                    value={statusTransition.days}\n                    error={numberError[index] ? 'Days must be greater than 0' : ''}\n                    onChange={(e) => {\n                      setStatusTransitions((prev) => {\n                        const newStatusTransitions = [...prev];\n                        newStatusTransitions[index].days = e.target.value;\n                        return newStatusTransitions;\n                      });\n                      if (Number(e.target.value) > 0) {\n                        debouncedNumberInputCallback(e, index, statusTransition);\n                        setNumberError((prev) => {\n                          const newNumberError = [...prev];\n                          newNumberError[index] = false;\n                          return newNumberError;\n                        });\n                      } else {\n                        setNumberError((prev) => {\n                          const newNumberError = [...prev];\n                          newNumberError[index] = true;\n                          return newNumberError;\n                        });\n                      }\n                    }}\n                    styles={{ width: '190px' }}\n                  />\n                  <Box component={'h4'}>days</Box>\n                </Box>\n                <IconButton\n                  data-testid=\"delete-status-transition-button\"\n                  sx={classes.deleteButton}\n                  onClick={() => handleDeleteStatusTransition(index, statusTransition.id)}\n                >\n                  <DeleteIcon />\n                </IconButton>\n              </Box>\n            ))}\n            {statusTransitions && statusTransitions.length > 0 ? (\n              <IconButton sx={classes.addNewStatusButton} onClick={handleNewStatusTransition}>\n                <AddCircleIcon />\n              </IconButton>\n            ) : (\n              <Button\n                data-testid=\"add-new-transition-button\"\n                startIcon={<AddCircleIcon />}\n                onClick={handleNewStatusTransition}\n                sx={classes.noStatusesAddButton}\n              >\n                Add new transition\n              </Button>\n            )}\n          </Box>\n        </Box>\n      ) : (\n        <Skeleton\n          variant=\"rectangular\"\n          animation=\"wave\"\n          height={450}\n          width={'100%'}\n          sx={{ borderRadius: '8px' }}\n        />\n      )}\n    </Box>\n  );\n}\n","import { ISmsTemplate } from '../../../Job/Applications/Modals/SMSCandidates';\n\nexport const getBodyFromSmsTemplateValue = (value: string, smsTemplates: ISmsTemplate[]) : string => {\n  if (!value) {\n    return '';\n  }\n\n  const id = Number(value.split(' -')[0]);\n  const smsTemplate = smsTemplates.find((template) => template.id === id);\n  return smsTemplate?.body || '';\n};\n","import React from 'react';\nimport { Button } from '@mui/material';\nimport { classes } from '../styles';\n\nexport default function CancelButton({ setModalOpen, scope }) {\n  return (\n    <Button\n      id={`close-${scope}-button`}\n      sx={classes.modalCancelButton}\n      onClick={() => setModalOpen(false)}\n    >\n      Cancel\n    </Button>\n  );\n}\n","import React from 'react';\nimport SelectField from '../../../Components/CustomUIElements/SelectField';\nimport { DELAY_OPTIONS } from '../../../constants';\n\nexport default function DelaySelect({\n  delay,\n  setDelay\n}: {\n  delay: string;\n  setDelay: (value: string) => void;\n}) {\n  const valueWithFallback = DELAY_OPTIONS.find((option) => option === delay) || DELAY_OPTIONS[0];\n\n  return (\n    <SelectField\n      id='delay-select'\n      label='Delay'\n      options={DELAY_OPTIONS}\n      value={valueWithFallback}\n      onChange={setDelay}\n      styles={{ width: '290px' }}\n    />\n  );\n}\n","import React from 'react';\nimport { Box } from '@mui/material';\nimport { classes } from '../styles';\nimport DelaySelect from './DelaySelect';\n\nexport default function DelaySelectWrapper({ delay, setDelay }:\n  {\n    delay: string;\n    setDelay: (value: string) => void\n  }\n) {\n  return (\n    <Box sx={classes.actionModalFormLine}>\n      <DelaySelect delay={delay} setDelay={setDelay} />\n    </Box>\n  );\n}\n","import React from 'react';\nimport { Box } from '@mui/material';\nimport InfoIcon from '@mui/icons-material/Info';\nimport { classes } from '../styles';\n\nexport default function ImmediateChangesNotice() {\n  return (\n    <Box sx={classes.noticeContainer}>\n      <Box>\n        <InfoIcon sx={classes.noticeIcon} />\n        Any changes here will be automatically saved and will be applied immediately.\n      </Box>\n    </Box>\n  );\n}\n","import React, { Dispatch, SetStateAction, useState } from 'react';\nimport { Box, Button } from '@mui/material';\nimport { IJobData } from '../types';\nimport { classes } from '../styles';\nimport { emojiRegex } from '../../Jobs/config';\nimport HtmlEditor from '../../Components/Utilities/HtmlEditor';\nimport AIStudioModal from '../../../AIStudio/AIStudioModal/AIStudioModal';\nimport { FelixButtonSVG } from '../../../AIStudio/SharedComponents/Graphics/FelixSVG';\nimport { IUserPermissions } from '../../Components/sharedTypes';\n\nconst handleInitialContent = (content: string) => {\n  if (content.replace(/(<([^>]+)>)/gi, '') === '') {\n    const contentArray = content.split('</div>');\n    if (contentArray.length > 1) {\n      contentArray[0] = contentArray[0] + '<p></p>';\n      return contentArray.join('</div>');\n    }\n  }\n  return content;\n};\n\nexport default function Description({\n  descriptionTabJobData,\n  setDescriptionTabJobData,\n  setIsEdited,\n  userPermissions,\n  aiStudioEnabled,\n  aiPrefillData\n}: {\n  descriptionTabJobData: IJobData;\n  setDescriptionTabJobData: IJobData;\n  setIsEdited: Dispatch<SetStateAction<boolean>>;\n  userPermissions: IUserPermissions;\n  aiStudioEnabled: boolean;\n  aiPrefillData?: {\n    title: string;\n    country: string;\n  };\n}) {\n  const [summary, setSummary] = useState(\n    handleInitialContent(descriptionTabJobData?.summary?.value)\n  );\n  const [description, setDescription] = useState(\n    handleInitialContent(descriptionTabJobData?.description?.value)\n  );\n  const [buttonHovered, setButtonHovered] = useState(false);\n  const [aiStudioOpen, setAiStudioOpen] = useState(false);\n\n  const handleSetAiStudioContent = (content: string) => {\n    setDescriptionTabJobData((prev) => ({\n        ...prev,\n        description: { ...prev.description, value: content }\n      }));\n    setDescription(content);\n    setIsEdited(true);\n  };\n\n  return (\n    <Box sx={classes.tabContent}>\n      {userPermissions?.['Job Options']?.['Summary field'] && (\n        <Box>\n          <Box id=\"discription-summary-title\" sx={classes.headerContent}>\n            Summary\n          </Box>\n          <Box sx={classes.bodyContainer}>\n            <Box\n              sx={\n                descriptionTabJobData?.summary?.value.length <= 65535\n                  ? { display: 'none', ...classes.warnText }\n                  : classes.warnText\n              }\n            >\n              The field can't have more than 65535 characters.\n            </Box>\n            <Box\n              sx={\n                descriptionTabJobData?.summary?.value.match(emojiRegex)\n                  ? classes.warnText\n                  : { display: 'none', ...classes.warnText }\n              }\n            >\n              This field can't have emojis.\n            </Box>\n            <HtmlEditor\n              body={handleInitialContent(descriptionTabJobData?.summary?.value)}\n              onChange={setSummary}\n              onBlur={(value) => {\n                setDescriptionTabJobData((prev) => ({\n                  ...prev,\n                  summary: { ...prev.summary, value: value }\n                }));\n                setIsEdited(true);\n              }}\n            />\n          </Box>\n        </Box>\n      )}\n      <Box sx={{...classes.headerContent, ...classes.headerRow }}>\n        <Box>Description</Box>\n        {aiStudioEnabled && (\n          <Box sx={{ marginLeft: 'auto' }}>\n            <Box\n              id=\"ai-studio-questions-integration-button\"\n              sx={{\n                ...classes.buttonContainer,\n                ...(buttonHovered ? classes.hoverAnimation : classes.unhoverAnimation)\n              }}\n              onMouseEnter={() => setButtonHovered(true)}\n              onMouseLeave={() => setButtonHovered(false)}\n              onClick={() => {\n                setAiStudioOpen(true);\n              }}\n            >\n              <Box sx={classes.avatarContainer}>\n                <FelixButtonSVG />\n              </Box>\n              <Button sx={classes.button}>Generate description</Button>\n              <Box sx={classes.betaPill}>Beta</Box>\n            </Box>\n          </Box>\n        )}\n      </Box>\n      <Box sx={classes.bodyContainer}>\n        <Box\n          sx={\n            descriptionTabJobData?.description?.value.length <= 65535\n              ? { display: 'none', ...classes.warnText }\n              : classes.warnText\n          }\n        >\n          The field can't have more than 65535 characters.\n        </Box>\n        <Box\n          sx={\n            descriptionTabJobData?.description?.value.match(emojiRegex)\n              ? classes.warnText\n              : { display: 'none', ...classes.warnText }\n          }\n        >\n          This field can't have emojis.\n        </Box>\n        <HtmlEditor\n          body={handleInitialContent(descriptionTabJobData?.description?.value)}\n          onChange={setDescription}\n          onBlur={(value) => {\n            setDescriptionTabJobData((prev) => ({\n              ...prev,\n              description: { ...prev.description, value }\n            }));\n            setIsEdited(true);\n          }}\n        />\n      </Box>\n      {aiStudioOpen && (\n        <AIStudioModal\n          aiStudioEnabled={true}\n          showPreview={false}\n          setTlpModalOpen={setAiStudioOpen}\n          jobFlow={true}\n          prefillData={aiPrefillData}\n          setGeneratedContent={handleSetAiStudioContent}\n        />\n      )}\n    </Box>\n  );\n}\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport moment from 'moment-timezone';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\nimport Tabs from '@mui/material/Tabs';\nimport Tab from '@mui/material/Tab';\nimport Button from '@mui/material/Button';\nimport Box from '@mui/material/Box';\nimport Tooltip from '@mui/material/Tooltip';\nimport IconButton from '@mui/material/IconButton';\nimport Stack from '@mui/material/Stack';\nimport InfoOutlinedIcon from '@mui/icons-material/InfoOutlined';\nimport BusinessCenterOutlinedIcon from '@mui/icons-material/BusinessCenterOutlined';\nimport ContentPasteOutlinedIcon from '@mui/icons-material/ContentPasteOutlined';\nimport LiveHelpOutlinedIcon from '@mui/icons-material/LiveHelpOutlined';\nimport AttachFileOutlinedIcon from '@mui/icons-material/AttachFileOutlined';\nimport FlashOnOutlinedIcon from '@mui/icons-material/FlashOnOutlined';\nimport ForwardOutlinedIcon from '@mui/icons-material/ForwardOutlined';\nimport EmailOutlinedIcon from '@mui/icons-material/EmailOutlined';\nimport SmsIcon from '@mui/icons-material/Sms';\nimport SendToMobileIcon from '@mui/icons-material/SendToMobile';\nimport VerifiedOutlinedIcon from '@mui/icons-material/VerifiedOutlined';\nimport GridOnOutlinedIcon from '@mui/icons-material/GridOnOutlined';\nimport LoopOutlinedIcon from '@mui/icons-material/LoopOutlined';\nimport GoogleIcon from '@mui/icons-material/Google';\nimport AssignmentIndOutlinedIcon from '@mui/icons-material/AssignmentIndOutlined';\nimport ArrowCircleLeftIcon from '@mui/icons-material/ArrowCircleLeft';\nimport Skeleton from '@mui/material/Skeleton';\nimport StyledSnackbar from '../Components/CustomUIElements/StyledSnackbar';\nimport AutoStatuses from './Automation/AutoStatuses/AutoStatuses';\nimport { classes } from './styles';\nimport General from './General/General';\nimport Api from '../Job/API';\nimport { IJob, IPermissions } from '../Job/types';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport {\n  changeURL,\n  editDescriptionDefault,\n  editGeneralJobDefault,\n  editGoogleScriptDefault,\n  editJobObject,\n  editPanelWorkflowDefault,\n  editRequisitionInfoDefault,\n  editRevolveDefault,\n  editSourcesDefault,\n  editTemplateDefault\n} from '../Jobs/config';\nimport { IJobData } from './types';\nimport CandidateAttachments from '../Job/CandidateAttachments/CandidateAttachments';\nimport Questions from './Questions/Questions';\nimport Template from '../EditJob/Template/Template';\nimport Sources from '../EditJob/Sources/Sources';\nimport Description from '../EditJob/Description/Description';\nimport PanelWorkflow from './Advanced/PanelWorkflow/PanelWorkflow';\nimport GoogleConversionScript from './Advanced/GoogleConversionScript/GoogleScript';\nimport Revolve from './Advanced/Revolve/Revolve';\nimport RequisitionInfo from './Advanced/RequisitionInfo/RequisitionInfo';\nimport TimeBased from './Automation/StatusTransitions/TimeBased';\nimport AutoForward from './Automation/AutoForward/AutoForward';\nimport AccountClockIcon from '../EditJob/Sources/AccountClockIcon';\nimport SourcesIconSVG from '../EditJob/Sources/SourcesIconSVG';\nimport AutoReply from './Automation/AutoReply/AutoReply';\nimport AutoSMSReply from './Automation/AutoSMSReply/AutoSMSReply';\nimport AutoSMSForward from './Automation/AutoSMSForward/AutoSMSForward';\nimport TestGrid from './Advanced/TestGrid/TestGrid';\nimport HRQuestions from '../EditJob/HRQuestions/HRQuestions';\nimport WarningDialog from '../Components/Modals/WarningDialog';\nimport EditJobToggleLeftSVG from './EditJobToggleLeftSVG';\nimport EditJobToggleRightSVG from './EditJobToggleRightSVG';\nimport UpdateIcon from '@mui/icons-material/Update';\nimport { RobotIcon } from '../../AIStudio/SharedComponents/Graphics/FelixSVG';\nimport AIStudioSettings from './Advanced/AIStudio/AIStudioSettings';\nimport { convertToNormalTabIndex, convertToPanelIndex, TabGroup } from './tabIndexUtils';\nimport { getPermissions } from '../../shared/permissionHelpers';\nimport { sharedClasses } from '../Components/CustomUIElements/sharedClasses';\nimport { formatUserPermissions } from '../Components/Utilities/formatUserPermissions';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport { userTimeZone } from '../utils/formatToUserTimeZone';\n\ninterface TabPanelProps {\n  children?: React.ReactNode;\n  index: number;\n  value: number;\n  group?: number;\n}\nconst URL_PARAMS = new URL(window.location.href);\nconst BASE_URL = window.location.origin;\n\nexport default function EditJob({\n  aiInterview,\n  aiStudio,\n  aiStudioSummaries,\n  apiKey,\n  job_id,\n  jobFeedActive,\n  canAddIndeedDemographicQ\n}: {\n  aiInterview: boolean;\n  aiStudio: boolean;\n  aiStudioSummaries: boolean;\n  apiKey: string;\n  job_id: number;\n  jobFeedActive: boolean;\n  canAddIndeedDemographicQ: boolean;\n}) {\n  const getEditTabNumber = (urlParams: string) => changeURL(0, false, urlParams);\n  const [job, setJob] = useState<IJob | null>(null);\n  const [mainTabValue, setMainTabValue] = useState(0);\n  const [jobLoading, setJobLoading] = useState(true);\n  const [editTabValue, setEditTabValue] = useState(getEditTabNumber(URL_PARAMS.search));\n  const [indicatorWidth, setIndicatorWidth] = useState(0);\n  const [copied, setCopied] = useState(false);\n  const [isUpdating, setIsUpdating] = useState(false);\n  const [timezoneOptions, setTimezoneOptions] = useState([]);\n  const [brandOptions, setBrandOptions] = useState([]);\n  const [requisitionsOptions, setRequisitionsOptions] = useState([]);\n  const [classificationsOptions, setClassificationsOptions] = useState([]);\n  const [localOptions, setLocalOptions] = useState([]);\n  const [autoRaterOptions, setAutoRaterOptions] = useState([]);\n  const [assignedUsersOptions, setAssignedUsersOptions] = useState([]);\n  const [salespersonOptions, setSalespersonOptions] = useState([]);\n  const [jobPanelChairsOptions, setJobPanelChairsOptions] = useState([]);\n  const [rmTeamOptions, setRmTeamOptions] = useState([]);\n  const [changeTab, setChangeTab] = useState<[boolean, null | number]>([false, null]);\n  const [generalTabJobData, setGeneralTabJobData] = useState<IJobData | null>(null);\n  const [panelWorkflowTabJobData, setPanelWorkflowTabJobData] = useState<IJobData | null>(null);\n  const [googleScriptTabJobData, setGoogleScriptTabJobData] = useState<IJobData | null>(null);\n  const [revolveTabJobData, setRevolveTabJobData] = useState<IJobData | null>(null);\n  const [descriptionTabJobData, setDescriptionTabJobData] = useState<IJobData | null>(null);\n  const [requisitionInfoTabJobData, setRequisitionInfoTabJobData] = useState<IJobData | null>(null);\n  const [templateTabJobData, setTemplateTabJobData] = useState<IJobData | null>(null);\n  const [sourcesTabJobData, setSourcesTabJobData] = useState<IJobData | null>(null);\n  const [sourceListIds, setSourceListIds] = useState([]);\n  const [attachmentsTabJobData, setAttachmentsTabJobData] = useState(null);\n  const [candidateAttachments, setCandidateAttachments] = useState(null);\n  const [warningModalOpen, setWarningModalOpen] = useState(editTabValue === 4);\n  const [hasActiveSeekAd, setHasActiveSeekAd] = useState(false);\n  const [userPermissions, setUserPermissions] = useState<Record<string, Record<string, boolean>>>(\n    {}\n  );\n  const [isToggled, setIsToggled] = useState(false);\n  const [snackbar, setSnackbar] = useState<{\n    message: string;\n    state: 'success' | 'warning' | 'error';\n  }>({\n    message: '',\n    state: 'success'\n  });\n  const [lastUpdate, setLastUpdate] = useState<string>('');\n  const [isEdited, setIsEdited] = useState<boolean>(false);\n  const queryClient = useQueryClient();\n\n  const headerRefs = useRef<HTMLDivElement[]>([]);\n\n  const getPageParams = (tabNo: number) => {\n    switch (tabNo) {\n      case 0:\n        return '?edit=true';\n      default:\n        return '';\n    }\n  };\n\n  const TabPanel = useCallback((props: TabPanelProps) => {\n    const { children, value, index, group, ...other } = props;\n\n    const resolvedIndex = group === undefined ? index : convertToPanelIndex(index, group);\n    return (\n      <div\n        role=\"tabpanel\"\n        hidden={value !== resolvedIndex}\n        id={`vertical-tabpanel-${resolvedIndex}`}\n        aria-labelledby={`vertical-tab-${resolvedIndex}`}\n        {...other}\n      >\n        {value === resolvedIndex && <Box>{children}</Box>}\n      </div>\n    );\n  }, []);\n\n  const TabProps = useCallback((tabIndex: number, group: number) => {\n    const index = convertToNormalTabIndex(tabIndex, group);\n    return {\n      id: `vertical-tab-${index}`,\n      'aria-controls': `vertical-tabpanel-${index}`,\n      'data-testid': `vertical-tab-${index}`\n    };\n  }, []);\n\n  useEffect(() => {\n    setIndicatorWidth(headerRefs.current[mainTabValue].clientWidth - 32);\n  }, [mainTabValue]);\n\n  const handleEditTabChange = (event: React.SyntheticEvent, newValue: number) => {\n    URL_PARAMS.search = changeURL(newValue, true, '');\n    window.history.pushState(null, null, URL_PARAMS.href);\n    if (editTabValue === 1) {\n      newValue === 4 && setWarningModalOpen(true);\n      return setChangeTab([true, newValue]);\n    }\n    if (newValue === 4) {\n      setWarningModalOpen(true);\n    }\n    setEditTabValue(newValue);\n  };\n\n  const handleMainTabChange = (event: React.ChangeEvent, newValue: number) => {\n    setMainTabValue(newValue);\n    URL_PARAMS.search = getPageParams(newValue);\n    window.history.pushState(null, '', URL_PARAMS.href);\n  };\n\n  useQuery({\n    queryKey: ['permissions'],\n    queryFn: async () => {\n      const res = await getPermissions();\n      return formatUserPermissions(res);\n    },\n    onError: (error) => {\n      setSnackbar({\n        state: 'error',\n        message: `There was an error getting user permissions, ${error}`\n      });\n    }\n  });\n\n  useQuery({\n    queryKey: ['job', job_id],\n    queryFn: async () => await Api.getJob(job_id, { 'X-api-authenticate': apiKey }),\n    onSuccess: (data) => {\n      setFetchedData(data);\n    },\n    onError: (error) => {\n      setSnackbar({\n        state: 'error',\n        message: `There was an error getting job, ${error}`\n      });\n    }\n  });\n\n  const setFetchedData = (data) => {\n    setJobLoading(true);\n    const jobResponse = data;\n    setJob(jobResponse);\n    setGeneralTabJobData(editGeneralJobDefault(jobResponse));\n    setPanelWorkflowTabJobData(editPanelWorkflowDefault(jobResponse));\n    setGoogleScriptTabJobData(editGoogleScriptDefault(jobResponse));\n    setRevolveTabJobData(editRevolveDefault(jobResponse));\n    setRequisitionInfoTabJobData(editRequisitionInfoDefault(jobResponse));\n    setDescriptionTabJobData(editDescriptionDefault(jobResponse));\n    setTemplateTabJobData(editTemplateDefault(jobResponse));\n    setSourcesTabJobData(editSourcesDefault(jobResponse));\n    setSourceListIds(jobResponse.sources.map((source) => source.id));\n    setCandidateAttachments(\n      jobResponse.candidate_attachments.map((attachment) => ({\n        ...attachment,\n        id: attachment.value\n      }))\n    );\n    setJobLoading(false);\n    setLastUpdate(jobResponse.updated_at);\n  };\n\n  const fetchActiveSeekAds = useCallback(async () => {\n    try {\n      const response = await Api.getActiveSeekAd(job_id, { 'X-api-authenticate': apiKey });\n      if (response.job_ads.active && response.job_ads.active.length > 0) {\n        setHasActiveSeekAd(true);\n      }\n    } catch (error) {\n      console.error(error);\n    }\n  }, [job_id, apiKey]);\n\n  const getUserPermissions = useCallback(async () => {\n    try {\n      const data = await getPermissions(apiKey);\n      const allRoles: Record<string, Record<string, boolean> | string | boolean> = {};\n      data.roles.forEach((role: IPermissions) => {\n        allRoles['paid_user'] = role.paid_role;\n        role.feature_groups.forEach((group) => {\n          !allRoles[group.name] ? (allRoles[group.name] = {}) : null;\n          group.permissions.forEach((permission) => (allRoles[group.name][permission] = true));\n        });\n      });\n      allRoles['user_type'] = data.roles[0]?.user_type;\n      setUserPermissions(allRoles);\n    } catch (error) {\n      console.log(error);\n    }\n  }, [setUserPermissions, apiKey]);\n\n  useEffect(() => {\n    getUserPermissions();\n    fetchActiveSeekAds();\n  }, [getUserPermissions, fetchActiveSeekAds]);\n\n  useEffect(() => {\n    window.onbeforeunload = function () {\n      if (isEdited) {\n        return true;\n      } else {\n        return;\n      }\n    };\n    return () => {\n      window.onbeforeunload = null;\n    };\n  }, [isEdited]);\n\n  const handleCopy = () => {\n    setCopied(true);\n    setTimeout(() => setCopied(false), 3000);\n  };\n\n  const updateData = async ({ id, data }) =>\n    Api.updateJob({ 'X-api-authenticate': apiKey }, id, { job: data });\n\n  const mutation = useMutation(updateData, {\n    onSuccess: (data) => {\n      setSnackbar({\n        message: data?.errors ? data.errors : 'Updated job successfully',\n        state: data?.errors ? 'error' : 'success'\n      });\n      setIsEdited(false);\n      queryClient.invalidateQueries(['job', job_id]);\n    },\n    onError: (error) => {\n      setSnackbar({\n        message: error?.errors || 'Something has gone wrong with saving your job',\n        state: 'error'\n      });\n    }\n  });\n\n  const handleUpdateJob = async () => {\n    setIsUpdating(true);\n    const editObj = editJobObject(\n      candidateAttachments,\n      generalTabJobData,\n      descriptionTabJobData,\n      templateTabJobData,\n      revolveTabJobData,\n      googleScriptTabJobData,\n      panelWorkflowTabJobData,\n      sourceListIds\n    );\n    mutation.mutate({ id: job_id, data: editObj });\n\n    setIsUpdating(false);\n    setIsEdited(false);\n  };\n\n  const lastSaved = new Date(lastUpdate);\n  const lastSavedFormat = (job: IJob | null) => {\n    const timeZoneString = Intl.DateTimeFormat().resolvedOptions().timeZone;\n    const pickedtimezone = job?.time_zone ?? userTimeZone ?? timeZoneString;\n    const timeZone = moment.tz(pickedtimezone).format('z');\n    const timeString = lastSaved.toLocaleString('en-US', {\n      timeZone: pickedtimezone,\n      hour: 'numeric',\n      minute: 'numeric',\n      year: '2-digit',\n      month: '2-digit',\n      day: '2-digit'\n    });\n    return `${timeString} ${timeZone}`;\n  };\n\n  return (\n    <Box sx={classes.jobPageContainer}>\n      <Box sx={classes.editJobPageHeader}>\n        {jobLoading ? (\n          <Skeleton animation=\"wave\" width={600} height={56} />\n        ) : (\n          <Box sx={{ color: '#666666' }}>\n            <h4 id=\"reference\">{job?.reference}</h4>\n            <h1 id=\"title\">{job?.title}</h1>\n          </Box>\n        )}\n      </Box>\n      <Box sx={classes.linkContainer}>\n        {jobLoading ? (\n          <Skeleton animation=\"wave\" width={400} height={50} />\n        ) : (\n          job?.public_url && (\n            <>\n              <a href={job?.public_url} target=\"_blank\" rel=\"noopener noreferrer\">\n                <Box id=\"external-link\" sx={classes.link}>\n                  {job.public_url}\n                </Box>\n              </a>\n              <CopyToClipboard text={job?.public_url} onCopy={handleCopy}>\n                <Button sx={classes.copyButton} id=\"copy-link\">\n                  {copied ? 'Copied!' : 'Copy'}\n                </Button>\n              </CopyToClipboard>\n            </>\n          )\n        )}\n      </Box>\n      <Box sx={classes.tabsContainer}>\n        <Tabs\n          value={mainTabValue}\n          onChange={handleMainTabChange}\n          aria-label=\"Jobs, Archive, Multiposter Tabs\"\n          sx={{\n            ...classes.tabs,\n            '& .MuiTabs-indicator': { ...classes.tabIndicator, maxWidth: indicatorWidth + 'px' }\n          }}\n        >\n          <Tab\n            ref={(el) => (el ? (headerRefs.current[0] = el) : null)}\n            label=\"Edit\"\n            {...TabProps(0)}\n          />\n          <TabPanel tabValue={mainTabValue} index={0}></TabPanel>\n        </Tabs>\n      </Box>\n      {jobLoading ? (\n        <Skeleton animation=\"wave\" sx={{ marginBottom: '20px' }} width={200} height={56} />\n      ) : (\n        <Box sx={classes.backAndLastSaveContainer}>\n          <Stack\n            flexDirection=\"row\"\n            alignItems=\"center\"\n            onClick={() => {\n              window.location.href = `${BASE_URL}${job?.job_link}`;\n            }}\n            sx={{ ...classes.backToJobButton, marginBottom: 'unset' }}\n          >\n            <IconButton sx={classes.iconGrey}>\n              <ArrowCircleLeftIcon />\n            </IconButton>\n            <Box>Back</Box>\n          </Stack>\n          <Stack sx={classes.lastSaved}>\n            {isUpdating ? (\n              <>\n                <CircularProgress size={12} color=\"inherit\" sx={{ marginRight: 1 }} />\n                Saving\n              </>\n            ) : (\n              <>\n                <UpdateIcon sx={{ margin: '4px', fontSize: '1rem' }} />\n                Last saved {lastSavedFormat(job)}\n              </>\n            )}\n          </Stack>\n        </Box>\n      )}\n      <Box sx={classes.editTabsContainer}>\n        <Tabs\n          orientation=\"vertical\"\n          value={editTabValue}\n          variant=\"scrollable\"\n          onChange={handleEditTabChange}\n          aria-label=\"Vertical tabs example\"\n          sx={{\n            ...classes.editTabs,\n            '& svg': {\n              height: '1.5rem',\n              marginRight: isToggled ? '0px !important' : '16px !important',\n              color: '#084D6D'\n            },\n            '& .MuiTabs-indicator': { ...classes.editTabIndicator },\n            minWidth: isToggled ? '58px !important' : '220px !important',\n            transition: 'all 0.5s'\n          }}\n        >\n          <Box sx={{ display: 'flex', alignItems: 'center' }}>\n            <Box\n              sx={{\n                ...classes.tabsSubheader,\n                fontSize: isToggled ? 0 : '12px',\n                transition: 'all 0.5s'\n              }}\n            >\n              Job Information\n            </Box>\n            <Box\n              sx={{ ...classes.toggleIcon, marginLeft: isToggled ? '6.5px' : 'auto' }}\n              onClick={() => setIsToggled(!isToggled)}\n            >\n              {isToggled ? <EditJobToggleRightSVG /> : <EditJobToggleLeftSVG />}\n            </Box>\n          </Box>\n          <Tooltip placement=\"right\" title={'General'} disableHoverListener={!isToggled} arrow>\n            <Tab\n              icon={<InfoOutlinedIcon />}\n              iconPosition=\"start\"\n              label={isToggled ? '' : 'General'}\n              {...TabProps(0, TabGroup.JOB_INFORMATION)}\n            />\n          </Tooltip>\n          <Tooltip placement=\"right\" title={'Description'} disableHoverListener={!isToggled} arrow>\n            <Tab\n              icon={<BusinessCenterOutlinedIcon />}\n              iconPosition=\"start\"\n              label={isToggled ? '' : 'Description'}\n              {...TabProps(1, TabGroup.JOB_INFORMATION)}\n            />\n          </Tooltip>\n          <Tooltip placement=\"right\" title={'Template'} disableHoverListener={!isToggled} arrow>\n            <Tab\n              icon={<ContentPasteOutlinedIcon />}\n              iconPosition=\"start\"\n              sx={{\n                display: userPermissions?.['Job Options']?.['Edit Job Template']\n                  ? 'block'\n                  : 'none !important'\n              }}\n              label={isToggled ? '' : 'Template'}\n              {...TabProps(2, TabGroup.JOB_INFORMATION)}\n            />\n          </Tooltip>\n          <Tooltip placement=\"right\" title={'Questions'} disableHoverListener={!isToggled} arrow>\n            <Tab\n              icon={<LiveHelpOutlinedIcon />}\n              iconPosition=\"start\"\n              sx={{\n                display: userPermissions?.['Job Options']?.['Create / Edit Job Questions']\n                  ? 'block'\n                  : 'none !important'\n              }}\n              label={isToggled ? '' : 'Questions'}\n              {...TabProps(3, TabGroup.JOB_INFORMATION)}\n            />\n          </Tooltip>\n          <Tooltip placement=\"right\" title={'Sources'} disableHoverListener={!isToggled} arrow>\n            <Tab\n              icon={<SourcesIconSVG />}\n              iconPosition=\"start\"\n              label={isToggled ? '' : 'Sources'}\n              {...TabProps(4, TabGroup.JOB_INFORMATION)}\n            />\n          </Tooltip>\n          <Box\n            sx={{\n              ...classes.tabsSubheader,\n              fontSize: isToggled ? 0 : '12px',\n              transition: 'all 0.5s'\n            }}\n          >\n            Candidate Settings\n          </Box>\n          <Tooltip placement=\"right\" title={'Attachments'} disableHoverListener={!isToggled} arrow>\n            <Tab\n              icon={<AttachFileOutlinedIcon />}\n              iconPosition=\"start\"\n              label={isToggled ? '' : 'Attachments'}\n              {...TabProps(0, TabGroup.CANDIDATE_SETTINGS)}\n            />\n          </Tooltip>\n          <Box\n            sx={{\n              ...classes.tabsSubheader,\n              fontSize: isToggled ? 0 : '12px',\n              transition: 'all 0.5s'\n            }}\n          >\n            Automation\n          </Box>\n          <Tooltip\n            placement=\"right\"\n            title={'Auto Statuses'}\n            disableHoverListener={!isToggled}\n            arrow\n          >\n            <Tab\n              icon={\n                <FlashOnOutlinedIcon\n                  sx={{ color: 'transparent !important', stroke: '#084d6d', strokeWidth: '1.8px' }}\n                />\n              }\n              iconPosition=\"start\"\n              sx={{\n                display: userPermissions?.['Job Options']?.['Manage Auto Statuses']\n                  ? 'block'\n                  : 'none !important'\n              }}\n              label={isToggled ? '' : 'Auto Statuses'}\n              {...TabProps(0, TabGroup.AUTOMATION)}\n            />\n          </Tooltip>\n          <Tooltip\n            placement=\"right\"\n            title={'Status Transitions'}\n            disableHoverListener={!isToggled}\n            arrow\n          >\n            <Tab\n              icon={<AccountClockIcon />}\n              iconPosition=\"start\"\n              label={isToggled ? '' : 'Status Transitions'}\n              {...TabProps(1, TabGroup.AUTOMATION)}\n            />\n          </Tooltip>\n          <Tooltip placement=\"right\" title={'Auto Forward'} disableHoverListener={!isToggled} arrow>\n            <Tab\n              icon={<ForwardOutlinedIcon />}\n              iconPosition=\"start\"\n              sx={{\n                display: userPermissions?.['Job Options']?.['Manage Auto Forward configs']\n                  ? 'block'\n                  : 'none !important'\n              }}\n              label={isToggled ? '' : 'Auto Forward'}\n              {...TabProps(2, TabGroup.AUTOMATION)}\n            />\n          </Tooltip>\n          <Tooltip\n            placement=\"right\"\n            title={'Auto Email Reply'}\n            disableHoverListener={!isToggled}\n            arrow\n          >\n            <Tab\n              icon={<EmailOutlinedIcon />}\n              iconPosition=\"start\"\n              sx={{\n                display: userPermissions?.['Job Options']?.['Manage Auto Forward configs']\n                  ? 'block'\n                  : 'none !important'\n              }}\n              label={isToggled ? '' : 'Auto Email Reply'}\n              {...TabProps(3, TabGroup.AUTOMATION)}\n            />\n          </Tooltip>\n          <Tooltip\n            placement=\"right\"\n            title={'Auto SMS Reply'}\n            disableHoverListener={!isToggled}\n            arrow\n          >\n            <Tab\n              icon={<SmsIcon />}\n              iconPosition=\"start\"\n              sx={{\n                display: userPermissions?.['Job Options']?.['Manage Auto Forward configs']\n                  ? 'block'\n                  : 'none !important'\n              }}\n              label={isToggled ? '' : 'Auto SMS Reply'}\n              {...TabProps(4, TabGroup.AUTOMATION)}\n            />\n          </Tooltip>\n          <Tooltip\n            placement=\"right\"\n            title={'Auto SMS Forward'}\n            disableHoverListener={!isToggled}\n            arrow\n          >\n            <Tab\n              icon={<SendToMobileIcon />}\n              iconPosition=\"start\"\n              sx={{\n                display: userPermissions?.['Job Options']?.['Manage Auto Forward configs']\n                  ? 'block'\n                  : 'none !important'\n              }}\n              label={isToggled ? '' : 'Auto SMS Forward'}\n              {...TabProps(5, TabGroup.AUTOMATION)}\n            />\n          </Tooltip>\n          <Box\n            sx={{\n              ...classes.tabsSubheader,\n              fontSize: isToggled ? 0 : '12px',\n              transition: 'all 0.5s'\n            }}\n          >\n            Advanced\n          </Box>\n          <Tooltip\n            placement=\"right\"\n            title={'Requisition Info'}\n            disableHoverListener={!isToggled}\n            arrow\n          >\n            <Tab\n              icon={<VerifiedOutlinedIcon />}\n              iconPosition=\"start\"\n              sx={{\n                display: userPermissions.Jobs?.['Migrate from Requisition Form']\n                  ? 'block'\n                  : 'none !important'\n              }}\n              label={isToggled ? '' : 'Requisition Info'}\n              {...TabProps(0, TabGroup.ADVANCED)}\n            />\n          </Tooltip>\n          <Tooltip\n            placement=\"right\"\n            title={'Configure Application HR Questions'}\n            disableHoverListener={!isToggled}\n            arrow\n          >\n            <Tab\n              icon={<LiveHelpOutlinedIcon />}\n              iconPosition=\"start\"\n              sx={{\n                display: userPermissions.Jobs?.ConfigureApplicationHRQuestions\n                  ? 'block'\n                  : 'none !important'\n              }}\n              label={isToggled ? '' : 'Configure Application HR Questions'}\n              {...TabProps(1, TabGroup.ADVANCED)}\n            />\n          </Tooltip>\n          <Tooltip\n            placement=\"right\"\n            title={'Automated TestGrid'}\n            disableHoverListener={!isToggled}\n            arrow\n          >\n            <Tab\n              icon={<GridOnOutlinedIcon />}\n              iconPosition=\"start\"\n              sx={{\n                display:\n                  job?.integrations?.test_grid_configured && userPermissions.Integrations?.TestGrid\n                    ? 'block'\n                    : 'none !important'\n              }}\n              label={isToggled ? '' : 'Automated TestGrid'}\n              {...TabProps(2, TabGroup.ADVANCED)}\n            />\n          </Tooltip>\n          <Tooltip placement=\"right\" title={'Revolve'} disableHoverListener={!isToggled} arrow>\n            <Tab\n              icon={<LoopOutlinedIcon />}\n              iconPosition=\"start\"\n              sx={{\n                display:\n                  job?.integrations?.revolve_configured &&\n                  userPermissions.Integrations?.['Export To Revolve Onboard']\n                    ? 'block'\n                    : 'none !important'\n              }}\n              label={isToggled ? '' : 'Revolve'}\n              {...TabProps(3, TabGroup.ADVANCED)}\n            />\n          </Tooltip>\n          <Tooltip\n            placement=\"right\"\n            title={'Google Conversion Script'}\n            disableHoverListener={!isToggled}\n            arrow\n          >\n            <Tab\n              icon={<GoogleIcon />}\n              iconPosition=\"start\"\n              label={isToggled ? '' : 'Google Conversion Script'}\n              {...TabProps(4, TabGroup.ADVANCED)}\n            />\n          </Tooltip>\n          <Tooltip\n            placement=\"right\"\n            title={'Panel Workflow'}\n            disableHoverListener={!isToggled}\n            arrow\n          >\n            <Tab\n              icon={<AssignmentIndOutlinedIcon />}\n              iconPosition=\"start\"\n              sx={{\n                display: job?.entity_settings.show_panel_workflow ? 'block' : 'none !important'\n              }}\n              label={isToggled ? '' : 'Panel Workflow'}\n              {...TabProps(5, TabGroup.ADVANCED)}\n            />\n          </Tooltip>\n          <Tooltip placement=\"right\" title={'AI Studio'} disableHoverListener={!isToggled} arrow>\n            <Tab\n              icon={<RobotIcon viewBox=\"0 0 19 19\" />}\n              iconPosition=\"start\"\n              sx={{\n                display: aiStudio && aiStudioSummaries ? 'block' : 'none !important'\n              }}\n              label={isToggled ? '' : 'AI Studio'}\n              {...TabProps(6, TabGroup.ADVANCED)}\n            />\n          </Tooltip>\n        </Tabs>\n        {jobLoading ? (\n          <Skeleton animation=\"wave\" sx={{ marginLeft: '2rem' }} width={200} height={56} />\n        ) : (\n          <Box sx={{ marginLeft: '3rem', width: '100%', overflow: 'auto' }}>\n            <TabPanel value={editTabValue} index={0} group={TabGroup.JOB_INFORMATION}>\n              <General\n                apiKey={apiKey}\n                job={job}\n                jobId={job_id}\n                timezoneOptions={timezoneOptions}\n                setTimezoneOptions={setTimezoneOptions}\n                brandOptions={brandOptions}\n                setBrandOptions={setBrandOptions}\n                requisitionsOptions={requisitionsOptions}\n                setRequisitionsOptions={setRequisitionsOptions}\n                classificationsOptions={classificationsOptions}\n                setClassificationsOptions={setClassificationsOptions}\n                autoRaterOptions={autoRaterOptions}\n                setAutoRaterOptions={setAutoRaterOptions}\n                assignedUsersOptions={assignedUsersOptions}\n                setAssignedUsersOptions={setAssignedUsersOptions}\n                salespersonOptions={salespersonOptions}\n                setSalespersonOptions={setSalespersonOptions}\n                rmTeamOptions={rmTeamOptions}\n                setRmTeamOptions={setRmTeamOptions}\n                changeTab={changeTab}\n                setEditTabValue={setEditTabValue}\n                setChangeTab={setChangeTab}\n                localOptions={localOptions}\n                setLocalOptions={setLocalOptions}\n                newJobData={generalTabJobData}\n                setNewJobsData={setGeneralTabJobData}\n                handleUpdateJob={handleUpdateJob}\n                userPermissions={userPermissions}\n                setIsEdited={setIsEdited}\n                jobFeedActive={jobFeedActive}\n              />\n            </TabPanel>\n            <TabPanel value={editTabValue} index={1} group={TabGroup.JOB_INFORMATION}>\n              <Description\n                descriptionTabJobData={descriptionTabJobData}\n                setDescriptionTabJobData={setDescriptionTabJobData}\n                setIsEdited={setIsEdited}\n                userPermissions={userPermissions}\n                aiStudioEnabled={aiStudio}\n                aiPrefillData={{\n                  title: job?.title,\n                  country: job?.location\n                }}\n              />\n            </TabPanel>\n            <TabPanel value={editTabValue} index={2} group={TabGroup.JOB_INFORMATION}>\n              <Template\n                apiKey={apiKey}\n                job={job}\n                templateTabJobData={templateTabJobData}\n                setTemplateTabJobData={setTemplateTabJobData}\n                setIsEdited={setIsEdited}\n              />\n            </TabPanel>\n            <TabPanel value={editTabValue} index={3} group={TabGroup.JOB_INFORMATION}>\n              <Questions\n                apiKey={apiKey}\n                jobId={job_id}\n                job={job}\n                userPermissions={userPermissions}\n                aiStudio={aiStudio}\n                aiInterview={aiInterview}\n                canAddIndeedDemographicQ={canAddIndeedDemographicQ}\n              />\n            </TabPanel>\n            <TabPanel value={editTabValue} index={4} group={TabGroup.JOB_INFORMATION}>\n              <Sources\n                apiKey={apiKey}\n                job={job}\n                sourcesTabJobData={sourcesTabJobData}\n                setSourcesTabJobData={setSourcesTabJobData}\n                sourceListIds={sourceListIds}\n                setSourceListIds={setSourceListIds}\n                setIsEdited={setIsEdited}\n              />\n            </TabPanel>\n            <TabPanel value={editTabValue} index={0} group={TabGroup.CANDIDATE_SETTINGS}>\n              <CandidateAttachments\n                apiKey={apiKey}\n                job={job}\n                candidateAttachments={candidateAttachments}\n                setCandidateAttachments={setCandidateAttachments}\n                attachmentsTabJobData={attachmentsTabJobData}\n                setAttachmentsTabJobData={setAttachmentsTabJobData}\n                setIsEdited={setIsEdited}\n              />\n            </TabPanel>\n            <TabPanel value={editTabValue} index={0} group={TabGroup.AUTOMATION}>\n              <AutoStatuses\n                apiKey={apiKey}\n                jobId={job_id}\n                setSnackbar={setSnackbar}\n                jobQuestions={job?.questions}\n                handleEditTabChange={handleEditTabChange}\n              />\n            </TabPanel>\n            <TabPanel value={editTabValue} index={1} group={TabGroup.AUTOMATION}>\n              <TimeBased apiKey={apiKey} jobId={job_id} setSnackbar={setSnackbar} />\n            </TabPanel>\n            <TabPanel value={editTabValue} index={2} group={TabGroup.AUTOMATION}>\n              <AutoForward apiKey={apiKey} jobId={job_id} setSnackbar={setSnackbar} />\n            </TabPanel>\n            <TabPanel value={editTabValue} index={3} group={TabGroup.AUTOMATION}>\n              <AutoReply apiKey={apiKey} jobId={job_id} setSnackbar={setSnackbar} />\n            </TabPanel>\n            <TabPanel value={editTabValue} index={4} group={TabGroup.AUTOMATION}>\n              <AutoSMSReply apiKey={apiKey} jobId={job_id} setSnackbar={setSnackbar} />\n            </TabPanel>\n            <TabPanel value={editTabValue} index={5} group={TabGroup.AUTOMATION}>\n              <AutoSMSForward apiKey={apiKey} jobId={job_id} setSnackbar={setSnackbar} />\n            </TabPanel>\n            <TabPanel value={editTabValue} index={0} group={TabGroup.ADVANCED}>\n              <RequisitionInfo\n                apiKey={apiKey}\n                jobId={job_id}\n                setSnackbar={setSnackbar}\n                requisitionInfoTabJobData={requisitionInfoTabJobData}\n                setRequisitionInfoTabJobData={setRequisitionInfoTabJobData}\n              />\n            </TabPanel>\n            <TabPanel value={editTabValue} index={1} group={TabGroup.ADVANCED}>\n              <HRQuestions\n                apiKey={apiKey}\n                jobId={job_id}\n                applicationQuestionTemplateId={job.application_question_template.id}\n              />\n            </TabPanel>\n            <TabPanel value={editTabValue} index={2} group={TabGroup.ADVANCED}>\n              <TestGrid apiKey={apiKey} jobId={job_id} setSnackbar={setSnackbar} />\n            </TabPanel>\n            <TabPanel value={editTabValue} index={3} group={TabGroup.ADVANCED}>\n              <Revolve\n                apiKey={apiKey}\n                job={job}\n                revolveTabJobData={revolveTabJobData}\n                setRevolveTabJobData={setRevolveTabJobData}\n                setIsEdited={setIsEdited}\n              />\n            </TabPanel>\n            <TabPanel value={editTabValue} index={4} group={TabGroup.ADVANCED}>\n              <GoogleConversionScript\n                apiKey={apiKey}\n                job={job}\n                googleScriptTabJobData={googleScriptTabJobData}\n                setGoogleScriptTabJobData={setGoogleScriptTabJobData}\n                setIsEdited={setIsEdited}\n              />\n            </TabPanel>\n            <TabPanel value={editTabValue} index={5} group={TabGroup.ADVANCED}>\n              <PanelWorkflow\n                apiKey={apiKey}\n                jobId={job_id}\n                chairsOptions={jobPanelChairsOptions}\n                setChairsOptions={setJobPanelChairsOptions}\n                panelWorkflowTabJobData={panelWorkflowTabJobData}\n                setPanelWorkflowTabJobData={setPanelWorkflowTabJobData}\n                setIsEdited={setIsEdited}\n              />\n            </TabPanel>\n            <TabPanel value={editTabValue} index={6} group={TabGroup.ADVANCED}>\n              <AIStudioSettings jobId={job_id} setSnackbarState={setSnackbar} />\n            </TabPanel>\n            {jobLoading ? (\n              <Box />\n            ) : (\n              <Stack alignItems=\"end\" sx={{ padding: 1, width: '100%' }}>\n                <Button\n                  id=\"save-job-questions-button\"\n                  data-testid=\"save-job-questions-button\"\n                  type=\"submit\"\n                  sx={{\n                    ...sharedClasses.saveButton\n                  }}\n                  onClick={() => {\n                    if (editTabValue === 1) {\n                      return setChangeTab([false, 1]);\n                    }\n                    !isUpdating && handleUpdateJob();\n                  }}\n                >\n                  {isUpdating ? <CircularProgress size={20} color=\"inherit\" /> : 'Save'}\n                </Button>\n                <Stack sx={classes.lastSaved}>\n                  {isUpdating ? (\n                    <>\n                      <CircularProgress size={12} color=\"inherit\" sx={{ marginRight: 1 }} />\n                      Saving\n                    </>\n                  ) : (\n                    <>\n                      <UpdateIcon sx={{ margin: '4px', fontSize: '1rem' }} />\n                      Last saved {lastSavedFormat(job)}\n                    </>\n                  )}\n                </Stack>\n              </Stack>\n            )}\n          </Box>\n        )}\n      </Box>\n      <StyledSnackbar\n        message={snackbar.message}\n        state={snackbar.state}\n        setSnackbarState={setSnackbar}\n      />\n      <WarningDialog\n        isDialogOpen={hasActiveSeekAd && warningModalOpen}\n        setDialogOpen={(isOpen: boolean) => setWarningModalOpen(isOpen)}\n        title={'Warning'}\n        description={\n          '<strong>Any changes</strong> (adding, editing, removing etc.) to your questions will affect and block the importing of applicants from SEEK into :Recruit.'\n        }\n        buttonText=\"I understand\"\n      />\n    </Box>\n  );\n}\n","import React from 'react';\n\nexport default function EditJobToggleLeftSVG() {\nreturn (<svg xmlns=\"http://www.w3.org/2000/svg\" xmlnsXlink=\"http://www.w3.org/1999/xlink\" id=\"body_1\" width=\"19\" height=\"19\" viewBox=\"0 0 23 23\">\n<g transform=\"matrix(1.5833334 0 0 1.5833334 0 0)\">\n    <path d=\"M10.2562 12.0001L1.74378 12.0001C 0.782174 12.0001 0 11.2178 0 10.2564L0 10.2564L0 1.74378C 0 0.782315 0.782315 0 1.74378 0L1.74378 0L10.2562 0C 11.2178 0 12 0.782315 12 1.74378L12 1.74378L12 10.2562C 12 11.2178 11.2177 12 10.2562 12L10.2562 12L10.2562 12.0001zM1.74378 1.05547C 1.36423 1.05547 1.05547 1.36423 1.05547 1.74378L1.05547 1.74378L1.05547 10.2562C 1.05547 10.6358 1.36423 10.9445 1.74378 10.9445L1.74378 10.9445L10.2562 10.9445C 10.6358 10.9445 10.9445 10.6358 10.9445 10.2562L10.9445 10.2562L10.9445 1.74378C 10.9445 1.36423 10.6358 1.05547 10.2562 1.05547L10.2562 1.05547L1.74378 1.05547z\" stroke=\"none\" fill=\"#000000\" fillRule=\"nonzero\" />\n    <path d=\"M8.43218 12.0001C 8.14073 12.0001 7.90444 11.7639 7.90444 11.4724L7.90444 11.4724L7.90444 0.527735C 7.90444 0.236285 8.14073 0 8.43218 0C 8.72363 0 8.95991 0.236285 8.95991 0.527735L8.95991 0.527735L8.95991 11.4724C 8.95991 11.7639 8.72363 12.0001 8.43218 12.0001zM5.392 8.35187C 5.2569 8.35187 5.12194 8.30036 5.01879 8.19735L5.01879 8.19735L3.19465 6.37321C 3.09572 6.27428 3.04013 6.14003 3.04013 6C 3.04013 5.85997 3.09572 5.72586 3.19465 5.62679L3.19465 5.62679L5.01879 3.80265C 5.22481 3.59662 5.55905 3.59662 5.76507 3.80265C 5.9711 4.00868 5.9711 4.34291 5.76507 4.54894L5.76507 4.54894L4.31415 5.99986L5.76507 7.45078C 5.9711 7.65681 5.9711 7.99104 5.76507 8.19707C 5.66206 8.30008 5.52696 8.35159 5.39186 8.35159L5.39186 8.35159L5.392 8.35187z\" stroke=\"none\" fill=\"#000000\" fillRule=\"nonzero\" />\n</g>\n</svg>\n)\n}\n","import React from 'react';\n\nexport default function EditJobToggleRightSVG() {\nreturn (<svg xmlns=\"http://www.w3.org/2000/svg\" xmlnsXlink=\"http://www.w3.org/1999/xlink\" id=\"body_1\" width=\"19\" height=\"19\" viewBox=\"0 0 23 23\">\n<g transform=\"matrix(1.5833334 0 0 1.5833334 0 0)\">\n    <path d=\"M10.2562 12.0001L1.74378 12.0001C 0.782174 12.0001 0 11.2178 0 10.2564L0 10.2564L0 1.74378C 0 0.782315 0.782315 0 1.74378 0L1.74378 0L10.2562 0C 11.2178 0 12 0.782315 12 1.74378L12 1.74378L12 10.2562C 12 11.2178 11.2177 12 10.2562 12L10.2562 12L10.2562 12.0001zM1.74378 1.05547C 1.36423 1.05547 1.05547 1.36423 1.05547 1.74378L1.05547 1.74378L1.05547 10.2562C 1.05547 10.6358 1.36423 10.9445 1.74378 10.9445L1.74378 10.9445L10.2562 10.9445C 10.6358 10.9445 10.9445 10.6358 10.9445 10.2562L10.9445 10.2562L10.9445 1.74378C 10.9445 1.36423 10.6358 1.05547 10.2562 1.05547L10.2562 1.05547L1.74378 1.05547z\" stroke=\"none\" fill=\"#000000\" fillRule=\"nonzero\" />\n    <path d=\"M3.56791 -0.000140672C 3.85936 -0.000140698 4.09565 0.236144 4.09565 0.527594L4.09565 0.527594L4.09565 11.4723C 4.09565 11.7637 3.85936 12 3.56791 12C 3.27646 12 3.04018 11.7637 3.04018 11.4723L3.04018 11.4723L3.04018 0.527594C 3.04018 0.236144 3.27646 -0.000140647 3.56791 -0.000140672zM6.60809 3.64813C 6.74319 3.64813 6.87815 3.69964 6.9813 3.80265L6.9813 3.80265L8.80544 5.62679C 8.90437 5.72572 8.95996 5.85997 8.95996 6C 8.95996 6.14003 8.90437 6.27414 8.80544 6.37321L8.80544 6.37321L6.9813 8.19735C 6.77528 8.40338 6.44104 8.40338 6.23502 8.19735C 6.02899 7.99132 6.02899 7.65709 6.23502 7.45106L6.23502 7.45106L7.68594 6.00014L6.23502 4.54922C 6.02899 4.34319 6.02899 4.00896 6.23502 3.80293C 6.33803 3.69992 6.47299 3.64813 6.60809 3.64813z\" stroke=\"none\" fill=\"#000000\" fillRule=\"nonzero\" />\n</g>\n</svg>\n)\n}\n","import React, { Dispatch, SetStateAction, useState, ChangeEvent } from 'react';\nimport Box from '@mui/material/Box';\nimport { IJobData, IClassificationOptions } from '../../types';\nimport { classes } from '../../styles';\nimport { Checkbox, FormControlLabel, TextField, Autocomplete, Button } from '@mui/material';\n\nexport default function Classifications({\n  isLoading,\n  setNewJobsData,\n  classificationsOptions,\n  newJobData,\n  setIsEdited\n}: {\n  isLoading: boolean;\n  classificationsOptions: IClassificationOptions;\n  newJobData: IJobData;\n  setIsEdited: Dispatch<SetStateAction<boolean>>;\n}) {\n  const [selectedClassification, setSelectedClassification] = useState();\n\n  const handleChange = (e: ChangeEvent<HTMLInputElement>, id: number) => {\n    setIsEdited(true);\n    if (e.target.checked) {\n      setNewJobsData((prev: IJobData) => ({\n        ...prev,\n        classification_ids: [...newJobData?.classification_ids, id]\n      }));\n    } else {\n      setNewJobsData((prev: IJobData) => ({\n        ...prev,\n        classification_ids: prev.classification_ids.filter((prevState) => prevState !== id)\n      }));\n    }\n  };\n\n  const addSourceLabel = () => {\n    if (!newJobData?.sub_classifications?.value || !newJobData?.classifications?.value) return;\n    if (!newJobData?.classification_ids?.includes(selectedClassification.id)) {\n      const tempArray = [...newJobData?.classification_list];\n      tempArray.push({\n        id: selectedClassification.id,\n        name: newJobData.classifications.value?.name,\n        parent: newJobData.sub_classifications.value\n      });\n      setNewJobsData((prev: IJobData) => ({\n        ...prev,\n        classification_list: tempArray,\n        classification_ids: [...newJobData.classification_ids, selectedClassification.id]\n      }));\n    }\n  };\n\n  return (\n    <Box>\n      <Box sx={classes.bodyContainer}>\n        {newJobData?.classification_list?.length > 0 &&\n          newJobData.classification_list.map((classification, index) => (\n            <FormControlLabel\n              key={index}\n              control={\n                <Checkbox\n                  sx={{ ...classes.checkbox, marginLeft: 1 }}\n                  onChange={(e) => handleChange(e, classification.id)}\n                  defaultChecked={true}\n                />\n              }\n              label={`${classification?.parent?.name} ${classification?.name}`}\n              sx={classes.classificationLabel}\n            />\n          ))}\n      </Box>\n      <Box sx={classes.selectGroup}>\n        <Box sx={classes.generalModalFormLine}>\n          <Box sx={{ position: 'relative', marginBottom: '4px' }}>\n            <Autocomplete\n              id=\"classifications\"\n              options={classificationsOptions}\n              getOptionLabel={(option) => option?.name}\n              value={newJobData?.classifications?.value}\n              loading={classificationsOptions?.length < 1}\n              loadingText={isLoading ? 'Loading classifications...' : 'No classifications'}\n              sx={{ ...classes.formAutocomplete, width: '250px', marginTop: '24px' }}\n              ListboxProps={{\n                style: {\n                  fontFamily: 'Source Sans Pro, sans-serif',\n                  color: '#333333',\n                  maxHeight: '200px'\n                }\n              }}\n              renderInput={(params) => (\n                <TextField {...params} label=\"Classification\" InputLabelProps={{ shrink: true }} />\n              )}\n              onChange={(event, value) => {\n                setNewJobsData((prev: IJobData) => ({\n                  ...prev,\n                  classifications: { ...prev.classifications, value },\n                  sub_classifications: { ...prev.sub_classifications, value: null }\n                }));\n                setSelectedClassification(null);\n              }}\n            />\n          </Box>\n          {newJobData.classifications.value ? (\n            <Box sx={{ position: 'relative', marginBottom: '4px' }}>\n              <Autocomplete\n                id=\"sub_classifications\"\n                options={\n                  newJobData?.classifications?.value?.sub_occupation_classifications\n                    ? newJobData?.classifications?.value?.sub_occupation_classifications\n                    : []\n                }\n                getOptionLabel={(option) => option?.name}\n                value={newJobData?.sub_classifications?.value}\n                loading={classificationsOptions?.length < 1}\n                loadingText={\n                  isLoading ? 'Loading Sub-classifications......' : 'No Sub-classifications'\n                }\n                sx={{ ...classes.formAutocomplete, width: '250px', marginTop: '24px' }}\n                ListboxProps={{\n                  style: {\n                    fontFamily: 'Source Sans Pro, sans-serif',\n                    color: '#333333',\n                    maxHeight: '200px'\n                  }\n                }}\n                renderInput={(params) => (\n                  <TextField\n                    {...params}\n                    label=\"Sub-classifications\"\n                    InputLabelProps={{ shrink: true }}\n                  />\n                )}\n                onChange={(event, value) => {\n                  setNewJobsData((prev: IJobData) => ({\n                    ...prev,\n                    sub_classifications: { ...prev.sub_classifications, value }\n                  }));\n                  setSelectedClassification(value);\n                }}\n              />\n            </Box>\n          ) : (\n            <Box />\n          )}\n        </Box>\n      </Box>\n      <Button\n        id=\"add-source-button\"\n        sx={{\n          ...classes.addSourceButton,\n          marginTop: '0.5rem',\n          padding: '8px 11px',\n          width: 'unset'\n        }}\n        onClick={() => addSourceLabel(newJobData.classifications.value)}\n        disabled={!selectedClassification}\n      >\n        Add Classification\n      </Button>\n    </Box>\n  );\n}\n","import React, { memo, useCallback, useEffect, useRef, useState } from 'react';\nimport Api from '../../Job/API';\nimport {\n  DebouncedFormNumberField,\n  DebouncedFormTextField\n} from '../../Components/CustomUIElements/FormTextField';\nimport FormCheckboxGroup from '../../Components/CustomUIElements/FormCheckboxGroup';\nimport { Virtualize } from '../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport { SingleDateTimePicker } from '../../Components/CustomUIElements/SingleDatePicker';\nimport { classes } from '../styles';\nimport Classifications from './Classifications/Classifications';\nimport moment from 'moment';\nimport { additionalOptionsDefaults, editJobsConfig, emojiRegex } from '../../Jobs/config';\nimport {\n  IAdditionalOptions,\n  IGeneralProps,\n  IJobData,\n  IPrivacyAcknowledgement,\n  IVisibility\n} from '../types';\nimport {\n  Accordion,\n  AccordionDetails,\n  AccordionSummary,\n  Autocomplete,\n  Box,\n  createFilterOptions,\n  InputLabel,\n  TextField\n} from '@mui/material';\nimport { ChevronRight, ExpandLess } from '@mui/icons-material';\nimport Link from '@mui/material/Link';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { userTimeZone } from '../../utils/formatToUserTimeZone';\n\nconst BASE_URL = window.location.origin;\n\nconst filterOptions = createFilterOptions({\n  stringify: (option) => option.position_title + option.id\n});\n\nfunction GeneralTab({\n  apiKey,\n  job,\n  jobId,\n  timezoneOptions,\n  setTimezoneOptions,\n  brandOptions,\n  setBrandOptions,\n  requisitionsOptions,\n  setRequisitionsOptions,\n  classificationsOptions,\n  setClassificationsOptions,\n  autoRaterOptions,\n  setAutoRaterOptions,\n  assignedUsersOptions,\n  setAssignedUsersOptions,\n  salespersonOptions,\n  setSalespersonOptions,\n  rmTeamOptions,\n  setRmTeamOptions,\n  changeTab,\n  setEditTabValue,\n  setChangeTab,\n  localOptions,\n  setLocalOptions,\n  newJobData,\n  setNewJobsData,\n  handleUpdateJob,\n  userPermissions,\n  setIsEdited,\n  jobFeedActive\n}: IGeneralProps) {\n  const [expandOptionalFields, setExpandOptionalFields] = useState(false);\n  const [isLoading, setIsLoading] = useState(false);\n  const [loadingTimezones, isLoadingTimezones] = useState(false);\n  const [countries, setCountries] = useState('');\n\n  const fieldRefs = {\n    reference: useRef<HTMLInputElement>(null),\n    title: useRef<HTMLInputElement>(null),\n    location: useRef<HTMLInputElement>(null),\n    expires_at: useRef<HTMLInputElement>(null),\n    employment_status: useRef<HTMLInputElement>(null),\n    salary_info: useRef<HTMLInputElement>(null),\n    number_of_vacancies: useRef<HTMLInputElement>(null),\n    from_email: useRef<HTMLInputElement>(null),\n    external_approval_id: useRef<HTMLInputElement>(null),\n    requisition_info: useRef<HTMLInputElement>(null)\n  };\n\n  const checkReference = async (value: string) => {\n    if (job.reference === value) {\n      return setNewJobsData((prev: IJobData) => ({\n        ...prev,\n        reference: { ...prev.reference, error: '' }\n      }));\n    }\n    setIsLoading(true);\n    try {\n      const response = await Api.referenceValidation(\n        { 'X-api-authenticate': apiKey },\n        { 'job[reference]': value }\n      );\n      if (response.valid) {\n        setNewJobsData((prev: IJobData) => ({\n          ...prev,\n          reference: { ...prev.reference, error: '' }\n        }));\n      } else {\n        if (response.correct_format === false) {\n          newJobData?.reference?.value &&\n            setNewJobsData((prev: IJobData) => ({\n              ...prev,\n              reference: {\n                ...prev.reference,\n                error: 'Incorrect reference format, prefix letters before digits'\n              }\n            }));\n        } else {\n          newJobData?.reference?.value &&\n            setNewJobsData((prev: IJobData) => ({\n              ...prev,\n              reference: { ...prev.reference, error: 'Reference already in use' }\n            }));\n        }\n        fieldRefs['reference']?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n      }\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsLoading(false);\n    }\n  };\n\n  useEffect(() => {\n    if (countries.length > 0) return;\n    let isMounted = true;\n    const handleGetCountries = async () => {\n      try {\n        const response = await fetch(`${BASE_URL}/api/system/v1/countries_states.json`, {\n          method: 'GET'\n        });\n        const data = await response.json();\n        const countriesWithlabels = data\n          .map((country) => ({\n            ...country,\n            printable_name: country.name\n              .toLowerCase()\n              .split(' ')\n              .map((word) => {\n                if (word !== 'and' && word !== 'of') {\n                  return word.charAt(0) === '('\n                    ? word[0] + word[1].toUpperCase() + word.slice(2)\n                    : word[0].toUpperCase() + word.slice(1);\n                } else {\n                  return word;\n                }\n              })\n              .join(' '),\n            states: country.states.map((state) => ({\n              ...state,\n              label: state.name\n            }))\n          }))\n          .sort((a, b) => {\n            return a.name.localeCompare(b.name);\n          });\n        if (isMounted) {\n          setCountries(countriesWithlabels);\n        }\n      } catch (error) {\n        console.error(error);\n      }\n    };\n    handleGetCountries();\n    return () => {\n      isMounted = false;\n    };\n  }, [countries]);\n\n  const fetchOptionalSectionData = useCallback(async () => {\n    setIsLoading(true);\n    try {\n      const [\n        timezone,\n        brand,\n        requisition,\n        classification,\n        autoRater,\n        assignedUser,\n        sales,\n        rmTeam,\n        local\n      ] = await Promise.all([\n        Api.getJobTimezones({ 'X-api-authenticate': apiKey }),\n        Api.getJobBrand({ 'X-api-authenticate': apiKey }, jobId),\n        Api.getJobrequisitions(\n          { 'X-api-authenticate': apiKey },\n          { override_limit: true, limit: 500, 'filter[exact_states]': ['approved'] }\n        ),\n        Api.getJobClassifications({ 'X-api-authenticate': apiKey }),\n        Api.getJobAutoRaters({ 'X-api-authenticate': apiKey }, jobId),\n        Api.getJobAssignableUsers({ 'X-api-authenticate': apiKey }, jobId),\n        Api.getSalesPeople({ 'X-api-authenticate': apiKey }),\n        Api.getRMteamMembers({ 'X-api-authenticate': apiKey }),\n        Api.getJobLocales({ 'X-api-authenticate': apiKey })\n      ]);\n\n      setTimezoneOptions(timezone?.timezones?.map((a) => a.name));\n      setBrandOptions(brand?.brands);\n      setRequisitionsOptions(requisition?.requisitions);\n      setClassificationsOptions(classification?.classifications);\n      setAutoRaterOptions(autoRater?.auto_raters);\n      setAssignedUsersOptions(assignedUser?.assignable_users);\n      setSalespersonOptions(\n        sales?.sales_people?.map((a) => `${a.id} - ${a.firstname} ${a.lastname}`)\n      );\n      setRmTeamOptions(\n        rmTeam?.rm_team_members?.map((a) => `${a.id} - ${a.firstname} ${a.lastname}`)\n      );\n      setLocalOptions(local?.locales);\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsLoading(false);\n    }\n  }, [apiKey, jobId]);\n\n  useEffect(() => {\n    timezoneOptions.length === 0 && !loadingTimezones && fetchOptionalSectionData();\n  }, [timezoneOptions.length, fetchOptionalSectionData, loadingTimezones]);\n\n  useEffect(() => {\n    if (changeTab[0]) {\n      if (handleValidateFields()) {\n        setEditTabValue(changeTab[1]);\n        setChangeTab([false, null]);\n      }\n    } else if (!changeTab[0] && changeTab[1] === 1) {\n      handleValidateFields() && handleUpdateJob();\n    }\n  }, [changeTab]);\n\n  const handleValidateFields = () => {\n    let isValid = true;\n    let firstError: keyof typeof fieldRefs | undefined = undefined;\n\n    Object.entries(newJobData).forEach((field) => {\n      let tempErrorMessage = '';\n      if (field[1]?.required && !field[1]?.value) {\n        if (!firstError) {\n          firstError = field[0] as keyof typeof fieldRefs;\n        }\n        isValid = false;\n        tempErrorMessage = 'This field is required';\n      }\n      if (field[0] === 'title' || field[0] === 'location') {\n        if (field[1]?.value?.match(emojiRegex)) {\n          isValid = false;\n          tempErrorMessage = \"This field can't have emojis\";\n        }\n      }\n      if (field[0] === 'expires_at') {\n        if (!moment(newJobData?.expires_at?.value).isValid()) {\n          isValid = false;\n          tempErrorMessage = 'This field must be a valid date';\n        } else {\n          if (\n            !moment(newJobData?.expires_at?.value).isAfter(moment()) &&\n            !moment(job?.expires_at).isSame(newJobData?.expires_at?.value) &&\n            job.state !== 'closed'\n          ) {\n            isValid = false;\n            tempErrorMessage = 'Date and Time must be today or in the future';\n          }\n        }\n      }\n      if (field[0] === 'reference' && isValid && newJobData?.reference?.error) {\n        isValid = false;\n        tempErrorMessage = newJobData?.reference?.error;\n      }\n      if (\n        [\n          'classification_list',\n          'classification_ids',\n          'external',\n          'internal',\n          'entity_privacy_acknowledgement',\n          'privacy_acknowledgement',\n          'linkedin_listing_opt_in'\n        ].includes(field[0])\n      ) {\n        isValid = true;\n      } else {\n        setNewJobsData((prev: IJobData) => ({\n          ...prev,\n          [field[0]]: { ...prev[field[0] as keyof typeof prev], error: tempErrorMessage }\n        }));\n      }\n    });\n\n    // Scroll to first invalid field\n    if (firstError) {\n      fieldRefs[firstError]?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n    }\n\n    return isValid;\n  };\n\n  const getDefaults = (options, defaults) => {\n    if (options?.length > 0 && defaults?.length > 0) {\n      const ids = defaults.map((item) => item.id);\n      const selected = options?.filter((option) => ids.indexOf(option?.id) >= 0);\n      return selected;\n    } else return [];\n  };\n\n  return (\n    <Box sx={classes.tabContent}>\n      <Box id=\"new-application-modal-title\" sx={classes.headerContent}>\n        Job Details\n      </Box>\n      <Box role=\"form\" id=\"edit-general-job\" aria-label=\"General tab edit jobs\">\n        <Box sx={classes.generalModalFormLine}>\n          <DebouncedFormTextField\n            onDebouncedChange={(value: string) => {\n              setNewJobsData((prev: IJobData) => ({\n                ...prev,\n                reference: { ...prev.reference, value }\n              }));\n              checkReference(value);\n              setIsEdited(true);\n            }}\n            dataTestId=\"reference-input\"\n            label=\"Reference\"\n            defaultValue={newJobData.reference.value}\n            required={newJobData.reference.required}\n            error={newJobData.reference.error}\n            innerRef={fieldRefs.reference}\n            styles={{ width: '250px' }}\n          />\n          <DebouncedFormTextField\n            dataTestId=\"title-input\"\n            onDebouncedChange={(value: string) => {\n              setNewJobsData((prev: IJobData) => ({\n                ...prev,\n                title: { ...prev.title, value, error: '' }\n              }));\n              setIsEdited(true);\n            }}\n            label=\"Title\"\n            defaultValue={newJobData.title.value}\n            required={newJobData.title.required}\n            error={newJobData.title.error}\n            innerRef={fieldRefs.title}\n            styles={{ width: '250px' }}\n          />\n        </Box>\n        <Box sx={classes.generalModalFormLine}>\n          <DebouncedFormTextField\n            onDebouncedChange={(value: string) => {\n              setNewJobsData((prev: IJobData) => ({\n                ...prev,\n                location: { ...prev.location, value, error: '' }\n              }));\n              setIsEdited(true);\n            }}\n            id=\"location\"\n            dataTestId=\"location\"\n            label=\"City/Town\"\n            error={newJobData.location.error}\n            defaultValue={newJobData.location.value}\n            required={newJobData.location.required}\n            innerRef={fieldRefs.location}\n            styles={{ width: '250px' }}\n          />\n          <Box sx={{ position: 'relative', marginBottom: '4px' }}>\n            <Autocomplete\n              id=\"country\"\n              loading={countries?.length < 1}\n              options={countries}\n              getOptionLabel={(option) => option.printable_name}\n              value={newJobData?.country_id?.value}\n              loadingText={isLoading ? 'Loading countries...' : 'No countries'}\n              sx={{ ...classes.formAutocomplete, width: '250px', marginTop: '24px' }}\n              ListboxProps={{\n                style: {\n                  fontFamily: 'Source Sans Pro, sans-serif',\n                  color: '#333333',\n                  maxHeight: '200px'\n                }\n              }}\n              renderInput={(params) => (\n                <TextField {...params} label=\"Country\" InputLabelProps={{ shrink: true }} />\n              )}\n              onChange={(event, value) => {\n                setNewJobsData((prev: IJobData) => ({\n                  ...prev,\n                  country_id: { ...prev.country_id, value }\n                }));\n                setIsEdited(true);\n              }}\n            />\n          </Box>\n        </Box>\n        <Box\n          sx={{ ...classes.generalModalFormLine, columnGap: '25px', position: 'relative' }}\n          ref={fieldRefs.expires_at}\n        >\n          <Box>\n            <SingleDateTimePicker\n              label={\n                <InputLabel htmlFor=\"text-input\" sx={sharedClasses.inputLabel}>\n                  Expiry date and time<span>*</span>\n                </InputLabel>\n              }\n              inputStyles={classes.datePicker}\n              onChange={(value) => {\n                setNewJobsData((prev: IJobData) => ({\n                  ...prev,\n                  expires_at: { ...prev.expires_at, value: moment(value).toISOString(), error: '' }\n                }));\n                setIsEdited(true);\n              }}\n              timezone={newJobData.time_zone.value ?? userTimeZone}\n              value={newJobData.expires_at.value}\n              disablePast\n            />\n          </Box>\n\n          {newJobData.expires_at.error && (\n            <Box sx={{ ...classes.errorBox, bottom: '-35px' }}>{newJobData.expires_at.error}</Box>\n          )}\n        </Box>\n        <Accordion\n          sx={classes.accordionRoot}\n          expanded={expandOptionalFields}\n          onChange={() => setExpandOptionalFields(!expandOptionalFields)}\n        >\n          <AccordionSummary\n            sx={classes.accordionSummary}\n            expandIcon={expandOptionalFields ? <ExpandLess /> : <ChevronRight />}\n            aria-controls=\"panel1a-content\"\n            id=\"panel1a-header\"\n          >\n            <Box sx={{ ...classes.headerContent, marginBottom: '0', paddingRight: '15px' }}>\n              Optional fields\n            </Box>\n          </AccordionSummary>\n          <AccordionDetails sx={{ padding: '0' }}>\n            <Box sx={{ ...classes.generalModalFormLine }}>\n              <Box>\n                <DebouncedFormTextField\n                  onDebouncedChange={(value: string) => {\n                    setNewJobsData((prev: IJobData) => ({\n                      ...prev,\n                      employment_status: { ...prev.employment_status, value }\n                    }));\n                    setIsEdited(true);\n                  }}\n                  id=\"employment_status\"\n                  label=\"Employment Status\"\n                  defaultValue={newJobData.employment_status.value}\n                  required={newJobData.employment_status.required}\n                  error={newJobData.employment_status.error}\n                  innerRef={fieldRefs.employment_status}\n                  styles={{ width: '250px' }}\n                />\n                <Box sx={{ color: '#838383', width: '250px', fontSize: '12px' }}>\n                  i.e. Full-time, Part-time, Casual\n                </Box>\n              </Box>\n              {userPermissions?.['Job Options']?.['Salary Info field'] && (\n                <DebouncedFormTextField\n                  onDebouncedChange={(value: string) => {\n                    setNewJobsData((prev: IJobData) => ({\n                      ...prev,\n                      salary_info: { ...prev.salary_info, value }\n                    }));\n                    setIsEdited(true);\n                  }}\n                  id=\"salary_info\"\n                  label=\"Salary Info\"\n                  defaultValue={newJobData.salary_info.value}\n                  required={newJobData.salary_info.required}\n                  error={newJobData.salary_info.error}\n                  innerRef={fieldRefs.salary_info}\n                  styles={{ width: '250px' }}\n                />\n              )}\n              <Virtualize\n                value={newJobData.time_zone.value}\n                passOptions={timezoneOptions}\n                setValue={async (event: string) => {\n                  setNewJobsData((prev: IJobData) => ({\n                    ...prev,\n                    time_zone: { ...prev.time_zone, value: event }\n                  }));\n                  setIsEdited(true);\n                }}\n                passedStyles={{\n                  width: '250px',\n                  marginTop: '24px',\n                  ...classes.formAutocomplete,\n                  marginBottom: '4px'\n                }}\n                label=\"Timezone\"\n                loading={isLoadingTimezones}\n                loadingText=\"Loading timezones...\"\n              />\n            </Box>\n            <Box sx={classes.generalModalFormLine}>\n              <DebouncedFormNumberField\n                onDebouncedChange={(value: string) => {\n                  setNewJobsData((prev: IJobData) => ({\n                    ...prev,\n                    number_of_vacancies: { ...prev.number_of_vacancies, value }\n                  }));\n                  setIsEdited(true);\n                }}\n                id=\"number_of_vacancies\"\n                label=\"Number of vacancies\"\n                defaultValue={newJobData.number_of_vacancies.value}\n                required={newJobData.number_of_vacancies.required}\n                error={newJobData.number_of_vacancies.error}\n                innerRef={fieldRefs.number_of_vacancies}\n                styles={{ width: '250px' }}\n              />\n              {userPermissions?.['Job Options']?.['Brand and State fields'] && (\n                <Box sx={{ position: 'relative', marginBottom: '4px' }}>\n                  <Autocomplete\n                    id=\"brand\"\n                    options={brandOptions}\n                    getOptionLabel={(option) => option?.name}\n                    value={newJobData.brand.value}\n                    loading={brandOptions?.length < 1}\n                    loadingText={isLoading ? 'Loading brands......' : 'No brands'}\n                    sx={{ ...classes.formAutocomplete, width: '250px', marginTop: '24px' }}\n                    ListboxProps={{\n                      style: {\n                        fontFamily: 'Source Sans Pro, sans-serif',\n                        color: '#333333',\n                        maxHeight: '200px'\n                      }\n                    }}\n                    renderInput={(params) => (\n                      <TextField {...params} label=\"Brand\" InputLabelProps={{ shrink: true }} />\n                    )}\n                    onChange={(event, value) => {\n                      setNewJobsData((prev: IJobData) => ({\n                        ...prev,\n                        brand: { ...prev.brand, value }\n                      }));\n                      setIsEdited(true);\n                    }}\n                  />\n                </Box>\n              )}\n              <Box>\n                <DebouncedFormTextField\n                  onDebouncedChange={(value: string) => {\n                    setNewJobsData((prev: IJobData) => ({\n                      ...prev,\n                      from_email: { ...prev.from_email, value }\n                    }));\n                    setIsEdited(true);\n                  }}\n                  id=\"from_email\"\n                  label=\"From email\"\n                  defaultValue={newJobData.from_email.value}\n                  required={newJobData.from_email.required}\n                  error={newJobData.from_email.error}\n                  innerRef={fieldRefs.from_email}\n                  styles={{ width: '250px' }}\n                />\n                <Box sx={{ color: '#838383', width: '250px', fontSize: '12px' }}>\n                  Or leave blank to use{' '}\n                  {job.entity_email\n                    ? job.entity_email\n                    : job.locale === 'en-au'\n                      ? 'jobs@scouttalent.com.au'\n                      : 'jobs@scouttalent.ca'}\n                </Box>\n              </Box>\n            </Box>\n            <Box sx={classes.generalModalFormLine}>\n              <DebouncedFormTextField\n                onDebouncedChange={(value: string) => {\n                  setNewJobsData((prev: IJobData) => ({\n                    ...prev,\n                    external_approval_id: { ...prev.external_approval_id, value }\n                  }));\n                  setIsEdited(true);\n                }}\n                id=\"external_approval_id\"\n                label=\"External Approval ID\"\n                defaultValue={newJobData.external_approval_id.value}\n                required={newJobData.external_approval_id.required}\n                error={newJobData.external_approval_id.error}\n                innerRef={fieldRefs.external_approval_id}\n                styles={{ width: '250px' }}\n              />\n              <Box sx={{ position: 'relative', marginBottom: '4px' }}>\n                <Autocomplete\n                  id=\"requisitions\"\n                  multiple\n                  options={requisitionsOptions}\n                  renderOption={(props, option) => {\n                    return (\n                      <li {...props} key={option?.id}>\n                        {`${option?.position_title} - ${option?.id}`}\n                      </li>\n                    );\n                  }}\n                  getOptionLabel={(option) => {\n                    if (typeof option === 'string') {\n                      return option;\n                    }\n                    return option?.position_title ?? '';\n                  }}\n                  value={getDefaults(requisitionsOptions, newJobData?.requisitions?.value)}\n                  loading={requisitionsOptions?.length < 1}\n                  filterOptions={filterOptions}\n                  loadingText={isLoading ? 'Loading requisitions...' : 'No requisitions'}\n                  sx={{\n                    ...classes.formAutocomplete,\n                    minWidth: '250px',\n                    width: '100%',\n                    marginTop: '24px'\n                  }}\n                  ListboxProps={{\n                    style: {\n                      fontFamily: 'Source Sans Pro, sans-serif',\n                      color: '#333333',\n                      maxHeight: '200px'\n                    }\n                  }}\n                  renderInput={(params) => (\n                    <TextField\n                      {...params}\n                      label=\"Requisitions (Job Details Report)\"\n                      InputLabelProps={{ shrink: true }}\n                    />\n                  )}\n                  onChange={(event, value) => {\n                    setNewJobsData((prev: IJobData) => ({\n                      ...prev,\n                      requisitions: { ...prev.requisitions, value }\n                    }));\n                    setIsEdited(true);\n                  }}\n                />\n              </Box>\n            </Box>\n            <Box sx={classes.generalModalFormLine}>\n              {userPermissions?.['Job Options']?.['Show Postcode Field'] && (\n                <DebouncedFormTextField\n                  onDebouncedChange={(value: string) => {\n                    setNewJobsData((prev: IJobData) => ({\n                      ...prev,\n                      postcode: { ...prev.postcode, value }\n                    }));\n                    setIsEdited(true);\n                  }}\n                  id=\"postcode\"\n                  label=\"Postcode/Zipcode\"\n                  defaultValue={newJobData?.postcode?.value}\n                  required={newJobData?.postcode?.required}\n                  error={newJobData?.postcode?.error}\n                  styles={{ width: '250px' }}\n                />\n              )}\n              {userPermissions?.['Job Options']?.['Brand and State fields'] && (\n                <DebouncedFormTextField\n                  onDebouncedChange={(value: string) => {\n                    setNewJobsData((prev: IJobData) => ({\n                      ...prev,\n                      address_state: { ...prev.address_state, value }\n                    }));\n                    setIsEdited(true);\n                  }}\n                  id=\"address_state\"\n                  label=\"State/Region/Province\"\n                  defaultValue={newJobData?.address_state?.value}\n                  required={newJobData?.address_state?.required}\n                  error={newJobData?.address_state?.error}\n                  styles={{ width: '250px' }}\n                />\n              )}\n              <Box sx={{ position: 'relative', marginBottom: '4px' }}>\n                <Autocomplete\n                  id=\"language/country\"\n                  options={localOptions}\n                  getOptionLabel={(option) => option?.label}\n                  value={newJobData?.locale?.value}\n                  loading={localOptions?.length < 1}\n                  loadingText={\n                    isLoading ? 'Loading language & countries...' : 'No language & countries'\n                  }\n                  sx={{ ...classes.formAutocomplete, width: '250px', marginTop: '24px' }}\n                  ListboxProps={{\n                    style: {\n                      fontFamily: 'Source Sans Pro, sans-serif',\n                      color: '#333333',\n                      maxHeight: '200px'\n                    }\n                  }}\n                  renderInput={(params) => (\n                    <TextField {...params} label=\"Language\" InputLabelProps={{ shrink: true }} />\n                  )}\n                  onChange={(event, value) => {\n                    setNewJobsData((prev: IJobData) => ({\n                      ...prev,\n                      locale: { ...prev.locale, value }\n                    }));\n                    setIsEdited(true);\n                  }}\n                />\n              </Box>\n              <DebouncedFormTextField\n                onDebouncedChange={(value: string) => {\n                  setNewJobsData((prev: IJobData) => ({\n                    ...prev,\n                    tag_list: { ...prev.tag_list, value }\n                  }));\n                  setIsEdited(true);\n                }}\n                id=\"tag_list\"\n                label=\"Tag list\"\n                defaultValue={newJobData?.tag_list?.value}\n                required={newJobData?.tag_list?.required}\n                error={newJobData?.tag_list?.error}\n                styles={{ width: '250px' }}\n              />\n            </Box>\n            <Box\n              id=\"new-application-modal-title\"\n              sx={{ ...classes.headerContent, marginBottom: '1rem' }}\n            >\n              Classifications\n            </Box>\n            <Box sx={classes.generalModalFormLine}>\n              <Classifications\n                isLoading={isLoading}\n                setNewJobsData={setNewJobsData}\n                classificationsOptions={classificationsOptions}\n                newJobData={newJobData}\n                setIsEdited={setIsEdited}\n              />\n            </Box>\n            <Box sx={classes.fullWidthFieldContainer}>\n              <FormCheckboxGroup\n                options={editJobsConfig(userPermissions, jobFeedActive)}\n                directionRow={true}\n                defaultValues={additionalOptionsDefaults(job)}\n                onChange={(value: IAdditionalOptions) => {\n                  setNewJobsData((prev: IJobData) => ({\n                    ...prev,\n                    options: {\n                      ...prev.options,\n                      ...value\n                    },\n                    linkedin_listing_opt_in: value.linkedin_listing_opt_in\n                  }));\n                  setIsEdited(true);\n                }}\n                groupLabel={'Additional Options'}\n                color={'#838383'}\n              />\n            </Box>\n            {newJobData?.options?.auto_ratings &&\n            userPermissions?.['Job Options']?.['Auto Rating'] ? (\n              <Box sx={classes.generalModalFormLine}>\n                <Box sx={{ position: 'relative', marginBottom: '4px' }}>\n                  <Autocomplete\n                    id=\"sub_classifications\"\n                    options={autoRaterOptions}\n                    getOptionLabel={(option) => `${option?.firstname} ${option?.lastname}`}\n                    value={newJobData.auto_rater.value}\n                    loading={autoRaterOptions?.length < 1}\n                    loadingText={\n                      isLoading\n                        ? 'Loading Application recipients......'\n                        : 'No Application recipients'\n                    }\n                    sx={{ ...classes.formAutocomplete, width: '250px', marginTop: '24px' }}\n                    ListboxProps={{\n                      style: {\n                        fontFamily: 'Source Sans Pro, sans-serif',\n                        color: '#333333',\n                        maxHeight: '200px'\n                      }\n                    }}\n                    renderInput={(params) => (\n                      <TextField\n                        {...params}\n                        label=\"Auto-rater\"\n                        InputLabelProps={{ shrink: true }}\n                      />\n                    )}\n                    onChange={(event, value) => {\n                      setNewJobsData((prev: IJobData) => ({\n                        ...prev,\n                        auto_rater: { ...prev.auto_rater, value }\n                      }));\n                      setIsEdited(true);\n                    }}\n                  />\n                  <Box\n                    sx={{ color: '#838383', width: '250px', fontSize: '12px', padding: '5px 0' }}\n                  >\n                    Auto-ratings for applications of this job will be created in this user's name\n                  </Box>\n                </Box>\n              </Box>\n            ) : (\n              <span />\n            )}\n            {userPermissions?.['Job Options']?.['Privacy Acknowledgement'] && (\n              <Box sx={classes.fullWidthFieldContainer}>\n                <FormCheckboxGroup\n                  options={[\n                    {\n                      id: 'privacy_acknowledgement',\n                      name: 'Show the Privacy Acknowledgement',\n                      position: 0\n                    }\n                  ]}\n                  directionRow={true}\n                  defaultValues={{ privacy_acknowledgement: newJobData.privacy_acknowledgement }}\n                  onChange={(value: IPrivacyAcknowledgement) => {\n                    setNewJobsData((prev: IJobData) => ({\n                      ...prev,\n                      privacy_acknowledgement: value.privacy_acknowledgement\n                    }));\n                    setIsEdited(true);\n                  }}\n                  groupLabel={'Privacy Acknowledgement'}\n                  color={'#838383'}\n                />\n                {!newJobData.entity_privacy_acknowledgement && (\n                  <Box sx={{ paddingLeft: '4px', color: '#E37D7A' }}>\n                    A Privacy Acknowledgement is not currently set for this Job. You can update your\n                    Privacy Acknowledgement from your Entity&nbsp;\n                    <Link\n                      href={`${BASE_URL}${newJobData.entity_privacy_acknowledgement_link}`}\n                      sx={{ color: '#E37D7A !important', fontWeight: 'bold' }}\n                      target=\"_blank\"\n                    >\n                      settings here\n                    </Link>\n                  </Box>\n                )}\n              </Box>\n            )}\n          </AccordionDetails>\n        </Accordion>\n        {userPermissions?.['Job Options']?.['External'] ||\n        userPermissions?.['Job Options']?.['Internal'] ? (\n          <Box>\n            <Box id=\"new-application-modal-title\" sx={classes.headerContent}>\n              Visibility\n            </Box>\n            <Box sx={classes.generalModalFormLine}>\n              <FormCheckboxGroup\n                options={\n                  userPermissions?.['Job Options']?.['External'] &&\n                  userPermissions?.['Job Options']?.['Internal']\n                    ? [\n                        { id: 'external', name: 'External' },\n                        { id: 'internal', name: 'Internal' }\n                      ]\n                    : userPermissions?.['Job Options']?.['External']\n                      ? [{ id: 'external', name: 'External' }]\n                      : [{ id: 'internal', name: 'Internal' }]\n                }\n                directionRow={true}\n                defaultValues={{\n                  external: newJobData.external,\n                  internal: newJobData.internal\n                }}\n                onChange={(value: IVisibility) => {\n                  setNewJobsData((prev: IJobData) => ({\n                    ...prev,\n                    external: value.external,\n                    internal: value.internal\n                  }));\n                  setIsEdited(true);\n                }}\n                color={'#838383'}\n              />\n            </Box>\n          </Box>\n        ) : (\n          <Box />\n        )}\n        <Box id=\"new-application-modal-title\" sx={classes.headerContent}>\n          Job Settings\n        </Box>\n        <Box sx={classes.generalModalFormLine}>\n          {userPermissions?.['Job Options']?.['Assign User to Job'] && (\n            <Box sx={{ position: 'relative', marginBottom: '4px' }}>\n              <Autocomplete\n                id=\"asssignUser\"\n                options={assignedUsersOptions}\n                getOptionLabel={(option) => `${option.firstname} ${option.lastname}`}\n                value={newJobData.assigned_user.value}\n                loading={assignedUsersOptions?.length < 1}\n                loadingText={isLoading ? 'Loading assigned users...' : 'No assigned user'}\n                sx={{ ...classes.formAutocomplete, width: '250px', marginTop: '24px' }}\n                ListboxProps={{\n                  style: {\n                    fontFamily: 'Source Sans Pro, sans-serif',\n                    color: '#333333',\n                    maxHeight: '200px'\n                  }\n                }}\n                renderInput={(params) => (\n                  <TextField\n                    {...params}\n                    label=\"Assigned users\"\n                    InputLabelProps={{ shrink: true }}\n                  />\n                )}\n                onChange={(event, value) => {\n                  setNewJobsData((prev: IJobData) => ({\n                    ...prev,\n                    assigned_user: { ...prev.assigned_user, value }\n                  }));\n                  setIsEdited(true);\n                }}\n              />\n            </Box>\n          )}\n          {job.features.smart_form_recipients &&\n            job.entity_settings.show_smart_form_recipients &&\n            (['admin', 'staff'].includes(userPermissions?.['user_type']) ||\n              userPermissions?.['paid_user']) && (\n              <Box sx={{ position: 'relative', marginBottom: '4px' }}>\n                <Autocomplete\n                  id=\"smartFormO\"\n                  multiple\n                  options={assignedUsersOptions}\n                  getOptionLabel={(option) => `${option?.firstname} ${option?.lastname}`}\n                  value={getDefaults(\n                    assignedUsersOptions,\n                    newJobData?.smart_form_recipients?.value\n                  )}\n                  loading={assignedUsersOptions?.length < 1}\n                  loadingText={\n                    isLoading\n                      ? 'Loading smart form notification recipients...'\n                      : 'No smart form notification recipients'\n                  }\n                  sx={{\n                    ...classes.formAutocomplete,\n                    minWidth: '250px',\n                    width: '100%',\n                    marginTop: '24px'\n                  }}\n                  ListboxProps={{\n                    style: {\n                      fontFamily: 'Source Sans Pro, sans-serif',\n                      color: '#333333',\n                      maxHeight: '200px'\n                    }\n                  }}\n                  renderInput={(params) => (\n                    <TextField\n                      {...params}\n                      label=\"Smart form notification recipient\"\n                      InputLabelProps={{ shrink: true }}\n                    />\n                  )}\n                  onChange={(event, value) => {\n                    setNewJobsData((prev: IJobData) => ({\n                      ...prev,\n                      smart_form_recipients: { ...prev.smart_form_recipients, value }\n                    }));\n                    setIsEdited(true);\n                  }}\n                />\n              </Box>\n            )}\n          <Box sx={{ position: 'relative', marginBottom: '4px' }}>\n            <Autocomplete\n              id=\"recipients\"\n              multiple\n              options={assignedUsersOptions}\n              getOptionLabel={(option) => `${option?.firstname} ${option?.lastname}`}\n              value={getDefaults(assignedUsersOptions, newJobData?.recipients?.value)}\n              loading={assignedUsersOptions?.length < 1}\n              loadingText={\n                isLoading ? 'Loading Application recipients......' : 'No Application recipients'\n              }\n              sx={{\n                ...classes.formAutocomplete,\n                minWidth: '250px',\n                width: '100%',\n                marginTop: '24px'\n              }}\n              ListboxProps={{\n                style: {\n                  fontFamily: 'Source Sans Pro, sans-serif',\n                  color: '#333333',\n                  maxHeight: '200px'\n                }\n              }}\n              renderInput={(params) => (\n                <TextField\n                  {...params}\n                  label=\"Application recipient\"\n                  InputLabelProps={{ shrink: true }}\n                />\n              )}\n              onChange={(event, value) => {\n                setNewJobsData((prev: IJobData) => ({\n                  ...prev,\n                  recipients: { ...prev.recipients, value }\n                }));\n                setIsEdited(true);\n              }}\n            />\n          </Box>\n        </Box>\n        <Box sx={classes.generalModalFormLine}>\n          {job.features.pin_jobs && (\n            <Box sx={{ position: 'relative', marginBottom: '4px' }}>\n              <Autocomplete\n                id=\"pinnedUser\"\n                multiple\n                options={assignedUsersOptions}\n                getOptionLabel={(option) => `${option?.firstname} ${option?.lastname}`}\n                value={getDefaults(assignedUsersOptions, newJobData?.pinned_users?.value)}\n                loading={assignedUsersOptions?.length < 1}\n                loadingText={isLoading ? 'Loading pinned user...' : 'No smart pinned users'}\n                sx={{\n                  ...classes.formAutocomplete,\n                  minWidth: '250px',\n                  width: '100%',\n                  marginTop: '24px'\n                }}\n                ListboxProps={{\n                  style: {\n                    fontFamily: 'Source Sans Pro, sans-serif',\n                    color: '#333333',\n                    maxHeight: '200px'\n                  }\n                }}\n                renderInput={(params) => (\n                  <TextField {...params} label=\"Pinned users\" InputLabelProps={{ shrink: true }} />\n                )}\n                onChange={(event, value) => {\n                  setNewJobsData((prev: IJobData) => ({\n                    ...prev,\n                    pinned_users: { ...prev.pinned_users, value }\n                  }));\n                  setIsEdited(true);\n                }}\n              />\n            </Box>\n          )}\n        </Box>\n        {['admin', 'staff'].includes(userPermissions?.['user_type']) && (\n          <>\n            <Box sx={classes.headerContent}>Internal</Box>\n            <Box sx={classes.generalModalFormLine}>\n              <Box sx={{ position: 'relative', marginBottom: '4px' }}>\n                <Virtualize\n                  value={newJobData?.salesperson?.value}\n                  passOptions={salespersonOptions}\n                  setValue={async (event: string) => {\n                    setNewJobsData((prev: IJobData) => ({\n                      ...prev,\n                      salesperson: { ...prev.salesperson, value: event }\n                    }));\n                    setIsEdited(true);\n                  }}\n                  passedStyles={{\n                    width: '250px',\n                    marginTop: '24px',\n                    ...classes.formAutocomplete,\n                    marginBottom: '4px'\n                  }}\n                  label=\"Salesperson\"\n                  loading={salespersonOptions?.length < 1}\n                  loadingText={isLoading ? 'Loading sales people...' : 'No sales people'}\n                />\n              </Box>\n              {userPermissions?.['Job Options']?.['Assign Recruitment Advertising User to Job'] && (\n                <Box sx={{ position: 'relative', marginBottom: '4px' }}>\n                  <Virtualize\n                    value={newJobData?.rm_team_member?.value}\n                    passOptions={rmTeamOptions}\n                    setValue={async (event: string) => {\n                      setNewJobsData((prev: IJobData) => ({\n                        ...prev,\n                        rm_team_member: { ...prev.rm_team_member, value: event }\n                      }));\n                      setIsEdited(true);\n                    }}\n                    passedStyles={{\n                      width: '250px',\n                      marginTop: '24px',\n                      ...classes.formAutocomplete,\n                      marginBottom: '4px'\n                    }}\n                    label=\"RM Team Member\"\n                    loading={rmTeamOptions?.length < 1}\n                    loadingText={isLoading ? 'Loading RM team members...' : 'No RM team members'}\n                  />\n                </Box>\n              )}\n            </Box>\n          </>\n        )}\n      </Box>\n    </Box>\n  );\n}\n\nexport default memo(GeneralTab);\n","import React, { useCallback, useEffect, useState } from 'react';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport NoQuestionSVG from './NoQuestionSVG';\nimport NoQuestionArrowSVG from '../Questions/NoQuestionArrowSVG';\nimport LiveHelpIcon from '@mui/icons-material/LiveHelp';\nimport InfoIcon from '@mui/icons-material/Info';\nimport NewSystemFieldSVG from './NewSystemFieldSVG';\nimport NewField from './Modals/NewField';\nimport AddSystemField from './Modals/AddSystemField';\nimport StyledSnackbar from '../../Components/CustomUIElements/StyledSnackbar';\nimport { IApplicantQuestion } from '../types';\nimport { classes } from './styles';\n\nimport SortableItem from './SortableItem';\n\nexport default function HRQuestions({ apiKey, jobId, applicationQuestionTemplateId }: { apiKey: string; jobId: number; applicationQuestionTemplateId: number }) {\n  const [questions, setQuestions] = useState<IApplicantQuestion[]>([]);\n  const [isLoading, setIsLoading] = useState(false);\n  const [modalsOpen, setModalsOpen] = useState<Record<string, boolean>>(\n    {newField: false, addSystemField: false}\n  );\n  const [snackbar, setSnackbar] = useState<{\n    message: string;\n    state: 'success' | 'warning' | 'error';\n  }>({\n    message: '',\n    state: 'success'\n  });\n\n  const [editingQuestion, setEditingQuestion] = useState<IApplicantQuestion | null>();\n\n  const getQuestions = useCallback(async () => {\n    setIsLoading(true);\n    try {\n      const response = await fetch(`/api/v4/fields?application_question_template_id=${applicationQuestionTemplateId}`, {\n        method: 'GET',\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      }).then((response) => response.json());\n      setQuestions(response.fields);\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsLoading(false);\n    }\n  }, [apiKey, applicationQuestionTemplateId]);\n\n  useEffect(() => {\n    getQuestions();\n  }, [getQuestions]);\n\n  return (\n    <Box sx={classes.questionsPageContainer}>\n      <Box sx={classes.pageHeader}>\n        <h2>Configure application HR Questions</h2>\n      </Box>\n      <Box sx={classes.noticeContainer}>\n       <Box sx={classes.noticeHeader}>\n          <InfoIcon sx={classes.noticeIcon} />\n          Only one question can be enabled at a time.\n       </Box>\n        <Box sx={classes.noticeBody}>\n          Any changes here will be automatically saved and will be applied immediately.\n        </Box>\n      </Box>\n      <Box sx={classes.actionsContianer}>\n        <Button\n            variant=\"outlined\"\n            startIcon={<LiveHelpIcon/>}\n            sx={classes.actionButton}\n            onClick={() => {\n                setEditingQuestion(null);\n                setModalsOpen((prev) => ({...prev, newField: true}));\n            }}\n        >\n            New field\n        </Button>\n        <Button\n            variant=\"outlined\"\n            startIcon={<NewSystemFieldSVG/>}\n            sx={classes.actionButton}\n            onClick={() => {\n                setEditingQuestion(null);\n                setModalsOpen((prev) => ({...prev, addSystemField: true}));\n            }}\n        >\n            Add system field\n        </Button>\n      </Box>\n      {questions && questions.length > 0 &&\n        <Box sx={classes.questionsContainer}>\n          <Box sx={classes.titleContainer}>\n            <Box sx={{textAlign: 'start !important', marginRight: 'auto', ...classes.questionsTitle}}>Title</Box>\n            <Box sx={classes.questionsTitle}>Enabled</Box>\n          </Box>\n              {questions.map((question, index) => (\n                <SortableItem\n                  questions={questions}\n                  setQuestions={setQuestions}\n                  getQuestions={getQuestions}\n                  index={index}\n                  key={question.id}\n                  jobId={jobId}\n                  applicationQuestionTemplateId={applicationQuestionTemplateId}\n                  apiKey={apiKey}\n                  setModalsOpen={setModalsOpen}\n                  editingQuestion={question}\n                  setEditingQuestion={setEditingQuestion}\n                  setSnackbar={setSnackbar}\n                />\n              ))}\n        </Box>\n      }\n      {!isLoading && questions?.length === 0 && (\n        <Box sx={{ ...classes.noQuestionsContainer, margin: '100px 0px' }}>\n          <Box sx={{display: 'flex', flexDirection: 'row',}}>\n            <Box sx={{width: '100px'}}>\n            </Box>\n            <NoQuestionSVG />\n            <NoQuestionArrowSVG />\n          </Box>\n          <Box sx={classes.noQuestionsText}>\n            You have no questions\n            <br />\n            Choose an options above to start creating questions\n          </Box>\n        </Box>\n      )}\n      <NewField\n        apiKey={apiKey}\n        getQuestions={getQuestions}\n        modalsOpen={modalsOpen}\n        setModalsOpen={setModalsOpen}\n        jobId={jobId}\n        applicationQuestionTemplateId={applicationQuestionTemplateId}\n        setSnackbar={setSnackbar}\n        editingQuestion={editingQuestion}\n        canEnable={!questions.map((question) => (question.enabled)).includes(true)}\n      />\n      <AddSystemField\n        apiKey={apiKey}\n        getQuestions={getQuestions}\n        modalsOpen={modalsOpen}\n        setModalsOpen={setModalsOpen}\n        jobId={jobId}\n        applicationQuestionTemplateId={applicationQuestionTemplateId}\n        setSnackbar={setSnackbar}\n      />\n      <StyledSnackbar\n        message={snackbar.message}\n        state={snackbar.state}\n        setSnackbarState={setSnackbar}\n      />\n    </Box>\n  );\n}\n","import React, { useState, useEffect, useRef, Dispatch, SetStateAction, useCallback } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport Button from '@mui/material/Button';\nimport CloseIcon from '@mui/icons-material/Close';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { Virtualize } from '../../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport { StyledSnackbarProps } from '../../../Components/CustomUIElements/StyledSnackbar';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport Api from '../../../Job/API';\n\nexport default function AddSystemField({\n  apiKey,\n  jobId,\n  applicationQuestionTemplateId,\n  setSnackbar,\n  modalsOpen,\n  setModalsOpen,\n  getQuestions,\n}: {\n  apiKey: string;\n  modalsOpen: Record<string, boolean>;\n  setModalsOpen: Dispatch<SetStateAction<Record<string, boolean>>>;\n  jobId: number;\n  applicationQuestionTemplateId: number;\n  setSnackbar: StyledSnackbarProps['setSnackbarState'];\n  getQuestions: any;\n}) {\n  const [isCreating, setIsCreating] = useState(false);\n  const [isLoading, setIsLoading] = useState(false);\n  const selectStatusRef = useRef(null);\n  const [systemFields, setSystemFields] = useState([]);\n  const [selectedField, setSelectedField] = useState(null);\n  const [errorField, setErrorField] = useState('');\n\n  const handleClose = () => {\n    setSelectedField(null);\n    setErrorField('');\n    setModalsOpen((prev) => ({ ...prev, addSystemField: false }));\n  };\n\n  const getSystemFields = useCallback(async () => {\n    setIsLoading(true);\n    try {\n      const response = await fetch(`/api/v4/system_fields?form_type=Job`, {\n        method: 'GET',\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      }).then((response) => response.json());\n      setSystemFields(\n        response?.system_fields.map((field: { id: number; title: string }) => `${field.id} - ${field.title}`)\n      )\n    } catch (error) {\n      console.log(error);\n    } finally {\n    setIsLoading(false);\n    }\n  }, [apiKey]);\n\n  useEffect(() => {\n    getSystemFields();\n  }, [getSystemFields]);\n\n  const handleSubmit = async () => {\n    if (!selectedField) {\n      setErrorField('This field is required');\n      return;\n    }\n    setIsCreating(true);\n    try {\n      const data = await Api.addHRQuestionSystemField(\n        { 'X-api-authenticate': apiKey },\n        jobId,\n        selectedField.split(\"-\")[0],\n        applicationQuestionTemplateId,\n      );\n      setSnackbar({\n        message:\n          'Field has been added',\n        state: 'success'\n      });\n      handleClose();\n      setSelectedField(null);\n      setErrorField('');\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsCreating(false);\n      getQuestions();\n    }\n  }\n\n  return (\n    <Modal\n      open={modalsOpen.addSystemField}\n      onClose={handleClose}\n      aria-labelledby=\"add-system-field-modal\"\n    >\n      <Box sx={classes.actionsModalReducedPadding}>\n        <CloseIcon onClick={handleClose} sx={classes.closeIcon} />\n        <Box id=\"add-system-title\" sx={classes.actionModalHeader}>\n          Add system field\n        </Box>\n        <Box\n          sx={classes.modalContent}\n          id=\"add-system-modal-content\"\n          aria-label=\"Add System Field Modal Content\"\n        >\n          <Box role=\"form\" id=\"add-system-form\" aria-label=\"Add System Field form\">\n            <Box sx={{ ...classes.actionModalFormLine, marginTop: '20px' }} ref={selectStatusRef}>\n              <Virtualize\n                value={selectedField}\n                passOptions={systemFields}\n                setValue={(value: string) => {\n                  setSelectedField(value);\n                  setErrorField('');\n                }}\n                passedStyles={{\n                  ...sharedClasses.formAutocomplete,\n                  width: '700px',\n                  marginTop: '20px'\n                }}\n                label=\"Select a system field\"\n                loading={isLoading}\n                loadingText=\"Loading system fields...\"\n              />\n\n              {errorField && <Box sx={{...classes.formError, top: '63px'}}>{errorField}</Box>}\n            </Box>\n          </Box>\n        </Box>\n        <Box sx={classes.modalFooterSmallerSection}>\n          <Button\n            id=\"close-add-system-button\"\n            sx={classes.modalCancelButton}\n            onClick={handleClose}\n          >\n            Cancel\n          </Button>\n          <Button\n            id=\"submit-add-system-button\"\n            type=\"submit\"\n            sx={{ ...classes.modalCreateButton, width: '91px', height: '41px' }}\n            onClick={handleSubmit}\n          >\n            {isCreating ? <CircularProgress size={20} color=\"inherit\" /> : 'Confirm'}\n          </Button>\n        </Box>\n      </Box>\n    </Modal>\n  );\n}\n","import React, { useState, useEffect, useRef, Dispatch, SetStateAction, useCallback } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport Button from '@mui/material/Button';\nimport CloseIcon from '@mui/icons-material/Close';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { Virtualize } from '../../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Switch from '@mui/material/Switch';\nimport { MultilineFormTextField, FormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport FormSelectField from '../../../Components/CustomUIElements/FormSelectField';\nimport { StyledSnackbarProps } from '../../../Components/CustomUIElements/StyledSnackbar';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport IconButton from '@mui/material/IconButton';\nimport InfoIcon from '@mui/icons-material/Info';\nimport ClearIcon from '@mui/icons-material/Clear';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\nimport Api from '../../../Job/API';\nimport { useFieldChoiceList } from '../../../hooks/useFieldChoiceList';\n\nconst fieldTypeOptions = [\n  \"Select\",\n  \"Date\",\n  \"Text\",\n  \"Radio Button\",\n  \"Rank\",\n  \"Checkbox\",\n  \"Textarea\",\n]\n\nconst fieldTypeValues = {\n  \"Select\": 'select_field',\n  \"CSV Data Lookup\": 'csv_data_lookup_field',\n  \"Date\": 'date_field',\n  \"Text\": 'text_field',\n  \"Radio Button\": 'radio_button_field',\n  \"Rank\": 'rank_field',\n  \"Job Reference Lookup\": 'job_reference_lookup_field',\n  \"Availability\": 'availability_field',\n  \"Checkbox\": 'check_box_field',\n  \"Textarea\": 'text_area_field',\n}\n\nconst Date = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n\nexport default function NewField({\n  apiKey,\n  jobId,\n  applicationQuestionTemplateId,\n  setSnackbar,\n  modalsOpen,\n  setModalsOpen,\n  editingQuestion,\n  getQuestions,\n  canEnable\n}: {\n  apiKey: string;\n  modalsOpen: Record<string, boolean>;\n  setModalsOpen: Dispatch<SetStateAction<Record<string, boolean>>>;\n  jobId: number;\n  applicationQuestionTemplateId: number;\n  setSnackbar: StyledSnackbarProps['setSnackbarState'];\n  editingQuestion?: any;\n  getQuestions: any;\n  canEnable: boolean;\n}) {\n  const [isCreating, setIsCreating] = useState(false);\n  const [fieldType, setFieldType] = useState('');\n  const [label, setLabel]= useState(\"\");\n  const [enabledSwitch, setEnabledSwitch] = useState(true);\n  const [weekDuration, setWeekDuration] = useState('weekly');\n  const [weekStartDay, setWeekStartDay] = useState(0);\n  const [headingOne, setHeadingOne] = useState('');\n  const [headingTwo, setHeadingTwo] = useState('');\n  const [allowBreak, setAllowBreak] = useState(false);\n  const [errorLabel, setErrorLabel] = useState('');\n  const [errorField, setErrorField] = useState('');\n  const [errorChoices, setErrorChoices] = useState('');\n  const [enableable, setEnableable] = useState(false);\n  const { choiceList, setChoiceList, addChoice, removeChoice, clearChoices, updateChoice } =\n    useFieldChoiceList();\n\n  const labelRef = useRef<HTMLInputElement>(null);\n  const fieldTypeRef = useRef<HTMLInputElement>(null);\n  const choicesRef = useRef<HTMLInputElement>(null);\n\n  const getKeyByValue = (object, value) => {\n    return Object.keys(object).find(key => object[key] === value);\n  }\n\n  const setDefaultValue = useCallback(async () => {\n    if (editingQuestion) {\n      setFieldType(getKeyByValue(fieldTypeValues, editingQuestion.field_type));\n      setLabel(editingQuestion.title);\n      setEnabledSwitch(editingQuestion.enabled);\n      setChoiceList(editingQuestion.field_choices);\n      setEnableable(editingQuestion.enabled);\n    } else {\n      setEnableable(canEnable);\n    }\n  }, [canEnable, editingQuestion]);\n\n  const handleClose = () => {\n    setModalsOpen((prev) => ({ ...prev, newField: false }));\n    clearData();\n  };\n\n  const handleSubmit = async (jobId: number) => {\n    if(!fieldType || !label) {\n      if (!fieldType) {\n        fieldTypeRef?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n        setErrorField('This field is required');\n      } else { \n        labelRef?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n        setErrorLabel('This field is required');\n      }\n      return;\n    }\n    setIsCreating(true);\n    \n    let fieldObject = {\n      title: label,\n      enabled: enableable && enabledSwitch,\n      field_type: fieldTypeValues[fieldType],\n    }\n\n    if (['Select', 'Rank', 'Checkbox', 'Radio Button'].includes(fieldType)) {\n      let isValid = true;\n      choiceList.map((choice, index) => {\n        if (!choice?.name) {\n          choicesRef?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n          setErrorChoices('All field choices must each have a value');\n          isValid = false;\n        }\n        choice.position = index;\n      });\n      if (!isValid) return;\n      const jsonString = JSON.stringify(Object.assign({}, choiceList));\n      const attributes = JSON.parse(jsonString);\n      fieldObject['field_choices_attributes'] = attributes\n    }\n    else if (['Availability'].includes(fieldType)) {\n      fieldObject['availability_config_attributes'] = {\n        'week_duration': weekDuration.toLowerCase(),\n        'week_start_day': Date.indexOf(weekStartDay),\n        'heading_1': headingOne,\n        'heading_2': headingTwo,\n        'allow_break': allowBreak,\n      }\n    }\n\n    try {\n      if (editingQuestion) {\n        const data = await Api.putHRQuestion(\n          { 'X-api-authenticate': apiKey },\n          editingQuestion.id,\n          jobId,\n          applicationQuestionTemplateId,\n          {\n            field: fieldObject\n          }\n        );\n        setSnackbar({\n          message:\n            'Field has been updated',\n          state: 'success'\n        });\n      }\n      else {\n        const data = await Api.newHRField(\n          { 'X-api-authenticate': apiKey },\n          jobId,\n          applicationQuestionTemplateId,\n          {\n            field: fieldObject\n          }\n        );\n        setSnackbar({\n          message: \n            'Field has been created',\n          state: 'success'\n        });\n        clearData();\n      }\n      handleClose();\n    } catch (error) {\n      console.log(error);\n      setSnackbar({\n        message: error.errors,\n        state: 'error'\n      });\n    } finally {\n      setIsCreating(false);\n      getQuestions();\n    }\n  };\n\n  const handleChoiceInput = (e, index: number) => {\n    const { value } = e.target;\n    updateChoice(value, index);\n  };\n\n  const clearData = () => {\n    setFieldType('');\n    setLabel('');\n    setEnabledSwitch(true);\n    clearChoices();\n    setWeekDuration('weekly');\n    setWeekStartDay(0);\n    setHeadingOne('');\n    setHeadingTwo('');\n    setAllowBreak(false);\n    setErrorLabel('');\n    setErrorField('');\n    setErrorChoices('');\n  };\n\n  useEffect(() => {\n    setDefaultValue();\n  }, [setDefaultValue, editingQuestion]);\n\n  return (\n    <Modal\n      open={modalsOpen.newField}\n      onClose={() => handleClose(true)}\n      aria-labelledby=\"new-field-modal\"\n    >\n      <Box sx={classes.actionsModalReducedPadding}>\n        <Box sx={classes.modalWrapper}>\n          <CloseIcon onClick={() => handleClose(true)} sx={classes.closeIcon} />\n          <Box id=\"new-field-title\" sx={classes.actionModalHeader}>\n            New field\n          </Box>\n          <Box\n            sx={classes.modalContent}\n            id=\"new-field-modal-content\"\n            aria-label=\"New Field Modal Content\"\n          >\n            <Box role=\"form\" id=\"new-field-form\" aria-label=\"New Field form\">\n              <Box sx={{ ...classes.actionModalFormLine, marginTop: '20px' }} ref={fieldTypeRef}>\n                <Virtualize\n                  value={fieldType}\n                  passOptions={fieldTypeOptions}\n                  setValue={(value: string) => {\n                    setFieldType(value);\n                    setErrorField('');\n                  }}\n                  passedStyles={{\n                    ...sharedClasses.formAutocomplete,\n                    width: '300px',\n                    marginTop: '20px'\n                  }}\n                  label=\"Field type\"\n                />\n                {errorField && <Box sx={{...classes.formError, top: '63px'}}>{errorField}</Box>}\n              </Box>\n            </Box>\n            <Box sx={{ marginLeft: '15px' }}>\n              <Box sx={classes.modalFormLine}>\n                <MultilineFormTextField\n                  value={label}\n                  onChange={(e) => { \n                    setErrorLabel('');\n                    setLabel(e.target.value)\n                  }}\n                  styles={{ width: '600px', marginTop: '20px' }}\n                  rows={6}\n                  innerRef={labelRef}\n                  error={errorLabel}\n                  label={'Field label'}\n                />\n              </Box>\n            </Box>\n            {!enableable && (\n              <Box sx={{...classes.noticeContainer, maxWidth: '500px', marginTop: '0px'}}>\n                <Box sx={classes.noticeHeader}>\n                    <InfoIcon sx={classes.noticeIcon} />\n                    Only one question can be enabled at a time.\n                </Box>\n              </Box>\n            )}\n            <Box sx={classes.checkboxContainer} id=\"enabled-filter\">\n              <FormControlLabel\n                sx={\n                  !enableable && enabledSwitch\n                    ? { ...classes.switchLabels, ...classes.labelActive }\n                    : classes.switchLabels\n                }\n                control={\n                  <Switch\n                    sx={enableable && enabledSwitch ? classes.switchActive : classes.switch}\n                    checked={enableable && enabledSwitch}\n                    onChange={() => setEnabledSwitch(!enabledSwitch)}\n                    disabled={!enableable}\n                  />\n                }\n                label=\"Enabled\"\n                labelPlacement=\"end\"\n              />\n            </Box>\n            {['Select', 'Rank', 'Checkbox', 'Radio Button'].includes(fieldType) &&\n              <Box sx={classes.addChoiceContainer} ref={choicesRef}>\n                <Box sx={classes.addChoiceHead}>\n                  <Box id=\"add-choice-title\" sx={classes.addChoiceLabel}>\n                    Choices\n                  </Box>\n                  <Button\n                    id=\"add-choice-button\"\n                    sx={classes.modalAddChoiceButton}\n                    onClick={addChoice}\n                  >\n                    Add choice\n                  </Button>\n                </Box>\n                {choiceList.map((choice, index) => \n                  (!(choice?._destroy === 1) &&\n                    <Box\n                      key={index}\n                      sx={classes.choice}\n                    >\n                      <FormTextField\n                        value={choice.name}\n                        onChange={(e) => handleChoiceInput(e, index)}\n                        required={true}\n                        styles={{ width: '250px' }}\n                      />\n                      <IconButton\n                        onClick={() => removeChoice(index)}\n                        sx={{ marginLeft: '35px' }}\n                      >\n                        <ClearIcon sx={{ color: theme.palette.error.main }} />\n                      </IconButton>\n                    </Box>\n                  )\n                )}\n                {errorChoices && <Box sx={{...classes.inlineError}}>{errorChoices}</Box>}\n              </Box>\n            }\n            {['Availability'].includes(fieldType) &&\n              <Box sx={classes.availabilityContainer}>\n                <Box id=\"availability-config-title\" sx={classes.addChoiceLabel}>\n                  Availability Config\n                </Box>\n                <Box\n                  sx={classes.config}\n                >\n                  <FormSelectField\n                    options={['Weekly', 'Fortnightly']}\n                    defaultValue=\"Weekly\"\n                    value={weekDuration}\n                    onChange={(value) => setWeekDuration(value)}\n                    label={'How long is your work period?'}\n                    styles={{ width: '290px', marginBottom: '15px' }}\n                    required={true}\n                  />\n                  <FormSelectField\n                    options={Date}\n                    defaultValue=\"Sunday\"\n                    value={weekStartDay}\n                    onChange={(value) => {setWeekStartDay(value)}}\n                    label={'When does the work period start?'}\n                    styles={{ width: '290px', marginBottom: '15px' }}\n                  />\n                  <FormTextField\n                    label='Heading 1'\n                    value={headingOne}\n                    onChange={(e) => setHeadingOne(e.target.value)}\n                    required={false}\n                    styles={{ width: '290px', marginBottom: '15px' }}\n                  />\n                  <FormTextField\n                    label='Heading 2'\n                    value={headingTwo}\n                    onChange={(e) => setHeadingTwo(e.target.value)}\n                    required={false}\n                    styles={{ width: '290px', marginBottom: '15px' }}\n                  />\n                  <FormSelectField\n                    options={['Yes', 'No']}\n                    defaultValue=\"No\"\n                    value={allowBreak}\n                    onChange={(value) => setAllowBreak(value)}\n                    label={'Allow break?'}\n                    styles={{ width: '290px', marginBottom: '15px' }}\n                  />\n                </Box>\n              </Box>\n            }\n            <Box sx={classes.modalFooter}>\n              <Button\n                id=\"close-new-field-button\"\n                sx={classes.modalCancelButton}\n                onClick={() => handleClose(true)}\n              >\n                Cancel\n              </Button>\n              <Button\n                id=\"submit-new-field-button\"\n                type=\"submit\"\n                sx={{ ...classes.modalCreateButton, width: '91px', height: '41px' }}\n                onClick={() => handleSubmit(jobId)}\n              >\n                {isCreating ? <CircularProgress size={20} color=\"inherit\" /> : 'Confirm'}\n              </Button>\n            </Box>\n          </Box>\n        </Box>\n      </Box>\n    </Modal>\n  );\n}\n","import React from 'react';\n\nexport default function NewSystemFieldSVG() {\nreturn (<svg id=\"MDI_alpha-s-box\" data-name=\"MDI / alpha-s-box\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20.719\" height=\"20.719\" viewBox=\"0 0 18.719 18.719\">\n<g id=\"Boundary\" fill=\"#666\" stroke=\"rgba(0,0,0,0)\" strokeWidth=\"1\" opacity=\"0\">\n  <rect width=\"19.719\" height=\"19.719\" stroke=\"none\"/>\n  <rect x=\"0.5\" y=\"0.5\" width=\"18.719\" height=\"18.719\" fill=\"none\"/>\n</g>\n<path id=\"Path_alpha-s-box\" data-name=\"Path / alpha-s-box\" d=\"M9.1,6.049A1.524,1.524,0,0,0,7.573,7.573V9.1A1.524,1.524,0,0,0,9.1,10.622h1.524v1.524H7.573V13.67h3.049a1.524,1.524,0,0,0,1.524-1.524V10.622A1.524,1.524,0,0,0,10.622,9.1H9.1V7.573h3.049V6.049H9.1M4.524,3h10.67a1.524,1.524,0,0,1,1.524,1.524v10.67a1.524,1.524,0,0,1-1.524,1.524H4.524A1.524,1.524,0,0,1,3,15.194V4.524A1.524,1.524,0,0,1,4.524,3Z\" transform=\"translate(0)\" fill=\"#666\"/>\n</svg>\n)\n}\n","import React from 'react';\n\nexport default function NoQuestionSVG() {\nreturn (<svg id=\"Group_301\" data-name=\"Group 301\" xmlns=\"http://www.w3.org/2000/svg\" xmlnsXlink=\"http://www.w3.org/1999/xlink\" width=\"198.688\" height=\"109.364\" viewBox=\"0 0 198.688 109.364\">\n<defs>\n  <clipPath id=\"clip-path\">\n    <rect id=\"Rectangle_630\" data-name=\"Rectangle 630\" width=\"198.688\" height=\"109.364\" fill=\"none\"/>\n  </clipPath>\n</defs>\n<g id=\"Group_300\" data-name=\"Group 300\" clip-path=\"url(#clip-path)\">\n  <path id=\"Path_99\" data-name=\"Path 99\" d=\"M178.007,109.363a15.955,15.955,0,0,1-2.128-.538c-8.081-3.485-16.176-6.937-24.21-10.525a12.7,12.7,0,0,0-7.538-.879c-20.632,3.2-40.884,2.114-60.383-6.074-2.627-1.1-5.118-2.525-7.726-3.678a7.515,7.515,0,0,0-3.221-.751c-6.91.31-13.818.343-20.611-1.036a10.864,10.864,0,0,0-6.722.828C39.33,89.3,33.173,91.835,27.02,94.383c-.594.246-1.213.431-2.217.783.291-.774.425-1.19.6-1.586,1.174-2.653,2.411-5.28,3.514-7.962a28.38,28.38,0,0,0,1.347-4.352c.487-2.092.3-2.393-1.519-3.457a48.284,48.284,0,0,1-13.5-11.286c-9.034-11.216-8.668-25.453.892-36.416,6.68-7.661,15.164-12.439,24.689-15.541a86.715,86.715,0,0,1,34.94-3.774,5.131,5.131,0,0,0,2.615-.35A100.8,100.8,0,0,1,117.6.219a109.089,109.089,0,0,1,45.412,6.6c9.32,3.5,17.828,8.368,24.879,15.506,5.655,5.725,9.881,12.318,11.55,20.312,2.172,10.4-.511,19.7-6.646,28.14-5.042,6.936-11.621,12.126-19,16.368-1.916,1.1-2.391,1.611-1.825,3.773,1.154,4.406,2.521,8.759,3.889,13.105.523,1.66,1.289,3.242,2.139,5.34M123.552,55.115a40.479,40.479,0,0,0,.843-4.891c.426-8.084-2.724-14.854-8.062-20.672-5.986-6.523-13.5-10.738-21.737-13.717a80.266,80.266,0,0,0-34.8-4.362c-1.883.167-3.749.53-5.623.8-3.667.776-7.4,1.313-10.988,2.373C32.5,17.812,22.837,22.764,15.919,31.867c-6.134,8.071-7.982,16.969-4.069,26.578,3.417,8.394,9.872,14.051,17.5,18.507,2.228,1.3,2.654,1.985,2.088,4.485a11.211,11.211,0,0,1-.515,1.779c-1.262,3.078-2.554,6.144-3.828,9.218-.132.319-.216.658-.376,1.155.524-.165.846-.241,1.147-.366,5.754-2.387,11.476-4.855,17.275-7.127a14.69,14.69,0,0,1,5.625-1.173c3.164.1,6.305,1.012,9.467,1.078a164.513,164.513,0,0,0,17.935-.284,66,66,0,0,0,22.659-6.47c7.312-3.494,13.848-7.95,18.564-14.7a22.672,22.672,0,0,0,4.159-9.434M155.265,5.2c-.682-.21-1.357-.44-2.045-.626a111.376,111.376,0,0,0-41.729-3.087,93.684,93.684,0,0,0-31,8.807c-.386.189-.756.409-1.133.614a78.251,78.251,0,0,1,29.4,10.781,49.949,49.949,0,0,1,10.02,9.064c6.744,8.525,8.954,17.855,4.721,28.175-2.558,6.236-6.964,11.074-12.3,15.079C103.31,79.916,94.366,83.4,84.795,85.374c-2.626.543-5.29.9-8.144,1.372.427.284.678.481.954.629a83.244,83.244,0,0,0,16.358,6.671c17.232,4.979,34.67,5.451,52.278,2.36a7.11,7.11,0,0,1,3.735.337c6.867,2.812,13.676,5.765,20.5,8.68,1.768.755,3.522,1.542,5.559,2.436-.242-.716-.364-1.111-.508-1.5-.915-2.451-1.968-4.86-2.718-7.36-.844-2.813-1.486-5.692-2.078-8.571-.333-1.619.431-2.7,1.943-3.55,8.354-4.714,15.714-10.6,20.811-18.88,6.733-10.942,7.457-22.264,1.653-33.835a47.287,47.287,0,0,0-13.346-15.794A73.938,73.938,0,0,0,155.265,5.2\" transform=\"translate(-6.222 0)\" fill=\"#cfcfcf\"/>\n  <path id=\"Path_100\" data-name=\"Path 100\" d=\"M51.167,17.173c.035.78.029,1.565.114,2.34.263,2.4.581,4.8.825,7.208a3.859,3.859,0,0,1-.29,1.216c-.283-.293-.778-.56-.816-.882q-.515-4.374-.868-8.768c-.033-.4.3-.83.458-1.246l.577.133\" transform=\"translate(-35.816 -12.174)\" fill=\"#cfcfcf\"/>\n  <path id=\"Path_101\" data-name=\"Path 101\" d=\"M16.047,35.189c.335.126.81.151.982.392,1.7,2.377,3.349,4.79,5.187,7.446-.551-.132-1.062-.1-1.294-.334A29.017,29.017,0,0,1,15.8,35.613l.25-.424\" transform=\"translate(-11.286 -25.141)\" fill=\"#cfcfcf\"/>\n  <path id=\"Path_102\" data-name=\"Path 102\" d=\"M637.183,11.87c-.894,3.094-1.751,6.073-2.634,9.044-.023.077-.335.068-.511.1-.481-2.453,1.659-8.781,3.144-9.143\" transform=\"translate(-452.942 -8.481)\" fill=\"#868686\"/>\n  <path id=\"Path_103\" data-name=\"Path 103\" d=\"M651.661,35.327c.979-2.246,6.478-7.29,8.34-7.471l-8.08,7.742Z\" transform=\"translate(-465.582 -19.902)\" fill=\"#858585\"/>\n  <path id=\"Path_104\" data-name=\"Path 104\" d=\"M0,66.63l8.5,3.86C7.357,71.1,1.385,68.682,0,66.63\" transform=\"translate(0 -47.604)\" fill=\"#cfcfcf\"/>\n  <path id=\"Path_105\" data-name=\"Path 105\" d=\"M661.691,63.983a29.345,29.345,0,0,1,9.664-1.949l.08.355-9.642,1.977-.1-.384\" transform=\"translate(-472.748 -44.32)\" fill=\"#898989\"/>\n  <path id=\"Path_106\" data-name=\"Path 106\" d=\"M72.445,40.118c1.874-.273,3.74-.636,5.623-.8a80.266,80.266,0,0,1,34.8,4.362c8.235,2.979,15.752,7.194,21.737,13.717,5.338,5.818,8.488,12.588,8.062,20.672a40.428,40.428,0,0,1-.842,4.891c-.4.7-.852,1.378-1.175,2.112a28.4,28.4,0,0,1-6.6,9.057c-6.94,6.617-15.341,10.649-24.538,13.067a73.92,73.92,0,0,1-22.006,2.388c-4.517-.188-9.03-.191-13.467-1.158a7.748,7.748,0,0,0-4.835.6c-5.12,2.174-10.26,4.3-15.4,6.442-1.179.49-2.376.937-3.861,1.521.814-1.909,1.55-3.4,2.091-4.96.962-2.771,1.861-5.568,2.672-8.387.305-1.061-.222-1.823-1.283-2.386A41.608,41.608,0,0,1,40.64,90.714c-4.67-5.7-7.136-12.088-6.133-19.525.909-6.742,4.261-12.264,9.1-16.873a51.477,51.477,0,0,1,19.017-11.23c3.23-1.114,6.542-1.987,9.817-2.969m3.119,12.544c-4.191,2.5-7.05,5.951-7.78,10.916-.429,2.917,1.072,4.946,4.014,5.436a4.853,4.853,0,0,0,5.8-3.14c1.039-2.716,2.031-5.435,4.273-7.451.821-.235,1.63-.53,2.464-.7a7.26,7.26,0,0,1,7.808,3.454c1.462,2.724.993,5.25-1.617,7.838-1.719,1.7-3.568,3.277-5.365,4.9-3.337,3.017-5.4,6.6-5.048,11.27a4.165,4.165,0,0,0,3.946,4.271,4.764,4.764,0,0,0,5.58-4.079,12.168,12.168,0,0,1,4.4-7.414,81.662,81.662,0,0,0,6.116-5.763,11.352,11.352,0,0,0,3.459-7.47,13.626,13.626,0,0,0-8.927-13.415,23.066,23.066,0,0,0-10.216-1.458,18.648,18.648,0,0,0-8.907,2.8m9.477,50.33c3.465-.02,6.013-2.373,5.976-5.517a5.392,5.392,0,0,0-5.393-5.313,5.91,5.91,0,0,0-6.243,5.7c.041,3,2.417,5.154,5.66,5.135\" transform=\"translate(-24.496 -27.842)\" fill=\"#eaeaea\"/>\n  <path id=\"Path_107\" data-name=\"Path 107\" d=\"M278.746,34.7a39.669,39.669,0,0,1,5.478,2.955,76,76,0,0,1,7.185,6.238,28.561,28.561,0,0,1,7.992,14.06,31.812,31.812,0,0,1,.688,5.5c.068,1.112.05,2.1,1.43,2.353.138.026.241.25.381.405-.7.228-1.552.253-1.913.685-.4.48-.256,1.374-.527,2.013-1.288,3.047-2.251,6.32-4.033,9.054-5.784,8.872-14.028,14.823-23.7,18.928a52.381,52.381,0,0,1-12.51,3.729,10.313,10.313,0,0,0-1.113.244,3.18,3.18,0,0,0-.569.362,22.5,22.5,0,0,0,2.242.766c5.643,1.266,11.276,2.59,16.945,3.728,6.861,1.378,13.807,1.148,20.74.713,3.5-.22,7-.568,10.491-.914,1.27-.126,2.52-.547,3.787-.591a9.26,9.26,0,0,1,3.731.4c5.406,2.223,10.755,4.587,16.1,6.947,2.74,1.208,5.436,2.516,8.157,3.768a7.475,7.475,0,0,0,.994.27c-1.016-2.866-2.122-5.491-2.868-8.215-.849-3.1-1.409-6.278-2.03-9.436a2.594,2.594,0,0,1,1.614-2.876,60.572,60.572,0,0,0,14.738-11.333c4.774-5.129,8.59-10.84,9.857-17.844a41.682,41.682,0,0,0,.518-9.355,28.073,28.073,0,0,0-1.508-7.495,38.067,38.067,0,0,0-3.383-7.2,41.528,41.528,0,0,0-4.621-6.312,52,52,0,0,0-5.778-5.484A66.884,66.884,0,0,0,326.75,19.247a6.883,6.883,0,0,1-1.492-1.035,73.942,73.942,0,0,1,26.53,13.174A47.286,47.286,0,0,1,365.134,47.18c5.8,11.571,5.08,22.893-1.653,33.835-5.1,8.283-12.457,14.166-20.811,18.88-1.513.853-2.276,1.931-1.943,3.55.592,2.879,1.234,5.758,2.077,8.571.75,2.5,1.8,4.909,2.718,7.36.144.386.266.781.508,1.5-2.037-.894-3.792-1.681-5.559-2.437-6.825-2.915-13.634-5.868-20.5-8.68a7.113,7.113,0,0,0-3.735-.337c-17.608,3.092-35.046,2.619-52.278-2.36a83.233,83.233,0,0,1-16.358-6.671c-.277-.149-.527-.346-.955-.629,2.853-.475,5.518-.83,8.144-1.372,9.572-1.978,18.516-5.458,26.394-11.367,5.34-4.006,9.747-8.843,12.3-15.08,4.234-10.32,2.023-19.65-4.721-28.175a49.938,49.938,0,0,0-10.02-9.063\" transform=\"translate(-176.216 -13.012)\" fill=\"#eee\"/>\n  <path id=\"Path_108\" data-name=\"Path 108\" d=\"M56.887,42.99c-3.275.982-6.588,1.855-9.817,2.969a51.471,51.471,0,0,0-19.017,11.23c-4.842,4.609-8.195,10.131-9.1,16.873-1,7.436,1.463,13.821,6.133,19.525a41.608,41.608,0,0,0,12.789,10.536c1.061.563,1.588,1.325,1.283,2.386-.811,2.819-1.71,5.616-2.672,8.387-.541,1.559-1.278,3.05-2.091,4.96,1.485-.583,2.682-1.03,3.861-1.521,5.136-2.136,10.276-4.267,15.4-6.442a7.748,7.748,0,0,1,4.835-.6c4.437.966,8.95.97,13.467,1.157a73.91,73.91,0,0,0,22.006-2.388c9.2-2.418,17.6-6.45,24.538-13.067a28.4,28.4,0,0,0,6.6-9.057c.323-.734.78-1.41,1.175-2.112a22.679,22.679,0,0,1-4.159,9.434c-4.716,6.749-11.252,11.2-18.563,14.7a66.008,66.008,0,0,1-22.659,6.47,164.585,164.585,0,0,1-17.935.283c-3.161-.066-6.3-.978-9.467-1.078a14.7,14.7,0,0,0-5.625,1.173c-5.8,2.273-11.521,4.74-17.275,7.127-.3.125-.623.2-1.147.366.16-.5.243-.836.376-1.155,1.274-3.073,2.567-6.139,3.828-9.218a11.268,11.268,0,0,0,.515-1.779c.566-2.5.141-3.184-2.088-4.485-7.632-4.455-14.087-10.112-17.5-18.506-3.912-9.61-2.065-18.508,4.069-26.578,6.919-9.1,16.582-14.055,27.266-17.218,3.583-1.061,7.321-1.6,10.988-2.373\" transform=\"translate(-8.937 -30.714)\" fill=\"#e3e3e3\"/>\n  <path id=\"Path_109\" data-name=\"Path 109\" d=\"M480.74,81.844a26.778,26.778,0,0,1,.234-3.226,6.128,6.128,0,0,1,8.45-4.492,3.874,3.874,0,0,1,2.487,3.088,33.693,33.693,0,0,1,.5,6.789c-.5,7.3-1.214,14.583-1.889,21.869a9.155,9.155,0,0,1-.687,2.6,3.685,3.685,0,0,1-3.606,2.316,3.258,3.258,0,0,1-3.294-2.653,41.578,41.578,0,0,1-.824-6.055c-.5-6.729-.916-13.464-1.367-20.24m1.114-.535c.554,8.165,1.035,15.8,1.626,23.435a10.628,10.628,0,0,0,1.065,3.946,2.117,2.117,0,0,0,3.938-.054,8.416,8.416,0,0,0,.867-2.986c.616-6.244,1.249-12.49,1.675-18.748a49.018,49.018,0,0,0-.17-8.79,3.681,3.681,0,0,0-3.957-3.536,4.416,4.416,0,0,0-4.635,3.443,24.248,24.248,0,0,0-.408,3.291\" transform=\"translate(-343.467 -52.605)\" fill=\"#cfcfcf\"/>\n  <path id=\"Path_110\" data-name=\"Path 110\" d=\"M492.608,227.773a5.78,5.78,0,0,1-5.953,5.654,5.556,5.556,0,0,1-5.732-5.5,5.87,5.87,0,0,1,5.872-5.759,5.682,5.682,0,0,1,5.812,5.6m-10.517.049a4.857,4.857,0,0,0,4.866,4.781,4.683,4.683,0,0,0,4.493-4.641,4.976,4.976,0,0,0-4.891-4.95,4.693,4.693,0,0,0-4.468,4.81\" transform=\"translate(-343.598 -158.729)\" fill=\"#cfcfcf\"/>\n  <path id=\"Path_111\" data-name=\"Path 111\" d=\"M199.046,76.947a23.056,23.056,0,0,1,10.215,1.458,13.626,13.626,0,0,1,8.927,13.415,11.351,11.351,0,0,1-3.459,7.47,81.728,81.728,0,0,1-6.116,5.763,12.167,12.167,0,0,0-4.4,7.413,4.765,4.765,0,0,1-5.58,4.079,4.165,4.165,0,0,1-3.946-4.271c-.348-4.673,1.711-8.253,5.048-11.27,1.8-1.625,3.646-3.2,5.365-4.9,2.61-2.588,3.079-5.114,1.617-7.838a7.26,7.26,0,0,0-7.808-3.454c-.835.165-1.644.46-2.464.7,0-.081,0-.161,0-.241a9.386,9.386,0,0,1,8.652-.054,6.106,6.106,0,0,1,2.554,8.945,15.6,15.6,0,0,1-2.528,2.875c-1.816,1.744-3.756,3.361-5.547,5.128a12.444,12.444,0,0,0-3.839,8.361,8.688,8.688,0,0,0,.357,2.939,3.661,3.661,0,0,0,3.689,2.6,2.781,2.781,0,0,0,3.055-2.622c.663-4.6,3.6-7.48,6.924-10.213a41.965,41.965,0,0,0,3.871-3.783c6.152-6.559,3.441-15.257-2.833-19.251a20.844,20.844,0,0,0-11.155-2.943l-.6-.3\" transform=\"translate(-139.07 -54.925)\" fill=\"#cfcfcf\"/>\n  <path id=\"Path_112\" data-name=\"Path 112\" d=\"M197.872,236.079c-3.243.019-5.619-2.136-5.66-5.135a5.91,5.91,0,0,1,6.243-5.7,5.393,5.393,0,0,1,5.393,5.313c.037,3.144-2.511,5.5-5.976,5.517m4.828-5.231a5,5,0,0,0-5-5.094c-2.41.035-4.251,2.148-4.293,4.927a5.061,5.061,0,0,0,4.96,5.018c2.408.038,4.339-2.122,4.335-4.85\" transform=\"translate(-137.326 -160.929)\" fill=\"#cfcfcf\"/>\n  <path id=\"Path_113\" data-name=\"Path 113\" d=\"M155.431,103.273c-2.942-.49-4.443-2.519-4.014-5.436.73-4.965,3.59-8.416,7.781-10.916l.3.3c-3.309,2.287-5.8,5.177-6.729,9.2-.741,3.214.1,5.014,3.021,6.55l-.361.306\" transform=\"translate(-108.129 -62.101)\" fill=\"#cfcfcf\"/>\n  <path id=\"Path_114\" data-name=\"Path 114\" d=\"M165.656,117.084l.361-.306c2.466.106,3.437-.5,4.367-2.775.36-.88.649-1.789,1.016-2.665a8.91,8.91,0,0,1,4.329-5.086l0,.241c-2.242,2.016-3.234,4.735-4.273,7.451a4.854,4.854,0,0,1-5.8,3.14\" transform=\"translate(-118.354 -75.912)\" fill=\"#cfcfcf\"/>\n  <path id=\"Path_115\" data-name=\"Path 115\" d=\"M179.148,80.217l-.3-.3a18.645,18.645,0,0,1,8.907-2.8l.6.3a21.774,21.774,0,0,0-9.2,2.8\" transform=\"translate(-127.777 -55.101)\" fill=\"#cfcfcf\"/>\n  <path id=\"Path_116\" data-name=\"Path 116\" d=\"M484.642,83.67a24.238,24.238,0,0,1,.408-3.291,4.417,4.417,0,0,1,4.635-3.443,3.681,3.681,0,0,1,3.957,3.536,49.012,49.012,0,0,1,.17,8.79c-.426,6.259-1.059,12.5-1.675,18.748A8.418,8.418,0,0,1,491.27,111a2.117,2.117,0,0,1-3.938.054,10.628,10.628,0,0,1-1.065-3.946c-.59-7.631-1.071-15.27-1.626-23.435\" transform=\"translate(-346.254 -54.966)\" fill=\"#eaeaea\"/>\n  <path id=\"Path_117\" data-name=\"Path 117\" d=\"M485.013,229.931a4.693,4.693,0,0,1,4.468-4.81,4.976,4.976,0,0,1,4.891,4.95,4.683,4.683,0,0,1-4.493,4.641,4.857,4.857,0,0,1-4.866-4.781\" transform=\"translate(-346.519 -160.839)\" fill=\"#eaeaea\"/>\n</g>\n</svg>)\n}\n","import type { PointerEvent } from \"react\";\nimport { PointerSensor } from \"@dnd-kit/core\";\n\n/**\n * An extended \"PointerSensor\" that prevent some\n * interactive html element(button, input, textarea, select, option...) from dragging\n */\n\nexport class QuestionCardSensor extends PointerSensor {\n  static activators = [\n    {\n      eventName: \"onPointerDown\" as any,\n      handler: ({ nativeEvent: event }: PointerEvent) => {\n        if (\n          !event.isPrimary ||\n          event.button !== 0 ||\n          isInteractiveElement(event.target as Element)\n        ) {\n          return false;\n        }\n\n        return true;\n      },\n    },\n  ];\n}\n\nfunction isInteractiveElement(element: Element | null) {\n  if (element?.dataset?.testid === \"DragIndicatorIcon\" \n      || element?.className?.baseVal.toLowerCase().includes(\"select\")\n    ) return false;\n\n  const interactiveElements = [\n      \"button\",\n      \"input\",\n      \"textarea\",\n      \"select\",\n      \"option\",\n      \"icon\",\n      \"svg\",\n      \"path\",\n      \"ul\",\n      \"li\",\n      \"span\",\n  ];\n  if (\n      element?.tagName &&\n      interactiveElements.includes(element.tagName.toLowerCase())\n  ) {\n      return true;\n  }\n\n  return false;\n}\n","import React, { useState, Dispatch, SetStateAction, useEffect, useCallback } from 'react';\nimport { useSortable } from '@dnd-kit/sortable';\nimport Box from '@mui/material/Box';\nimport { CSS } from '@dnd-kit/utilities';\nimport { classes } from './styles';\nimport QuestionFieldViewer from '../../Components/Utilities/QuestionFieldViewer';\nimport DragIndicatorIcon from '@mui/icons-material/DragIndicator';\nimport Switch from '@mui/material/Switch';\nimport { FormTextField } from '../../Components/CustomUIElements/FormTextField';\nimport IconButton from '@mui/material/IconButton';\nimport EditIcon from '@mui/icons-material/Edit';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport Api from '../../Job/API';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport { StyledSnackbarProps } from '../../Components/CustomUIElements/StyledSnackbar';\nimport { IApplicantQuestion } from '../types';\n\nexport default function SortableItem({\n  questions,\n  setQuestions,\n  getQuestions,\n  index,\n  jobId,\n  applicationQuestionTemplateId,\n  apiKey,\n  setModalsOpen,\n  editingQuestion,\n  setEditingQuestion,\n  setSnackbar,\n} : {\n  questions: IApplicantQuestion[];\n  setQuestions: Dispatch<SetStateAction<IApplicantQuestion[]>>;\n  getQuestions: any;\n  index: number;\n  jobId: number;\n  applicationQuestionTemplateId: number;\n  apiKey: string;\n  setModalsOpen: Dispatch<SetStateAction<Record<string, boolean>>>;\n  editingQuestion: IApplicantQuestion;\n  setEditingQuestion: Dispatch<SetStateAction<Record<IApplicantQuestion, null>>>;\n  setSnackbar: StyledSnackbarProps['setSnackbarState'];\n}) {\n  const [isDialogOpen, setIsDialogOpen] = useState(false);\n  const [isDeleting, setIsDeleting] = useState(false);\n\n  const deleteQuestion = async (url: string, questionId: number) => {\n    setIsDeleting(true);\n    try {\n      const response = await Api.deleteHRQuestion({ 'X-api-authenticate': apiKey }, questionId, jobId, applicationQuestionTemplateId);\n      if (response.errors) {\n        setSnackbar({\n          message:\n            'You do not have right to delete this field',\n          state: 'error'\n        });\n      }\n      else {\n        setSnackbar({\n          message:\n            'Field has been deleted',\n          state: 'success'\n        });\n      }\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsDeleting(false);\n      setIsDialogOpen(false);\n      getQuestions();\n    }\n  };\n\n  const handleUpdateActions = async (action: keyof typeof questions[0]) => {\n    const newQuestions = [...questions];\n    newQuestions[index][action] = !questions[index][action];\n    setQuestions(newQuestions);\n    try {\n      await fetch(`/api/v4/fields/${questions[index].id}?application_question_template_id=${applicationQuestionTemplateId}`, {\n        method: 'PUT',\n        headers: {\n          'X-api-authenticate': apiKey,\n          'Content-Type': 'application/json'\n        },\n        body: JSON.stringify({\n          field: {\n            [action]: newQuestions[index][action],\n          }\n        })\n      }).then((response) => {\n        response.json()})\n    } catch (error) {\n      setSnackbar({\n        message: 'There was an error saving your changes',\n        state: 'error'\n      });\n    }\n  };\n\n  const [dialogProps, setDialogProps] = useState({\n    url: '',\n    title: 'Permanently delete question?',\n    description: '',\n    buttonText: 'Delete',\n    buttonCallback: deleteQuestion,\n    callbackLoading: false,\n    dialogId: 0\n  });\n\n  const handleDeleteQuestion = (questionId: number) => {\n    setDialogProps((prev) => ({\n      ...prev,\n      url: `/api/v4/fields/${questionId}?application_question_template_id=${applicationQuestionTemplateId}`,\n      description: `Are you sure you want to delete this question? This action cannot be undone.`,\n      dialogId: questionId,\n      buttonCallback: deleteQuestion\n    }));\n    setIsDialogOpen(true);\n  };\n\n  const handleEditQuestion = () => {\n    setEditingQuestion({...editingQuestion, enabled: questions[index].enabled, required: questions[index].required, rateable: questions[index].rateable});\n    setModalsOpen((prev) => ({ ...prev, newField: true }));\n  }\n\n  return (\n    <Box >\n      <Box key={questions[index].id}>\n        {questions[index].type === \"AvailabilityField\" || questions[index].type === \"CsvDataLookupField\" || questions[index].type === \"JobReferenceLookupField\"\n          ? <span />\n          : <Box sx={classes.questionsWrapper} >\n            <Box sx={{ marginRight: 'auto', ...classes.questionInput }}>\n              <Box sx={{height: '6px'}}></Box>\n              <Box sx={{ ...classes.modalFormLine, position: 'relative' }}>\n                <QuestionFieldViewer question={questions[index]} draggable={true} />\n              </Box>\n            </Box>\n            <Box sx={{ padding: '0 14px', marginBlock: 'auto' }}>\n              <Switch\n                sx={questions[index].enabled ? classes.switchActive : classes.switch}\n                checked={questions[index].enabled}\n                onChange={() => handleUpdateActions('enabled')}\n                disabled={(questions.map((questions) => (questions.enabled)).includes(true) && !questions[index].enabled)}\n              />\n            </Box>\n            <Box sx={{ padding: '0 6px', display: 'grid', minWidth: '76px' }}>\n              <Box sx={{ display: 'flex', justifyContent: 'flex-end', alignItems: 'flex-start', marginTop: '-8px' }}>\n                {questions[index].editable && \n                  <IconButton\n                    onClick={() => handleEditQuestion()}\n                  >\n                    <EditIcon sx={{ fontSize: 16 }} />\n                  </IconButton>\n                }\n                {questions[index].deletable && \n                  <IconButton\n                    onClick={() => { handleDeleteQuestion(questions[index].id) }}\n                  >\n                    <DeleteIcon sx={{ color: '#E37D7A', fontSize: 16 }} />\n                  </IconButton>\n                }\n              </Box>\n            </Box>\n          </Box>\n        }\n      </Box>\n      <GenericDialog\n        url={dialogProps.url}\n        title={dialogProps.title}\n        description={dialogProps.description}\n        buttonText={dialogProps.buttonText}\n        buttonCallback={dialogProps.buttonCallback}\n        callbackLoading={isDeleting}\n        isDialogOpen={isDialogOpen}\n        setDialogOpen={setIsDialogOpen}\n        dialogId={dialogProps.dialogId}\n      />\n    </Box>\n  );\n}\n","import React, { useState, useEffect, useRef, Dispatch, SetStateAction, useCallback } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport Button from '@mui/material/Button';\nimport CloseIcon from '@mui/icons-material/Close';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { Virtualize } from '../../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport { StyledSnackbarProps } from '../../../Components/CustomUIElements/StyledSnackbar';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport Api from '../../../Job/API';\n\nexport default function AddSystemField({\n  apiKey,\n  jobId,\n  setSnackbar,\n  modalsOpen,\n  setModalsOpen,\n  getQuestions,\n}: {\n  apiKey: string;\n  modalsOpen: Record<string, boolean>;\n  setModalsOpen: Dispatch<SetStateAction<Record<string, boolean>>>;\n  jobId: number;\n  setSnackbar: StyledSnackbarProps['setSnackbarState'];\n  getQuestions: any;\n}) {\n  const [isCreating, setIsCreating] = useState(false);\n  const [isLoading, setIsLoading] = useState(false);\n  const selectStatusRef = useRef(null);\n  const [systemFields, setSystemFields] = useState([]);\n  const [selectedField, setSelectedField] = useState(null);\n  const [errorField, setErrorField] = useState('');\n\n  const handleClose = () => {\n    setSelectedField(null);\n    setErrorField('');\n    setModalsOpen((prev) => ({ ...prev, addSystemField: false }));\n  };\n\n  const getSystemFields = useCallback(async () => {\n    setIsLoading(true);\n    try {\n      const response = await fetch(`/api/v4/system_fields?form_type=Job`, {\n        method: 'GET',\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      }).then((response) => response.json());\n      setSystemFields(\n        response?.system_fields.map((field: { id: number; title: string }) => `${field.id} - ${field.title}`)\n      )\n    } catch (error) {\n      console.log(error);\n    } finally {\n    setIsLoading(false);\n    }\n  }, [apiKey]);\n\n  useEffect(() => {\n    getSystemFields();\n  }, [getSystemFields]);\n\n  const handleSubmit = async () => {\n    if (!selectedField) {\n      setErrorField('This field is required');\n      return;\n    }\n    setIsCreating(true);\n    try {\n      const data = await Api.addSystemField(\n        { 'X-api-authenticate': apiKey },\n        jobId,\n        selectedField.split(\"-\")[0],\n      );\n      setSnackbar({\n        message:\n          'Field has been added',\n        state: 'success'\n      });\n      handleClose();\n      setSelectedField(null);\n      setErrorField('');\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsCreating(false);\n      getQuestions();\n    }\n  }\n\n  return (\n    <Modal\n      open={modalsOpen.addSystemField}\n      onClose={handleClose}\n      aria-labelledby=\"add-system-field-modal\"\n    >\n      <Box sx={classes.actionsModalReducedPadding}>\n        <CloseIcon onClick={handleClose} sx={classes.closeIcon} />\n        <Box id=\"add-system-title\" sx={classes.actionModalHeader}>\n          Add system field\n        </Box>\n        <Box\n          sx={classes.modalContent}\n          id=\"add-system-modal-content\"\n          aria-label=\"Add System Field Modal Content\"\n        >\n          <Box role=\"form\" id=\"add-system-form\" aria-label=\"Add System Field form\">\n            <Box sx={{ ...classes.actionModalFormLine, marginTop: '20px' }} ref={selectStatusRef}>\n              <Virtualize\n                value={selectedField}\n                passOptions={systemFields}\n                setValue={(value: string) => {\n                  setSelectedField(value);\n                  setErrorField('');\n                }}\n                passedStyles={{\n                  ...sharedClasses.formAutocomplete,\n                  width: '700px',\n                  marginTop: '20px'\n                }}\n                label=\"Select a system field\"\n                loading={isLoading}\n                loadingText=\"Loading system fields...\"\n              />\n\n              {errorField && <Box sx={{...classes.formError, top: '63px'}}>{errorField}</Box>}\n            </Box>\n          </Box>\n        </Box>\n        <Box sx={classes.modalFooterSmallerSection}>\n          <Button\n            id=\"close-add-system-button\"\n            sx={classes.modalCancelButton}\n            onClick={handleClose}\n          >\n            Cancel\n          </Button>\n          <Button\n            id=\"submit-add-system-button\"\n            type=\"submit\"\n            sx={{ ...classes.modalCreateButton, width: '91px', height: '41px' }}\n            onClick={handleSubmit}\n          >\n            {isCreating ? <CircularProgress size={20} color=\"inherit\" /> : 'Confirm'}\n          </Button>\n        </Box>\n      </Box>\n    </Modal>\n  );\n}\n","import React, { useState, useEffect, useRef, Dispatch, SetStateAction, useCallback } from 'react';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { Virtualize } from '../../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport { FormControlLabel, CircularProgress, Button, Modal, Box, Switch, Tooltip } from '@mui/material';\nimport {\n  MultilineFormTextField,\n  FormTextField\n} from '../../../Components/CustomUIElements/FormTextField';\nimport FormSelectField from '../../../Components/CustomUIElements/FormSelectField';\nimport { StyledSnackbarProps } from '../../../Components/CustomUIElements/StyledSnackbar';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport Api from '../../../Job/API';\nimport {\n  DndContext,\n  closestCenter,\n  KeyboardSensor,\n  PointerSensor,\n  useSensor,\n  useSensors\n} from '@dnd-kit/core';\nimport {\n  SortableContext,\n  sortableKeyboardCoordinates,\n  verticalListSortingStrategy\n} from '@dnd-kit/sortable';\nimport SortableChoice from './SortableChoice';\nimport { useFieldChoiceList } from '../../../hooks/useFieldChoiceList';\nimport { IPermissions } from '../../../Jobs/types';\n\nconst fieldTypeOptions = ['Select', 'Date', 'Text', 'Radio Button', 'Rank', 'Checkbox', 'Textarea'];\n\nconst fieldTypeValues = {\n  Select: 'select_field',\n  'CSV Data Lookup': 'csv_data_lookup_field',\n  Date: 'date_field',\n  Text: 'text_field',\n  'Radio Button': 'radio_button_field',\n  Rank: 'rank_field',\n  'Job Reference Lookup': 'job_reference_lookup_field',\n  Availability: 'availability_field',\n  Checkbox: 'check_box_field',\n  Textarea: 'text_area_field'\n};\n\nconst DateOptions = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n\nexport default function NewField({\n  aiInterview,\n  apiKey,\n  autoRating,\n  editingQuestion,\n  getQuestions,\n  jobId,\n  modalsOpen,\n  setModalsOpen,\n  setSnackbar,\n  userPermissions,\n  canAddIndeedDemographicQ\n}: {\n  aiInterview: boolean;\n  apiKey: string;\n  autoRating: boolean;\n  editingQuestion?: any;\n  getQuestions: any;\n  jobId: number;\n  modalsOpen: Record<string, boolean>;\n  setModalsOpen: Dispatch<SetStateAction<Record<string, boolean>>>;\n  setSnackbar: StyledSnackbarProps['setSnackbarState'];\n  userPermissions: IPermissions;\n  canAddIndeedDemographicQ: boolean;\n}) {\n  const [isCreating, setIsCreating] = useState(false);\n  const [fieldType, setFieldType] = useState('');\n  const [label, setLabel] = useState('');\n  const [enabledSwitch, setEnabledSwitch] = useState(true);\n  const [requiredSwitch, setRequiredSwitch] = useState(false);\n  const [rateableSwitch, setRateableSwitch] = useState(false);\n  const [confidentialSwitch, setConfidentialSwitch] = useState(false);\n  const [isDemographicQuestion, setIsDemographicQuestion] = useState(false);\n  const [felixAISwitch, setFelixAISwitch] = useState(false);\n  const [weekDuration, setWeekDuration] = useState('weekly');\n  const [weekStartDay, setWeekStartDay] = useState(0);\n  const [headingOne, setHeadingOne] = useState('');\n  const [headingTwo, setHeadingTwo] = useState('');\n  const [allowBreak, setAllowBreak] = useState(false);\n  const [errorLabel, setErrorLabel] = useState('');\n  const [errorField, setErrorField] = useState('');\n  const [errorChoices, setErrorChoices] = useState('');\n  const baseSwitchStyle = {\n    ...classes.switchLabels,\n    ...classes.aiSwitch\n  };\n  const {\n    choiceList,\n    setChoiceList,\n    addChoice,\n    removeChoice,\n    clearChoices,\n    updateChoice,\n    switchChoices,\n    updateRank,\n    updateRankValue,\n    updateRating\n  } = useFieldChoiceList();\n\n  const labelRef = useRef<HTMLInputElement>(null);\n  const fieldTypeRef = useRef<HTMLInputElement>(null);\n  const choicesRef = useRef<HTMLInputElement>(null);\n\n  const sensors = useSensors(\n    useSensor(PointerSensor),\n    useSensor(KeyboardSensor, {\n      coordinateGetter: sortableKeyboardCoordinates\n    })\n  );\n\n  function handleDragEnd(event) {\n    const { active, over } = event;\n    switchChoices(active.id, over.id);\n  }\n\n  const getKeyByValue = (object, value) => {\n    return Object.keys(object).find((key) => object[key] === value);\n  };\n\n  const setDefaultValue = useCallback(async () => {\n    if (editingQuestion) {\n      setFieldType(getKeyByValue(fieldTypeValues, editingQuestion.field_type));\n      setLabel(editingQuestion.title);\n      setEnabledSwitch(editingQuestion.enabled);\n      setRequiredSwitch(editingQuestion.required);\n      setRateableSwitch(editingQuestion.rateable);\n      setConfidentialSwitch(editingQuestion.confidential);\n      setIsDemographicQuestion(editingQuestion.is_demographic_question);\n      setFelixAISwitch(editingQuestion.felix_ai_interview_prompter);\n      setChoiceList(editingQuestion.field_choices);\n    }\n  }, [editingQuestion]);\n\n  const handleClose = () => {\n    setModalsOpen((prev) => ({ ...prev, newField: false }));\n    clearData();\n  };\n\n  const handleSubmit = async (jobId: number) => {\n    if (!fieldType || !label) {\n      if (!fieldType) {\n        fieldTypeRef?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n        setErrorField('This field is required');\n      } else {\n        labelRef?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n        setErrorLabel('This field is required');\n      }\n      return;\n    }\n    setIsCreating(true);\n\n    let fieldObject = {\n      title: label,\n      enabled: enabledSwitch,\n      required: requiredSwitch,\n      rateable: rateableSwitch,\n      confidential: confidentialSwitch,\n      is_demographic_question: isDemographicQuestion,\n      field_type: fieldTypeValues[fieldType],\n      felix_ai_interview_prompter: felixAISwitch\n    };\n\n    if (['Select', 'Rank', 'Checkbox', 'Radio Button'].includes(fieldType)) {\n      choiceList.map((choice, index) => {\n        if (!choice?.name) {\n          choicesRef?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n          setErrorChoices('All field choices must each have a value');\n          return;\n        }\n        choice.position = index;\n        if (choice.id.toString().length == 13) {\n          choice.id = '';\n        }\n      });\n\n      const jsonString = JSON.stringify(Object.assign({}, choiceList));\n      const attributes = JSON.parse(jsonString);\n      fieldObject['field_choices_attributes'] = attributes;\n    } else if (['Availability'].includes(fieldType)) {\n      fieldObject['availability_config_attributes'] = {\n        week_duration: weekDuration.toLowerCase(),\n        week_start_day: DateOptions.indexOf(weekStartDay),\n        heading_1: headingOne,\n        heading_2: headingTwo,\n        allow_break: allowBreak\n      };\n    }\n\n    try {\n      if (editingQuestion) {\n        await Api.putQuestion({ 'X-api-authenticate': apiKey }, editingQuestion.id, jobId, {\n          field: fieldObject\n        });\n        setSnackbar({\n          message: 'Field has been updated',\n          state: 'success'\n        });\n      } else {\n        await Api.newField({ 'X-api-authenticate': apiKey }, jobId, {\n          field: fieldObject\n        });\n        setSnackbar({\n          message: 'Field has been created',\n          state: 'success'\n        });\n        clearData();\n      }\n      handleClose();\n    } catch (error) {\n      const errMsg = error.errors.split(',').slice(2).join(',') || error.errors;\n      setSnackbar({\n        message: errMsg,\n        state: 'error'\n      });\n    } finally {\n      setIsCreating(false);\n      getQuestions();\n    }\n  };\n\n  const handleChoiceInput = (e, index: number) => {\n    const { value } = e.target;\n    updateChoice(value, index);\n  };\n\n  const clearData = () => {\n    setFieldType('');\n    setLabel('');\n    setEnabledSwitch(true);\n    setRequiredSwitch(false);\n    setRateableSwitch(false);\n    setConfidentialSwitch(false);\n    setIsDemographicQuestion(false);\n    clearChoices();\n    setWeekDuration('weekly');\n    setWeekStartDay(0);\n    setHeadingOne('');\n    setHeadingTwo('');\n    setAllowBreak(false);\n    setErrorLabel('');\n    setErrorField('');\n    setErrorChoices('');\n    setFelixAISwitch(false);\n  };\n\n  const showAiToggle = aiInterview && fieldType === 'Textarea';\n\n  useEffect(() => {\n    setDefaultValue();\n  }, [setDefaultValue, editingQuestion]);\n\n  return (\n    <Modal\n      data-testid=\"new-field-modal\"\n      open={modalsOpen.newField}\n      onClose={() => handleClose()}\n      aria-labelledby=\"new-field-modal\"\n    >\n      <Box sx={classes.actionsModalReducedPadding}>\n        <Box sx={classes.modalWrapper}>\n          <CloseIcon onClick={() => handleClose()} sx={classes.closeIcon} />\n          <Box id=\"new-field-title\" sx={classes.actionModalHeader}>\n            New question\n          </Box>\n          <Box\n            sx={classes.modalContent}\n            id=\"new-field-modal-content\"\n            aria-label=\"New Field Modal Content\"\n          >\n            <Box role=\"form\" id=\"new-field-form\" aria-label=\"New Field form\">\n              <Box sx={{ ...classes.actionModalFormLine, marginTop: '20px' }} ref={fieldTypeRef}>\n                <Virtualize\n                  value={fieldType}\n                  passOptions={fieldTypeOptions}\n                  setValue={(value: string) => {\n                    setFieldType(value);\n                    setErrorField('');\n                  }}\n                  passedStyles={{\n                    ...sharedClasses.formAutocomplete,\n                    width: '300px',\n                    marginTop: '20px'\n                  }}\n                  label=\"Question Type\"\n                />\n                {errorField && <Box sx={{ ...classes.formError, top: '63px' }}>{errorField}</Box>}\n              </Box>\n            </Box>\n            <Box sx={{ marginLeft: '15px' }}>\n              <Box sx={classes.modalFormLine}>\n                <MultilineFormTextField\n                  dataTestId=\"field-label\"\n                  value={label}\n                  onChange={(e) => {\n                    setErrorLabel('');\n                    setLabel(e.target.value);\n                  }}\n                  styles={{ width: '600px', marginTop: '20px' }}\n                  rows={6}\n                  innerRef={labelRef}\n                  error={errorLabel}\n                  label={'Question'}\n                />\n              </Box>\n            </Box>\n            <Box sx={classes.checkboxContainer} id=\"enabled-filter\">\n              <FormControlLabel\n                sx={\n                  !enabledSwitch\n                    ? { ...classes.switchLabels, ...classes.labelActive }\n                    : classes.switchLabels\n                }\n                control={\n                  <Switch\n                    data-testid=\"enable-switch\"\n                    sx={enabledSwitch ? classes.switchActive : classes.switch}\n                    checked={enabledSwitch}\n                    onChange={() => setEnabledSwitch(!enabledSwitch)}\n                  />\n                }\n                label=\"Enabled\"\n                labelPlacement=\"end\"\n              />\n              <FormControlLabel\n                sx={\n                  !requiredSwitch\n                    ? { ...classes.switchLabels, ...classes.labelActive }\n                    : classes.switchLabels\n                }\n                control={\n                  <Switch\n                    sx={requiredSwitch ? classes.switchActive : classes.switch}\n                    checked={requiredSwitch}\n                    onChange={() => setRequiredSwitch(!requiredSwitch)}\n                  />\n                }\n                label=\"Required\"\n                labelPlacement=\"end\"\n              />\n              <FormControlLabel\n                sx={\n                  !rateableSwitch\n                    ? { ...classes.switchLabels, ...classes.labelActive }\n                    : classes.switchLabels\n                }\n                control={\n                  <Switch\n                    sx={rateableSwitch ? classes.switchActive : classes.switch}\n                    checked={rateableSwitch}\n                    onChange={() => setRateableSwitch(!rateableSwitch)}\n                  />\n                }\n                label=\"Rateable\"\n                labelPlacement=\"end\"\n              />\n              <FormControlLabel\n                sx={\n                  !confidentialSwitch\n                    ? { ...classes.switchLabels, ...classes.labelActive }\n                    : classes.switchLabels\n                }\n                control={\n                  <Switch\n                    sx={confidentialSwitch ? classes.switchActive : classes.switch}\n                    checked={confidentialSwitch}\n                    onChange={() => setConfidentialSwitch(!confidentialSwitch)}\n                  />\n                }\n                label=\"Confidential\"\n                labelPlacement=\"end\"\n              />\n              {canAddIndeedDemographicQ && (\n                <Tooltip title=\"Only for EEO question for Indeed US job post\">\n                  <FormControlLabel\n                    sx={\n                      !isDemographicQuestion\n                        ? { ...classes.switchLabels, ...classes.labelActive }\n                        : classes.switchLabels\n                    }\n                    control={\n                      <Switch\n                        sx={isDemographicQuestion ? classes.switchActive : classes.switch}\n                        checked={isDemographicQuestion}\n                        onChange={() => {\n                          setIsDemographicQuestion(!isDemographicQuestion);\n                          if(!isDemographicQuestion){\n                            setConfidentialSwitch(true);\n                          }\n                        }}\n                      />\n                    }\n                    label=\"Demographic Question\"\n                    labelPlacement=\"end\"\n                  />\n                </Tooltip>\n              )}\n\n              {showAiToggle && (\n                <FormControlLabel\n                  sx={\n                    !felixAISwitch\n                      ? { ...baseSwitchStyle, ...classes.labelActive }\n                      : baseSwitchStyle\n                  }\n                  control={\n                    <Switch\n                      sx={confidentialSwitch ? classes.switchActive : classes.switch}\n                      checked={felixAISwitch}\n                      onChange={() => setFelixAISwitch(!felixAISwitch)}\n                    />\n                  }\n                  label=\"Felix AI Feedback\"\n                  labelPlacement=\"end\"\n                />\n              )}\n            </Box>\n            {['Select', 'Rank', 'Checkbox', 'Radio Button'].includes(fieldType) && (\n              <Box sx={classes.addChoiceContainer} ref={choicesRef}>\n                <Box sx={classes.addChoiceHead}>\n                  <Box id=\"add-choice-title\" sx={classes.addChoiceLabel}>\n                    Choices\n                  </Box>\n                  <Button\n                    id=\"add-choice-button\"\n                    sx={classes.modalAddChoiceButton}\n                    onClick={addChoice}\n                  >\n                    Add choice\n                  </Button>\n                </Box>\n                <DndContext\n                  sensors={sensors}\n                  collisionDetection={closestCenter}\n                  onDragEnd={handleDragEnd}\n                >\n                  <SortableContext items={choiceList} strategy={verticalListSortingStrategy}>\n                    {choiceList.map(\n                      (choice, index) =>\n                        !(choice?._destroy === 1) && (\n                          <SortableChoice\n                            key={choice.id}\n                            id={choice.id}\n                            choice={choice}\n                            index={index}\n                            handleChoiceInput={handleChoiceInput}\n                            handleSelectRating={updateRating}\n                            handleRankInput={updateRank}\n                            handleSelectRankValue={updateRankValue}\n                            onRemoveChoice={removeChoice}\n                            editingQuestion={editingQuestion}\n                            rateableSwitch={rateableSwitch}\n                            confidentialSwitch={confidentialSwitch}\n                            autoRating={autoRating}\n                            userPermissions={userPermissions}\n                            fieldType={fieldType}\n                          />\n                        )\n                    )}\n                  </SortableContext>\n                </DndContext>\n                {errorChoices && <Box sx={{ ...classes.inlineError }}>{errorChoices}</Box>}\n              </Box>\n            )}\n            {['Availability'].includes(fieldType) && (\n              <Box sx={classes.availabilityContainer}>\n                <Box id=\"availability-config-title\" sx={classes.addChoiceLabel}>\n                  Availability Config\n                </Box>\n                <Box sx={classes.config}>\n                  <FormSelectField\n                    options={['Weekly', 'Fortnightly']}\n                    defaultValue=\"Weekly\"\n                    value={weekDuration}\n                    onChange={(value) => setWeekDuration(value)}\n                    label={'How long is your work period?'}\n                    styles={{ width: '290px', marginBottom: '15px' }}\n                    required={true}\n                  />\n                  <FormSelectField\n                    options={DateOptions}\n                    defaultValue=\"Sunday\"\n                    value={weekStartDay}\n                    onChange={(value) => {\n                      setWeekStartDay(value);\n                    }}\n                    label={'When does the work period start?'}\n                    styles={{ width: '290px', marginBottom: '15px' }}\n                  />\n                  <FormTextField\n                    label=\"Heading 1\"\n                    value={headingOne}\n                    onChange={(e) => setHeadingOne(e.target.value)}\n                    required={false}\n                    styles={{ width: '290px', marginBottom: '15px' }}\n                  />\n                  <FormTextField\n                    label=\"Heading 2\"\n                    value={headingTwo}\n                    onChange={(e) => setHeadingTwo(e.target.value)}\n                    required={false}\n                    styles={{ width: '290px', marginBottom: '15px' }}\n                  />\n                  <FormSelectField\n                    options={['Yes', 'No']}\n                    defaultValue=\"No\"\n                    value={allowBreak}\n                    onChange={(value) => setAllowBreak(value)}\n                    label={'Allow break?'}\n                    styles={{ width: '290px', marginBottom: '15px' }}\n                  />\n                </Box>\n              </Box>\n            )}\n            <Box sx={classes.modalFooter}>\n              <Button\n                id=\"close-new-field-button\"\n                sx={classes.modalCancelButton}\n                onClick={() => handleClose()}\n              >\n                Cancel\n              </Button>\n              <Button\n                id=\"submit-new-field-button\"\n                data-testid=\"confirm-button\"\n                type=\"submit\"\n                sx={{ ...classes.modalCreateButton, width: '91px', height: '41px' }}\n                onClick={() => handleSubmit(jobId)}\n              >\n                {isCreating ? <CircularProgress size={20} color=\"inherit\" /> : 'Confirm'}\n              </Button>\n            </Box>\n          </Box>\n        </Box>\n      </Box>\n    </Modal>\n  );\n}\n","import React from 'react';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { classes } from '../styles';\nimport IconButton from '@mui/material/IconButton';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport { FormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport DragIndicatorIcon from '@mui/icons-material/DragIndicator';\nimport Box from '@mui/material/Box';\nimport Select from '@mui/material/Select';\nimport MenuItem from '@mui/material/MenuItem';\nimport { alpha, styled } from '@mui/material/styles';\nimport InputBase from '@mui/material/InputBase';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\n\nconst autoRatingOptions = [1, 2, 3, 4, 5];\n\nconst SelectInput = styled(InputBase)(() => ({\n  'label + &': {\n    marginTop: '24px'\n  },\n  '& .MuiInputBase-input': {\n    borderRadius: '6px',\n    position: 'relative',\n    backgroundColor: '#FFFFFF',\n    color: '#333333',\n    border: '1px solid #DDDDDD',\n    fontSize: '16px',\n    padding: '6px 10px',\n    margin: '3px 0px',\n    fontFamily: 'Source Sans Pro, sans-serif',\n    '&:focus': {\n      boxShadow: `${alpha(theme.palette.primary.main, 0.25)} 0 0 0 2px`,\n      borderColor: theme.palette.primary.main\n    }\n  },\n  '& .MuiInputBase-input:focus': {\n    backgroundColor: '#ffffff',\n    borderRadius: '6px'\n  },\n  '& .MuiSvgIcon-root': {\n    color: '#AAAAAA',\n    transition: 'all 0.16s ease-in-out'\n  }\n}));\n\nconst menuItemStyle = {\n  fontFamily: 'Source Sans Pro, sans-serif',\n  color: '#333333',\n  maxHeight: '200px'\n};\n\nexport default function SortableChoice({\n  id,\n  choice,\n  index,\n  handleChoiceInput,\n  handleSelectRating,\n  handleRankInput,\n  handleSelectRankValue,\n  onRemoveChoice,\n  editingQuestion,\n  rateableSwitch,\n  confidentialSwitch,\n  autoRating,\n  userPermissions,\n  fieldType\n}: {\n  id: string;\n  choice: any;\n  index: number;\n  handleChoiceInput: any;\n  handleSelectRating: any;\n  handleRankInput: any;\n  handleSelectRankValue: any;\n  onRemoveChoice: any;\n  editingQuestion: any;\n  rateableSwitch: boolean;\n  confidentialSwitch: boolean;\n  autoRating: boolean;\n  userPermissions: any;\n  fieldType: string;\n}) {\n  const { attributes, listeners, setNodeRef, setActivatorNodeRef, transform, transition } =\n    useSortable({ id: id });\n\n  const style = {\n    transform: CSS.Translate.toString(transform),\n    transition\n  };\n\n  return (\n    <Box key={index} sx={classes.choice} style={style} ref={setNodeRef} {...attributes}>\n      <IconButton ref={setActivatorNodeRef} {...listeners}>\n        <DragIndicatorIcon sx={{ fontSize: 18 }} />\n      </IconButton>\n      <FormTextField\n        dataTestId=\"choice-input\"\n        value={choice.name}\n        onChange={(e) => handleChoiceInput(e, index)}\n        required={true}\n        styles={{ width: '150px' }}\n      />\n      {editingQuestion &&\n        rateableSwitch &&\n        autoRating &&\n        userPermissions?.['Job Options']?.['Auto Rating'] &&\n        ['Checkbox', 'Radio Button'].includes(fieldType) && (\n          <Box sx={{ marginLeft: '25px', display: 'flex', alignItems: 'center' }}>\n            <Select\n              sx={{ width: '60px' }}\n              value={choice.rating}\n              onChange={(e) => handleSelectRating(e.target.value, index)}\n              input={<SelectInput />}\n            >\n              {autoRatingOptions.map((option, index) => (\n                <MenuItem key={index} value={option} sx={menuItemStyle}>\n                  {option}\n                </MenuItem>\n              ))}\n            </Select>\n            <Box sx={{ marginLeft: '10px', fontSize: '14px' }}>Default rating</Box>\n          </Box>\n        )}\n      {editingQuestion &&\n        rateableSwitch &&\n        autoRating &&\n        userPermissions?.['Job Options']?.['Auto Rating'] &&\n        ['Rank'].includes(fieldType) && (\n          <Box sx={{ marginLeft: '25px', display: 'flex', alignItems: 'center' }}>\n            <Box sx={{ margin: '0 5px 0px 0px', fontSize: '14px' }}>If rank is greater than</Box>\n            <FormTextField\n              value={choice.rank}\n              onChange={(e) => handleRankInput(e.target.value, index)}\n              styles={{ width: '60px' }}\n            />\n            <Box sx={{ margin: '0px 5px', fontSize: '14px' }}>candidate gets</Box>\n            <Select\n              sx={{ width: '60px' }}\n              value={choice.rank_value}\n              onChange={(e) => handleSelectRankValue(e.target.value, index)}\n              input={<SelectInput />}\n            >\n              {[0, 1].map((option, index) => (\n                <MenuItem key={index} value={option} sx={menuItemStyle}>\n                  {option}\n                </MenuItem>\n              ))}\n            </Select>\n          </Box>\n        )}\n      <IconButton onClick={() => onRemoveChoice(index)} sx={{ marginLeft: '35px' }}>\n        <DeleteIcon sx={{ color: theme.palette.error.main, fontSize: 18 }} />\n      </IconButton>\n    </Box>\n  );\n}\n","import React from 'react';\n\nexport default function NewSystemFieldSVG() {\nreturn (<svg id=\"MDI_alpha-s-box\" data-name=\"MDI / alpha-s-box\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20.719\" height=\"20.719\" viewBox=\"0 0 18.719 18.719\">\n<g id=\"Boundary\" fill=\"#666\" stroke=\"rgba(0,0,0,0)\" strokeWidth=\"1\" opacity=\"0\">\n  <rect width=\"19.719\" height=\"19.719\" stroke=\"none\"/>\n  <rect x=\"0.5\" y=\"0.5\" width=\"18.719\" height=\"18.719\" fill=\"none\"/>\n</g>\n<path id=\"Path_alpha-s-box\" data-name=\"Path / alpha-s-box\" d=\"M9.1,6.049A1.524,1.524,0,0,0,7.573,7.573V9.1A1.524,1.524,0,0,0,9.1,10.622h1.524v1.524H7.573V13.67h3.049a1.524,1.524,0,0,0,1.524-1.524V10.622A1.524,1.524,0,0,0,10.622,9.1H9.1V7.573h3.049V6.049H9.1M4.524,3h10.67a1.524,1.524,0,0,1,1.524,1.524v10.67a1.524,1.524,0,0,1-1.524,1.524H4.524A1.524,1.524,0,0,1,3,15.194V4.524A1.524,1.524,0,0,1,4.524,3Z\" transform=\"translate(0)\" fill=\"#666\"/>\n</svg>\n)\n}\n","import React from 'react';\n\nexport default function NoQuestionArrowSVG() {\nreturn (<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"99.619\" height=\"100.678\" viewBox=\"0 0 99.619 100.678\">\n<path id=\"Path_244\" data-name=\"Path 244\" d=\"M25.61,11.513C26.326,7.643,26.989,4.054,27.737,0L0,19.164l28.871,17.45L26.089,25.473A64.409,64.409,0,0,1,81.952,81.022c1.993-10.516-.943-30.62-13.8-46.171C57.125,21.517,42.948,13.878,25.61,11.513Z\" transform=\"matrix(0.259, 0.966, -0.966, 0.259, 78.262, 0)\" fill=\"#f3f3f3\"/>\n</svg>\n)\n}\n","import React from 'react';\n\nexport default function NoQuestionSVG() {\nreturn (<svg xmlns=\"http://www.w3.org/2000/svg\" xmlnsXlink=\"http://www.w3.org/1999/xlink\" width=\"106.125\" height=\"131.719\" viewBox=\"0 0 106.125 131.719\">\n<defs>\n  <clipPath id=\"clip-path\">\n    <rect id=\"Rectangle_775\" data-name=\"Rectangle 775\" width=\"106.125\" height=\"131.719\" fill=\"none\"/>\n  </clipPath>\n</defs>\n<g id=\"Group_587\" data-name=\"Group 587\" transform=\"translate(-902.121 -666.15)\">\n  <g id=\"Group_586\" data-name=\"Group 586\" transform=\"translate(902.121 666.15)\">\n    <g id=\"Group_585\" data-name=\"Group 585\" clip-path=\"url(#clip-path)\">\n      <path id=\"Path_232\" data-name=\"Path 232\" d=\"M98.892,28.023l0,95.46a4.412,4.412,0,0,1-4.419,4.4l-90.051,0A4.412,4.412,0,0,1,0,123.481V107.9l.074-8.585,0-94.914A4.412,4.412,0,0,1,4.5,0l87.5,0a6.9,6.9,0,0,1,6.9,6.9V28.023Z\" fill=\"#eee\"/>\n      <path id=\"Path_233\" data-name=\"Path 233\" d=\"M109.948,34.73l0,95.46a4.412,4.412,0,0,1-4.419,4.405l-90.051,0a4.412,4.412,0,0,1-4.419-4.405V114.611l.074-8.585,0-94.914a4.412,4.412,0,0,1,4.419-4.405l87.5,0a6.9,6.9,0,0,1,6.9,6.9V34.73Z\" transform=\"translate(-8.685 -5.269)\" fill=\"#f9f9f9\"/>\n      <path id=\"Path_234\" data-name=\"Path 234\" d=\"M107.477,33.918q0,5.843,0,11.687,0,13.491,0,26.982,0,15.22,0,30.44,0,11.054,0,22.108c0,1.38.031,2.764,0,4.144a3.979,3.979,0,0,1-3.718,4.128c-.388.015-.78,0-1.168,0H26.623c-4.281,0-8.594.151-12.873,0-2.635-.093-4.129-2.306-4.128-4.75V122.8c0-3.361-.022-6.722.007-10.082q.057-6.582.068-13.162,0-11.627,0-23.254,0-15.255,0-30.509,0-13.074,0-26.147,0-3.79,0-7.579c0-2.284-.1-5,2.628-5.908a14.371,14.371,0,0,1,4.219-.167h83.6a9.1,9.1,0,0,1,2.13.169,6.889,6.889,0,0,1,5.2,6.759c.048,4.09,0,8.184,0,12.275q0,4.36,0,8.72c0,.219,1.036.057,1.036-.277,0-7.036.127-14.083,0-21.118a7.1,7.1,0,0,0-5.82-6.882,11.409,11.409,0,0,0-2.03-.12H16.479c-1.644,0-3.444-.186-4.974.518a4.781,4.781,0,0,0-2.841,4.389c-.006.489,0,.979,0,1.469q0,9.436,0,18.872,0,15.1,0,30.206,0,14.464,0,28.927,0,7.518,0,15.037c-.01,6.361-.074,12.72-.075,19.081,0,1.74-.035,3.484,0,5.223a4.655,4.655,0,0,0,4.723,4.641c1.2.028,2.409,0,3.613,0h85.587c.378,0,.761.015,1.139-.009a5,5,0,0,0,4.863-4.788c.113-4.206,0-8.431,0-12.638q0-13.96,0-27.919,0-15.37,0-30.739v-21.1q0-1.523,0-3.047c0-.219-1.036-.057-1.036.277\" transform=\"translate(-6.732 -4.318)\" fill=\"#cfcfcf\"/>\n      <path id=\"Path_235\" data-name=\"Path 235\" d=\"M129.948,44.73l0,95.46a4.412,4.412,0,0,1-4.419,4.405l-90.051,0a4.412,4.412,0,0,1-4.419-4.405V124.611l.074-8.585,0-94.914a4.412,4.412,0,0,1,4.419-4.405l87.5,0a6.9,6.9,0,0,1,6.9,6.9V44.73Z\" transform=\"translate(-24.397 -13.125)\" fill=\"#f9f9f9\"/>\n      <path id=\"Path_236\" data-name=\"Path 236\" d=\"M127.178,55.845l0,95.981a4.277,4.277,0,0,1-4.258,4.3l-87.6,0a4.278,4.278,0,0,1-4.258-4.3V136.629l.071-8.374,0-92.579a4.278,4.278,0,0,1,4.258-4.3l87.962,0a3.8,3.8,0,0,1,3.826,3.773Z\" transform=\"translate(-24.398 -24.652)\" fill=\"#fff\"/>\n      <path id=\"Path_237\" data-name=\"Path 237\" d=\"M127.478,43.918q0,5.843,0,11.687,0,13.491,0,26.982,0,15.22,0,30.44,0,11.054,0,22.108c0,1.38.031,2.764,0,4.144a3.979,3.979,0,0,1-3.718,4.128c-.388.015-.78,0-1.168,0H46.623c-4.281,0-8.594.151-12.873,0-2.635-.093-4.129-2.306-4.128-4.75V132.8c0-3.361-.022-6.722.007-10.082q.057-6.582.068-13.162,0-11.627,0-23.254,0-15.255,0-30.509,0-13.074,0-26.147,0-3.79,0-7.579c0-2.284-.1-5,2.628-5.908a14.371,14.371,0,0,1,4.219-.167h83.6a9.1,9.1,0,0,1,2.13.169,6.889,6.889,0,0,1,5.2,6.759c.048,4.09,0,8.184,0,12.275q0,4.36,0,8.72c0,.219,1.036.057,1.036-.277,0-7.036.127-14.083,0-21.118a7.1,7.1,0,0,0-5.82-6.882,11.409,11.409,0,0,0-2.03-.12H36.479c-1.644,0-3.444-.186-4.974.518a4.781,4.781,0,0,0-2.841,4.389c-.006.489,0,.979,0,1.469q0,9.436,0,18.872,0,15.1,0,30.206,0,14.464,0,28.927,0,7.518,0,15.037c-.01,6.361-.074,12.72-.075,19.081,0,1.74-.035,3.484,0,5.223a4.655,4.655,0,0,0,4.723,4.641c1.2.028,2.409,0,3.613,0h85.587c.378,0,.761.015,1.139-.009a5,5,0,0,0,4.863-4.788c.113-4.206,0-8.431,0-12.638q0-13.96,0-27.919,0-15.37,0-30.739v-21.1q0-1.523,0-3.047c0-.219-1.036-.057-1.036.277\" transform=\"translate(-22.444 -12.174)\" fill=\"#cfcfcf\"/>\n      <path id=\"Path_259\" data-name=\"Path 259\" d=\"M358.778,506.84h6.332c.588,0,.8-.748.094-.748h-6.332c-.588,0-.8.748-.095.748\" transform=\"translate(-281.501 -397.576)\" fill=\"#fff\"/>\n      <path id=\"Path_261\" data-name=\"Path 261\" d=\"M246.408,200.5H172.726c-1.69,0-3.06-.8-3.06-1.778s1.37-1.778,3.06-1.778h73.682c1.69,0,3.06.8,3.06,1.778s-1.37,1.778-3.06,1.778\" transform=\"translate(-152.539 -173.05)\" fill=\"#efefef\"/>\n    </g>\n  </g>\n  <g id=\"Group_588\" data-name=\"Group 588\" transform=\"translate(925.322 708.289)\">\n    <g id=\"Group_589\" data-name=\"Group 589\" transform=\"translate(0)\">\n      <path id=\"Path_262\" data-name=\"Path 262\" d=\"M52.355.577h56.424c.467,0,.66-.577.086-.577H52.441c-.467,0-.661.577-.086.577\" transform=\"translate(-42.917)\" fill=\"#cfcfcf\"/>\n      <path id=\"Path_263\" data-name=\"Path 263\" d=\"M.355,30.382H63.189a23.607,23.607,0,0,0,2.562,0,1.028,1.028,0,0,1,.111,0c.467,0,.66-.577.086-.577H3.114a23.56,23.56,0,0,0-2.562,0,1.029,1.029,0,0,1-.111,0c-.467,0-.661.577-.086.577\" transform=\"translate(0 -24.564)\" fill=\"#cfcfcf\"/>\n      <path id=\"Path_264\" data-name=\"Path 264\" d=\"M.355,60.577h55.2c.467,0,.66-.577.086-.577H.441c-.467,0-.661.577-.086.577\" transform=\"translate(0 -49.519)\" fill=\"#cfcfcf\"/>\n      <path id=\"Path_265\" data-name=\"Path 265\" d=\"M48.262,90.577H105.4c.467,0,.661-.577.086-.577H48.348c-.467,0-.661.577-.086.577\" transform=\"translate(-39.539 -74.278)\" fill=\"#cfcfcf\"/>\n      <path id=\"Path_266\" data-name=\"Path 266\" d=\"M.355,120.382H63.189a23.6,23.6,0,0,0,2.562,0,1.029,1.029,0,0,1,.111,0c.467,0,.66-.577.086-.577H3.114a23.562,23.562,0,0,0-2.562,0,1.029,1.029,0,0,1-.111,0c-.467,0-.661.577-.086.577\" transform=\"translate(0 -98.843)\" fill=\"#cfcfcf\"/>\n      <path id=\"Path_267\" data-name=\"Path 267\" d=\"M.355,150.577H55.189c.467,0,.66-.577.086-.577H.441c-.467,0-.661.577-.086.577\" transform=\"translate(0 -123.797)\" fill=\"#cfcfcf\"/>\n    </g>\n  </g>\n</g>\n</svg>\n)\n}\n","import type { PointerEvent } from \"react\";\nimport { PointerSensor } from \"@dnd-kit/core\";\n\n/**\n * An extended \"PointerSensor\" that prevent some\n * interactive html element(button, input, textarea, select, option...) from dragging\n */\n\nexport class QuestionCardSensor extends PointerSensor {\n  static activators = [\n    {\n      eventName: \"onPointerDown\" as any,\n      handler: ({ nativeEvent: event }: PointerEvent) => {\n        if (\n          !event.isPrimary ||\n          event.button !== 0 ||\n          isInteractiveElement(event.target as Element)\n        ) {\n          return false;\n        }\n\n        return true;\n      },\n    },\n  ];\n}\n\nfunction isInteractiveElement(element: Element | null) {\n  if (element?.dataset?.testid === \"DragIndicatorIcon\" \n      || element?.className?.baseVal.toLowerCase().includes(\"select\")\n    ) return false; \n\n  const interactiveElements = [\n      \"button\",\n      \"input\",\n      \"textarea\",\n      \"select\",\n      \"option\",\n      \"icon\",\n      \"svg\",\n      \"path\",\n      \"ul\",\n      \"li\",\n      \"span\",\n  ];\n  if (\n      element?.tagName &&\n      interactiveElements.includes(element.tagName.toLowerCase())\n  ) {\n      return true;\n  }\n\n  return false;\n}\n","import React, { Dispatch, FC, SetStateAction } from 'react';\nimport { Box } from '@mui/material';\nimport { classes } from './styles';\nimport NoQuestionSVG from './NoQuestionSVG';\nimport NoQuestionArrowSVG from './NoQuestionArrowSVG';\nimport {\n  DndContext,\n  DragEndEvent,\n  KeyboardSensor,\n  closestCenter,\n  useSensor,\n  useSensors\n} from '@dnd-kit/core';\nimport {\n  SortableContext,\n  sortableKeyboardCoordinates,\n  verticalListSortingStrategy\n} from '@dnd-kit/sortable';\nimport SortableItem from './SortableItem';\nimport { IPermissions, IJob } from '../../Job/types';\nimport { QuestionCardSensor } from './QuestionCardSensor';\nimport { IApplicantQuestion } from '../types';\n\ninterface IQuestionListProps {\n  apiKey: string;\n  aiInterview: boolean;\n  enabled: boolean;\n  getQuestions: () => Promise<void>;\n  handleDragEnd: (event: DragEndEvent) => void;\n  isLoading: boolean;\n  job: IJob;\n  jobId: number;\n  questions: IApplicantQuestion[];\n  setEditingQuestion: Dispatch<SetStateAction<IApplicantQuestion | null>>;\n  setModalsOpen: Dispatch<SetStateAction<Record<string, boolean>>>;\n  setQuestions: Dispatch<SetStateAction<IApplicantQuestion[]>>;\n  setSnackbar: Dispatch<\n    SetStateAction<{ message: string; state: 'success' | 'warning' | 'error' }>\n  >;\n  userPermissions: IPermissions;\n}\n\nexport const QuestionList: FC<IQuestionListProps> = ({\n  apiKey,\n  aiInterview,\n  enabled,\n  getQuestions,\n  handleDragEnd,\n  isLoading,\n  job,\n  jobId,\n  questions,\n  setEditingQuestion,\n  setModalsOpen,\n  setQuestions,\n  setSnackbar\n}) => {\n  const filteredQuestions = questions.filter((question) => question.enabled === enabled);\n  const sensors = useSensors(\n    useSensor(QuestionCardSensor),\n    useSensor(KeyboardSensor, {\n      coordinateGetter: sortableKeyboardCoordinates\n    })\n  );\n\n  if (!isLoading && !filteredQuestions.length) {\n    return (\n      <Box sx={{ ...classes.noQuestionsContainer, margin: '100px 0px' }}>\n        <Box sx={{ display: 'flex', flexDirection: 'row' }}>\n          <Box sx={{ width: '100px' }}></Box>\n          <NoQuestionSVG />\n          <NoQuestionArrowSVG />\n        </Box>\n        <Box sx={classes.noQuestionsText}>\n          You have no questions\n          <br />\n          Choose an options above to start creating questions\n        </Box>\n      </Box>\n    );\n  }\n\n  return (\n    <Box sx={classes.questionsContainer}>\n      <DndContext sensors={sensors} collisionDetection={closestCenter} onDragEnd={handleDragEnd}>\n        <SortableContext\n          items={filteredQuestions.map((q) => q.id)}\n          strategy={verticalListSortingStrategy}\n        >\n          {filteredQuestions.map((question, index) => (\n            <SortableItem\n              aiInterview={aiInterview}\n              allQuestions={questions}\n              apiKey={apiKey}\n              applicationCount={job.applications_count}\n              editingQuestion={question}\n              getQuestions={getQuestions}\n              index={index}\n              jobId={jobId}\n              key={question.id}\n              questions={filteredQuestions}\n              setEditingQuestion={setEditingQuestion} //TODO: Fix types in SortableItem\n              setModalsOpen={setModalsOpen}\n              setQuestions={setQuestions}\n              setSnackbar={setSnackbar}\n            />\n          ))}\n        </SortableContext>\n      </DndContext>\n    </Box>\n  );\n};\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { Box, Button, ToggleButton, ToggleButtonGroup } from '@mui/material';\nimport LiveHelpIcon from '@mui/icons-material/LiveHelp';\nimport InfoIcon from '@mui/icons-material/Info';\nimport NewSystemFieldSVG from './NewSystemFieldSVG';\nimport NewField from './Modals/NewField';\nimport AddSystemField from './Modals/AddSystemField';\nimport StyledSnackbar from '../../Components/CustomUIElements/StyledSnackbar';\nimport AIStudioField from '../../../AIStudio/AIStudioQuestions/AIStudioQuestions';\nimport { FelixButtonSVG } from '../../../AIStudio/SharedComponents/Graphics/FelixSVG';\nimport { classes } from './styles';\nimport { classes as AIClasses } from '../styles';\nimport { KeyboardSensor, useSensor, useSensors } from '@dnd-kit/core';\nimport { arrayMove, sortableKeyboardCoordinates } from '@dnd-kit/sortable';\n\nimport { QuestionCardSensor } from './QuestionCardSensor';\nimport { IPermissions, IJob } from '../../Job/types';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { QuestionList } from './QuestionList';\nimport { IApplicantQuestion } from '../types';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { IUserPermissions } from '../../Components/sharedTypes';\n\nexport default function Questions({\n  aiInterview,\n  aiStudio,\n  apiKey,\n  job,\n  jobId,\n  userPermissions,\n  canAddIndeedDemographicQ\n}: {\n  aiInterview: boolean;\n  aiStudio: boolean;\n  apiKey: string;\n  job: IJob;\n  jobId: number;\n  userPermissions: IPermissions;\n  canAddIndeedDemographicQ: boolean;\n}) {\n  const [questions, setQuestions] = useState<IApplicantQuestion[]>([]);\n  const [isLoading, setIsLoading] = useState(false);\n  const [buttonHovered, setButtonHovered] = useState(false);\n  const [selected, setSelected] = useState('enabledQuestions');\n  const [modalsOpen, setModalsOpen] = useState<Record<string, boolean>>({\n    newField: false,\n    addSystemField: false,\n    aiStudioField: false\n  });\n  const [snackbar, setSnackbar] = useState<{\n    message: string;\n    state: 'success' | 'warning' | 'error';\n  }>({\n    message: '',\n    state: 'success'\n  });\n  const queryClient = useQueryClient();\n  const permissions = queryClient.getQueryData<IUserPermissions>(['permissions']);\n  const [editingQuestion, setEditingQuestion] = useState<IApplicantQuestion | null>();\n\n  const sensors = useSensors(\n    useSensor(QuestionCardSensor),\n    useSensor(KeyboardSensor, {\n      coordinateGetter: sortableKeyboardCoordinates\n    })\n  );\n\n  function handleDragEnd(event) {\n    const { active, over } = event;\n\n    if (active.id !== over.id) {\n      const oldIndex = questions.map((question) => question.id).indexOf(active.id);\n      const newIndex = questions.map((question) => question.id).indexOf(over.id);\n      const newArray = arrayMove(questions, oldIndex, newIndex);\n\n      setQuestions(newArray);\n      updateJobQuestions(newArray);\n    }\n  }\n\n  const getQuestions = useCallback(async () => {\n    setIsLoading(true);\n    try {\n      const response = await fetch(`/api/v4/fields?job_id=${jobId}`, {\n        method: 'GET',\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      }).then((response) => response.json());\n      console.log('response', response.fields);\n      setQuestions(response.fields);\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsLoading(false);\n    }\n  }, [apiKey, jobId]);\n  const updateJobQuestions = async (questions) => {\n    const fieldObject = {};\n    questions.map(\n      (question, index) =>\n        (fieldObject[question.id] = {\n          position: index\n        })\n    );\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/update_questions`, {\n        method: 'PUT',\n        headers: {\n          'X-api-authenticate': apiKey,\n          'Content-Type': 'application/json'\n        },\n        body: JSON.stringify({\n          fields: fieldObject\n        })\n      }).then((response) => response.json());\n      setQuestions(response.questions);\n      setSnackbar({\n        message: 'Questions have been updated',\n        state: 'success'\n      });\n    } catch (error) {\n      setSnackbar({\n        message: 'There was an error saving your changes',\n        state: 'error'\n      });\n    }\n  };\n\n  const handleToggle = (event: React.MouseEvent<HTMLElement>, newSelected: string) => {\n    if (newSelected !== null) {\n      setSelected(newSelected);\n    }\n  };\n\n  useEffect(() => {\n    getQuestions();\n  }, [getQuestions]);\n\n  return (\n    <Box sx={classes.questionsPageContainer}>\n      <Box sx={classes.pageHeader}>\n        <h2 data-testid=\"questions-label\">Questions</h2>\n      </Box>\n      <Box sx={classes.noticeContainer}>\n        <InfoIcon sx={classes.noticeIcon} />\n        <Box sx={{ marginLeft: 1 }}>\n          Any changes (adding, editing, removing etc.) to your questions will effect and block the\n          importing of applications from SEEK into :Recruit.{' '}\n          <b>All changes will also be automatically saved and applied immediately.</b>\n        </Box>\n      </Box>\n      <Box sx={classes.noticeContainer}>\n        <InfoIcon sx={classes.infoIcon} />\n        <Box sx={{ marginLeft: 1 }}>\n          All questions that have been answered by a candidate are not able to be edited or deleted.\n          To remove or edit a question, you will need to disable it and create a new question.\n        </Box>\n      </Box>\n      <Box sx={classes.toggleButtonsContainer}>\n        <ToggleButtonGroup\n          value={selected}\n          exclusive\n          onChange={handleToggle}\n          aria-label=\"enabled or disabled questions\"\n        >\n          <ToggleButton value=\"enabledQuestions\" sx={sharedClasses.toggleButton}>\n            Enabled questions\n          </ToggleButton>\n          <ToggleButton value=\"disabledQuestions\" sx={sharedClasses.toggleButton}>\n            Disabled questions\n          </ToggleButton>\n        </ToggleButtonGroup>\n      </Box>\n      <Box sx={classes.actionsContianer}>\n        {selected === 'enabledQuestions' && (\n          <Button\n            data-testid=\"new-field-button\"\n            variant=\"outlined\"\n            startIcon={<LiveHelpIcon />}\n            sx={classes.actionButton}\n            onClick={() => {\n              setEditingQuestion(null);\n              setModalsOpen((prev) => ({ ...prev, newField: true }));\n            }}\n          >\n            New question\n          </Button>\n        )}\n        {selected === 'enabledQuestions' && (\n          <Button\n            variant=\"outlined\"\n            startIcon={<NewSystemFieldSVG />}\n            sx={classes.actionButton}\n            onClick={() => {\n              setEditingQuestion(null);\n              setModalsOpen((prev) => ({ ...prev, addSystemField: true }));\n            }}\n          >\n            Add system field\n          </Button>\n        )}\n        {permissions?.['AI Features']?.['Activate AI Studio'] && aiStudio && (\n          <Box sx={{ marginLeft: 'auto' }}>\n            <Box\n              id=\"ai-studio-questions-integration-button\"\n              sx={{\n                ...AIClasses.buttonContainer,\n                ...(buttonHovered ? AIClasses.hoverAnimation : AIClasses.unhoverAnimation)\n              }}\n              onMouseEnter={() => setButtonHovered(true)}\n              onMouseLeave={() => setButtonHovered(false)}\n              onClick={() => {\n                setEditingQuestion(null);\n                setModalsOpen((prev) => ({ ...prev, aiStudioField: true }));\n              }}\n            >\n              <Box sx={AIClasses.avatarContainer}>\n                <FelixButtonSVG />\n              </Box>\n              <Button sx={AIClasses.button}>Generate questions</Button>\n              <Box sx={AIClasses.betaPill}>Beta</Box>\n            </Box>\n          </Box>\n        )}\n      </Box>\n      <QuestionList\n        aiInterview={aiInterview}\n        apiKey={apiKey}\n        enabled={selected === 'enabledQuestions'}\n        getQuestions={getQuestions}\n        handleDragEnd={handleDragEnd}\n        isLoading={isLoading}\n        job={job}\n        jobId={jobId}\n        questions={questions}\n        sensors={sensors}\n        setEditingQuestion={setEditingQuestion}\n        setModalsOpen={setModalsOpen}\n        setQuestions={setQuestions}\n        setSnackbar={setSnackbar}\n        userPermissions={userPermissions}\n      />\n      <NewField\n        aiInterview={aiInterview}\n        apiKey={apiKey}\n        autoRating={job.auto_rater != null}\n        editingQuestion={editingQuestion}\n        getQuestions={getQuestions}\n        jobId={jobId}\n        modalsOpen={modalsOpen}\n        setModalsOpen={setModalsOpen}\n        setSnackbar={setSnackbar}\n        userPermissions={userPermissions}\n        canAddIndeedDemographicQ={canAddIndeedDemographicQ}\n      />\n      {aiStudio && (\n        <AIStudioField\n          getQuestions={getQuestions}\n          modalsOpen={modalsOpen.aiStudioField}\n          setModalsOpen={(open: boolean) =>\n            setModalsOpen((prev) => ({ ...prev, aiStudioField: open }))\n          }\n          jobId={jobId}\n          setSnackbar={setSnackbar}\n          jobTitle={job.title}\n          jobDescription={job.description}\n          userPermissions={userPermissions}\n        />\n      )}\n      <AddSystemField\n        apiKey={apiKey}\n        getQuestions={getQuestions}\n        modalsOpen={modalsOpen}\n        setModalsOpen={setModalsOpen}\n        jobId={jobId}\n        setSnackbar={setSnackbar}\n      />\n      <StyledSnackbar\n        message={snackbar.message}\n        state={snackbar.state}\n        setSnackbarState={setSnackbar}\n      />\n    </Box>\n  );\n}\n","import React, { useState, Dispatch, SetStateAction, FC } from 'react';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { Box, IconButton, Stack, Tooltip } from '@mui/material';\nimport { CSS } from '@dnd-kit/utilities';\nimport { classes } from './styles';\nimport QuestionFieldViewer from '../../Components/Utilities/QuestionFieldViewer';\nimport DragIndicatorIcon from '@mui/icons-material/DragIndicator';\nimport Switch from '@mui/material/Switch';\nimport { FormTextField } from '../../Components/CustomUIElements/FormTextField';\nimport Api from '../../Job/API';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport { StyledSnackbarProps } from '../../Components/CustomUIElements/StyledSnackbar';\nimport { IApplicantQuestion, SortableItemSwitchProps } from '../types';\nimport AvailabilityFieldQuestion from '../../Components/CustomUIElements/AvailabilityFieldQuestion';\nimport { theme } from '../../../../components/ThemeContext/ThemeObject';\nimport {\n  Delete as DeleteIcon,\n  Edit as EditIcon,\n  FileCopy as FileCopyIcon\n} from '@mui/icons-material';\nimport { FelixAIActiveSVG, FelixAISVG } from '../../Components/Icons';\n\nexport default function SortableItem({\n  aiInterview,\n  allQuestions,\n  apiKey,\n  editingQuestion,\n  getQuestions,\n  index,\n  jobId,\n  questions,\n  setEditingQuestion,\n  setModalsOpen,\n  setQuestions,\n  setSnackbar\n}: {\n  aiInterview: boolean;\n  allQuestions: IApplicantQuestion[];\n  apiKey: string;\n  applicationCount: number;\n  editingQuestion: IApplicantQuestion;\n  getQuestions: any;\n  index: number;\n  jobId: number;\n  questions: IApplicantQuestion[];\n  setEditingQuestion: Dispatch<SetStateAction<Record<IApplicantQuestion, null>>>;\n  setModalsOpen: Dispatch<SetStateAction<Record<string, boolean>>>;\n  setQuestions: Dispatch<SetStateAction<IApplicantQuestion[]>>;\n  setSnackbar: StyledSnackbarProps['setSnackbarState'];\n}) {\n  const [isDialogOpen, setIsDialogOpen] = useState(false);\n  const [isDeleting, setIsDeleting] = useState(false);\n  const [isCloning, setIsCloning] = useState(false);\n  const [tempEnabled, setTempEnabled] = useState(questions[index].enabled);\n  const [tempRequired, setTempRequired] = useState(questions[index].required);\n  const [tempRateable, setTempRateable] = useState(questions[index].rateable);\n  const [tempConfidential, setTempConfidential] = useState(questions[index].confidential);\n  const [tempWeight, setTempWeight] = useState(questions[index].weight);\n  const [tempFelixAI, setTempFelixAI] = useState(questions[index].felix_ai_interview_prompter);\n  const isQuestionEditable = questions[index].editable;\n\n  const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({\n    id: questions[index].id\n  });\n\n  const style = {\n    transform: CSS.Translate.toString(transform),\n    transition,\n    filter: isDragging ? 'brightness(75%)' : 'brightness(100%)',\n    zIndex: isDragging ? 10 : 1\n  };\n\n  const deleteQuestion = async (url: string, questionId: number) => {\n    setIsDeleting(true);\n    try {\n      const response = await Api.deleteQuestion(\n        { 'X-api-authenticate': apiKey },\n        questionId,\n        jobId\n      );\n      if (response.errors) {\n        setSnackbar({\n          message: 'You do not have right to delete this field',\n          state: 'error'\n        });\n      } else {\n        setSnackbar({\n          message: 'Field has been deleted',\n          state: 'success'\n        });\n      }\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsDeleting(false);\n      setIsDialogOpen(false);\n      getQuestions();\n    }\n  };\n\n  const cloneQuestion = async (url: string, questionId: number) => {\n    setIsCloning(true);\n    try {\n      await Api.cloneQuestion({ 'X-api-authenticate': apiKey }, questionId, jobId);\n\n      setSnackbar({\n        message: 'Field has been cloned',\n        state: 'success'\n      });\n    } catch (error) {\n      setSnackbar({\n        message: `Failed to clone, ${error}`,\n        state: 'error'\n      });\n    } finally {\n      setIsCloning(false);\n      setIsDialogOpen(false);\n      getQuestions();\n    }\n  };\n\n  const handleUpdateActions = async (\n    event?: React.ChangeEvent<HTMLInputElement>,\n    action: keyof (typeof questions)[0],\n    weight?: number\n  ) => {\n    action === 'enabled' && setTempEnabled(!tempEnabled);\n    action === 'required' && setTempRequired(!tempRequired);\n    action === 'rateable' && setTempRateable(!tempRateable);\n    action === 'confidential' && setTempConfidential(!tempConfidential);\n    action === 'weight' && setTempWeight(weight);\n    action === 'felix_ai_interview_prompter' && setTempFelixAI(!tempFelixAI);\n    const fieldId = questions[index].id;\n    const originalWeight = questions[index].weight;\n    const originalAiInterviewPrompter = questions[index].felix_ai_interview_prompter;\n    try {\n      const response = await fetch(`/api/v4/fields/${fieldId}?job_id=${jobId}`, {\n        method: 'PUT',\n        headers: {\n          'X-api-authenticate': apiKey,\n          'Content-Type': 'application/json'\n        },\n        body: JSON.stringify({\n          field: {\n            [action]: event?.target.checked,\n            ...(action === 'felix_ai_interview_prompter' && {\n              felix_ai_interview_prompter: !tempFelixAI\n            }),\n            weight: weight\n          }\n        })\n      }).then((response) => response.json());\n      if (response.id) {\n        setSnackbar({\n          message: 'The change has been saved',\n          state: 'success'\n        });\n        const newQuestions = [...allQuestions];\n        const indexOfAllquestions = allQuestions.findIndex((item) => item.id === fieldId);\n        if (weight !== undefined) {\n          newQuestions[indexOfAllquestions].weight = weight;\n        } else {\n          newQuestions[indexOfAllquestions][action] = !allQuestions[indexOfAllquestions][action];\n        }\n        setTimeout(() => {\n          setQuestions(newQuestions);\n        }, 500);\n      } else if (response.errors) {\n        setSnackbar({\n          message: `There was an error saving your changes. ${response.errors}`,\n          state: 'error'\n        });\n        setTimeout(() => {\n          action === 'enabled' && setTempEnabled(!event?.target.checked);\n          action === 'required' && setTempRequired(!event?.target.checked);\n          action === 'rateable' && setTempRateable(!event?.target.checked);\n          action === 'confidential' && setTempConfidential(!event?.target.checked);\n          action === 'felix_ai_interview_prompter' && setTempFelixAI(originalAiInterviewPrompter);\n          action === 'weight' && setTempWeight(originalWeight);\n        }, 500);\n      }\n    } catch (error) {\n      setSnackbar({\n        message: `There was an error saving your changes. ${error}`,\n        state: 'error'\n      });\n      setTimeout(() => {\n        action === 'enabled' && setTempEnabled(!event?.target.checked);\n        action === 'required' && setTempRequired(!event?.target.checked);\n        action === 'rateable' && setTempRateable(!event?.target.checked);\n        action === 'confidential' && setTempConfidential(!event?.target.checked);\n        action === 'felix_ai_interview_prompter' && setTempFelixAI(originalAiInterviewPrompter);\n        action === 'weight' && setTempWeight(originalWeight);\n      }, 500);\n    }\n  };\n\n  const [dialogProps, setDialogProps] = useState({\n    url: '',\n    title: 'Permanently delete question?',\n    description: '',\n    buttonText: 'Delete',\n    buttonCallback: deleteQuestion,\n    callbackLoading: false,\n    dialogId: 0\n  });\n\n  const handleDeleteQuestion = (questionId: number) => {\n    setDialogProps((prev) => ({\n      ...prev,\n      url: `/api/v4/fields/${questionId}?job_id=${jobId}`,\n      description: `Are you sure you want to delete this question? This action cannot be undone.`,\n      dialogId: questionId,\n      buttonCallback: deleteQuestion\n    }));\n    setIsDialogOpen(true);\n  };\n\n  const handleCloneQuestion = (questionId: number) => {\n    setDialogProps((prev) => ({\n      ...prev,\n      url: `/api/v4/fields/${questionId}?job_id=${jobId}`,\n      title: 'Clone question',\n      description: `Are you sure you want to clone this question?`,\n      buttonText: 'Clone',\n      dialogId: questionId,\n      buttonCallback: cloneQuestion\n    }));\n    setIsDialogOpen(true);\n  };\n\n  const handleEditQuestion = () => {\n    setEditingQuestion({\n      ...editingQuestion,\n      enabled: questions[index].enabled,\n      required: questions[index].required,\n      rateable: questions[index].rateable,\n      felix_ai_interview_prompter: questions[index].felix_ai_interview_prompter\n    });\n    setModalsOpen((prev) => ({ ...prev, newField: true }));\n  };\n\n  const switchTypes: { type: SortableItemSwitchProps['type']; isChecked: boolean }[] = [\n    { type: 'enabled', isChecked: tempEnabled },\n    { type: 'required', isChecked: tempRequired },\n    { type: 'rateable', isChecked: tempRateable },\n    { type: 'confidential', isChecked: tempConfidential }\n  ];\n\n  const showAiToggle = aiInterview && questions[index].type === 'TextAreaField';\n  const isPrompterOn = questions[index].felix_ai_interview_prompter;\n  const aiPrompterToggleText = `Turn ${isPrompterOn ? 'off' : 'on'} AI Interview Prompter`;\n\n  return (\n    <Box ref={setNodeRef} style={style}>\n      <Box key={questions[index].id}>\n        {questions[index].type === 'CsvDataLookupField' ||\n        questions[index].type === 'JobReferenceLookupField' ? (\n          <span />\n        ) : (\n          <Box sx={{ ...classes.questionsWrapper, minWidth: 'initial', overflow: 'auto' }}>\n            <Box sx={{ display: 'flex' }}>\n              <DragIndicatorIcon\n                sx={{ cursor: isDragging ? 'grabbing' : 'pointer', ...classes.dragHandle }}\n                {...listeners}\n                {...attributes}\n              />\n              <Box sx={{ marginRight: 'auto', ...classes.questionInput }}>\n                <Box sx={{ height: '6px' }}></Box>\n                <Box sx={{ ...classes.modalFormLine, position: 'relative', minWidth: '300px' }}>\n                  <QuestionFieldViewer question={questions[index]} draggable={true} />\n                </Box>\n              </Box>\n\n              <Stack>\n                <Box sx={classes.actionButtonsContainer}>\n                  {showAiToggle && (\n                    <Tooltip title={aiPrompterToggleText} placement=\"top\" arrow>\n                      <IconButton\n                        onClick={() =>\n                          handleUpdateActions(undefined, 'felix_ai_interview_prompter')\n                        }\n                      >\n                        {questions[index].felix_ai_interview_prompter ? (\n                          <FelixAIActiveSVG />\n                        ) : (\n                          <FelixAISVG />\n                        )}\n                      </IconButton>\n                    </Tooltip>\n                  )}\n                  {isQuestionEditable && !questions[index].answered && (\n                    <Tooltip title=\"Edit\" placement=\"top\" arrow>\n                      <IconButton\n                        data-testid={`edit-question-button-${questions[index].title}`}\n                        onClick={() => handleEditQuestion()}\n                      >\n                        <EditIcon sx={{ fontSize: 16 }} />\n                      </IconButton>\n                    </Tooltip>\n                  )}\n                  {isQuestionEditable && (\n                    <Tooltip title=\"Copy\" placement=\"top\" arrow>\n                      <IconButton\n                        data-testid={`clone-question-button-${questions[index].title}`}\n                        onClick={() => handleCloneQuestion(questions[index].id)}\n                      >\n                        <FileCopyIcon sx={{ fontSize: 16 }} />\n                      </IconButton>\n                    </Tooltip>\n                  )}\n                  {!questions[index].answered && (\n                    <Tooltip title=\"Delete\" placement=\"top\" arrow>\n                      <IconButton\n                        data-testid={`delete-question-button-${questions[index].title}`}\n                        onClick={() => {\n                          handleDeleteQuestion(questions[index].id);\n                        }}\n                      >\n                        <DeleteIcon\n                          sx={{ color: theme.palette.error.main, fontSize: theme.spacing(2) }}\n                        />\n                      </IconButton>\n                    </Tooltip>\n                  )}\n                </Box>\n                <Stack direction=\"row\" alignItems=\"center\" flexGrow={1}>\n                  {switchTypes.map(({ type, isChecked }) => (\n                    <SortableItemSwitch\n                      key={type}\n                      question={questions[index]}\n                      type={type}\n                      checked={isChecked}\n                      handleUpdateActions={(event) => handleUpdateActions(event, type)}\n                    />\n                  ))}\n                  <Box sx={{ marginBottom: '12px' }}>\n                    <FormTextField\n                      value={tempWeight?.toString()}\n                      onChange={(e) => handleUpdateActions(e, 'weight', parseInt(e.target.value))}\n                      styles={{\n                        width: '50px'\n                      }}\n                      draggable={!questions[index].editable}\n                    />\n                    <Stack sx={{ fontSize: '12px', textAlign: 'center' }}>Weight</Stack>\n                  </Box>\n                </Stack>\n              </Stack>\n            </Box>\n            {questions[index].type === 'AvailabilityField' && (\n              <AvailabilityFieldQuestion question={questions[index]} />\n            )}\n            {tempConfidential && (\n              <Box sx={{ padding: '0 6px', color: '#838383', fontSize: '12px' }}>\n                <span style={{ fontWeight: 'bold' }}>Confidential Setting Enabled:</span> For DE&I\n                compliance, only authorised users (HR Admins), can view responses. Hiring Managers\n                will not have access.\n              </Box>\n            )}\n          </Box>\n        )}\n      </Box>\n      <GenericDialog\n        url={dialogProps.url}\n        title={dialogProps.title}\n        description={dialogProps.description}\n        buttonText={dialogProps.buttonText}\n        buttonCallback={dialogProps.buttonCallback}\n        callbackLoading={isDeleting || isCloning}\n        isDialogOpen={isDialogOpen}\n        setDialogOpen={setIsDialogOpen}\n        dialogId={dialogProps.dialogId}\n      />\n    </Box>\n  );\n}\n\nconst SortableItemSwitch: FC<SortableItemSwitchProps> = ({\n  question,\n  type,\n  checked,\n  handleUpdateActions\n}) => {\n  const isActive = question[type];\n  const isEditable = question.editable;\n  const label = `${type.charAt(0).toUpperCase()}${type.slice(1)}`;\n\n  return (\n    <Box sx={{ ...classes.sortableItemSwitchContainer, fontWeight: isActive ? 'bold' : 'normal' }}>\n      <Switch\n        sx={isActive ? classes.switchActive : classes.switch}\n        checked={checked}\n        size=\"small\"\n        onChange={(event) => handleUpdateActions(event, type)}\n        disabled={!isEditable}\n      />\n      <Stack sx={classes.switchLabel}>{label}</Stack>\n    </Box>\n  );\n};\n","import React from 'react';\n\nexport default function AccountClockIcon() {\nreturn (\n  <svg id=\"MDI_account-clock-outline\" data-name=\"MDI / account-clock-outline\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n    <g id=\"Boundary\" fill=\"#084d6d\" stroke=\"rgba(0,0,0,0)\" stroke-width=\"1\" opacity=\"0\">\n      <rect width=\"24\" height=\"24\" stroke=\"none\"/>\n      <rect x=\"0.5\" y=\"0.5\" width=\"23\" height=\"23\" fill=\"none\"/>\n    </g>\n    <path id=\"Path_account-clock-outline\" data-name=\"Path / account-clock-outline\" d=\"M16,14h1.5v2.82l2.44,1.41-.75,1.3L16,17.69V14m1-2a5,5,0,1,0,5,5,5,5,0,0,0-5-5m0-2a7,7,0,1,1-6.33,10H1V17c0-2.66,5.33-4,8-4a13.393,13.393,0,0,1,2.12.2A6.992,6.992,0,0,1,17,10m-7,7a6.858,6.858,0,0,1,.29-2A7.921,7.921,0,0,0,9,14.9c-2.97,0-6.1,1.46-6.1,2.1v1.1h7.19A6.71,6.71,0,0,1,10,17M9,4A4,4,0,1,1,5,8,4,4,0,0,1,9,4M9,5.9A2.1,2.1,0,1,0,11.1,8,2.1,2.1,0,0,0,9,5.9Z\" transform=\"translate(0 -2)\" fill=\"#084d6d\"/>\n  </svg>\n)}\n","import React, { Dispatch, useState, useRef, useCallback, useEffect, SetStateAction } from 'react';\nimport Box from '@mui/material/Box';\nimport { IJob } from '../../Job/types';\nimport { classes } from '../styles';\nimport Checkbox from '@mui/material/Checkbox';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport TextField from '@mui/material/TextField';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport Button from '@mui/material/Button';\n\nconst SourceTypes = [\n  {\n    id: 1,\n    name: 'Newspaper'\n  },\n  {\n    id: 2,\n    name: 'Online Job Board'\n  },\n  {\n    id: 3,\n    name: 'Universities'\n  },\n  {\n    id: 4,\n    name: 'General'\n  }\n];\n\nconst countries = [\n  {\n    id: 1,\n    name: 'Australia'\n  },\n  {\n    id: 2,\n    name: 'Canada'\n  },\n  {\n    id: 3,\n    name: 'New Zealand'\n  },\n  {\n    id: 4,\n    name: 'South Africa'\n  },\n  {\n    id: 5,\n    name: 'United Kingdom'\n  },\n  {\n    id: 6,\n    name: 'United States'\n  },\n  {\n    id: 7,\n    name: 'International'\n  },\n  {\n    id: 8,\n    name: 'Other'\n  }\n];\n\nexport default function Sources({\n  apiKey,\n  job,\n  sourcesTabJobData,\n  setSourcesTabJobData,\n  sourceListIds,\n  setSourceListIds,\n  setIsEdited\n}: {\n  apiKey: string;\n  job: IJob;\n  setIsEdited: Dispatch<SetStateAction<boolean>>;\n}) {\n  const [sourceOptions, setSourceOptions] = useState([]);\n  const [selectedType, setSelectedType] = useState();\n  const [selectedCountry, setSelectedCountry] = useState();\n  const [selectedSource, setSelectedSource] = useState();\n\n  const getSourceOptions = useCallback(async () => {\n    setSourceOptions([]);\n    try {\n      const response = await fetch(\n        `/api/v4/sources?source_type_id=${selectedType?.id}&country_id=${selectedCountry?.id}`,\n        {\n          method: 'GET',\n          headers: {\n            'X-api-authenticate': apiKey\n          }\n        }\n      ).then((response) => response.json());\n      setSourceOptions(response.sources);\n    } catch (error) {\n      console.log(error);\n    }\n  }, [apiKey, job, selectedType, selectedCountry]);\n\n  const handleChange = (e, id: number) => {\n    setIsEdited(true);\n    const list = sourceListIds;\n\n    if (e.target.checked) {\n      list.push(id);\n      setSourceListIds(list);\n    } else {\n      const index = list.indexOf(id);\n      if (index > -1) {\n        list.splice(index, 1);\n        setSourceListIds(list);\n      }\n    }\n  };\n\n  const addSourceLabel = () => {\n    if (!selectedType || !selectedCountry || !selectedSource) return;\n    if (!sourceListIds.includes(selectedSource.id)) {\n      const tempSources = { ...sourcesTabJobData };\n      tempSources.sources.value.push({\n        label: `${selectedType.name}/${selectedCountry.name}/${selectedSource.name}`,\n        id: selectedSource.id\n      });\n      setSourcesTabJobData(tempSources);\n      setSourceListIds([...sourceListIds, selectedSource.id]);\n    }\n  };\n\n  useEffect(() => {\n    getSourceOptions();\n  }, [getSourceOptions]);\n\n  const sourcesData = sourcesTabJobData?.sources?.value;\n  const sortedSourcesData = sourcesData.sort((a, b) =>\n    a.label > b.label ? 1 : b.label > a.label ? -1 : 0\n  );\n\n  return (\n    <Box sx={classes.tabContent}>\n      <Box id=\"sources-title\" data-testid=\"sources-title\" sx={classes.headerContent}>\n        Sources\n      </Box>\n      <Box sx={classes.bodyContainer}>\n        {sourcesData &&\n          sortedSourcesData.map((source, index) => (\n            <FormControlLabel\n              key={index}\n              control={\n                <Checkbox\n                  sx={{ ...classes.checkbox, marginLeft: 1 }}\n                  onChange={(e) => handleChange(e, source.id)}\n                  defaultChecked={sourceListIds.includes(source.id)}\n                />\n              }\n              label={source.label}\n              sx={classes.label}\n            />\n          ))}\n      </Box>\n      <Box sx={classes.selectGroup}>\n        <Autocomplete\n          disablePortal\n          options={SourceTypes}\n          filterSelectedOptions={true}\n          getOptionLabel={(option) => `${option.name}`}\n          id=\"source-type\"\n          data-testid=\"source-type\"\n          value={selectedType || { name: '' }}\n          onChange={(event, value) => {\n            setSelectedType(value);\n            setSelectedCountry(null);\n            setSelectedSource(null);\n            setIsEdited(true);\n          }}\n          sx={{ width: '190px', ...sharedClasses.formAutocomplete, marginTop: '35px' }}\n          ListboxProps={{\n            style: {\n              fontFamily: 'Source Sans Pro, sans-serif',\n              color: '#333333',\n              maxHeight: '200px'\n            }\n          }}\n          renderInput={(params) => (\n            <TextField {...params} label=\"Source type\" InputLabelProps={{ shrink: true }} />\n          )}\n          renderOption={(props, option, state) => {\n            return (\n              <li {...props} key={option.id} data-testid={`option-${state.index}`}>\n                {option.name}\n              </li>\n            );\n          }}\n        />\n        <Autocomplete\n          disablePortal\n          options={countries}\n          filterSelectedOptions={true}\n          getOptionLabel={(option) => `${option.name}`}\n          id=\"source-country\"\n          data-testid=\"source-country\"\n          value={selectedCountry || { name: '' }}\n          onChange={(event, value) => {\n            setSelectedCountry(value);\n            setSelectedSource(null);\n          }}\n          sx={{\n            width: '190px',\n            ...sharedClasses.formAutocomplete,\n            marginTop: '35px',\n            display: selectedType ? '' : 'none'\n          }}\n          ListboxProps={{\n            style: {\n              fontFamily: 'Source Sans Pro, sans-serif',\n              color: '#333333',\n              maxHeight: '200px'\n            }\n          }}\n          renderInput={(params) => (\n            <TextField {...params} label=\"Country\" InputLabelProps={{ shrink: true }} />\n          )}\n          renderOption={(props, option, state) => {\n            return (\n              <li {...props} key={option.id} data-testid={`option-${state.index}`}>\n                {option.name}\n              </li>\n            );\n          }}\n        />\n        <Autocomplete\n          disablePortal\n          options={sourceOptions.sort((a, b) =>\n            a.name.toLowerCase().replace(/[^a-z]/g, '') >\n            b.name.toLowerCase().replace(/[^a-z]/g, '')\n              ? 1\n              : -1\n          )}\n          filterSelectedOptions={true}\n          loading={sourceOptions.length < 1}\n          getOptionLabel={(option) => `${option.name}`}\n          id=\"source-name\"\n          value={selectedSource || { name: '' }}\n          onChange={(event, value) => setSelectedSource(value)}\n          sx={{\n            width: '290px',\n            ...sharedClasses.formAutocomplete,\n            marginTop: '35px',\n            display: selectedCountry && selectedType ? '' : 'none'\n          }}\n          ListboxProps={{\n            style: {\n              fontFamily: 'Source Sans Pro, sans-serif',\n              color: '#333333',\n              maxHeight: '200px'\n            }\n          }}\n          renderInput={(params) => (\n            <TextField {...params} label=\"Source\" InputLabelProps={{ shrink: true }} />\n          )}\n        />\n      </Box>\n      <Button\n        id=\"add-source-button\"\n        sx={classes.addSourceButton}\n        onClick={() => addSourceLabel()}\n        disabled={!selectedSource}\n      >\n        Add source\n      </Button>\n    </Box>\n  );\n}\n","import React from 'react';\n\nexport default function SourcesIconSVG() {\nreturn (<svg id=\"MDI_bullhorn-outline\" data-name=\"MDI / bullhorn-outline\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n<g id=\"Boundary\" fill=\"#084d6d\" stroke=\"rgba(0,0,0,0)\" stroke-width=\"1\" opacity=\"0\">\n  <rect width=\"24\" height=\"24\" stroke=\"none\"/>\n  <rect x=\"0.5\" y=\"0.5\" width=\"23\" height=\"23\" fill=\"none\"/>\n</g>\n<path id=\"Path_bullhorn-outline\" data-name=\"Path / bullhorn-outline\" d=\"M12.784,8.314H4.157A2.157,2.157,0,0,0,2,10.471v4.314a2.157,2.157,0,0,0,2.157,2.157H5.235v4.314a1.078,1.078,0,0,0,1.078,1.078H8.471a1.078,1.078,0,0,0,1.078-1.078V16.941h3.235l5.392,4.314V4L12.784,8.314m3.235,8.2-2.157-1.725H4.157V10.471h9.706L16.02,8.745V16.51m7.01-3.882a4.763,4.763,0,0,1-2.7,4.314V8.314A4.805,4.805,0,0,1,23.029,12.627Z\" transform=\"translate(-0.515 -1.167)\" fill=\"#084d6d\"/>\n</svg>)\n}\n","import React, { Dispatch, SetStateAction, useRef } from 'react';\nimport Box from '@mui/material/Box';\nimport { IJob } from '../../Job/types';\nimport { classes } from '../styles';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Checkbox from '@mui/material/Checkbox';\nimport { MultilineFormTextField } from '../../Components/CustomUIElements/FormTextField';\n\nexport default function Template({\n  apiKey,\n  job,\n  templateTabJobData,\n  setTemplateTabJobData,\n  setIsEdited\n}: {\n  apiKey: string;\n  job: IJob;\n  setIsEdited: Dispatch<SetStateAction<boolean>>;\n}) {\n\n  const templateRef = useRef<HTMLInputElement>(null);\n\n  return (\n    <Box sx={classes.tabContent}>\n      <Box id=\"template-title\" sx={classes.headerContent}>\n        Template\n      </Box>\n      <Box sx={classes.bodyContainer}>\n        <FormControlLabel\n          control={\n            <Checkbox\n              sx={classes.checkbox}\n              onChange={(event, value) => {\n                setTemplateTabJobData((prev) => ({\n                  ...prev,\n                  template_enabled: value\n                }))\n                setIsEdited(true);\n              }}\n              value={templateTabJobData?.template_enabled}\n              defaultChecked={templateTabJobData?.template_enabled}\n              name={''}\n            />\n          }\n          label={'Use separate template to current entity/EO skin'}\n          sx={classes.label}\n        />\n        {templateTabJobData.template_enabled && (\n          <>\n            <Box sx={classes.text}>Add code below to use a different template</Box>\n            <Box sx={classes.modalFormLine}>\n              <MultilineFormTextField\n                value={templateTabJobData?.template?.value}\n                onChange={(e) => {\n                  setTemplateTabJobData((prev) => ({\n                    ...prev,\n                    template: { ...prev.template, value: e.target.value }\n                  }));\n                  setIsEdited(true);\n                }}\n                rows={20}\n                innerRef={templateRef}\n                required={false}\n              />\n            </Box>\n          </>\n        )}\n      </Box>\n    </Box>\n  );\n}\n","import React from 'react';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport EditJob from './EditJob';\n\nconst queryClient = new QueryClient({\n  defaultOptions: {\n    queries: {\n      refetchOnWindowFocus: false\n    }\n  }\n});\n\nexport interface IEditJobProps {\n  aiInterview: boolean;\n  aiStudio: boolean;\n  aiStudioSummaries: boolean;\n  apiKey: string;\n  job_id: number;\n  userTimeZone: string;\n  jobFeedActive: boolean;\n  canAddIndeedDemographicQ: boolean;\n}\n\nexport default function EditJobPage({\n  aiInterview,\n  aiStudio,\n  aiStudioSummaries,\n  apiKey,\n  job_id,\n  userTimeZone,\n  jobFeedActive,\n  canAddIndeedDemographicQ\n}: IEditJobProps) {\n  return (\n    <QueryClientProvider client={queryClient}>\n      <EditJob {...{aiInterview, aiStudio, aiStudioSummaries, apiKey, job_id, userTimeZone, jobFeedActive, canAddIndeedDemographicQ }} />\n    </QueryClientProvider>\n  );\n}","import React from 'react';\nimport { Skeleton, TableRow, TableCell, TableBody } from '@mui/material';\n\nexport default function SkeletonTable({ rows, cols }) {\n  return (\n    <TableBody>\n      {Array.from(new Array(rows)).map((_row, i) => (\n        <TableRow key={i}>\n          {Array.from(new Array(cols)).map((_cell, j) => (\n            <TableCell key={j}>\n              <Skeleton width={'80%'} height={'30px'} />\n            </TableCell>\n          ))}\n        </TableRow>\n      ))}\n    </TableBody>\n  );\n}\n","import React, { ReactElement, useCallback, useEffect, useRef, useState } from 'react';\nimport CloseIcon from '@mui/icons-material/Close';\nimport {\n  Autocomplete,\n  Box,\n  Button,\n  CircularProgress,\n  FormControl,\n  InputLabel,\n  Modal,\n  TextField\n} from '@mui/material';\nimport moment from 'moment';\n\nimport {\n  FormTextField,\n  MultilineFormTextField\n} from '../../../Components/CustomUIElements/FormTextField';\nimport { SingleDateTimePicker } from '../../../Components/CustomUIElements/SingleDatePicker';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport StyledSnackbar from '../../../Components/CustomUIElements/StyledSnackbar';\nimport FormSelectWithIconField from '../../../Components/CustomUIElements/FormSelectWithIconField';\n\nimport Api from '../../API';\n\nimport { IJobsForTask, IApplicationsForTask } from '../../types';\nimport { IAssignedUserOptionsType } from '../../../Jobs/types';\n\nimport { classes } from './styles';\nimport { useJobsForTask } from '../../../hooks/useJobsForTask';\nimport { useApplicationsForTask } from '../../../hooks/useApplicationsForTask';\n\nconst priorities = [\n  { label: 'Low', value: 'Low', color: '#8CCF95' },\n  { label: 'Normal', value: 'Normal', color: '#E6A052' },\n  { label: 'High', value: 'High', color: '#E37D7A' }\n];\n\nexport default function AddTasks({\n  apiKey,\n  jobId,\n  setActionsAnchorEl,\n  buttonElement,\n  isDashboard,\n  refetch\n}: {\n  apiKey: string;\n  jobId?: number;\n  setActionsAnchorEl?: (value: null) => void;\n  buttonElement?: ReactElement;\n  isDashboard: boolean;\n  refetch?: () => void;\n}) {\n  const [isLoading, setIsLoading] = useState(false);\n  const [selectedJob, setSelectedJob] = useState<IJobsForTask>();\n  const [selectedApplicant, setSelectedApplicant] = useState<IApplicationsForTask>();\n  const [isDialogOpen, setIsDialogOpen] = useState(false);\n  const [hasError, setHasError] = useState(false);\n  const [date, setDate] = useState(moment().toDate());\n  const [subject, setSubject] = useState('');\n  const [note, setNote] = useState('');\n  const [assignedUserOptions, setAssignedUserOptions] = useState<IAssignedUserOptionsType[] | []>(\n    []\n  );\n  const [priority, setPriority] = useState({\n    label: 'Low',\n    value: 'Low',\n    color: '#8CCF95'\n  });\n  const [assignTo, setAssignTo] = useState<IAssignedUserOptionsType | null>(null);\n  const [snackbar, setSnackbar] = useState<{\n    message: string;\n    state: 'success' | 'warning' | 'error';\n  }>({\n    message: '',\n    state: 'success'\n  });\n\n  const fieldRefs = {\n    subject: useRef<HTMLInputElement>(null),\n    note: useRef<HTMLInputElement>(null),\n    date: useRef<HTMLInputElement>(null),\n    priority: useRef<HTMLInputElement>(null),\n    assignTo: useRef<HTMLInputElement>(null)\n  };\n\n  const { fetchJobs, jobs } = useJobsForTask();\n  const { fetchApplications, applications } = useApplicationsForTask();\n\n  const fetchCreateFormData = useCallback(async () => {\n    const response = await Api.getTask({ 'X-api-authenticate': apiKey });\n    setAssignedUserOptions(response?.assignable_users);\n  }, [apiKey]);\n\n  function dateIsValid(date: Date) {\n    return date instanceof Date;\n  }\n\n  useEffect(() => {\n    (async () => {\n      setIsLoading(true);\n      try {\n        await Promise.all([fetchCreateFormData()]);\n      } catch (error) {\n        console.log(error);\n      } finally {\n        setIsLoading(false);\n      }\n    })();\n  }, [fetchCreateFormData]);\n\n  useEffect(() => {\n    if (selectedJob) {\n      fetchApplications(selectedJob.id);\n    }\n  }, [selectedJob]);\n\n  function getPriority(value: string) {\n    switch (value) {\n      case 'Low':\n        return 1;\n      case 'Normal':\n        return 0;\n      default:\n        return -1;\n    }\n  }\n\n  function getNewTaskId(): { job_id: number } | { application_id: number } | undefined {\n    if (!isDashboard && jobId) {\n      return { job_id: jobId };\n    }\n    if (selectedJob && selectedApplicant) {\n      return { application_id: selectedApplicant.id };\n    }\n    if (selectedJob && !selectedApplicant) {\n      return { job_id: selectedJob.id };\n    }\n    return undefined;\n  }\n\n  const createNewTask = async () => {\n    if (subject && note && assignTo && priority) {\n      if (dateIsValid(new Date(date))) {\n        setHasError(false);\n      } else return setHasError(true);\n    } else {\n      let firstError: keyof typeof fieldRefs | undefined = undefined;\n      if (!assignTo) firstError = 'assignTo';\n      if (!priority) firstError = 'priority';\n      if (!note) firstError = 'note';\n      if (!subject) firstError = 'subject';\n      firstError &&\n        fieldRefs[firstError]?.current?.scrollIntoView({\n          behavior: 'smooth',\n          block: 'center'\n        });\n      return setHasError(true);\n    }\n\n    try {\n      await Api.newTask(\n        { 'X-api-authenticate': apiKey },\n        {\n          task: {\n            subject: subject,\n            note: note,\n            due_at: date.toString(),\n            priority: getPriority(priority.value),\n            user_id: assignTo.id\n          }\n        },\n        getNewTaskId()\n      );\n      setSnackbar({\n        message: 'Your Task was created',\n        state: 'success'\n      });\n      refetch && refetch();\n      setSubject('');\n      setNote('');\n      setIsDialogOpen(false);\n    } catch (error) {\n      setSnackbar({\n        message: 'There was an error adding a task. Please try again.',\n        state: 'error'\n      });\n    } finally {\n      !!setActionsAnchorEl && setActionsAnchorEl(null);\n      setIsLoading(false);\n      handleClose();\n    }\n  };\n\n  const handleOpenDialog = () => {\n    // Passively loading on click\n    fetchCreateFormData();\n    fetchJobs();\n    setIsDialogOpen(true);\n  };\n\n  function handleClose() {\n    setSelectedApplicant(undefined);\n    setSelectedJob(undefined);\n    setDate(moment().toDate());\n    setAssignTo(null);\n    setSubject('');\n    setNote('');\n    setIsDialogOpen(false);\n  }\n\n  return (\n    <Box>\n      <Box onClick={handleOpenDialog} id=\"add-task-job-button\">\n        {buttonElement || 'Add Task'}\n      </Box>\n      <Modal open={isDialogOpen} aria-labelledby=\"modal-modal-title\" onClose={handleClose}>\n        <Box sx={classes.modalContent}>\n          <CloseIcon onClick={handleClose} sx={classes.closeIcon} />\n          <Box id=\"modal-modal-title\" sx={classes.modalTitle}>\n            Add task\n          </Box>\n          <Box sx={{ marginTop: '30px', display: 'grid', overflow: 'auto' }}>\n            {isDashboard && (\n              <Box sx={classes.modalFormLine} pt={3}>\n                <Autocomplete\n                  disablePortal\n                  options={jobs}\n                  ref={fieldRefs.assignTo}\n                  getOptionLabel={(option) => `${option.id} - ${option.title}`}\n                  id=\"add-task-select-job\"\n                  value={selectedJob}\n                  onChange={(_event, value) => setSelectedJob(value || undefined)}\n                  sx={{ width: '290px', ...sharedClasses.formAutocomplete }}\n                  ListboxProps={{\n                    style: {\n                      fontFamily: 'Source Sans Pro, sans-serif',\n                      color: '#333333',\n                      maxHeight: '200px'\n                    }\n                  }}\n                  renderInput={(params) => (\n                    <TextField {...params} label=\"Select Job\" InputLabelProps={{ shrink: true }} />\n                  )}\n                />\n                {selectedJob?.id && applications && (\n                  <Autocomplete\n                    disablePortal\n                    options={applications}\n                    ref={fieldRefs.assignTo}\n                    getOptionLabel={(option) => `${option.id} - ${option.name}`}\n                    id=\"add-task-assign-to-candidate\"\n                    value={selectedApplicant}\n                    onChange={(_event, value) => setSelectedApplicant(value || undefined)}\n                    sx={{ width: '290px', ...sharedClasses.formAutocomplete }}\n                    ListboxProps={{\n                      style: {\n                        fontFamily: 'Source Sans Pro, sans-serif',\n                        color: '#333333',\n                        maxHeight: '200px'\n                      }\n                    }}\n                    renderInput={(params) => (\n                      <TextField\n                        {...params}\n                        label=\"Assign to candidate\"\n                        InputLabelProps={{ shrink: true }}\n                      />\n                    )}\n                  />\n                )}\n              </Box>\n            )}\n            <Box sx={classes.modalFormLine}>\n              <FormTextField\n                value={subject}\n                onChange={(e) => setSubject(e.target.value)}\n                styles={{ width: '290px' }}\n                error={!subject && hasError ? 'This field is required' : ''}\n                innerRef={fieldRefs.subject}\n                label={'Subject'}\n              />\n            </Box>\n            <Box sx={classes.modalFormLine}>\n              <MultilineFormTextField\n                value={note}\n                onChange={(e) => setNote(e.target.value)}\n                styles={{ width: '450px', marginTop: '20px' }}\n                rows={6}\n                error={!note && hasError ? 'This field is required' : ''}\n                innerRef={fieldRefs.note}\n                label={'Note'}\n              />\n            </Box>\n            <Box sx={classes.modalFormLine}>\n              <FormControl variant=\"standard\">\n                <InputLabel shrink htmlFor=\"text-input\" sx={sharedClasses.inputLabel}>\n                  Date\n                </InputLabel>\n                <SingleDateTimePicker\n                  value={date}\n                  minDate={moment().toDate()}\n                  inputStyles={classes.datePicker}\n                  pickerStyles={classes.calendar}\n                  onChange={(date) => setDate(moment(date).toDate())}\n                />\n              </FormControl>\n              <FormSelectWithIconField\n                options={priorities}\n                defaultValue=\"Low\"\n                onChange={(value) => setPriority(priorities.filter((p) => p.label === value)[0])}\n                label={'Priority'}\n                styles={{\n                  width: '290px',\n                  '& .MuiSvgIcon-root': { color: priority.color }\n                }}\n              />\n            </Box>\n            <Box sx={{ marginTop: '1.75rem' }}>\n              {!isLoading || assignedUserOptions ? (\n                <Box sx={classes.modalFormLine}>\n                  <Box sx={{ position: 'relative' }}>\n                    <Autocomplete\n                      disablePortal\n                      options={assignedUserOptions}\n                      ref={fieldRefs.assignTo}\n                      getOptionLabel={(option) => `${option?.firstname} ${option?.lastname}`}\n                      id=\"state-region-province\"\n                      value={assignTo}\n                      onChange={(_event, value) => setAssignTo(value)}\n                      sx={{\n                        width: '290px',\n                        ...sharedClasses.formAutocomplete\n                      }}\n                      ListboxProps={{\n                        style: {\n                          fontFamily: 'Source Sans Pro, sans-serif',\n                          color: '#333333',\n                          maxHeight: '200px'\n                        }\n                      }}\n                      renderInput={(params) => (\n                        <TextField\n                          {...params}\n                          label=\"Assign to user\"\n                          InputLabelProps={{ shrink: true }}\n                        />\n                      )}\n                    />\n                    {!assignTo && hasError && (\n                      <Box sx={{ ...sharedClasses.errorBox }}>This field is required</Box>\n                    )}\n                  </Box>\n                </Box>\n              ) : (\n                <CircularProgress size={20} color=\"inherit\" />\n              )}\n            </Box>\n          </Box>\n          <Box sx={classes.modalActions}>\n            <Button\n              disableElevation\n              sx={{ ...classes.buttonRedLight }}\n              variant=\"text\"\n              onClick={() => {\n                setIsDialogOpen(false);\n                !!setActionsAnchorEl && setActionsAnchorEl(null);\n              }}\n            >\n              Cancel\n            </Button>\n            <Button sx={classes.revertloadButton} onClick={() => createNewTask()}>\n              Submit\n            </Button>\n          </Box>\n        </Box>\n      </Modal>\n      <StyledSnackbar\n        message={snackbar.message}\n        state={snackbar.state}\n        setSnackbarState={setSnackbar}\n      />\n    </Box>\n  );\n}\n","import React, { useState, useCallback, useEffect } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport CloseIcon from '@mui/icons-material/Close';\nimport Button from '@mui/material/Button';\nimport Table from '@mui/material/Table';\nimport TableBody from '@mui/material/TableBody';\nimport TableCell from '@mui/material/TableCell';\nimport TableContainer from '@mui/material/TableContainer';\nimport TableHead from '@mui/material/TableHead';\nimport TableRow from '@mui/material/TableRow';\nimport Popover from '@mui/material/Popover';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport SortIcon from '@mui/icons-material/Sort';\nimport { classes } from './styles';\nimport { StyledSnackbarProps } from '../../../Components/CustomUIElements/StyledSnackbar';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\n\ninterface ICandidates {\n  id: number;\n  application_id: number;\n  name: string;\n  status: string;\n  export_status: string;\n  upload_time: string;\n  exported_successfully: boolean;\n  exported_confirmation_time: string;\n}\n\nexport default function CeridianDayforce({\n  apiKey,\n  jobId,\n  setSnackbar,\n  setActionsAnchorEl\n}: {\n  apiKey: string;\n  jobId: number;\n  setActionsAnchorEl: (value: null) => void;\n  setSnackbar: StyledSnackbarProps['setSnackbarState'];\n}) {\n  const [isLoading, setIsLoading] = useState(false);\n  const [isDialogOpen, setIsDialogOpen] = useState(false);\n  const [candidates, setCandidates] = useState<ICandidates[]>([]);\n  const [enabled, setEnabled] = useState(false);\n  const [status, setStatus] = useState('');\n  const [retryLoading, setRetryLoading] = useState(-1);\n  const [filterAnchorEl, setFilterAnchorEl] = useState<null | HTMLElement>(null);\n\n  const entityUsesCeridian = useCallback(async () => {\n    const response = await fetch(\n      `/api/v4/jobs/${jobId}/ceridian_dayforce_uploads/entity_is_configured`,\n      {\n        method: 'GET',\n        headers: {\n          'x-api-authenticate': apiKey\n        }\n      }\n    );\n    const { entity_is_configured } = await response.json();\n    setEnabled(entity_is_configured);\n  }, [apiKey, jobId]);\n\n  const getCandidates = useCallback(\n    async (selectedStatus?: string) => {\n      setIsLoading(true);\n      try {\n        const response = await fetch(\n          `/api/v4/jobs/${jobId}/ceridian_dayforce_uploads${\n            selectedStatus ? '?filter[status]=' + selectedStatus : ''\n          }`,\n          {\n            method: 'GET',\n            headers: {\n              'x-api-authenticate': apiKey\n            }\n          }\n        );\n        const { candidates } = await response.json();\n        setCandidates(candidates);\n      } catch (error) {\n        setSnackbar({\n          message: 'Error fetching ceridian dayforce candidates',\n          state: 'error'\n        });\n      } finally {\n        setIsLoading(false);\n      }\n    },\n    [apiKey, jobId, setSnackbar]\n  );\n\n  const handleRetryUpload = async (id: number) => {\n    setRetryLoading(id);\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/ceridian_dayforce_uploads?id=${id}`, {\n        method: 'POST',\n        headers: {\n          'x-api-authenticate': apiKey\n        }\n      });\n      if (response.ok) {\n        setSnackbar({\n          message: 'Application is being uploaded to Ceridian Dayforce',\n          state: 'success'\n        });\n      } else {\n        setSnackbar({\n          message: 'Error retrying failed upload',\n          state: 'error'\n        });\n      }\n    } catch (error) {\n      setSnackbar({\n        message: 'Error retrying failed upload',\n        state: 'error'\n      });\n    } finally {\n      setRetryLoading(-1);\n    }\n  };\n\n  const handleFilter = (selected: string) => {\n    if (selected !== status) {\n      getCandidates(selected);\n      setStatus(selected);\n    }\n    setFilterAnchorEl(null);\n  };\n\n  const getStatusText = {\n    Processing: 'Processing',\n    Pending: 'Pending',\n    failed_file_renaming: 'Failed',\n    upload_confirmed: 'Successful',\n    uploading_failed: 'Failed uploads'\n  };\n\n  useEffect(() => {\n    if (isDialogOpen) {\n      getCandidates();\n    } else {\n      entityUsesCeridian();\n    }\n  }, [entityUsesCeridian, getCandidates, isDialogOpen]);\n\n  if (!enabled) {\n    return null;\n  } else {\n    return (\n      <>\n        <span>\n          <Box\n            onClick={() => {\n              setIsDialogOpen(true);\n            }}\n          >\n            Ceridian Dayforce\n          </Box>\n        </span>\n        <Modal\n          open={isDialogOpen}\n          aria-labelledby=\"modal-modal-title\"\n          onClose={() => setIsDialogOpen(false)}\n        >\n          <Box sx={classes.modalContent}>\n            <CloseIcon onClick={() => setIsDialogOpen(false)} sx={classes.closeIcon} />\n            <Box id=\"modal-modal-title\" sx={classes.modalTitle}>\n              Ceridian Dayforce\n            </Box>\n            <Box sx={classes.filterContainer}>\n              <Button\n                sx={classes.filterButton}\n                startIcon={<SortIcon sx={{ marginRight: '8px' }} />}\n                onClick={(e) => setFilterAnchorEl(e.currentTarget)}\n              >\n                {status ? getStatusText[status as keyof typeof getStatusText] : 'Upload Status'}\n              </Button>\n              <Popover\n                id=\"filter-menu-popover\"\n                sx={classes.filterMenu}\n                open={Boolean(filterAnchorEl)}\n                anchorEl={filterAnchorEl}\n                onClose={() => {\n                  setFilterAnchorEl(null);\n                }}\n                anchorOrigin={{\n                  vertical: 'bottom',\n                  horizontal: 'left'\n                }}\n                transformOrigin={{\n                  vertical: 'top',\n                  horizontal: 'left'\n                }}\n              >\n                {status !== 'uploading_failed' && (\n                  <span onClick={() => handleFilter('uploading_failed')}>Failed uploads</span>\n                )}\n                {status !== 'Processing' && (\n                  <span onClick={() => handleFilter('Processing')}>Processing</span>\n                )}\n                {status !== 'upload_confirmed' && (\n                  <span onClick={() => handleFilter('upload_confirmed')}>Successful</span>\n                )}\n                {status !== 'failed_file_renaming' && (\n                  <span onClick={() => handleFilter('failed_file_renaming')}>Failed</span>\n                )}\n                {status !== 'Pending' && (\n                  <span onClick={() => handleFilter('Pending')}>Pending</span>\n                )}\n                {status && <span onClick={() => handleFilter('')}>Clear filter</span>}\n              </Popover>\n            </Box>\n            {!isLoading ? (\n              candidates.length > 0 ? (\n                <Box sx={classes.tableContainer}>\n                  <TableContainer>\n                    <Table sx={classes.table}>\n                      <TableHead>\n                        <TableRow>\n                          <TableCell sx={{ ...classes.sticky, width: '125px' }}>\n                            Application ID\n                          </TableCell>\n                          <TableCell sx={{ ...classes.sticky, left: '124.5px' }}>\n                            Canidate Name\n                          </TableCell>\n                          <TableCell>Status</TableCell>\n                          <TableCell>Export Status</TableCell>\n                          <TableCell>Upload Time</TableCell>\n                          <TableCell>Exported Successfully</TableCell>\n                          <TableCell>Export Confirmation Time</TableCell>\n                          <TableCell sx={classes.stickyRight}>Actions</TableCell>\n                        </TableRow>\n                      </TableHead>\n                      <TableBody>\n                        {candidates.map((candidate) => (\n                          <TableRow key={candidate.application_id}>\n                            <TableCell\n                              sx={{ ...classes.sticky, width: '125px' }}\n                              component=\"th\"\n                              scope=\"row\"\n                            >\n                              {candidate.id ? candidate.id : '-'}\n                            </TableCell>\n                            <TableCell sx={{ ...classes.sticky, left: '124.5px' }}>\n                              {candidate.name ? candidate.name : '-'}\n                            </TableCell>\n                            <TableCell>{candidate.status ? candidate.status : '-'}</TableCell>\n                            <TableCell>\n                              {candidate.export_status ? candidate.export_status : '-'}\n                            </TableCell>\n                            <TableCell>{candidate.upload_time ?? '-'}</TableCell>\n                            <TableCell\n                              sx={\n                                candidate.exported_successfully\n                                  ? { color: theme.palette.success.main }\n                                  : { color: theme.palette.error.main }\n                              }\n                            >\n                              {candidate.exported_successfully ? 'True' : 'False'}\n                            </TableCell>\n                            <TableCell>{candidate.exported_confirmation_time ?? '-'}</TableCell>\n                            <TableCell\n                              sx={{ ...classes.stickyRight, ...classes.clickable }}\n                              onClick={() => handleRetryUpload(candidate.id)}\n                            >\n                              {retryLoading === candidate.id ? (\n                                <CircularProgress size={15} sx={{ marginLeft: '16px' }} />\n                              ) : (\n                                'Retry upload'\n                              )}\n                            </TableCell>\n                          </TableRow>\n                        ))}\n                      </TableBody>\n                    </Table>\n                  </TableContainer>\n                </Box>\n              ) : (\n                <Box sx={classes.noCandidateContainer}>\n                  {`No candidates${\n                    status ? ' matching your status filter ' : ' '\n                  }have been exported to Ceridian Dayforce`}\n                </Box>\n              )\n            ) : (\n              <Box sx={classes.loadingContainer}>\n                <CircularProgress size={32} />\n              </Box>\n            )}\n            <Box sx={classes.modalActions}>\n              <Button\n                sx={classes.revertloadButton}\n                onClick={() => {\n                  setIsDialogOpen(false);\n                  setActionsAnchorEl(null);\n                }}\n              >\n                Close\n              </Button>\n            </Box>\n          </Box>\n        </Modal>\n      </>\n    );\n  }\n}\n","import React, { useState, useCallback } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport CloseIcon from '@mui/icons-material/Close';\nimport Button from '@mui/material/Button';\nimport { Virtualize } from '../../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport Api from '../../API';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { classes } from './styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport { StyledSnackbarProps } from '../../../Components/CustomUIElements/StyledSnackbar';\n\nexport default function MoveJob({\n  apiKey,\n  jobId,\n  entity,\n  fetchJobs,\n  setSnackbarState,\n  setActionsAnchorEl\n}: {\n  apiKey: string;\n  entity: string | undefined;\n  jobId: number;\n  fetchJobs: () => void;\n  setActionsAnchorEl: (value: null) => void;\n  setSnackbarState: StyledSnackbarProps['setSnackBarState'];\n}) {\n  const [isLoading, setIsLoading] = useState(false);\n  const [isDialogOpen, setIsDialogOpen] = useState(false);\n  const [hasError, setHasError] = useState(false);\n  const [assignedMoveOptions, setMoveJobOptions] = useState<string[] | null>(null);\n  const [moveTo, setMoveTo] = useState(null);\n\n  const fetchMoveJobData = useCallback(async () => {\n    setIsLoading(true);\n    try {\n      const data = await Api.getMoveJobs({ 'X-api-authenticate': apiKey }, jobId);\n      setMoveJobOptions(data?.entities.map((a) => `${a.id} - ${a.name}`));\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsLoading(false);\n    }\n  }, [apiKey, jobId]);\n\n  const moveJob = async () => {\n    if (moveTo) {\n      if (typeof moveTo !== 'string') return setHasError(true);\n      else setHasError(false);\n    } else return setHasError(true);\n    try {\n      const entityId = moveTo.split(' -')[0];\n      await Api.moveJob({ 'X-api-authenticate': apiKey }, jobId, entityId);\n      setSnackbarState({\n        message: 'Your job has been moved',\n        state: 'success'\n      });\n      setMoveTo(null);\n      setIsDialogOpen(false);\n      setActionsAnchorEl(null);\n      fetchJobs();\n    } catch (error) {\n      setSnackbarState({\n        message: 'There was an error moving the job. Please try again.',\n        state: 'error'\n      });\n    } finally {\n      setIsLoading(false);\n    }\n  };\n\n  function setValue(value: string) {\n    setMoveTo(value);\n  }\n\n  return (\n    <Box>\n      <Box\n        onClick={() => {\n          setIsDialogOpen(true);\n          !assignedMoveOptions && fetchMoveJobData();\n        }}\n        id=\"move-job-button\"\n      >\n        Move Job\n      </Box>\n      <Modal\n        open={isDialogOpen}\n        aria-labelledby=\"modal-modal-title\"\n        onClose={() => setIsDialogOpen(false)}\n      >\n        <Box sx={classes.modalContent}>\n          <CloseIcon onClick={() => setIsDialogOpen(false)} sx={classes.closeIcon} />\n          <Box id=\"modal-modal-title\" sx={classes.modalTitle}>\n            Move Job\n          </Box>\n          <Box sx={{ marginTop: '1rem', display: 'grid' }}>\n            <Box sx={classes.subTitle}>Current entity: </Box>\n            <Box sx={{ margin: '0.75rem 0' }}>{entity}</Box>\n            <Box sx={{ marginTop: '2.25rem' }}>\n              {assignedMoveOptions ? (\n                <Box sx={{ marginTop: '1rem' }}>\n                  {!isLoading ? (\n                    <Box sx={classes.modalFormLine}>\n                      <Virtualize\n                        value={moveTo}\n                        passOptions={assignedMoveOptions}\n                        setValue={setValue}\n                        passedStyles={{ width: '460px', ...sharedClasses.formAutocomplete }}\n                        errorStyles={{ ...sharedClasses.errorBox, top: '-24px', right: '0px' }}\n                        error={!moveTo && hasError}\n                        label=\"Move to\"\n                      />\n                    </Box>\n                  ) : (\n                    <CircularProgress size={20} color=\"inherit\" />\n                  )}\n                </Box>\n              ) : (\n                <Box>\n                  {isLoading ? (\n                    <CircularProgress size={20} color=\"inherit\" />\n                  ) : (\n                    <Box sx={classes.noEntitys}>No Entities are available</Box>\n                  )}\n                </Box>\n              )}\n            </Box>\n          </Box>\n          <Box sx={classes.modalActions}>\n            <Button\n              disableElevation\n              sx={{ ...classes.buttonRedLight }}\n              variant=\"text\"\n              onClick={() => {\n                setIsDialogOpen(false);\n                setActionsAnchorEl(null);\n              }}\n            >\n              Cancel\n            </Button>\n            <Button sx={classes.revertloadButton} onClick={() => moveJob()}>\n              Submit\n            </Button>\n          </Box>\n        </Box>\n      </Modal>\n    </Box>\n  );\n}\n","import React, { useEffect, useState, useCallback } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport CloseIcon from '@mui/icons-material/Close';\nimport Button from '@mui/material/Button';\nimport TextField from '@mui/material/TextField';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport Api from '../../API';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport { classes } from './styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport { StyledSnackbarProps } from '../../../Components/CustomUIElements/StyledSnackbar';\n\nexport default function RatingSet({\n  apiKey,\n  jobId,\n  setSnackbarState,\n  setActionsAnchorEl\n}: {\n  apiKey: string;\n  jobId: number;\n  setActionsAnchorEl: (value: null) => void;\n  setSnackbarState: StyledSnackbarProps['setSnackBarState'];\n}) {\n  const [isLoading, setIsLoading] = useState(false);\n  const [isDialogOpen, setIsDialogOpen] = useState(false);\n  const [deleteBulk, setDeleteBulk] = useState(false);\n  const [ratingOptions, setRatingOptions] = useState(null);\n  const [raterOptions, setRaterOptions] = useState(null);\n  const [raterName, setRaterName] = useState(null);\n  const [hasError, setHasError] = useState(false);\n  const [deleteUserConfirm, setDeleteUserConfirm] = useState(null);\n\n  const fetchRatingData = useCallback(async () => {\n    setIsLoading(true)\n    try {\n      const [ratingSets, raters] = await Promise.all([\n        Api.getRatingSets({ 'X-api-authenticate': apiKey }, jobId),\n        Api.getRaters({ 'X-api-authenticate': apiKey }, jobId),\n      ]);\n      ratingSets?.data?.rating_sets && setRatingOptions(ratingSets?.data?.rating_sets);\n      raters?.data && setRaterOptions(raters?.data);\n      setIsLoading(false);\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsLoading(false);\n    }\n  }, [apiKey, jobId]);\n\n  const deleteSet = async (id: number) => {\n    try {\n      await Api.deleteRatingSet({ 'X-api-authenticate': apiKey },\n        jobId,\n        id,\n      );\n      setSnackbarState({\n        message:\n          'Rating set has been removed',\n        state: 'success'\n      });\n    } catch (error) {\n      setSnackbarState({\n        message: 'There was an error removing a rating set. Please try again.',\n        state: 'error'\n      });\n    } finally {\n      setRatingOptions(null);\n      setIsDialogOpen(false);\n      setActionsAnchorEl(null);\n      setDeleteUserConfirm(null);\n      setIsLoading(false);\n    }\n  };\n\n  const deleteRaters = async () => {\n    setIsLoading(true);\n    if (!raterName) {\n       setHasError(true);\n       return;\n    } else setHasError(false);\n    try {\n      await Api.deleteRaterSet({ 'X-api-authenticate': apiKey },\n        jobId,\n        raterName.id\n      );\n      setSnackbarState({\n        message:\n        `Rating sets have been removed from ${raterName.firstname} ${raterName.lastname}.`,\n        state: 'success'\n      });\n      setRaterName(null);\n      setDeleteBulk(false);\n    } catch (error) {\n      setSnackbarState({\n        message: 'There was an error removing a workflow. Please try again.',\n        state: 'error'\n      });\n    } finally {\n      setRatingOptions(null);\n      setActionsAnchorEl(null);\n      setIsDialogOpen(false);\n      setIsLoading(false);\n    }\n  };\n\n  return (\n    <Box>\n      <Box \n        onClick={() => {\n          !ratingOptions && fetchRatingData();\n          setIsDialogOpen(true);\n        }}\n        id=\"rating-sets-job-button\"\n      >\n        Rating Sets\n      </Box>\n      <Modal \n        open={isDialogOpen} \n        aria-labelledby=\"modal-modal-title\"\n        onClose={() => {\n          setIsDialogOpen(false);\n          setDeleteBulk(false);\n        }}\n      >\n\n        <Box sx={classes.modalContent}>\n          <CloseIcon \n            onClick={() => {\n              setIsDialogOpen(false);\n              setDeleteBulk(false);\n            }} \n            sx={classes.closeIcon}\n          />\n          <Box id=\"modal-modal-title\" sx={classes.modalTitle}>Rating Sets</Box>\n          <Box sx={{ margin: '10px 0 15px 0', display: 'grid', overflow: 'auto', minHeight: '300px' }}>\n            {ratingOptions && ratingOptions?.length > 0\n                ? <Box sx={{ marginTop: '1rem' }}>\n                  {!isLoading\n                    ? <Box sx={classes.modalFormLine}>\n                        {deleteBulk \n                          ? <Box>\n                              <Box sx={{ position: 'relative' }}>\n                                <Autocomplete\n                                  disablePortal\n                                  options={raterOptions}\n                                  getOptionLabel={(option) => `${option.firstname}  ${option.lastname}`}\n                                  id=\"state-region-province\"\n                                  value={raterName}\n                                  onChange={(event, value) => setRaterName(value)}\n                                  sx={{ width: '290px', ...sharedClasses.formAutocomplete, marginTop: '35px'}}\n                                  ListboxProps={{\n                                    style: {\n                                      fontFamily: 'Source Sans Pro, sans-serif',\n                                      color: '#333333',\n                                      maxHeight: '200px'\n                                    }\n                                  }}\n                                  renderInput={(params) => (\n                                    <TextField\n                                      {...params}\n                                      label=\"Rater name\"\n                                      InputLabelProps={{ shrink: true }}\n                                    />\n                                  )}\n                                />\n                                {!raterName && hasError && (\n                                <Box sx={{ ...sharedClasses.errorBox }}>\n                                  This field is required\n                                </Box>\n                                )}\n                              </Box>\n                              {raterName \n                                ? <Box sx={{...classes.modalActions, margin: '15px 0 0px 3px'}}>\n                                    <Button\n                                      disableElevation\n                                      sx={classes.buttonGreen}\n                                      variant=\"text\"\n                                      onClick={() => { \n                                        setIsDialogOpen(false);\n                                        setActionsAnchorEl(null);\n                                      }}\n                                    >\n                                      Cancel\n                                    </Button>\n                                    <Button \n                                      sx={{...classes.revertloadButton, backgroundColor: '#D6827D33' }}\n                                      onClick={() => deleteRaters()}\n                                    >\n                                      Delete \n                                    </Button>\n                                  </Box>\n                                : <span />\n                              }\n                            </Box>\n                          : <Box sx={{ width: '100%' }}>\n                              {deleteUserConfirm\n                              ? <Box sx={{ color: '#939393', marginBottom: '1rem' }}>Are you sure you want to delete this rating</Box>\n                              : <Button\n                                  variant=\"outlined\"\n                                  startIcon={<DeleteIcon />}\n                                  sx={{ ...classes.actionButton, ...classes.deleteApplicant }}\n                                  onClick={() => setDeleteBulk(true)}\n                                >\n                                  Bulk delete rating set\n                                </Button>\n                              }\n                              {deleteUserConfirm \n                                ? <Box sx={classes.tableHeader}>\n                                    <Box sx={{ width: '45%' }}>Application</Box>\n                                    <Box sx={{ width: '40%' }}>Rater</Box>\n                                  </Box>\n                                : <Box sx={classes.tableHeader}>\n                                    <Box sx={{ width: '45%' }}>Application</Box>\n                                    <Box sx={{ width: '40%' }}>Rater</Box>\n                                    <Box>\n                                      <Button\n                                        disableElevation\n                                        disabled\n                                        sx={{ color: '#FFFFFF !Important' }}\n                                        startIcon={<DeleteIcon />}\n                                      />\n                                    </Box>\n                                  </Box>\n                              }\n                              {deleteUserConfirm\n                                ? <Box>\n                                    <Box sx={classes.tableRow}>\n                                      <Box sx={{ width: '45%' }}>{deleteUserConfirm?.application_id} - {deleteUserConfirm?.candidate_name}</Box>\n                                      <Box sx={{ width: '40%' }}>{deleteUserConfirm?.rater_name}</Box>\n                                    </Box>\n                                    <Box sx={{...classes.modalActions, marginTop: '1rem'}}>\n                                      <Button\n                                        disableElevation\n                                        sx={classes.buttonGreen}\n                                        variant=\"text\"\n                                        onClick={() => setDeleteUserConfirm(null)}\n                                      >\n                                        Cancel\n                                      </Button>\n                                      <Button \n                                        sx={{...classes.revertloadButton, backgroundColor: '#D6827D33' }}\n                                        onClick={() => {deleteSet(deleteUserConfirm?.id)}}\n                                      >\n                                        Delete \n                                      </Button>\n                                    </Box>\n                                  </Box>\n                                : <Box>\n                                    {ratingOptions.map(sets =>\n                                        <Box key={sets.id} sx={classes.tableRow}>\n                                          <Box sx={{ width: '45%' }}>{sets.application_id} - {sets.candidate_name}</Box>\n                                          <Box sx={{ width: '40%' }}>{sets.rater_name}</Box>\n                                          <Box onClick={() => {\n                                              setDeleteUserConfirm(sets);\n                                              \n                                            }}\n                                          >\n                                            <Button\n                                              disableElevation\n                                              sx={{ ...classes.buttonRed, width: '1rem' }}\n                                              startIcon={<DeleteIcon />}\n                                            />\n                                          </Box>\n                                        </Box>\n                                      )\n                                    }\n                                  </Box>\n                              }\n                            </Box>\n                        }\n                      </Box>\n                    : <CircularProgress size={20} color=\"inherit\" />\n                  }\n                </Box>\n              : <Box>\n                  {isLoading\n                    ? <CircularProgress size={20} color=\"inherit\" />\n                    : <Box sx={classes.noWorkflows}>No Rating sets have been created</Box>\n                  }\n                </Box>\n              }\n            </Box>\n          </Box>\n      </Modal>\n    </Box>\n  );\n}\n","import React, { useState, useCallback, useEffect } from 'react';\nimport Box from '@mui/material/Box';\nimport Slider from '@mui/material/Slider';\nimport Tooltip from '@mui/material/Tooltip';\nimport Modal from '@mui/material/Modal';\nimport CloseIcon from '@mui/icons-material/Close';\nimport Button from '@mui/material/Button';\nimport moment from 'moment-timezone';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport BusinessCenterIcon from '@mui/icons-material/BusinessCenter';\nimport Api from '../../API';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport ExpandLessIcon from '@mui/icons-material/ExpandLess';\nimport { IRevision, ISnackBarMessage } from '../../types';\nimport { classes } from './styles';\n\nexport default function Revisions({\n  apiKey,\n  jobId,\n  fetchJobs,\n  setSnackbar,\n  setActionsAnchorEl,\n  userTimeZone\n}: {\n  apiKey: string;\n  jobId: number;\n  fetchJobs: () => void;\n  setActionsAnchorEl: (value: null) => void;\n  setSnackbar: ({ message, state }: ISnackBarMessage) => void;\n  userTimeZone: string;\n}) {\n  const timeZoneString = Intl.DateTimeFormat().resolvedOptions().timeZone;\n  const [isLoading, setIsLoading] = useState(false);\n  const [isDialogOpen, setIsDialogOpen] = useState(false);\n  const [openContent, setOpenContent] = useState('');\n  const [versionNumber, setVersionNumber] = useState<number | null>(null);\n  const [revisions, setRevisions] = useState<IRevision[] | null>(null);\n  const [disableButton, setDisableButton] = useState<boolean>(false);\n\n  const handleChange = (event: Event, newValue: number) => {\n    setVersionNumber(newValue);\n  };\n\n  const createNewVersion = async () => {\n    try {\n      await Api.revertRevision({ 'X-api-authenticate': apiKey }, jobId, versionNumber);\n      fetchJobs();\n      setIsDialogOpen(false);\n      fetchRevision();\n      setOpenContent('');\n      setActionsAnchorEl(null);\n      setSnackbar({\n        message: 'Your version was successful changed',\n        state: 'success'\n      });\n    } catch (error) {\n      setSnackbar({\n        message: 'There was an error changing the version. Please try again.',\n        state: 'error'\n      });\n      setIsDialogOpen(false);\n    } finally {\n      setIsLoading(false);\n    }\n  };\n\n  const ticked = ['unchecked', 'checked'];\n\n  const renderTableData = (field, value) => {\n    const timestamp = value.timestamp\n      ? moment.tz(value.timestamp, userTimeZone || timeZoneString).format('DD MMM YYYY, h:mma z')\n      : '';\n    switch (field) {\n      case 'expires_at':\n      case 'status_changed_at':\n        return (\n          <span>\n            <Box sx={classes.revisionsVersionsContent}>\n              <Box\n                sx={classes.revisionsVersionsContentBlue}\n                onClick={() =>\n                  window.open(`${window.location.origin}${value.editor_url}`, '_blank').focus()\n                }\n              >\n                {value.editor}\n              </Box>\n              <Box sx={{ paddingLeft: '2.5px' }}>\n                <Box sx={{ display: 'flex' }}>\n                  changed {field} from\n                  <Box sx={classes.optionsText}>\n                    {value.change_from ? moment(value.change_from).format('D MMM YYYY') : '-'}\n                  </Box>\n                  to{' '}\n                  <Box sx={classes.optionsText}>\n                    {value.change_to ? moment(value.change_to).format('D MMM YYYY') : '-'}{' '}\n                  </Box>\n                  <span style={{ margin: '0 3px' }}>on {timestamp}</span>\n                </Box>\n              </Box>\n            </Box>\n          </span>\n        );\n      case 'options':\n        return (\n          <span>\n            <Box sx={classes.revisionsVersionsContentDescription}>\n              <Box style={{ display: 'flex' }}>\n                <Box\n                  sx={classes.revisionsVersionsContentBlue}\n                  onClick={() =>\n                    window.open(`${window.location.origin}${value.editor_url}`, '_blank').focus()\n                  }\n                >\n                  {value.editor}\n                </Box>\n                <Box sx={{ paddingLeft: '2.5px' }}>\n                  <span>added new {field}</span>\n                  <span style={{ margin: '0 3px' }}>on {timestamp}</span>\n                </Box>\n              </Box>\n              <span\n                onClick={() =>\n                  setOpenContent(field === '' ? field : field === openContent ? '' : field)\n                }\n              >\n                Show\n                {openContent === field ? (\n                  <ExpandLessIcon sx={{ color: '#939393' }} fontSize=\"small\" />\n                ) : (\n                  <ExpandMoreIcon sx={{ color: '#939393' }} fontSize=\"small\" />\n                )}\n              </span>\n              {openContent === field ? (\n                <Box sx={{ marginTop: '0.5rem' }}>\n                  {!!value.change_from.blind_rating && (\n                    <div style={{ display: 'flex' }}>\n                      Blind rating changed from\n                      <Box sx={classes.optionsText}>\n                        {value.change_from.blind_rating\n                          ? ticked[value.change_from.blind_rating]\n                          : '-'}\n                      </Box>\n                      to <Box sx={classes.optionsText}>{ticked[value.change_to.blind_rating]}</Box>\n                    </div>\n                  )}\n                  {!!value.change_from.hide_rating_activity && (\n                    <div style={{ display: 'flex' }}>\n                      Hide rating activity rating changed from\n                      <Box sx={classes.optionsText}>\n                        {value.change_from.hide_rating_activity\n                          ? ticked[value.change_from.hide_rating_activity]\n                          : '-'}\n                      </Box>\n                      to{' '}\n                      <Box sx={classes.optionsText}>\n                        {ticked[value.change_to.hide_rating_activity]}\n                      </Box>\n                    </div>\n                  )}\n                  {!!value.change_from.auto_ratings && (\n                    <div style={{ display: 'flex' }}>\n                      Auto ratings rating changed from\n                      <Box sx={classes.optionsText}>\n                        {value.change_from.auto_ratings\n                          ? ticked[value.change_from.auto_ratings]\n                          : '-'}\n                      </Box>\n                      to <Box sx={classes.optionsText}>{ticked[value.change_to.auto_ratings]}</Box>\n                    </div>\n                  )}\n                  {!!value.change_from.title_field && (\n                    <div style={{ display: 'flex' }}>\n                      Title field rating changed from\n                      <Box sx={classes.optionsText}>\n                        {value.change_from.title_field\n                          ? ticked[value.change_from.title_field]\n                          : '-'}\n                      </Box>\n                      to <Box sx={classes.optionsText}>{ticked[value.change_to.title_field]}</Box>\n                    </div>\n                  )}\n                  {!!value.change_from.gender_field && (\n                    <div style={{ display: 'flex' }}>\n                      Gender field rating changed from\n                      <Box sx={classes.optionsText}>\n                        {value.change_from.gender_field\n                          ? ticked[value.change_from.gender_field]\n                          : '-'}\n                      </Box>\n                      to <Box sx={classes.optionsText}>{ticked[value.change_to.gender_field]}</Box>\n                    </div>\n                  )}\n                  {!!value.change_from.linkedin_field && (\n                    <div style={{ display: 'flex' }}>\n                      Linkedin field field rating changed from\n                      <Box sx={classes.optionsText}>\n                        {value.change_from.linkedin_field\n                          ? ticked[value.change_from.linkedin_field]\n                          : '-'}\n                      </Box>\n                      to{' '}\n                      <Box sx={classes.optionsText}>{ticked[value.change_to.linkedin_field]}</Box>\n                    </div>\n                  )}\n                  {!!value.change_from.indeed_apply && (\n                    <div style={{ display: 'flex' }}>\n                      Indeed apply field rating changed from\n                      <Box sx={classes.optionsText}>\n                        {value.change_from.indeed_apply\n                          ? ticked[value.change_from.indeed_apply]\n                          : '-'}\n                      </Box>\n                      to <Box sx={classes.optionsText}>{ticked[value.change_to.indeed_apply]}</Box>\n                    </div>\n                  )}\n                  {!!value.change_from.employee_id_field && (\n                    <div style={{ display: 'flex' }}>\n                      Employee id field field rating changed from\n                      <Box sx={classes.optionsText}>\n                        {value.change_from.employee_id_field\n                          ? ticked[value.change_from.employee_id_field]\n                          : '-'}\n                      </Box>\n                      to{' '}\n                      <Box sx={classes.optionsText}>\n                        {ticked[value.change_to.employee_id_field]}\n                      </Box>\n                    </div>\n                  )}\n                  {(!!value.change_from.attachments || !!value.change_to.attachments) && (\n                    <Box sx={{ marginTop: '0.5rem' }}>\n                      Attachments:\n                      <Box sx={{ ...classes.htmlContent, margin: '1rem 0' }}>\n                        <Box sx={{ ...classes.headerContent, color: '#D6827D' }}>Previous</Box>\n                        <Box sx={classes.attachmentContent}>\n                          {value.change_from.attachments ? (\n                            <span>\n                              {Object.keys(value.change_from.attachments).map((key, i) => (\n                                <li className=\"travelcompany-input\" key={i}>\n                                  <span className=\"input-label\">\n                                    {value.change_from.attachments[key].name}\n                                    {Number(value.change_from.attachments[key].mandatory)\n                                      ? ' (Required)'\n                                      : ''}\n                                  </span>\n                                </li>\n                              ))}\n                            </span>\n                          ) : (\n                            <Box sx={classes.noAttachments}>Unset</Box>\n                          )}\n                        </Box>\n                      </Box>\n                      <Box sx={{ ...classes.htmlContent, margin: '1.5rem 0' }}>\n                        <Box sx={{ ...classes.headerContent, color: '#8CCF95' }}>New</Box>\n                        <Box sx={classes.attachmentContent}>\n                          {value.change_to.attachments &&\n                          Object.keys(value.change_to.attachments).length !== 0 ? (\n                            <span>\n                              {Object.keys(value.change_to.attachments).map((key, i) => (\n                                <li className=\"travelcompany-input\" key={i}>\n                                  <span className=\"input-label\">\n                                    {value.change_to.attachments[key].name}\n                                    {Number(value.change_to.attachments[key].mandatory)\n                                      ? ' (Required)'\n                                      : ''}\n                                  </span>\n                                </li>\n                              ))}\n                            </span>\n                          ) : (\n                            <Box sx={classes.noAttachments}>No attachments</Box>\n                          )}\n                        </Box>\n                      </Box>\n                    </Box>\n                  )}\n                </Box>\n              ) : (\n                <span />\n              )}\n            </Box>\n          </span>\n        );\n      case 'description':\n      case 'summary':\n      case 'template':\n        return (\n          <span style={{ width: '100%' }}>\n            <Box sx={classes.revisionsVersionsContentDescription}>\n              <Box style={{ display: 'flex' }}>\n                <Box\n                  sx={classes.revisionsVersionsContentBlue}\n                  onClick={() =>\n                    window.open(`${window.location.origin}${value.editor_url}`, '_blank').focus()\n                  }\n                >\n                  {value.editor}\n                </Box>\n                <Box sx={{ paddingLeft: '2.5px' }}>\n                  <span>changed the {field}</span>\n                  <span style={{ margin: '0 3px' }}>on {timestamp}</span>\n                </Box>\n              </Box>\n              <span\n                onClick={() =>\n                  setOpenContent(field === '' ? field : field === openContent ? '' : field)\n                }\n              >\n                Show\n                {openContent === field ? (\n                  <ExpandLessIcon sx={{ color: '#939393' }} fontSize=\"small\" />\n                ) : (\n                  <ExpandMoreIcon sx={{ color: '#939393' }} fontSize=\"small\" />\n                )}\n              </span>\n              {openContent === field ? (\n                <Box>\n                  <Box sx={{ ...classes.htmlContent, margin: '1.5rem 0' }}>\n                    <Box sx={{ ...classes.headerContent, color: '#D6827D' }}>Previous</Box>\n                    {field === 'template' ? (\n                      <Box sx={{ padding: '1rem 1rem 2rem 1rem' }}>{value.change_from}</Box>\n                    ) : (\n                      <Box\n                        sx={{ padding: '1rem 1rem 2rem 1rem' }}\n                        dangerouslySetInnerHTML={{ __html: value.change_from }}\n                      />\n                    )}\n                  </Box>\n                  <Box sx={{ ...classes.htmlContent, position: 'relative' }}>\n                    {value.change_from.replace(/<\\/?[^>]+(>|$)|\\n/g, '') ===\n                    value.change_to.replace(/<\\/?[^>]+(>|$)|\\n/g, '') ? (\n                      <Box sx={classes.codeChangesOnly}>Styling or code changes only</Box>\n                    ) : null}\n                    <Box sx={{ ...classes.headerContent, color: '#8CCF95' }}>New</Box>\n                    {field === 'template' ? (\n                      <Box sx={{ padding: '1rem 1rem 2rem 1rem' }}>{value.change_to}</Box>\n                    ) : (\n                      <Box\n                        sx={{ padding: '1rem 1rem 2rem 1rem' }}\n                        dangerouslySetInnerHTML={{ __html: value.change_to }}\n                      />\n                    )}\n                  </Box>\n                </Box>\n              ) : (\n                <span />\n              )}\n            </Box>\n          </span>\n        );\n      case 'template_enabled':\n      case 'internal':\n      case 'external':\n        return (\n          <span>\n            <Box sx={classes.revisionsVersionsContentDescription}>\n              <Box style={{ display: 'flex' }}>\n                <Box\n                  onClick={() =>\n                    window.open(`${window.location.origin}${value.editor_url}`, '_blank').focus()\n                  }\n                  sx={classes.revisionsVersionsContentBlue}\n                >\n                  {value.editor}\n                </Box>\n                <Box sx={{ paddingLeft: '2.5px' }}>\n                  <span>changed the job {field}</span>\n                  <span style={{ fontWeight: '700', marginLeft: '3px' }}>\n                    {typeof value.change_from === 'boolean' ? value.change_from.toString() : '-'}\n                  </span>\n                  <span style={{ margin: '0 3px' }}>to</span>\n                  <span style={{ fontWeight: '700' }}>\n                    {typeof value.change_to === 'boolean' ? value.change_to.toString() : '-'}\n                  </span>\n                  <span style={{ margin: '0 3px' }}>on {timestamp}</span>\n                </Box>\n              </Box>\n            </Box>\n          </span>\n        );\n      case 'trashed':\n        return (\n          <span>\n            <Box sx={classes.revisionsVersionsContentDescription}>\n              <Box style={{ display: 'flex' }}>\n                <Box\n                  onClick={() =>\n                    window.open(`${window.location.origin}${value.editor_url}`, '_blank').focus()\n                  }\n                  sx={classes.revisionsVersionsContentBlue}\n                >\n                  {value.editor}\n                </Box>\n                <Box sx={{ paddingLeft: '2.5px' }}>\n                  {value.change_to === false ? (\n                    <span>restored the job from Trash</span>\n                  ) : (\n                    <span>sent the job to Trash</span>\n                  )}\n                  <span style={{ margin: '0 3px' }}>on {timestamp}</span>\n                </Box>\n              </Box>\n            </Box>\n          </span>\n        );\n      case 'archived':\n        return (\n          <span>\n            <Box sx={classes.revisionsVersionsContentDescription}>\n              <Box style={{ display: 'flex' }}>\n                <Box\n                  onClick={() =>\n                    window.open(`${window.location.origin}${value.editor_url}`, '_blank').focus()\n                  }\n                  sx={classes.revisionsVersionsContentBlue}\n                >\n                  {value.editor}\n                </Box>\n                <Box sx={{ paddingLeft: '2.5px' }}>\n                  {value.change_to === false ? (\n                    <span>Unarchived the job</span>\n                  ) : (\n                    <span>Archived the job</span>\n                  )}\n                  <span style={{ margin: '0 3px' }}>on {timestamp}</span>\n                </Box>\n              </Box>\n            </Box>\n          </span>\n        );\n      case 'original_job_reference':\n        return (\n          <span>\n            <Box sx={classes.revisionsVersionsContentDescription}>\n              <Box style={{ display: 'flex' }}>\n                <Box\n                  onClick={() =>\n                    window.open(`${window.location.origin}${value.editor_url}`, '_blank').focus()\n                  }\n                  sx={classes.revisionsVersionsContentBlue}\n                >\n                  {value.editor}\n                </Box>\n                <Box sx={{ paddingLeft: '2.5px' }}>\n                  <span>Cloned from job {value.change_to}</span>\n                  <span style={{ margin: '0 3px' }}>on {timestamp}</span>\n                </Box>\n              </Box>\n            </Box>\n          </span>\n        );\n      default:\n        return (\n          <span>\n            <Box sx={classes.revisionsVersionsContent}>\n              <Box\n                sx={classes.revisionsVersionsContentBlue}\n                onClick={() =>\n                  window.open(`${window.location.origin}${value.editor_url}`, '_blank').focus()\n                }\n              >\n                {value.editor}\n              </Box>\n              <Box sx={{ paddingLeft: '2.5px' }}>\n                <span>\n                  changed {field} from\n                  <span style={{ fontWeight: '700', marginLeft: '3px' }}>\n                    {value?.change_from ? value?.change_from : '-'}\n                  </span>\n                  <span style={{ margin: '0 3px' }}>to</span>\n                  <span style={{ fontWeight: '700' }}>\n                    {value?.change_to ? value.change_to : '-'}\n                  </span>\n                  <span style={{ margin: '0 3px' }}>on {timestamp}</span>\n                </span>\n              </Box>\n            </Box>\n          </span>\n        );\n    }\n  };\n\n  const fetchRevision = useCallback(async () => {\n    setIsLoading(true);\n    try {\n      const response = await Api.getRevision({ 'X-api-authenticate': apiKey }, jobId, {});\n\n      // Filter out revisions with no changes\n      const filteredRevisions: IRevision[] = [];\n      response?.data?.job_revisions.forEach((revision: IRevision) => {\n        const filteredLogs = {};\n        Object.keys(revision.logs).forEach((key) => {\n          // Only include options with changes\n          if (key === 'options') {\n            const filteredOptions = {};\n            Object.keys(revision.logs[key].change_from).forEach((optionKey) => {\n              if (\n                JSON.stringify(revision.logs[key].change_from[optionKey]) !==\n                JSON.stringify(revision.logs[key].change_to[optionKey])\n              ) {\n                filteredOptions['change_from'] = {\n                  [optionKey]: revision.logs[key].change_from[optionKey]\n                };\n                filteredOptions['change_to'] = {\n                  [optionKey]: revision.logs[key].change_to[optionKey]\n                };\n              }\n              if (Object.prototype.hasOwnProperty.call(filteredOptions, 'change_from')) {\n                filteredLogs[key] = { ...revision.logs[key], ...filteredOptions };\n              }\n            });\n            return;\n          }\n\n          // Filter out empty description, summary, and template\n          if (\n            ['description', 'summary', 'template'].includes(key) &&\n            revision.logs[key].change_from.replace(/<\\/?[^>]+(>|$)/g, '') === '' &&\n            revision.logs[key].change_to.replace(/<\\/?[^>]+(>|$)/g, '') === ''\n          )\n            return;\n\n          // Only include fields with changes\n          if (revision.logs[key].change_from !== revision.logs[key].change_to) {\n            filteredLogs[key] = revision.logs[key];\n          }\n        });\n\n        // Add revision to filteredRevisions if it has changes\n        if (Object.keys(filteredLogs).length > 0) {\n          filteredRevisions.push({ ...revision, logs: filteredLogs });\n        }\n      });\n\n      setRevisions(filteredRevisions);\n      setVersionNumber(filteredRevisions.length);\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsLoading(false);\n    }\n  }, [apiKey, jobId]);\n\n  useEffect(() => {\n    if (revisions !== null && versionNumber !== null) {\n      const currentRevision = revisions[versionNumber - 1];\n      if (currentRevision) {\n        if (\n          currentRevision.logs.hasOwnProperty('archived') ||\n          currentRevision.logs.hasOwnProperty('trashed')\n        ) {\n          setDisableButton(true);\n        } else {\n          setDisableButton(false);\n        }\n      }\n    }\n  }, [revisions, versionNumber]);\n\n  return (\n    <Box>\n      <Box\n        onClick={() => {\n          setIsDialogOpen(true);\n          !revisions && fetchRevision();\n        }}\n        id=\"revisions-job-button\"\n      >\n        Revisions\n      </Box>\n      <Modal\n        open={isDialogOpen}\n        onClose={() => setIsDialogOpen(false)}\n        aria-labelledby=\"modal-modal-title\"\n      >\n        <Box sx={classes.revisionsModalContent}>\n          <CloseIcon onClick={() => setIsDialogOpen(false)} sx={classes.closeIcon} />\n          <Box id=\"modal-modal-title\" sx={classes.revisionsTitle}>\n            Revisions\n          </Box>\n          {revisions && versionNumber ? (\n            <Box sx={{ marginTop: '50px' }}>\n              <Box sx={classes.revisionsContent}>Versions</Box>\n              <Slider\n                aria-label=\"Temperature\"\n                value={versionNumber}\n                onChange={handleChange}\n                sx={classes.sliderInput}\n                valueLabelDisplay=\"auto\"\n                step={1}\n                min={1}\n                max={revisions.length}\n                marks={[\n                  {\n                    value: revisions.length,\n                    label: 'Current'\n                  }\n                ]}\n              />\n            </Box>\n          ) : (\n            <span />\n          )}\n          <Box sx={classes.revisionsSubTitle}>\n            {!revisions || revisions?.length === 0 ? '' : 'Changes'}\n          </Box>\n          {isLoading || !revisions || !versionNumber ? (\n            <Box sx={{ display: 'flex', margin: 'auto' }}>\n              {revisions && revisions?.length === 0 ? (\n                <Box sx={classes.noRevisions}>No revisions for this job</Box>\n              ) : (\n                <CircularProgress size={32} sx={{ color: '#084D6D' }} />\n              )}\n            </Box>\n          ) : (\n            <Box sx={{ display: ' contents' }}>\n              <Box sx={{ ...classes.revisionsContent, marginBottom: '10px' }}>\n                {moment(revisions[versionNumber - 1]?.created_at).format('D MMM YYYY')}\n              </Box>\n              <Box sx={{ height: '100%', overflow: 'auto' }}>\n                {Object.entries(revisions[versionNumber - 1].logs).map(([key, value], i) => (\n                  <Box key={i} sx={classes.changesTableContent}>\n                    <Box sx={classes.revisionsVersionsIcon}>\n                      <BusinessCenterIcon fontSize=\"small\" />\n                    </Box>\n                    {renderTableData(key, value)}\n                  </Box>\n                ))}\n              </Box>\n            </Box>\n          )}\n          <Box sx={classes.revisionsActions}>\n            <Button\n              disableElevation\n              sx={{ ...classes.buttonRedLight }}\n              variant=\"text\"\n              onClick={() => {\n                setIsDialogOpen(false);\n                setActionsAnchorEl(null);\n              }}\n            >\n              Cancel\n            </Button>\n            <Tooltip\n              title={disableButton ? 'Reverting disabled for Archived and Trashed Jobs' : 'Revert'}\n            >\n              <span>\n                <Button\n                  sx={\n                    revisions && versionNumber\n                      ? { ...classes.revertloadButton, backgroundColor: '#5BC4BF' }\n                      : { ...classes.revertloadButton, backgroundColor: 'grey' }\n                  }\n                  disabled={!revisions || !versionNumber || disableButton}\n                  onClick={() => revisions && createNewVersion()}\n                >\n                  Revert\n                </Button>\n              </span>\n            </Tooltip>\n          </Box>\n        </Box>\n      </Modal>\n    </Box>\n  );\n}\n","import React, { useEffect, useState, useCallback } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport CloseIcon from '@mui/icons-material/Close';\nimport Button from '@mui/material/Button';\nimport TextField from '@mui/material/TextField';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport Api from '../../API';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { classes } from './styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport { StyledSnackbarProps } from '../../../Components/CustomUIElements/StyledSnackbar';\nimport { IJobsForTask, IWorkflowAssignableUser, IWorkflowName } from '../../types';\nimport { useJobsForTask } from '../../../hooks/useJobsForTask';\n\nconst BASE_URL = window.location.origin;\n\nexport default function StartWorkFlow({\n  apiKey,\n  jobId,\n  setSnackbarState,\n  setActionsAnchorEl,\n  isDashboard,\n  buttonElement\n}: {\n  apiKey: string;\n  jobId?: number;\n  setActionsAnchorEl?: (value: null) => void;\n  setSnackbarState?: StyledSnackbarProps['setSnackBarState'];\n  isDashboard?: boolean;\n  buttonElement?: React.ReactElement;\n}) {\n  const [isLoading, setIsLoading] = useState(false);\n  const [isDialogOpen, setIsDialogOpen] = useState(false);\n  const [workflowOptions, setWorkflowOptions] = useState(null);\n  const [usersOptions, setUserOptions] = useState(null);\n  const [assignTo, setAssignTo] = useState<IWorkflowAssignableUser | null>(null);\n  const [workflowName, setWorkflowName] = useState<IWorkflowName | null>(null);\n  const [hasError, setHasError] = useState(false);\n  const [newWorkflowURL, setNewWorkflowURL] = useState('');\n  const [selectedJob, setSelectedJob] = useState<IJobsForTask>();\n  const { fetchJobs, jobs } = useJobsForTask();\n\n  const fetchWorkFlowData = useCallback(async () => {\n    if (!jobId && !selectedJob?.id) return;\n    setIsLoading(true);\n    try {\n      const { data } = await Api.getWorkflows(\n        { 'X-api-authenticate': apiKey },\n        {},\n        jobId || selectedJob.id\n      );\n      data?.assignable_users && setUserOptions(data.assignable_users);\n      data?.workflows && setWorkflowOptions(data.workflows);\n      data?.newWorkflowURL && setNewWorkflowURL(`${BASE_URL}${data.newWorkflowURL}`);\n      setIsLoading(false);\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsLoading(false);\n    }\n  }, [apiKey, jobId, selectedJob]);\n\n  useEffect(() => {\n    if (!selectedJob) {\n      setUserOptions(null);\n      setWorkflowOptions(null);\n      setNewWorkflowURL('');\n    } else {\n      fetchWorkFlowData();\n    }\n  }, [selectedJob, fetchWorkFlowData]);\n\n  const createNewWorkflow = async () => {\n    if (!assignTo || !workflowName) {\n      setHasError(true);\n      return;\n    } else setHasError(false);\n    try {\n      await Api.assignWorkflow(\n        { 'X-api-authenticate': apiKey },\n        {\n          id: workflowName?.id,\n          user_id: assignTo?.id\n        },\n        jobId || selectedJob.id\n      );\n      if (!isDashboard) {\n        setActionsAnchorEl(null);\n      }\n      setSnackbarState({\n        message: 'Workflow has been created',\n        state: 'success'\n      });\n      setIsDialogOpen(false);\n      setAssignTo(null);\n      setWorkflowName(null);\n    } catch (error) {\n      console.log(error);\n      setSnackbarState({\n        message: 'There was an error creating a workflow. Please try again.',\n        state: 'error'\n      });\n    } finally {\n      setIsLoading(false);\n      if (isDashboard) {\n        setIsDialogOpen(false);\n        setSelectedJob(undefined);\n      }\n    }\n  };\n\n  return (\n    <Box>\n      <Box\n        onClick={() => {\n          !workflowOptions && fetchWorkFlowData();\n          fetchJobs();\n          setIsDialogOpen(true);\n        }}\n        id=\"start-workflow-job-button\"\n      >\n        {buttonElement || 'Start Workflow'}\n      </Box>\n      <Modal\n        open={isDialogOpen}\n        aria-labelledby=\"modal-modal-title\"\n        onClose={() => setIsDialogOpen(false)}\n      >\n        <Box sx={classes.modalContent}>\n          <CloseIcon onClick={() => setIsDialogOpen(false)} sx={classes.closeIcon} />\n          <Box id=\"modal-modal-title\" sx={classes.modalTitle}>\n            Start Workflow\n          </Box>\n          <Box sx={{ display: 'flex', flexDirection: 'column', marginTop: '40px' }}>\n            {isDashboard && (\n              <Box sx={classes.modalFormLine} pt={3}>\n                <Autocomplete\n                  disablePortal\n                  options={jobs}\n                  getOptionLabel={(option) => `${option.id} - ${option.title}`}\n                  id=\"state-region-province\"\n                  value={selectedJob}\n                  onChange={(event, value) => setSelectedJob(value || undefined)}\n                  sx={{ width: '290px', ...sharedClasses.formAutocomplete }}\n                  ListboxProps={{\n                    style: {\n                      fontFamily: 'Source Sans Pro, sans-serif',\n                      color: '#333333',\n                      maxHeight: '200px'\n                    }\n                  }}\n                  renderInput={(params) => (\n                    <TextField {...params} label=\"Select Job\" InputLabelProps={{ shrink: true }} />\n                  )}\n                />\n              </Box>\n            )}\n            {workflowOptions && workflowOptions?.length > 0 ? (\n              <Box sx={{ marginTop: '1.75rem' }}>\n                {!isLoading ? (\n                  <Box sx={classes.modalFormLine}>\n                    <Box sx={{ position: 'relative' }}>\n                      <Autocomplete\n                        disablePortal\n                        options={workflowOptions}\n                        getOptionLabel={(option) => option.name}\n                        id=\"state-region-province\"\n                        value={workflowName}\n                        onChange={(event, value) => setWorkflowName(value)}\n                        sx={{ width: '290px', ...sharedClasses.formAutocomplete }}\n                        ListboxProps={{\n                          style: {\n                            fontFamily: 'Source Sans Pro, sans-serif',\n                            color: '#333333',\n                            maxHeight: '200px'\n                          }\n                        }}\n                        renderInput={(params) => (\n                          <TextField\n                            {...params}\n                            label=\"Workflow name\"\n                            InputLabelProps={{ shrink: true }}\n                          />\n                        )}\n                      />\n                      {!workflowName && hasError && (\n                        <Box sx={{ ...sharedClasses.errorBox }}>This field is required</Box>\n                      )}\n                    </Box>\n                    <Box sx={{ position: 'relative' }}>\n                      <Autocomplete\n                        disablePortal\n                        options={usersOptions}\n                        getOptionLabel={(option) => `${option?.firstname} ${option?.lastname}`}\n                        id=\"state-region-province\"\n                        value={assignTo}\n                        onChange={(event, value) => setAssignTo(value)}\n                        sx={{ width: '290px', ...sharedClasses.formAutocomplete }}\n                        ListboxProps={{\n                          style: {\n                            fontFamily: 'Source Sans Pro, sans-serif',\n                            color: '#333333',\n                            maxHeight: '200px'\n                          }\n                        }}\n                        renderInput={(params) => (\n                          <TextField\n                            {...params}\n                            label=\"Assign to\"\n                            InputLabelProps={{ shrink: true }}\n                          />\n                        )}\n                      />\n                      {!assignTo && hasError && (\n                        <Box sx={{ ...sharedClasses.errorBox }}>This field is required</Box>\n                      )}\n                    </Box>\n                  </Box>\n                ) : (\n                  <Box display=\"flex\" alignItems=\"center\" justifyContent=\"center\">\n                    <CircularProgress size={20} color=\"inherit\" />\n                  </Box>\n                )}\n              </Box>\n            ) : (\n              <Box>\n                {isLoading ? (\n                  <Box display=\"flex\" alignItems=\"center\" justifyContent=\"center\">\n                    <CircularProgress size={20} color=\"inherit\" />\n                  </Box>\n                ) : (\n                  <Box sx={classes.noWorkflows}>No Workflows have been configured</Box>\n                )}\n              </Box>\n            )}\n          </Box>\n          {(workflowOptions && workflowOptions?.length > 0) || (isDashboard && !selectedJob) ? (\n            <Box sx={classes.modalActions}>\n              <Button\n                disableElevation\n                sx={{ ...classes.buttonRedLight }}\n                variant=\"text\"\n                onClick={() => {\n                  setIsDialogOpen(false);\n                  !isDashboard && setActionsAnchorEl(null);\n                }}\n              >\n                Cancel\n              </Button>\n              <Button sx={classes.revertloadButton} onClick={() => createNewWorkflow()}>\n                Submit\n              </Button>\n            </Box>\n          ) : (\n            <Box sx={{ margin: '0 auto' }}>\n              {isLoading ? (\n                <span />\n              ) : (\n                <Button\n                  sx={classes.createNewWorkflowButton}\n                  onClick={() => (window.location.href = newWorkflowURL)}\n                >\n                  Create task workflow\n                </Button>\n              )}\n            </Box>\n          )}\n        </Box>\n      </Modal>\n    </Box>\n  );\n}\n","/* eslint-disable max-lines */\nimport { Box, Button, FormControlLabel, Skeleton, Stack, Switch, Tooltip } from '@mui/material';\nimport { Info as InfoIcon } from '@mui/icons-material';\nimport ApplicationsTable from './ApplicationsTable';\nimport ApplicationsActionsPanel from './ApplicationsActionsPanel';\nimport GenericDialog from '../../Components/Multiposter/GenericDialog';\nimport FieldDropdown from './Dropdowns/FieldDropdown';\nimport FilterDropdown from './Dropdowns/FilterDropdown';\nimport TempCSVExport from './Modals/TempCSVExport';\nimport ExternalEmail from './Modals/ExternalEmail';\nimport SMSCandidates from './Modals/SMSCandidates';\nimport EmailCandidates from './Modals/EmailCandidates';\nimport MoveApplications from './Modals/MoveApplications';\nimport AddToEvent from './Modals/AddToEvent';\nimport InviteToTimeslot from './Modals/InviteToTimeslot';\nimport ChangeStatus from './Modals/ChangeStatus';\nimport ExportToOnboard from './Modals/ExportToOnboard';\nimport ExportPDF from './Modals/ExportPDF';\nimport ExportFoundu from './Modals/ExportFoundu';\nimport Search from './Search';\nimport FilePreviewModal, { IJobAttachment } from '../../Components/Modals/FilePreviewModal';\nimport NewApplication from './Modals/NewApplication';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport InsightsModal from '../../../AIStudio/ApplicationSummaries/InsightsModal/InsightsModal';\nimport StyledSnackbar from '../../Components/CustomUIElements/StyledSnackbar';\nimport Api from '../API';\nimport {\n  IApplicationProps,\n  IApplicationStatus,\n  IDropdownProps,\n  IFilterDropdownProps,\n  IGetAllApplications,\n  IGetApplications,\n  IJobApplication,\n  IUIPreferences,\n  SortableColumnId,\n  TSetUserPreferences\n} from '../types';\nimport { defaultFilters, initialModalsOpen, sortableColumnsDefaults } from './config';\nimport { classes } from './styles';\nimport { getUpdatedSortableColumns } from '../../utils/sortable-column';\nimport BetaButton from '../../Components/Buttons/BetaButton';\nimport { fetchPreferences, updateUiSettings } from '../../helpers/uiPreferencesHelpers';\n\nexport default function Applications({\n  apiKey,\n  jobAttachments,\n  jobHasPrivacyAcknowledgement,\n  jobId,\n  jobIsLoading,\n  jobOptions,\n  jobQuestions,\n  jobSources,\n  jobTitle,\n  setJob,\n  userPermissions,\n  newNoteOnApplicationEnabled,\n  newApplicationEnabled\n}: IApplicationProps) {\n  const SORTABLE_COLUMN_IDS_TO_REMOVE = newNoteOnApplicationEnabled\n    ? [SortableColumnId.NOTES]\n    : [SortableColumnId.NOTE_PAD, SortableColumnId.PERMANENT_RECORD];\n  const [applications, setApplications] = useState<IJobApplication[]>([]);\n  const [applicationStatuses, setApplicationStatuses] = useState<IApplicationStatus[]>([]);\n  const [filterableStatuses, setFilterableStatuses] = useState<IApplicationStatus[]>([]);\n  const [filterableCountries, setFilterableCountries] = useState<IApplicationCountry[]>([]);\n  const [filterableSuburbs, setFilterableSuburbs] = useState<IApplicationCountry[]>([]);\n  const [globalSelected, setGlobalSelected] = useState<IJobApplication[]>([]);\n  const [selectAllIsChecked, setSelectAllIsChecked] = useState(false);\n  const [selectAllIsIndeterminate, setSelectAllIsIndeterminate] = useState(false);\n  const [selectAllApplications, setSelectAllApplications] = useState<boolean>(false);\n  const [isLoading, setIsLoading] = useState(0);\n  const [snackbar, setSnackbar] = useState<{\n    message: string;\n    state: 'success' | 'warning' | 'error';\n  }>({\n    message: '',\n    state: 'success'\n  });\n\n  const [selected, setSelected] = useState<number[]>([]);\n  const [currentPage, setCurrentPage] = useState(1);\n  const [rowsPerPage, setRowsPerPage] = useState(10);\n  const [totalPages, setTotalPages] = useState(0);\n  const [totalApplications, setTotalApplications] = useState(0);\n  const [sortBy, setSortBy] = useState<string>('date');\n  const [sortOrder, setSortOrder] = useState<string>('desc');\n  const [search, setSearch] = useState<string>('');\n  const [filters, setFilters] = useState<IFilterDropdownProps['filters']>(defaultFilters);\n  const [modalsOpen, setModalsOpen] = useState<Record<string, boolean>>(initialModalsOpen);\n  const [previewOpen, setPreviewOpen] = useState(false);\n  const [selectedAttachment, setSelectedAttachment] = useState<IJobAttachment | null>(null);\n  const [isDeleting, setIsDeleting] = useState(false);\n  const [sortableColumns, setSortableColumns] = useState(\n    sortableColumnsDefaults.filter((column) => !SORTABLE_COLUMN_IDS_TO_REMOVE.includes(column.id))\n  );\n  const [density, setDensity] = useState<string>('Default');\n  const [newApplicationPage, setNewApplicationPage] = useState<boolean>(newApplicationEnabled);\n\n  const handleSortTranslate = (sort: string) => {\n    switch (sort) {\n      case 'candidate':\n        return 'firstname';\n      case 'date':\n        return 'created_at';\n      default:\n        return sort;\n    }\n  };\n\n  const saveSortableColumns = async ({\n    sortableColumns,\n    rowCount\n  }: {\n    sortableColumns?: IDropdownProps['sortableColumns'];\n    rowCount?: number;\n  }) => {\n    await updateUiSettings(\n      {\n        ...(sortableColumns && { sortable_columns: sortableColumns }),\n        ...(rowCount && { row_count: rowCount }),\n        source: 'applications'\n      },\n      () => {\n        setSnackbar({\n          message: 'There was an error saving your preferences',\n          state: 'error'\n        });\n      }\n    );\n  };\n\n  const setUserPreferences: TSetUserPreferences = useCallback(\n    async (limit, sort, columns, newFilters, density) => {\n      if (density) {\n        await updateUiSettings({ columns: { density }, source: 'universal' }, (errorMessage) => {\n          setSnackbar({\n            message: `There was an error saving your density preferences, ${errorMessage}`,\n            state: 'error'\n          });\n        });\n        return;\n      }\n\n      if (limit || columns) {\n        saveSortableColumns({\n          rowCount: limit || rowsPerPage,\n          sortableColumns: columns || sortableColumns\n        });\n        return;\n      }\n\n      await updateUiSettings(\n        {\n          sorting: {\n            field: sort?.sortBy || sortBy,\n            direction: (sort?.sortOrder || sortOrder).toUpperCase()\n          },\n          filters: newFilters || filters,\n          source: `job:${jobId}:applications`\n        },\n        () => {\n          debugger;\n          setSnackbar({\n            message: 'There was an error saving your preferences',\n            state: 'error'\n          });\n        }\n      );\n    },\n    [apiKey, filters, jobId, rowsPerPage, sortBy, sortOrder, sortableColumns]\n  );\n\n  const getFirstApplicationsAndPreferences = useCallback(async () => {\n    setIsLoading((prev) => prev + 1);\n    try {\n      const { res: sortAndFilterData } = await fetchPreferences(`job:${jobId}:applications`);\n      const { res: columnsAndLimitData } = await fetchPreferences('applications');\n      const { res: densityData } = await fetchPreferences('universal');\n      const sortAndFilterpreferences = sortAndFilterData?.ui_preferences[0];\n      const columnsAndLimitPreferences: IUIPreferences = columnsAndLimitData?.ui_preferences[0];\n      const densityPreference = densityData?.ui_preferences[0];\n      sortAndFilterpreferences?.sorting?.field && setSortBy(sortAndFilterpreferences.sorting.field);\n      sortAndFilterpreferences?.sorting?.direction &&\n        setSortOrder(sortAndFilterpreferences.sorting.direction.toLowerCase());\n      sortAndFilterpreferences?.filters && setFilters(sortAndFilterpreferences.filters);\n      const selectedStatuses = sortAndFilterpreferences?.filters?.status?.map(\n        (status) => status.id\n      );\n      const selectedCountries = sortAndFilterpreferences?.filters?.country?.map(\n        (country) => country.id\n      );\n      const selectedSuburbs = sortAndFilterpreferences?.filters?.suburb?.map(\n        (suburb) => suburb.name\n      );\n      const sessionPage = sessionStorage.getItem(`${jobId}-applicationTablePage`);\n      sessionPage && setCurrentPage(Number(sessionPage));\n      columnsAndLimitPreferences?.row_count && setRowsPerPage(columnsAndLimitPreferences.row_count);\n\n      if (columnsAndLimitPreferences?.sortable_columns) {\n        const { updatedColumns } = getUpdatedSortableColumns(\n          sortableColumns,\n          columnsAndLimitPreferences\n        );\n        setSortableColumns(updatedColumns);\n        saveSortableColumns({ sortableColumns: updatedColumns });\n      }\n\n      densityPreference?.columns?.density && setDensity(densityPreference.columns?.density);\n      const response = await Api.getApplications({ 'X-api-authenticate': apiKey }, jobId, {\n        exclude_job_attribute: true,\n        page: sessionPage ? Number(sessionPage) : 1,\n        limit: columnsAndLimitPreferences?.row_count || rowsPerPage,\n        sort_by: handleSortTranslate(\n          sortAndFilterpreferences?.sorting?.field || handleSortTranslate('date')\n        ),\n        sort_direction: (\n          sortAndFilterpreferences?.sorting?.direction?.toLowerCase() || 'desc'\n        ).toUpperCase(),\n        'q[search]': search,\n        'filter[status_ids]': selectedStatuses?.filters?.length === 0 ? 0 : selectedStatuses,\n        'filter[country_ids]': selectedCountries?.length === 0 ? 0 : selectedCountries,\n        'filter[suburb]': selectedSuburbs?.length === 0 ? 0 : selectedSuburbs,\n        'filter[rating_from]': sortAndFilterpreferences?.filters?.rating[0] || 0,\n        'filter[rating_to]': sortAndFilterpreferences?.filters?.rating[1] || 100,\n        'filter[exclude_unrated]':\n          sortAndFilterpreferences?.filters?.excludeApplicantsWithoutRating || false\n      });\n      setApplications(response.data.applications);\n      setTotalPages(response.totalPages);\n      setTotalApplications(response.totalItems);\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsLoading((prev) => prev - 1);\n    }\n  }, [apiKey, jobId, search]);\n\n  const getApplications: IGetApplications = async (\n    page,\n    limit,\n    searchQuery,\n    sort,\n    updatedFilters\n  ) => {\n    setIsLoading((prev) => prev + 1);\n    try {\n      const selectedStatuses = (updatedFilters?.status || filters.status)?.map(\n        (status) => status.id\n      );\n      const selectedCountries = (updatedFilters?.country || filters.country)?.map(\n        (country) => country.id\n      );\n      const selectedSuburbs = (updatedFilters?.suburb || filters.suburb)?.map(\n        (suburb) => suburb.name\n      );\n      const response = await Api.getApplications({ 'X-api-authenticate': apiKey }, jobId, {\n        exclude_job_attribute: true,\n        page: page || currentPage,\n        limit: limit || rowsPerPage,\n        sort_by: handleSortTranslate(sort?.sortBy || sortBy),\n        sort_direction: (sort?.sortOrder || sortOrder).toUpperCase(),\n        'q[search]': searchQuery !== null ? searchQuery : search,\n        'filter[status_ids]': selectedStatuses?.length === 0 ? 0 : selectedStatuses,\n        'filter[country_ids]': selectedCountries?.length === 0 ? 0 : selectedCountries,\n        'filter[suburb]': selectedSuburbs?.length === 0 ? 0 : selectedSuburbs,\n        'filter[rating_from]': updatedFilters?.rating[0] || filters.rating[0],\n        'filter[rating_to]': updatedFilters?.rating[1] || filters.rating[1],\n        'filter[exclude_unrated]': updatedFilters\n          ? updatedFilters.excludeApplicantsWithoutRating\n          : filters.excludeApplicantsWithoutRating\n      });\n      setApplications(response.data.applications);\n      setTotalPages(response.totalPages);\n      setTotalApplications(response.totalItems);\n      setSelectAllIsChecked(\n        response.data.applications\n          .map((app: IJobApplication) => app.id)\n          .every((id: number) => globalSelected.map((app) => app.id).includes(id))\n      );\n      setSelectAllIsIndeterminate(\n        response.data.applications\n          .map((app: IJobApplication) => app.id)\n          .some((id: number) => globalSelected.map((app) => app.id).includes(id))\n      );\n    } catch (error) {\n      console.log(error);\n    } finally {\n      if (sort || updatedFilters) {\n        setUserPreferences(null, sort, null, updatedFilters, null);\n      } else if (limit) {\n        setUserPreferences(limit, null, null, null, null);\n      }\n      setIsLoading((prev) => prev - 1);\n    }\n  };\n\n  const getAllApplications: IGetAllApplications = async (\n    limit,\n    searchQuery,\n    sort,\n    updatedFilters\n  ) => {\n    setIsLoading((prev) => prev + 1);\n    try {\n      const selectedStatuses = (updatedFilters?.status || filters.status)?.map(\n        (status) => status.id\n      );\n      const selectedCountries = (updatedFilters?.country || filters.country)?.map(\n        (country) => country.id\n      );\n      const selectedSuburbs = (updatedFilters?.suburb || filters.suburb)?.map(\n        (suburb) => suburb.name\n      );\n      const response = await Api.getAllApplications({ 'X-api-authenticate': apiKey }, jobId, {\n        exclude_job_attribute: true,\n        override_limit: true,\n        limit: totalApplications,\n        sort_by: handleSortTranslate(sort?.sortBy || sortBy),\n        sort_order: (sort?.sortOrder || sortOrder).toUpperCase(),\n        'q[search]': searchQuery !== null ? searchQuery : search,\n        'filter[status_ids]': selectedStatuses?.length === 0 ? 0 : selectedStatuses,\n        'filter[country_ids]': selectedCountries?.length === 0 ? 0 : selectedCountries,\n        'filter[suburb]': selectedSuburbs?.length === 0 ? 0 : selectedSuburbs,\n        'filter[rating_from]': updatedFilters?.rating[0] || filters.rating[0],\n        'filter[rating_to]': updatedFilters?.rating[1] || filters.rating[1],\n        'filter[exclude_unrated]': updatedFilters\n          ? updatedFilters.excludeApplicantsWithoutRating\n          : filters.excludeApplicantsWithoutRating\n      });\n      return response.data.applications;\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsLoading((prev) => prev - 1);\n    }\n  };\n\n  const getFilterableStatuses = useCallback(async () => {\n    try {\n      const response = await Api.getFilterableStatuses({ 'X-api-authenticate': apiKey }, jobId, {\n        limit: 100\n      });\n      setFilterableStatuses(response.data.filterable_statuses);\n    } catch (error) {\n      console.log(error);\n    }\n  }, [apiKey, jobId]);\n\n  const getFilterableCountries = useCallback(async () => {\n    try {\n      const response = await Api.getFilterableCountries(\n        { 'X-api-authenticate': apiKey },\n        jobId,\n        {}\n      );\n      setFilterableCountries(response.data.countries);\n    } catch (error) {\n      console.log(error);\n    }\n  }, [apiKey, jobId]);\n\n  const getFilterableSuburbs = useCallback(async () => {\n    try {\n      const response = await Api.getFilterableSuburbs({ 'X-api-authenticate': apiKey }, jobId, {});\n      setFilterableSuburbs(response.data.suburbs);\n    } catch (error) {\n      console.log(error);\n    }\n  }, [apiKey, jobId]);\n\n  const getApplicationStatuses = useCallback(async () => {\n    setIsLoading((prev) => prev + 1);\n    try {\n      const response = await Api.getApplicationStatuses({ 'X-api-authenticate': apiKey }, jobId, {\n        limit: 100\n      });\n      setApplicationStatuses(response.data.job_application_statuses);\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsLoading((prev) => prev - 1);\n    }\n  }, [apiKey, jobId]);\n\n  useEffect(() => {\n    getFirstApplicationsAndPreferences();\n    getFilterableStatuses();\n    getFilterableCountries();\n    getFilterableSuburbs();\n    getApplicationStatuses();\n  }, [\n    getFirstApplicationsAndPreferences,\n    getFilterableStatuses,\n    getFilterableCountries,\n    getFilterableSuburbs,\n    getApplicationStatuses\n  ]);\n\n  const deselectAll = () => {\n    setSelected([]);\n    setGlobalSelected([]);\n    setSelectAllIsChecked(false);\n    setSelectAllIsIndeterminate(false);\n  };\n\n  const handleDelete = async (url: string) => {\n    setIsDeleting(true);\n    try {\n      const deleted = await Api.deleteApplications(\n        url,\n        { 'X-api-authenticate': apiKey },\n        { application_ids: globalSelected.map((app) => app.id) }\n      );\n      setCurrentPage(1);\n      getApplications(1, null, null, null, null);\n      setJob((prev) => ({\n        ...prev,\n        applications_count: prev.applications_count - deleted.application_ids.success.length\n      }));\n      setSnackbar({\n        message: `Successfully trashed ${deleted.application_ids.success.length} application(s)`,\n        state: 'success'\n      });\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsDeleting(false);\n      setModalsOpen({ ...modalsOpen, delete: false });\n      deselectAll();\n    }\n  };\n\n  const handleDeselectCandidate = (id: number) => {\n    let newGlobalSelected = [...globalSelected];\n    newGlobalSelected = newGlobalSelected.filter((app) => app.id !== id);\n    const newSelected = newGlobalSelected.map((app) => app.id);\n    setSelected(newSelected);\n    setGlobalSelected(newGlobalSelected);\n    setSelectAllIsChecked(\n      applications.map((app) => app.id).every((id) => newSelected.includes(id))\n    );\n    setSelectAllIsIndeterminate(\n      applications.map((app) => app.id).some((id) => newSelected.includes(id))\n    );\n  };\n\n  const handleOpenAIInsights = () => {\n    if (globalSelected.length > 10) {\n      setSnackbar({\n        message: 'AI insights supports a maximum of 10 candidates at a time.',\n        state: 'error'\n      });\n      return;\n    }\n    setModalsOpen({ ...modalsOpen, aiInsights: true });\n  };\n\n  const clearAllSelection = () => {\n    setSelectAllApplications(false);\n    setGlobalSelected([]);\n    setSelected([]);\n    setSelectAllIsChecked(false);\n    setSelectAllIsIndeterminate(false);\n  };\n\n  const enableSortableColumn = (id: SortableColumnId) => {\n    setSortableColumns((prevSortableColumn) => {\n      const updatedSortableColumns = prevSortableColumn.map((sortableColumn) => {\n        if (sortableColumn.id === id && !sortableColumn.enabled) {\n          return { ...sortableColumn, enabled: true };\n        }\n        return sortableColumn;\n      });\n      saveSortableColumns({ sortableColumns: updatedSortableColumns });\n      return updatedSortableColumns;\n    });\n  };\n\n  const showGender =\n    userPermissions?.['Job Options']?.['Candidate Gender'] && jobOptions?.gender_field === '1';\n\n  return (\n    <Box sx={classes.applicationsContainer}>\n      <ApplicationsActionsPanel\n        selected={selected}\n        setModalsOpen={setModalsOpen}\n        userPermissions={userPermissions}\n        handleOpenAIInsights={handleOpenAIInsights}\n      />\n      <Box sx={classes.filtersRow}>\n        <Search\n          setSearch={setSearch}\n          getApplications={getApplications}\n          setPage={setCurrentPage}\n          jobId={jobId}\n        />\n        <FilterDropdown\n          filters={filters}\n          setFilters={setFilters}\n          getApplications={getApplications}\n          statusList={filterableStatuses}\n          countryList={filterableCountries}\n          suburbList={filterableSuburbs}\n          setUserPreferences={setUserPreferences}\n          setCurrentPage={setCurrentPage}\n          jobId={jobId}\n          clearAllSelection={clearAllSelection}\n        />\n        <FieldDropdown\n          sortableColumns={sortableColumns}\n          setSortableColumns={setSortableColumns}\n          showGender={showGender}\n          density={density}\n          setDensity={setDensity}\n          setUserPreferences={setUserPreferences}\n        />\n        <TempCSVExport\n          apiKey={apiKey}\n          jobId={jobId}\n          setSnackbarState={setSnackbar}\n          filters={filters}\n          sortBy={sortBy}\n          sortOrder={sortOrder}\n          sortableColumns={sortableColumns}\n        />\n        {userPermissions?.['Applications']?.['Lodge Application'] &&\n          (!jobIsLoading ? (\n            <Button\n              onClick={() => {\n                setModalsOpen({ ...modalsOpen, newApplication: true });\n              }}\n              sx={classes.newApplicationButton}\n              id=\"new-application-button\"\n            >\n              New application\n            </Button>\n          ) : (\n            <Skeleton animation=\"wave\" height=\"60px\" width=\"168px\" />\n          ))}\n      </Box>\n      {newApplicationEnabled && (\n        <Stack\n          sx={{ flexDirection: 'row', alignItems: 'center', justifyContent: 'end', columnGap: 1 }}\n        >\n          <FormControlLabel\n            sx={{\n              ...classes.switchLabels,\n              '& .MuiFormControlLabel-label': {\n                color: '#666666',\n                fontFamily: 'Source Sans Pro',\n                fontSize: '14px',\n                fontWeight: 'bold'\n              },\n              marginRight: 1\n            }}\n            control={\n              <Switch\n                sx={newApplicationPage ? classes.switchActive : classes.switch}\n                checked={newApplicationPage}\n                onChange={() => setNewApplicationPage(!newApplicationPage)}\n              />\n            }\n            label=\"New application page\"\n            labelPlacement=\"end\"\n          />\n          <BetaButton />\n          <Tooltip\n            title=\"This toggle will enable the new application page when you click on an application in the table\"\n            placement=\"top\"\n            arrow\n            componentsProps={{\n              tooltip: {\n                sx: {\n                  width: '250px'\n                }\n              }\n            }}\n          >\n            <InfoIcon sx={{ color: '#5BC4BF' }} />\n          </Tooltip>\n        </Stack>\n      )}\n      <ApplicationsTable\n        apiKey={apiKey}\n        applications={applications}\n        applicationStatuses={applicationStatuses}\n        clearAllSelection={clearAllSelection}\n        currentPage={currentPage}\n        density={density}\n        enableSortableColumn={() => enableSortableColumn(SortableColumnId.NOTE_PAD)}\n        getAllApplications={getAllApplications}\n        getApplications={getApplications}\n        getFilterableStatuses={getFilterableStatuses}\n        globalSelected={globalSelected}\n        isLoading={isLoading > 0}\n        jobId={jobId}\n        jobTitle={jobTitle}\n        rowsPerPage={rowsPerPage}\n        selectAllApplications={selectAllApplications}\n        selectAllIsChecked={selectAllIsChecked}\n        selectAllIsIndeterminate={selectAllIsIndeterminate}\n        selected={selected}\n        setApplications={setApplications}\n        setCurrentPage={setCurrentPage}\n        setGlobalSelected={setGlobalSelected}\n        setPreviewOpen={setPreviewOpen}\n        setRowsPerPage={setRowsPerPage}\n        setSelectAllApplications={setSelectAllApplications}\n        setSelectAllIsChecked={setSelectAllIsChecked}\n        setSelectAllIsIndeterminate={setSelectAllIsIndeterminate}\n        setSelected={setSelected}\n        setSelectedAttachment={setSelectedAttachment}\n        setSnackbarState={setSnackbar}\n        setSortableColumns={setSortableColumns}\n        setSortBy={setSortBy}\n        setSortOrder={setSortOrder}\n        showGender={showGender}\n        sortableColumns={sortableColumns}\n        sortBy={sortBy}\n        sortOrder={sortOrder}\n        totalApplications={totalApplications}\n        totalPages={totalPages}\n        userPermissions={userPermissions}\n        newNoteOnApplicationEnabled={newNoteOnApplicationEnabled}\n        newApplicationPage={newApplicationPage}\n      />\n      <FilePreviewModal\n        applicationLink={selectedAttachment?.application_link}\n        isShareable={false}\n        allowDownload={userPermissions?.['Applications']?.['Download Attachments']}\n        {...{ previewOpen, setPreviewOpen, selectedAttachment }}\n      />\n      {!jobIsLoading && (\n        <NewApplication\n          apiKey={apiKey}\n          modalsOpen={modalsOpen}\n          setModalsOpen={setModalsOpen}\n          getApplications={getApplications}\n          jobId={jobId}\n          jobQuestions={jobQuestions}\n          jobAttachments={jobAttachments}\n          jobSources={jobSources}\n          jobHasPrivacyAcknowledgement={jobHasPrivacyAcknowledgement}\n          setSnackbar={setSnackbar}\n          setJob={setJob}\n        />\n      )}\n      <SMSCandidates\n        apiKey={apiKey}\n        jobId={jobId}\n        setSnackbar={setSnackbar}\n        modalsOpen={modalsOpen}\n        setModalsOpen={setModalsOpen}\n        globalSelected={globalSelected}\n        handleDeselectCandidate={handleDeselectCandidate}\n        handleTemplatePermissions={\n          !!userPermissions?.['Entities']?.['Create / Edit / Delete SMS Templates']\n        }\n        filters={filters}\n      />\n      <EmailCandidates\n        apiKey={apiKey}\n        jobId={jobId}\n        setSnackbar={setSnackbar}\n        modalsOpen={modalsOpen}\n        setModalsOpen={setModalsOpen}\n        globalSelected={globalSelected}\n        handleDeselectCandidate={handleDeselectCandidate}\n        filters={filters}\n      />\n      <MoveApplications\n        apiKey={apiKey}\n        jobId={jobId}\n        setSnackbar={setSnackbar}\n        modalsOpen={modalsOpen}\n        setModalsOpen={setModalsOpen}\n        globalSelected={globalSelected}\n        handleDeselectCandidate={handleDeselectCandidate}\n        getApplications={getApplications}\n        deselectAll={deselectAll}\n        filters={filters}\n      />\n      <ChangeStatus\n        apiKey={apiKey}\n        jobId={jobId}\n        setSnackbar={setSnackbar}\n        modalsOpen={modalsOpen}\n        setModalsOpen={setModalsOpen}\n        globalSelected={globalSelected}\n        handleDeselectCandidate={handleDeselectCandidate}\n        applicationStatuses={applicationStatuses}\n        getApplications={getApplications}\n        filters={filters}\n      />\n      {modalsOpen.addToEvent && (\n        <AddToEvent\n          apiKey={apiKey}\n          jobId={jobId}\n          setSnackbar={setSnackbar}\n          modalsOpen={modalsOpen}\n          setModalsOpen={setModalsOpen}\n          globalSelected={globalSelected}\n          handleDeselectCandidate={handleDeselectCandidate}\n          filters={filters}\n          smsTemplatePermissions={\n            !!userPermissions?.['Entities']?.['Create / Edit / Delete SMS Templates']\n          }\n        />\n      )}\n      {modalsOpen.inviteToTimeslot && (\n        <InviteToTimeslot\n          apiKey={apiKey}\n          jobId={jobId}\n          setSnackbar={setSnackbar}\n          modalsOpen={modalsOpen}\n          setModalsOpen={setModalsOpen}\n          globalSelected={globalSelected}\n          handleDeselectCandidate={handleDeselectCandidate}\n          filters={filters}\n          smsTemplatePermissions={\n            !!userPermissions?.['Entities']?.['Create / Edit / Delete SMS Templates']\n          }\n        />\n      )}\n      <ExternalEmail\n        apiKey={apiKey}\n        jobId={jobId}\n        setSnackbar={setSnackbar}\n        modalsOpen={modalsOpen}\n        setModalsOpen={setModalsOpen}\n        globalSelected={globalSelected}\n        handleDeselectCandidate={handleDeselectCandidate}\n        filters={filters}\n      />\n      <ExportPDF\n        apiKey={apiKey}\n        jobId={jobId}\n        setSnackbar={setSnackbar}\n        modalsOpen={modalsOpen}\n        setModalsOpen={setModalsOpen}\n        globalSelected={globalSelected}\n        handleDeselectCandidate={handleDeselectCandidate}\n        filters={filters}\n      />\n      <ExportToOnboard\n        apiKey={apiKey}\n        jobId={jobId}\n        setSnackbar={setSnackbar}\n        modalsOpen={modalsOpen}\n        setModalsOpen={setModalsOpen}\n        globalSelected={globalSelected}\n        handleDeselectCandidate={handleDeselectCandidate}\n        applicationStatuses={applicationStatuses}\n        getApplications={getApplications}\n        filters={filters}\n      />\n      <ExportFoundu\n        apiKey={apiKey}\n        jobId={jobId}\n        setSnackbar={setSnackbar}\n        modalsOpen={modalsOpen}\n        setModalsOpen={setModalsOpen}\n        globalSelected={globalSelected}\n        handleDeselectCandidate={handleDeselectCandidate}\n        filters={filters}\n      />\n      <InsightsModal\n        jobId={jobId}\n        open={modalsOpen.aiInsights}\n        handleClose={() => setModalsOpen({ ...modalsOpen, aiInsights: false })}\n        selectedApplicants={globalSelected}\n        handleDeselectApplicant={handleDeselectCandidate}\n        setSnackbar={setSnackbar}\n      />\n      <GenericDialog\n        isDialogOpen={modalsOpen.delete}\n        setDialogOpen={(isOpen: boolean) => setModalsOpen({ ...modalsOpen, delete: isOpen })}\n        buttonCallback={handleDelete}\n        title={`Trash Application${selected?.length > 1 ? 's' : ''}`}\n        description={`Are you sure you want to trash ${\n          selected?.length > 1 ? selected.length : 'the selected'\n        } application${selected?.length > 1 ? 's' : ''}?`}\n        buttonText=\"Trash\"\n        callbackLoading={isDeleting}\n        url={`/api/v4/jobs/${jobId}/applications`}\n      />\n      <StyledSnackbar\n        message={snackbar.message}\n        state={snackbar.state}\n        setSnackbarState={setSnackbar}\n      />\n    </Box>\n  );\n}\n","import React, { useContext } from 'react';\nimport Box from '@mui/material/Box';\nimport Collapse from '@mui/material/Collapse';\nimport Button from '@mui/material/Button';\nimport EmailIcon from '@mui/icons-material/Email';\nimport StayCurrentPortraitIcon from '@mui/icons-material/StayCurrentPortrait';\nimport RuleIcon from '@mui/icons-material/Rule';\nimport GroupAddIcon from '@mui/icons-material/GroupAdd';\nimport DriveFileMoveIcon from '@mui/icons-material/DriveFileMove';\nimport MessageIcon from '@mui/icons-material/Message';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport { Event as EventIcon } from '@mui/icons-material';\nimport { ExternalEmailIcon, PDFIcon } from './CustomIcons';\nimport { classes } from './styles';\nimport { EntityContext } from '../Job';\n\nexport default function ApplicationsActionsPanel({\n  selected,\n  setModalsOpen,\n  userPermissions,\n  handleOpenAIInsights\n}: {\n  selected: number[];\n  setModalsOpen: React.Dispatch<React.SetStateAction<Record<string, boolean>>>;\n  userPermissions: Record<string, Record<string, boolean>>;\n  handleOpenAIInsights: () => void;\n}) {\n  const { ai_studio_summaries_enabled, foundu_enabled, foundu_auth_url } = useContext(EntityContext);\n\n  const handleFounduExport = () => {\n    if (foundu_auth_url) {\n      location.href = foundu_auth_url;\n    } else {\n      setModalsOpen((prev) => ({ ...prev, exportToFoundu: true }))\n    }\n  }\n\n  return (\n    <Collapse in={selected?.length > 0}>\n      <Box sx={classes.actionsContianer}>\n        {userPermissions?.['Applications']?.['Send Bulk Emails'] && (\n          <Button\n            id=\"email-action-applications-button\"\n            variant=\"outlined\"\n            startIcon={<EmailIcon />}\n            sx={classes.actionButton}\n            onClick={() => setModalsOpen((prev) => ({ ...prev, email: true }))}\n          >\n            Email\n          </Button>\n        )}\n        {userPermissions?.['Applications']?.['Send SMS in bulk'] && (\n          <Button\n            id=\"sms-action-applications-button\"\n            variant=\"outlined\"\n            startIcon={<StayCurrentPortraitIcon />}\n            sx={classes.actionButton}\n            onClick={() => setModalsOpen((prev) => ({ ...prev, sms: true }))}\n          >\n            SMS\n          </Button>\n        )}\n        {userPermissions?.['Applications']?.['Change status in bulk'] && (\n          <Button\n            id=\"change-status-action-applications-button\"\n            variant=\"outlined\"\n            startIcon={<RuleIcon />}\n            sx={classes.actionButton}\n            onClick={() => setModalsOpen((prev) => ({ ...prev, changeStatus: true }))}\n          >\n            Change status\n          </Button>\n        )}\n        <Button\n          id=\"add-to-event-action-applications-button\"\n          variant=\"outlined\"\n          startIcon={<EventIcon />}\n          sx={classes.actionButton}\n          onClick={() => setModalsOpen((prev) => ({ ...prev, addToEvent: true }))}\n        >\n          Add to Event\n        </Button>\n        {userPermissions?.['Applications']?.['Bulk Invite to Timeslot'] && (\n          <Button\n            id=\"invite-to-timeslot-action-applications-button\"\n            variant=\"outlined\"\n            startIcon={<GroupAddIcon />}\n            sx={classes.actionButton}\n            onClick={() => setModalsOpen((prev) => ({ ...prev, inviteToTimeslot: true }))}\n          >\n            Invite to timeslot\n          </Button>\n        )}\n        {userPermissions?.['Applications']?.['Email/Bulk Email External'] && (\n          <Button\n            id=\"external-email-action-applications-button\"\n            variant=\"outlined\"\n            startIcon={<ExternalEmailIcon />}\n            sx={classes.actionButton}\n            onClick={() => setModalsOpen((prev) => ({ ...prev, externalEmail: true }))}\n          >\n            External email\n          </Button>\n        )}\n        {userPermissions?.['Applications']?.['Bulk PDF'] && (\n          <Button\n            id=\"export-pdf-action-applications-button\"\n            variant=\"outlined\"\n            startIcon={<PDFIcon />}\n            sx={classes.actionButton}\n            onClick={() => setModalsOpen((prev) => ({ ...prev, exportToPdf: true }))}\n          >\n            Export to PDF\n          </Button>\n        )}\n        {userPermissions?.['Applications']?.['Bulk Move Applications'] && (\n          <Button\n            id=\"move-action-applications-button\"\n            variant=\"outlined\"\n            startIcon={<DriveFileMoveIcon />}\n            sx={classes.actionButton}\n            onClick={() => setModalsOpen((prev) => ({ ...prev, move: true }))}\n          >\n            Move\n          </Button>\n        )}\n        {userPermissions?.['Applications']?.['Bulk Export To Onboard'] && (\n          <Button\n            id=\"export-onboard-action-applications-button\"\n            variant=\"outlined\"\n            startIcon={<DriveFileMoveIcon />}\n            sx={classes.actionButton}\n            onClick={() => setModalsOpen((prev) => ({ ...prev, exportToOnboard: true }))}\n          >\n            Export to Onboard\n          </Button>\n        )}\n        {foundu_enabled && (\n          <Button\n            id=\"export-foundu-button\"\n            variant=\"outlined\"\n            startIcon={<DriveFileMoveIcon />}\n            sx={classes.actionButton}\n            onClick={handleFounduExport}\n          >\n            Export to FoundU\n          </Button>\n        )}\n        {ai_studio_summaries_enabled && (\n          <Button\n            id=\"ai-insights-action-applications-button\"\n            variant=\"outlined\"\n            startIcon={<MessageIcon />}\n            sx={classes.actionButtonAI}\n            onClick={handleOpenAIInsights}\n          >\n            AI candidate insights\n          </Button>\n        )}\n        {userPermissions?.['Trash']?.['Trash Application'] && (\n          <Button\n            id=\"trash-action-applications-button\"\n            variant=\"outlined\"\n            startIcon={<DeleteIcon />}\n            sx={{ ...classes.actionButton, ...classes.deleteApplicant }}\n            onClick={() => setModalsOpen((prev) => ({ ...prev, delete: true }))}\n          >\n            Trash\n          </Button>\n        )}\n      </Box>\n    </Collapse>\n  );\n}\n","/* eslint-disable max-lines */\nimport {\n  AttachFile as AttachFileIcon,\n  KeyboardArrowLeft as KeyboardArrowLeftIcon,\n  KeyboardArrowRight as KeyboardArrowRightIcon,\n  Message as MessageIcon,\n  NoteAdd as NoteAddIcon\n} from '@mui/icons-material';\nimport {\n  Backdrop,\n  Box,\n  Checkbox,\n  CircularProgress,\n  FormControl,\n  IconButton,\n  MenuItem,\n  Pagination,\n  Paper,\n  Popover,\n  Select,\n  Skeleton,\n  Table,\n  TableBody,\n  TableCell,\n  TableContainer,\n  TableHead,\n  TableRow,\n  TableSortLabel,\n  Tooltip\n} from '@mui/material';\nimport moment from 'moment-timezone';\nimport React, { useCallback, useContext, useEffect, useRef, useState } from 'react';\nimport InterviewQuestions from '../../../AIStudio/ApplicationSummaries/QuestionsModal/InterviewQuestions';\nimport SummaryPopover from '../../../AIStudio/ApplicationSummaries/SummaryPopover';\nimport { TagList } from '../../Components/CustomUIElements/TagList/TagList';\nimport DocTypeIcon from '../../Components/Utilities/DocTypeIcon';\nimport EditNoteIcon from '@mui/icons-material/EditNote';\nimport Api from '../API';\nimport { EntityContext } from '../Job';\nimport {\n  IApplicantAttachment,\n  IApplicationTableProps,\n  IJobApplication,\n  INoteProps,\n  NoteState,\n  SortableColumnId\n} from '../types';\nimport EditableNote from './EditableNote';\nimport { classes } from './styles';\nimport NotesWithSubjectLine from '../../Components/GenericTable/TableCells/NotesWithSubjectLine';\nimport NotesPopover from './NotePopover';\nimport CandidateIcon from '../../Candidate/CandidateIcon';\n\nconst CHECKBOX_CELL_WIDTH = 58;\nconst ID_CELL_WIDTH = 80;\nconst CANDIDATE_CELL_WIDTH = 200;\n\nexport default function ApplicationsTable({\n  apiKey,\n  applications,\n  applicationStatuses,\n  clearAllSelection,\n  currentPage,\n  density,\n  enableSortableColumn,\n  getAllApplications,\n  getApplications,\n  getFilterableStatuses,\n  globalSelected,\n  isLoading,\n  jobId,\n  jobTitle,\n  rowsPerPage,\n  selectAllApplications,\n  selectAllIsChecked,\n  selectAllIsIndeterminate,\n  selected,\n  setApplications,\n  setCurrentPage,\n  setGlobalSelected,\n  setPreviewOpen,\n  setRowsPerPage,\n  setSelectAllApplications,\n  setSelectAllIsChecked,\n  setSelectAllIsIndeterminate,\n  setSelected,\n  setSelectedAttachment,\n  setSnackbarState,\n  setSortBy,\n  setSortOrder,\n  showGender,\n  sortableColumns,\n  sortBy,\n  sortOrder,\n  totalApplications,\n  totalPages,\n  userPermissions,\n  newNoteOnApplicationEnabled,\n  newApplicationPage\n}: IApplicationTableProps) {\n  const timeZoneString = Intl.DateTimeFormat().resolvedOptions().timeZone;\n  const [selectedApplication, setSelectedApplication] = useState<{\n    id: null | number;\n    attachments: null | IApplicantAttachment[];\n    status: null | string;\n    link: null | string;\n  }>({ id: null, attachments: null, status: null, link: null });\n  const [isFetchingAllApplications, setIsFetchingAllApplications] = useState<boolean>(false);\n  const [anchorEl, setAnchorEl] = useState<HTMLButtonElement | null>(null);\n  const [attachmentsListOpen, setAttachmentsListOpen] = useState(false);\n  const [statusAnchorEl, setStatusAnchorEl] = useState<HTMLDivElement | null>(null);\n  const [statusIsSending, setStatusIsSending] = useState(false);\n  const [tableHovered, setTableHovered] = useState(false);\n  const [noteAnchorEl, setNoteAnchorEl] = useState<HTMLButtonElement | null>(null);\n  const [canScroll, setCanScroll] = useState([false, true]);\n  const tableRef = useRef<HTMLDivElement>(null);\n  const actionCellRef = useRef<HTMLDivElement>(null);\n  const candidateCellRef = useRef<HTMLDivElement>(null);\n  const statusDropdownRef = useRef<HTMLDivElement>(null);\n  const preventLoop = useRef(0);\n  const [applicantHovered, setApplicantHovered] = useState<boolean>(false);\n  const [applicantAnchorEl, setApplicantAnchorEl] = useState<HTMLButtonElement | null>(null);\n  const [lastHoveredApplicant, setLastHoveredApplicant] = useState({\n    id: null,\n    name: '',\n    summary: ''\n  });\n  const [selectedAIApplicant, setSelectedAIApplicant] = useState<IJobApplication | null>(null);\n  const [summaryGeneratingIds, setSummaryGeneratingIds] = useState<number[]>([]);\n  const { ai_studio_summaries_enabled } = useContext(EntityContext);\n  const notesRef = useRef<Array<HTMLInputElement | null>>([]);\n  const [activeNote, setActiveNote] = useState<INoteProps['noteState'] | null>(null);\n  const canAddNote = userPermissions?.['Applications']?.['Add Notes'];\n  const firstThreeColumnsWidth = CHECKBOX_CELL_WIDTH + CANDIDATE_CELL_WIDTH + ID_CELL_WIDTH;\n\n  useEffect(() => {\n    preventLoop.current = 0;\n  }, [applications]);\n\n  const handleHoverApplicant = (target, application) => {\n    if (application) {\n      setLastHoveredApplicant({\n        id: application.id,\n        name: application.candidate?.firstname + ' ' + application.candidate?.lastname,\n        summary: application.summary\n      });\n    }\n    setApplicantHovered(true);\n    setApplicantAnchorEl(target);\n  };\n\n  const handleUnhoverApplicant = useCallback(() => {\n    setApplicantHovered(false);\n    setApplicantAnchorEl(null);\n  }, []);\n\n  const tablePadding = (density: string) => {\n    if (density === 'Default') {\n      return '22px';\n    } else if (density === 'Compact') {\n      return '15px';\n    } else {\n      return '8px';\n    }\n  };\n\n  const handleSelectAll = (event: React.ChangeEvent<HTMLInputElement>) => {\n    const newGlobalSelected = globalSelected.filter(\n      (currentApp) => !applications?.map((app) => app.id).includes(currentApp.id)\n    );\n    if (event.target.checked) {\n      const selectAllGlobalSelected = [...newGlobalSelected, ...applications];\n      setSelected(selectAllGlobalSelected?.map((application) => application.id));\n      setGlobalSelected(selectAllGlobalSelected);\n      setSelectAllIsChecked(true);\n      setSelectAllIsIndeterminate(false);\n      setSelectAllApplications(true);\n      return;\n    }\n    setSelected(newGlobalSelected?.map((application) => application.id));\n    setGlobalSelected(newGlobalSelected);\n    setSelectAllIsChecked(false);\n    setSelectAllIsIndeterminate(false);\n  };\n\n  const handleSelectAllApplications = async () => {\n    setIsFetchingAllApplications(true);\n    const allApplications = await getAllApplications(totalApplications, null, null, null);\n    setGlobalSelected(allApplications);\n    setSelected(allApplications?.map((application) => application.id));\n    setSelectAllIsChecked(true);\n    setSelectAllApplications(true);\n    setSelectAllIsIndeterminate(false);\n    setIsFetchingAllApplications(false);\n  };\n\n  const handleSelectOne = (\n    event: React.ChangeEvent<HTMLInputElement>,\n    application: IJobApplication\n  ) => {\n    let newGlobalSelected = [...globalSelected];\n    event.target.checked\n      ? newGlobalSelected.push(application)\n      : (newGlobalSelected = newGlobalSelected.filter((app) => app.id !== application.id));\n    const newSelected = newGlobalSelected?.map((app) => app.id);\n    setSelected(newSelected);\n    setGlobalSelected(newGlobalSelected);\n    setSelectAllIsChecked(\n      applications?.map((app) => app.id).every((id) => newSelected.includes(id))\n    );\n    setSelectAllIsIndeterminate(\n      applications?.map((app) => app.id).some((id) => newSelected.includes(id))\n    );\n  };\n\n  const handleRowsPerPageChange = (selection: number) => {\n    if (selection === rowsPerPage) return;\n    setRowsPerPage(selection);\n    getApplications(null, selection, null, null, null);\n  };\n\n  const handlePageChange = (event: React.ChangeEvent<unknown>, newPage: number) => {\n    if (newPage === currentPage) return;\n    setCurrentPage(newPage);\n    sessionStorage.setItem(`${jobId}-applicationTablePage`, newPage);\n    getApplications(newPage, null, null, null, null);\n  };\n\n  const handleSortChange = (\n    event: React.MouseEvent<HTMLSpanElement, MouseEvent>,\n    columnValue: string\n  ) => {\n    const isAsc = sortBy === columnValue && sortOrder === 'asc';\n    const newSortOrder = isAsc ? 'desc' : 'asc';\n    setSortOrder(newSortOrder);\n    setSortBy(columnValue);\n    getApplications(null, null, null, { sortBy: columnValue, sortOrder: newSortOrder }, null);\n  };\n\n  const handleShowAttachmentsList = (\n    event: React.MouseEvent<HTMLButtonElement>,\n    id: number,\n    attachments: IApplicantAttachment[],\n    link: string\n  ) => {\n    setSelectedApplication({ id, attachments, status: null, link });\n    setAnchorEl(event.currentTarget);\n    setAttachmentsListOpen(true);\n  };\n\n  const handleStatusChange = async (id: number) => {\n    setStatusAnchorEl(null);\n    setStatusIsSending(true);\n    try {\n      const response = await Api.putApplicationStatus(\n        { 'X-api-authenticate': apiKey },\n        jobId,\n        selectedApplication.id ? selectedApplication.id : 0,\n        id\n      );\n      const newApplications = applications?.map((application) => {\n        if (application.id === selectedApplication.id) {\n          return { ...application, status: response.name, status_details: response };\n        } else {\n          return application;\n        }\n      });\n      setApplications(newApplications);\n      getFilterableStatuses();\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setStatusIsSending(false);\n    }\n  };\n\n  const handleScroll = () => {\n    if (!tableRef.current) return;\n    if (tableRef.current.scrollLeft < 10) {\n      setCanScroll([false, true]);\n    } else if (\n      tableRef.current.scrollLeft >\n      tableRef.current.scrollWidth - tableRef.current.clientWidth - 10\n    ) {\n      setCanScroll([true, false]);\n    } else {\n      setCanScroll([true, true]);\n    }\n  };\n\n  const handleScrollLeft = () => {\n    if (!tableRef.current) return;\n    tableRef.current.scrollLeft > 360\n      ? (tableRef.current.scrollLeft -= 300)\n      : (tableRef.current.scrollLeft = 0);\n  };\n\n  const handleScrollRight = () => {\n    if (!tableRef.current) return;\n    tableRef.current.scrollWidth - tableRef.current.clientWidth > 360\n      ? (tableRef.current.scrollLeft += 300)\n      : (tableRef.current.scrollLeft = tableRef.current.scrollWidth - tableRef.current.clientWidth);\n  };\n\n  const handleStatusDropdown = (anchor: HTMLDivElement, status: string, id: number) => {\n    setStatusAnchorEl(anchor);\n    setSelectedApplication({ id, attachments: null, status });\n  };\n\n  const handleSelectAttachment = (attachment: IApplicantAttachment) => {\n    setSelectedAttachment({ ...attachment, application_link: selectedApplication.link });\n    setPreviewOpen(true);\n  };\n\n  const handleCloseAttachmentsList = () => {\n    setAttachmentsListOpen(false);\n    setAnchorEl(null);\n  };\n\n  const getRatingColor = (rating: number) => {\n    if (rating <= 20) {\n      return '#CF5005';\n    } else if (rating <= 40) {\n      return '#E7B500';\n    } else if (rating <= 60) {\n      return '#B7F018';\n    } else if (rating <= 80) {\n      return '#94EDBB';\n    } else if (rating <= 100) {\n      return '#6FCC7C';\n    } else {\n      return '#FFFFFF';\n    }\n  };\n\n  function isScrollable(element: HTMLElement) {\n    return element && element.scrollWidth > element.clientWidth + 20;\n  }\n\n  const handleScrollableEnter = () => {\n    if (!tableRef.current || isLoading) return;\n    if (isScrollable(tableRef.current)) setTableHovered(true);\n  };\n\n  const handleScrollableExit = () => {\n    setTableHovered(false);\n  };\n\n  const handleOpenNote = (\n    event: React.MouseEvent<HTMLElement>,\n    application: IJobApplication,\n    currentIndex: number,\n    selectedNote: NoteState\n  ) => {\n    const isNotePad = selectedNote === NoteState.NOTEPAD;\n    if (newNoteOnApplicationEnabled && application.suitability_comment && isNotePad) {\n      enableSortableColumn();\n      window.requestAnimationFrame(() => {\n        notesRef.current[currentIndex]?.focus();\n      });\n      return;\n    }\n\n    setSelectedApplication({ id: application.id, attachments: null, status: null });\n    setNoteAnchorEl(event.currentTarget);\n    setActiveNote(isNotePad ? NoteState.NOTEPAD : NoteState.PERMANENT_RECORD);\n  };\n\n  const handleCloseNote = () => {\n    setNoteAnchorEl(null);\n    setSelectedApplication({ id: null, attachments: null, status: null });\n    preventLoop.current = 0;\n  };\n\n  const handleSubmitNote = () => {\n    enableSortableColumn();\n  };\n\n  const headerStyle = (name: string) => {\n    switch (name) {\n      case 'candidate':\n        return {\n          ...classes.sticky,\n          ...classes.scrollShadowLeft,\n          ...(tableHovered && classes.scrollShadowVisible),\n          minWidth: `${CANDIDATE_CELL_WIDTH}px`,\n          left: '138px',\n          '& span': { marginLeft: '12px' }\n        };\n      case 'id':\n        return { ...classes.sticky, minWidth: `${ID_CELL_WIDTH}px`, left: '58px' };\n      case 'notes':\n        return { minWidth: '230px' };\n      case 'date':\n        return { minWidth: '115px' };\n      case 'gender':\n        return { paddingLeft: '16px !important' };\n      default:\n        return { minWidth: '90px' };\n    }\n  };\n\n  const displaySelectAll =\n    selectAllApplications &&\n    globalSelected?.length !== totalApplications &&\n    totalApplications > rowsPerPage;\n\n  const renderTableCell = useCallback(\n    (\n      column: IApplicationTableProps['sortableColumns'][0],\n      application: IJobApplication,\n      createdAt: JSX.Element[] | '-',\n      index: number\n    ) => {\n      const applicationLink = `${application.application_link}?i=${index + rowsPerPage * (currentPage - 1)}`;\n      const newApplicationLink = newApplicationPage\n        ? applicationLink.replace('/applications/', '/new_applications/')\n        : applicationLink;\n\n      const handleHover = {\n        onMouseEnter: handleScrollableEnter,\n        onMouseLeave: handleScrollableExit\n      };\n\n      switch (column.id) {\n        case 'id':\n          return (\n            <TableCell\n              {...handleHover}\n              key={application.id + column.id}\n              sx={{\n                ...classes.noLinkStyling,\n                ...classes.sticky,\n                minWidth: '80px',\n                left: '58px'\n              }}\n            >\n              <a href={newApplicationLink} className=\"application-id-applications-link\">\n                {application.id || '-'}\n              </a>\n            </TableCell>\n          );\n        case 'candidate':\n          return (\n            <TableCell\n              key={application.id + column.id}\n              sx={{\n                ...classes.sticky,\n                minWidth: '200px',\n                left: '138px',\n                ...classes.scrollShadowLeft,\n                ...(tableHovered && classes.scrollShadowVisible)\n              }}\n              onMouseEnter={(e) => handleHoverApplicant(e.currentTarget, application)}\n              onMouseLeave={handleUnhoverApplicant}\n            >\n              <Box sx={classes.candidateCell}>\n                <CandidateIcon\n                  existingCandidate={application.candidate?.existing_candidate}\n                  sx={classes.candidateIcon}\n                />\n                <a href={newApplicationLink} className=\"candidate-name-applications-link\">\n                  {application.candidate?.firstname + ' ' + application.candidate?.lastname}\n                </a>\n              </Box>\n            </TableCell>\n          );\n        case 'gender':\n          if (showGender) {\n            return (\n              <TableCell\n                key={application.id + column.id}\n                sx={{ paddingLeft: '16px !important' }}\n                {...handleHover}\n              >\n                {application.candidate?.gender_full || '-'}\n              </TableCell>\n            );\n          } else {\n            return null;\n          }\n        case 'suburb':\n          return (\n            <TableCell key={application.id + column.id} {...handleHover}>\n              {application.candidate?.address_details?.suburb || '-'}\n            </TableCell>\n          );\n        case 'state':\n          return (\n            <TableCell key={application.id + column.id} {...handleHover}>\n              {application.candidate?.address_details?.state?.name || '-'}\n            </TableCell>\n          );\n        case 'country':\n          return (\n            <TableCell\n              key={application.id + column.id}\n              sx={{ textTransform: 'capitalize !important' }}\n              {...handleHover}\n            >\n              {application.candidate?.address_details?.country?.name?.toLowerCase() || '-'}\n            </TableCell>\n          );\n        case 'phone':\n          return (\n            <TableCell key={application.id + column.id} {...handleHover}>\n              {application.candidate?.phone1 || '-'}\n            </TableCell>\n          );\n        case 'date':\n          return (\n            <TableCell key={application.id + column.id} {...handleHover}>\n              {createdAt}\n            </TableCell>\n          );\n        case 'rating':\n          return (\n            <TableCell\n              key={application.id + column.id}\n              sx={{\n                color: '#000000',\n                fontWeight: '600'\n              }}\n              {...handleHover}\n            >\n              <Box\n                sx={{\n                  ...classes.rating,\n                  backgroundColor: getRatingColor(\n                    application.rating === null ? 101 : Number(application.rating)\n                  )\n                }}\n              >\n                {application.rating ? Math.ceil(Number(application.rating)) + '%' : '-'}\n              </Box>\n            </TableCell>\n          );\n        case 'status':\n          return (\n            <TableCell\n              key={application.id + column.id}\n              sx={classes.applicationStatus}\n              {...handleHover}\n            >\n              <Box\n                sx={{\n                  ...classes.statusDropdown,\n                  ...classes.statusClamp,\n                  cursor: userPermissions?.['Applications']?.['Change Status']\n                    ? 'pointer'\n                    : 'default',\n                  ...(!userPermissions?.['Applications']?.['Change Status']\n                    ? {\n                        '&::after': {\n                          display: 'none'\n                        }\n                      }\n                    : {})\n                }}\n                onClick={(event) => {\n                  if (!userPermissions?.['Applications']?.['Change Status']) return;\n                  handleStatusDropdown(event.currentTarget, application.status, application.id);\n                }}\n                ref={statusDropdownRef}\n                className=\"status-dropdown-applications-table\"\n              >\n                <Box\n                  className=\"status-dropdown-full\"\n                  sx={{\n                    cursor: userPermissions?.['Applications']?.['Change Status']\n                      ? 'pointer'\n                      : 'default',\n                    '&::after': {\n                      display: userPermissions?.['Applications']?.['Change Status']\n                        ? 'block'\n                        : 'none',\n                      top:\n                        statusDropdownRef.current && statusDropdownRef.current.clientHeight > 45\n                          ? '25.5px'\n                          : '50%'\n                    }\n                  }}\n                >\n                  <>\n                    {statusIsSending && selectedApplication.id === application.id ? (\n                      <CircularProgress size={18} sx={classes.statusLoader} />\n                    ) : (\n                      <>\n                        <Box\n                          sx={{\n                            ...classes.statusColour,\n                            backgroundColor: application.status_details?.colour\n                              ? application.status_details?.colour\n                              : '#AAAAAA'\n                          }}\n                        ></Box>\n                        {application.status}\n                      </>\n                    )}\n                  </>\n                </Box>\n                {statusIsSending && selectedApplication.id === application.id ? (\n                  <CircularProgress size={18} sx={classes.statusLoader} />\n                ) : (\n                  <>\n                    <Box\n                      sx={{\n                        ...classes.statusColour,\n                        backgroundColor: application.status_details?.colour\n                          ? application.status_details?.colour\n                          : '#AAAAAA'\n                      }}\n                    ></Box>\n                    {application.status}\n                  </>\n                )}\n              </Box>\n            </TableCell>\n          );\n        case SortableColumnId.NOTE_PAD:\n          return (\n            <TableCell key={application.id + column.id} {...handleHover}>\n              {!!application?.suitability_comment?.length && (\n                <EditableNote\n                  application={application}\n                  setApplications={setApplications}\n                  jobId={jobId}\n                  setSnackbarState={setSnackbarState}\n                  noteRef={(el) => (notesRef.current[index] = el)}\n                />\n              )}\n            </TableCell>\n          );\n        case SortableColumnId.PERMANENT_RECORD:\n        case SortableColumnId.NOTES:\n          return (\n            <TableCell\n              key={application.id + column.id}\n              sx={{ minWidth: '300px', paddingRight: '8px !important' }}\n              align=\"left\"\n              className=\"note-cell\"\n              id={`notes-${application.id}`}\n              {...handleHover}\n            >\n              {application?.notes?.length > 0 ? (\n                <NotesWithSubjectLine notes={application?.notes} />\n              ) : (\n                '-'\n              )}\n            </TableCell>\n          );\n        case 'candidate_tags':\n          return (\n            <TableCell\n              key={application.id + column.id}\n              sx={{ paddingRight: '8px !important' }}\n              align=\"left\"\n              className=\"location-cell\"\n              {...handleHover}\n            >\n              {application.tag_list.length > 0 && <TagList tags={application.tag_list} />}\n            </TableCell>\n          );\n        default:\n          return <TableCell></TableCell>;\n      }\n    },\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [\n      currentPage,\n      handleUnhoverApplicant,\n      rowsPerPage,\n      selectedApplication.id,\n      showGender,\n      statusIsSending,\n      tableHovered,\n      userPermissions,\n      newApplicationPage\n    ]\n  );\n\n  return (\n    <Box>\n      <Box sx={{ position: 'relative' }}>\n        <Box\n          onMouseEnter={handleScrollableEnter}\n          onMouseLeave={handleScrollableExit}\n          sx={{\n            ...classes.arrowsContainer,\n            position: 'absolute',\n            left: `${firstThreeColumnsWidth}px`\n          }}\n        >\n          <Box\n            onClick={handleScrollLeft}\n            sx={{\n              ...classes.leftArrow,\n              ...(tableHovered && canScroll[0] && classes.showArrows),\n              top: 0\n            }}\n            id=\"left-arrow\"\n          >\n            <KeyboardArrowLeftIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n          </Box>\n        </Box>\n        <Box\n          onMouseEnter={handleScrollableEnter}\n          onMouseLeave={handleScrollableExit}\n          sx={{\n            ...classes.arrowsContainer,\n            position: 'absolute',\n            right: `${actionCellRef.current?.offsetWidth}px`\n          }}\n        >\n          <Box\n            onClick={handleScrollRight}\n            sx={{\n              ...classes.rightArrow,\n              ...(tableHovered && canScroll[1] && classes.showArrows),\n              top: 0\n            }}\n            id=\"right-arrow\"\n          >\n            <KeyboardArrowRightIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n          </Box>\n        </Box>\n        <TableContainer\n          sx={{ boxShadow: 'none', scrollBehavior: 'smooth' }}\n          component={Paper}\n          onMouseEnter={handleScrollableEnter}\n          onMouseLeave={handleScrollableExit}\n          ref={tableRef}\n          onScroll={handleScroll}\n        >\n          <Backdrop sx={{ color: '#83ECE7', zIndex: '99999' }} open={isFetchingAllApplications}>\n            <CircularProgress color=\"inherit\" />\n          </Backdrop>\n          <Table\n            sx={{\n              ...classes.tableWrapper,\n              'th, td, tr, thead': { padding: `${tablePadding(density)} 10px` }\n            }}\n            aria-label=\"job applications\"\n          >\n            <TableHead>\n              <TableRow>\n                <TableCell sx={{ ...classes.sticky, width: `${CHECKBOX_CELL_WIDTH}px` }}>\n                  <Checkbox\n                    id=\"select-all-checkbox\"\n                    sx={classes.checkbox}\n                    indeterminate={!selectAllIsChecked && selectAllIsIndeterminate}\n                    checked={selectAllIsChecked}\n                    onChange={handleSelectAll}\n                    inputProps={{\n                      'aria-label': 'select all applications'\n                    }}\n                  />\n                </TableCell>\n                {sortableColumns\n                  .filter((column) => (column.id === 'gender' && !showGender ? false : true))\n                  .map(\n                    (column) =>\n                      column.enabled && (\n                        <TableCell\n                          key={column.id}\n                          sx={headerStyle(column.id)}\n                          ref={column.id === 'candidate' ? candidateCellRef : null}\n                        >\n                          <TableSortLabel\n                            id={`${column.id}-sort-label-applications`}\n                            active={sortBy === column.id}\n                            direction={sortBy === column.id ? (sortOrder as 'asc' | 'desc') : 'asc'}\n                            onClick={(event) => handleSortChange(event, column.id)}\n                            sx={column.sortable ? classes.sortable : null}\n                            disabled={!column.sortable || column.id == SortableColumnId.NOTES}\n                          >\n                            {column.label}\n                          </TableSortLabel>\n                        </TableCell>\n                      )\n                  )}\n                <TableCell\n                  sx={{\n                    ...classes.attachmentsHeader,\n                    ...classes.stickyRight,\n                    ...classes.scrollShadowRight,\n                    ...(tableHovered && classes.scrollShadowVisible)\n                  }}\n                />\n              </TableRow>\n            </TableHead>\n            <TableBody>\n              {applications &&\n                (!isLoading || isFetchingAllApplications) &&\n                applications?.map((application: IJobApplication, index) => {\n                  const createdAt = application.created_at\n                    ? moment\n                        .tz(application.created_at, timeZoneString)\n                        .format('DD MMM YYYY,-h:mma z')\n                        .split('-')\n                        .map((line) => <div key={`${application.id}-${line}`}>{line}</div>)\n                    : '-';\n                  return (\n                    <TableRow key={application.id}>\n                      <TableCell sx={{ ...classes.sticky, width: '58px' }}>\n                        <Checkbox\n                          id={`select-checkbox-${application.id}`}\n                          sx={classes.checkbox}\n                          checked={selected.includes(application.id)}\n                          onChange={(event) => handleSelectOne(event, application)}\n                          inputProps={{\n                            'aria-label': `select applicant ${application.candidate?.firstname} ${application.candidate?.lastname}`\n                          }}\n                        />\n                      </TableCell>\n                      {sortableColumns?.map((column) => {\n                        if (column.enabled) {\n                          return renderTableCell(column, application, createdAt, index);\n                        }\n                      })}\n                      <TableCell\n                        sx={{\n                          ...classes.attachmentsCell,\n                          ...classes.stickyRight,\n                          ...classes.scrollShadowRight,\n                          ...(tableHovered && classes.scrollShadowVisible)\n                        }}\n                        ref={actionCellRef}\n                      >\n                        <Box sx={classes.actionItems}>\n                          {canAddNote && newNoteOnApplicationEnabled && (\n                            <Tooltip title=\"Add note\" placement=\"top\">\n                              <IconButton\n                                className=\"notepad-application-table-button\"\n                                onClick={(e) =>\n                                  handleOpenNote(e, application, index, NoteState.NOTEPAD)\n                                }\n                              >\n                                <EditNoteIcon />\n                              </IconButton>\n                            </Tooltip>\n                          )}\n                          {canAddNote && (\n                            <Tooltip\n                              title={\n                                newNoteOnApplicationEnabled ? 'Add permanent record' : 'Add note'\n                              }\n                              placement=\"top\"\n                            >\n                              <IconButton\n                                className=\"permanent-application-table-button\"\n                                onClick={(e) =>\n                                  handleOpenNote(e, application, index, NoteState.PERMANENT_RECORD)\n                                }\n                              >\n                                <NoteAddIcon />\n                              </IconButton>\n                            </Tooltip>\n                          )}\n                          {application?.attachments?.length > 0 && (\n                            <IconButton\n                              className=\"show-attachments-applications-button\"\n                              aria-label=\"show attachments\"\n                              onClick={(event) =>\n                                handleShowAttachmentsList(\n                                  event,\n                                  application.id,\n                                  application.attachments,\n                                  application.application_link\n                                )\n                              }\n                            >\n                              <AttachFileIcon />\n                            </IconButton>\n                          )}\n                          {ai_studio_summaries_enabled && (\n                            <Tooltip title=\"Suggested interview questions\" placement=\"top\">\n                              <IconButton\n                                className=\"ai-studio-interview-questions-button\"\n                                aria-label=\"ai studio interview questions\"\n                                onClick={() => setSelectedAIApplicant(application)}\n                                sx={classes.aiQuestionsButton}\n                              >\n                                <MessageIcon />\n                              </IconButton>\n                            </Tooltip>\n                          )}\n                        </Box>\n                      </TableCell>\n                    </TableRow>\n                  );\n                })}\n            </TableBody>\n          </Table>\n          {!isLoading && applications?.length === 0 && (\n            <Box sx={classes.noApplications}>No applications found</Box>\n          )}\n          {isLoading && !isFetchingAllApplications && (\n            <>\n              {[...Array(10)].map((_, index) => (\n                <Box key={index} sx={classes.skeletonContainer}>\n                  <Skeleton animation=\"wave\" height={60} />\n                </Box>\n              ))}\n            </>\n          )}\n        </TableContainer>\n      </Box>\n      <Box sx={classes.paginationParent}>\n        <Box sx={classes.rowSelectContainer}>\n          <span>Rows per page: </span>\n          <FormControl>\n            <Select\n              id=\"rows-per-page\"\n              sx={classes.rowSelect}\n              value={rowsPerPage}\n              onChange={(e) => handleRowsPerPageChange(Number(e.target.value))}\n              displayEmpty\n              MenuProps={{ sx: classes.paginationMenuItems }}\n            >\n              <MenuItem id=\"first-rpp-item\" value={10}>\n                10\n              </MenuItem>\n              <MenuItem id=\"second-rpp-item\" value={20}>\n                20\n              </MenuItem>\n              <MenuItem value={30}>30</MenuItem>\n              <MenuItem value={40}>40</MenuItem>\n              <MenuItem value={50}>50</MenuItem>\n            </Select>\n          </FormControl>\n        </Box>\n        <Box sx={classes.paginationContainer}>\n          <Pagination\n            id=\"pagination-menu\"\n            count={totalPages}\n            page={currentPage}\n            siblingCount={0}\n            onChange={handlePageChange}\n            sx={classes.pagination}\n          />\n          <span id=\"total-jobs\">{totalApplications} Total</span>\n        </Box>\n      </Box>\n      <Box\n        id=\"selected-tooltip\"\n        sx={\n          globalSelected?.length > 0\n            ? { ...classes.selectedTooltip, ...classes.fadeIn }\n            : { ...classes.selectedTooltip, ...classes.fadeOut }\n        }\n      >\n        <Box\n          id=\"selected-tooltip-text\"\n          sx={{\n            display: 'flex',\n            paddingLeft: '12px',\n            alignItems: 'center',\n            ...classes.selectedTooltipText\n          }}\n        >\n          {globalSelected.length === totalApplications\n            ? `All ${globalSelected?.length} applications are selected`\n            : `${globalSelected?.length} selected`}\n          <IconButton\n            size=\"small\"\n            sx={{\n              ...classes.selectedTooltipText,\n              ...classes.selectedAllTooltipText,\n              marginLeft: 1,\n              color: '#666666'\n            }}\n            onClick={clearAllSelection}\n          >\n            Clear selection\n          </IconButton>\n        </Box>\n        {displaySelectAll && (\n          <IconButton\n            disabled={isFetchingAllApplications}\n            size=\"small\"\n            sx={{ ...classes.selectedTooltipText, ...classes.selectedAllTooltipText }}\n            onClick={handleSelectAllApplications}\n          >\n            Select all {totalApplications} applications\n          </IconButton>\n        )}\n      </Box>\n      {selectedApplication.id && (\n        <NotesPopover\n          anchorEl={noteAnchorEl}\n          applicationId={selectedApplication.id}\n          handleCloseNote={handleCloseNote}\n          jobId={jobId}\n          onSuccess={handleSubmitNote}\n          setApplications={setApplications}\n          setSnackbarState={setSnackbarState}\n          noteState={activeNote}\n          newNoteOnApplicationEnabled={newNoteOnApplicationEnabled}\n        />\n      )}\n\n      <Popover\n        id={attachmentsListOpen ? 'applicant-attachments' : undefined}\n        open={attachmentsListOpen}\n        anchorEl={anchorEl}\n        onClose={handleCloseAttachmentsList}\n        anchorOrigin={{\n          vertical: 'bottom',\n          horizontal: 'right'\n        }}\n        transformOrigin={{\n          vertical: 'top',\n          horizontal: 'right'\n        }}\n      >\n        <Box>\n          {selectedApplication?.attachments?.map((attachment) => (\n            <Box\n              key={attachment.id}\n              sx={classes.attachmentItem}\n              onClick={() => handleSelectAttachment(attachment)}\n            >\n              <Box sx={classes.fileIcon}>\n                {DocTypeIcon(attachment.attached_file_name.split('.').pop())}\n              </Box>\n              <Box sx={classes.fileName}>{attachment.attached_file_name}</Box>\n            </Box>\n          ))}\n        </Box>\n      </Popover>\n      <Popover\n        id={statusAnchorEl ? 'status-selection' : undefined}\n        sx={classes.statusDropdownItems}\n        open={Boolean(statusAnchorEl)}\n        anchorEl={statusAnchorEl}\n        onClose={() => setStatusAnchorEl(null)}\n        anchorOrigin={{\n          vertical: 'bottom',\n          horizontal: 'left'\n        }}\n      >\n        {selectedApplication &&\n          applicationStatuses\n            ?.filter((status) => status.name !== selectedApplication.status)\n            ?.map((status) => (\n              <Box\n                key={status.id}\n                sx={classes.statusDropdownItem}\n                onClick={() => handleStatusChange(status.id)}\n              >\n                {status.name}\n              </Box>\n            ))}\n      </Popover>\n      {ai_studio_summaries_enabled && (\n        <>\n          <SummaryPopover\n            applicantHovered={applicantHovered}\n            handleHoverApplicant={handleHoverApplicant}\n            handleUnhoverApplicant={handleUnhoverApplicant}\n            lastHoveredApplicant={lastHoveredApplicant}\n            anchorEl={applicantAnchorEl}\n            jobId={jobId}\n            setSnackbarState={setSnackbarState}\n            summaryGeneratingIds={summaryGeneratingIds}\n            setSummaryGeneratingIds={setSummaryGeneratingIds}\n          />\n          <InterviewQuestions\n            jobId={jobId}\n            open={!!selectedAIApplicant}\n            handleClose={() => setSelectedAIApplicant(null)}\n            selectedApplicantId={selectedAIApplicant?.id}\n            positionTitle={jobTitle}\n            setSnackbarState={setSnackbarState}\n          />\n        </>\n      )}\n    </Box>\n  );\n}\n","import React from 'react';\nimport SvgIcon from '@mui/material/SvgIcon';\n\nexport function CeridianIcon(props) {\n  return (\n    <SvgIcon {...props}>\n      <g id=\"Layer_1-2\" transform=\"translate(7 4)\">\n        <g id=\"Group_423\" data-name=\"Group 423\" transform=\"translate(0)\">\n          <path\n            id=\"Path_235\"\n            data-name=\"Path 235\"\n            d=\"M11.715,12.739l.8,1.179c-.271.178-.528.363-.8.523a7.24,7.24,0,0,1-2.787.985,7.636,7.636,0,0,1-7.193-2.8A7.286,7.286,0,0,1,.11,9.04,7.78,7.78,0,0,1,4.061.913,7.374,7.374,0,0,1,6.572.065c.223-.033.45-.044.675-.065H8.3A7.435,7.435,0,0,1,10.2.354,7.836,7.836,0,0,1,12.4,1.5c.043.032.085.066.145.113L11.73,2.782a.4.4,0,0,0-.074-.087,10.132,10.132,0,0,0-.852-.562,6.429,6.429,0,0,0-2-.676A6.409,6.409,0,0,0,3.385,3.117a6.253,6.253,0,0,0-1.112,1.4,6.374,6.374,0,0,0-.863,2.812A5.9,5.9,0,0,0,1.54,9.072,6.439,6.439,0,0,0,2.13,10.7a6.244,6.244,0,0,0,1.387,1.782,6.807,6.807,0,0,0,1.656,1.084,6.087,6.087,0,0,0,2.114.537,6.2,6.2,0,0,0,2.261-.235,6.268,6.268,0,0,0,2.167-1.127Z\"\n            transform=\"translate(0)\"\n            fill=\"#606060\"\n          />\n          <path\n            id=\"Path_236\"\n            data-name=\"Path 236\"\n            d=\"M25.576,26.35a6.276,6.276,0,0,1-2.167,1.127,6.2,6.2,0,0,1-2.261.235,6.087,6.087,0,0,1-2.114-.537,6.825,6.825,0,0,1-1.656-1.084,6.215,6.215,0,0,1-1.387-1.782,6.426,6.426,0,0,1-.59-1.627,5.934,5.934,0,0,1-.129-1.741,6.377,6.377,0,0,1,.863-2.812,6.253,6.253,0,0,1,1.112-1.4,6.412,6.412,0,0,1,7.419-.983,10.132,10.132,0,0,1,.852.562.432.432,0,0,1,.074.087l0,0s-.013,0-.013,0a.178.178,0,0,0,0,.022l-.76,1.129a5,5,0,0,0-2.754-1.137c.075-.066,0-.048-.029-.048-.272,0-.544,0-.816,0-.036,0-.07.033-.105.05a5.13,5.13,0,0,0-1.595.455A4.884,4.884,0,0,0,17,19.6a4.958,4.958,0,0,0,2.46,6.217,4.734,4.734,0,0,0,1.724.478,3.54,3.54,0,0,0,.361.051,5.232,5.232,0,0,0,3.147-1.08c.031-.025.063-.047.105-.079l.779,1.165Z\"\n            transform=\"translate(-13.861 -13.611)\"\n            fill=\"#828588\"\n          />\n          <path\n            id=\"Path_237\"\n            data-name=\"Path 237\"\n            d=\"M79.28,30.079c.035-.017.07-.049.105-.05.272,0,.544,0,.816,0,.029,0,.1-.018.029.048Z\"\n            transform=\"translate(-72.027 -27.278)\"\n            fill=\"#3b6fa9\"\n          />\n          <path\n            id=\"Path_238\"\n            data-name=\"Path 238\"\n            d=\"M80.265,0h0Z\"\n            transform=\"translate(-71.964)\"\n            fill=\"#4a6a98\"\n          />\n          <path\n            id=\"Path_239\"\n            data-name=\"Path 239\"\n            d=\"M128.06,30.406a.177.177,0,0,1,0-.022s.008,0,.013,0A.027.027,0,0,1,128.06,30.406Z\"\n            transform=\"translate(-116.343 -27.601)\"\n            fill=\"#3167d9\"\n          />\n        </g>\n      </g>\n    </SvgIcon>\n  );\n}\n\nexport function ExternalEmailIcon(props) {\n  return (\n    <SvgIcon {...props}>\n      <path d=\"M14,2H6C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M12.54,19.37V17.37H8.54V15.38H12.54V13.38L15.54,16.38L12.54,19.37M13,9V3.5L18.5,9H13Z\" />\n    </SvgIcon>\n  );\n}\n\nexport function ResendIcon(props) {\n  return (\n    <SvgIcon {...props}>\n      <path\n        fill=\"currentColor\"\n        d=\"M13 19C13 15.69 15.69 13 19 13C20.1 13 21.12 13.3 22 13.81V6C22 4.89 21.1 4 20 4H4C2.89 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H13.09C13.04 19.67 13 19.34 13 19M4 8V6L12 11L20 6V8L12 13L4 8M20 22V20H16V18H20V16L23 19L20 22Z\"\n      />\n    </SvgIcon>\n  );\n}\n\nexport function PDFIcon(props) {\n  return (\n    <SvgIcon {...props}>\n      <path\n        fill=\"currentColor\"\n        d=\"M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M9.5 11.5C9.5 12.3 8.8 13 8 13H7V15H5.5V9H8C8.8 9 9.5 9.7 9.5 10.5V11.5M14.5 13.5C14.5 14.3 13.8 15 13 15H10.5V9H13C13.8 9 14.5 9.7 14.5 10.5V13.5M18.5 10.5H17V11.5H18.5V13H17V15H15.5V9H18.5V10.5M12 10.5H13V13.5H12V10.5M7 10.5H8V11.5H7V10.5Z\"\n      />\n    </SvgIcon>\n  );\n}\n","import React, { useState } from 'react';\nimport {\n  Box,\n  Popover,\n  IconButton,\n  FormControl,\n  FormGroup,\n  FormControlLabel,\n  Switch,\n  Stack,\n  Tooltip\n} from '@mui/material';\nimport ViewColumnIcon from '@mui/icons-material/ViewColumn';\nimport { IDropdownProps } from '../../types';\nimport { classes } from '../styles';\nimport {\n  DndContext,\n  closestCenter,\n  KeyboardSensor,\n  PointerSensor,\n  useSensor,\n  useSensors\n} from '@dnd-kit/core';\nimport {\n  arrayMove,\n  SortableContext,\n  sortableKeyboardCoordinates,\n  verticalListSortingStrategy\n} from '@dnd-kit/sortable';\nimport SortableField from './SortableField';\n\nexport default function FieldDropdown({\n  sortableColumns,\n  setSortableColumns,\n  showGender,\n  density,\n  setDensity,\n  setUserPreferences\n}: IDropdownProps) {\n  const [anchorEl, setAnchorEl] = useState<HTMLButtonElement | null>(null);\n  const [dropdownOpen, setDropdownOpen] = useState(false);\n\n  const handleFieldSwitchChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    const newSortableColumns = sortableColumns.map((field) => {\n      if (field.id === event.target.name) {\n        return { ...field, enabled: event.target.checked };\n      } else {\n        return field;\n      }\n    });\n    setSortableColumns(newSortableColumns);\n    setUserPreferences(null, null, newSortableColumns, null, null);\n  };\n\n  const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n    setAnchorEl(event.currentTarget);\n    setDropdownOpen(true);\n  };\n\n  const handleClose = () => {\n    setAnchorEl(null);\n    setDropdownOpen(false);\n  };\n\n  const sensors = useSensors(\n    useSensor(PointerSensor),\n    useSensor(KeyboardSensor, {\n      coordinateGetter: sortableKeyboardCoordinates\n    })\n  );\n\n  function handleDragEnd(event) {\n    const { active, over } = event;\n\n    if (active.id !== over.id) {\n      const oldIndex = sortableColumns.map((c) => c.id).indexOf(active.id);\n      const newIndex = sortableColumns.map((c) => c.id).indexOf(over.id);\n      const newArray = arrayMove(sortableColumns, oldIndex, newIndex);\n\n      setSortableColumns(newArray);\n      setUserPreferences(null, null, newArray, null, null);\n    }\n  }\n\n  return (\n    <Tooltip title=\"Table settings\" placement=\"top\" arrow>\n      <Box>\n        <IconButton\n          id=\"field-dropdown-applications-table-button\"\n          sx={\n            dropdownOpen ? { ...classes.iconButton, ...classes.iconButtonOpen } : classes.iconButton\n          }\n          onClick={handleClick}\n        >\n          <ViewColumnIcon />\n        </IconButton>\n        <Popover\n          id=\"field-dropdown-popover\"\n          sx={classes.popover}\n          open={dropdownOpen}\n          anchorEl={anchorEl}\n          onClose={handleClose}\n          anchorOrigin={{\n            vertical: 'bottom',\n            horizontal: 'right'\n          }}\n          transformOrigin={{\n            vertical: 'top',\n            horizontal: 'right'\n          }}\n        >\n          <Box sx={classes.popoverContent}>\n            <Stack sx={classes.tableSettingsHeader}>Column</Stack>\n            <FormControl component=\"fieldset\" variant=\"standard\">\n              <FormGroup id=\"field-dropdown-switches\">\n                <DndContext\n                  sensors={sensors}\n                  collisionDetection={closestCenter}\n                  onDragEnd={handleDragEnd}\n                >\n                  <SortableContext items={sortableColumns} strategy={verticalListSortingStrategy}>\n                    {sortableColumns.map((field, index) => {\n                      if (field.canToggle === false || (field.id === 'gender' && !showGender))\n                        return null;\n                      return (\n                        <SortableField\n                          key={index}\n                          field={field}\n                          handleFieldSwitchChange={handleFieldSwitchChange}\n                        />\n                      );\n                    })}\n                  </SortableContext>\n                </DndContext>\n              </FormGroup>\n            </FormControl>\n            <Stack sx={{ ...classes.tableSettingsHeader, paddingTop: 2 }}>Density</Stack>\n            <FormControl>\n              <FormGroup>\n                {['Default', 'Compact', 'Ultra Compact'].map((size, index) => {\n                  const isSwitched = size === density;\n                  return (\n                    <FormControlLabel\n                      sx={\n                        !isSwitched\n                          ? { ...classes.switchLabels, ...classes.labelActive }\n                          : classes.switchLabels\n                      }\n                      key={index}\n                      control={\n                        <Switch\n                          sx={isSwitched ? classes.switchActive : classes.switch}\n                          checked={isSwitched}\n                          onChange={(event) => {\n                            setDensity(size);\n                            setUserPreferences(null, null, null, null, size);\n                          }}\n                          name={'density'}\n                        />\n                      }\n                      label={size}\n                      labelPlacement=\"start\"\n                    />\n                  );\n                })}\n              </FormGroup>\n            </FormControl>\n          </Box>\n        </Popover>\n      </Box>\n    </Tooltip>\n  );\n}\n","import React, { useState, useMemo, useCallback, useEffect } from 'react';\nimport MultiSelect, { IOptionType } from '../../../Components/CustomUIElements/MultiSelect';\nimport Box from '@mui/material/Box';\nimport Popover from '@mui/material/Popover';\nimport IconButton from '@mui/material/IconButton';\nimport Badge from '@mui/material/Badge';\nimport Button from '@mui/material/Button';\nimport Switch from '@mui/material/Switch';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Slider from '@mui/material/Slider';\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport SortIcon from '@mui/icons-material/Sort';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { defaultFilters } from '../config';\nimport { IFilterDropdownProps } from '../../types';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport Tooltip from '@mui/material/Tooltip';\n\nexport default function FilterDropdown({\n  filters,\n  setFilters,\n  getApplications,\n  statusList,\n  countryList,\n  suburbList,\n  setUserPreferences,\n  setCurrentPage,\n  jobId,\n  clearAllSelection\n}: IFilterDropdownProps) {\n  const [anchorEl, setAnchorEl] = useState(null);\n  const [dropdownOpen, setDropdownOpen] = useState(false);\n  const [loadingFilters, setLoadingFilters] = useState(false);\n  const [tempFilters, setTempFilters] = useState({ ...filters });\n  const [numberOfFilters, setNumberOfFilters] = useState(0);\n\n  const calculateNumberOfFilters = useCallback((newFilters) => {\n    return (\n      Number(!!newFilters.status.length) +\n      Number(!!newFilters?.country?.length) +\n      Number(!!newFilters?.suburb?.length) +\n      Number(newFilters.rating[0] !== 0 || newFilters.rating[1] !== 100) +\n      Number(newFilters.excludeApplicantsWithoutRating)\n    );\n  }, []);\n\n  const handleDropdownOpen = (event: React.MouseEvent<HTMLButtonElement>) => {\n    setAnchorEl(event.currentTarget);\n    setDropdownOpen(true);\n  };\n\n  const handleFilterChange = (name: string, value: IOptionType[] | number[] | boolean) => {\n    setTempFilters({ ...tempFilters, [name]: value });\n  };\n\n  const handleApplyFilters = () => {\n    setFilters({ ...tempFilters });\n    setCurrentPage(1);\n    sessionStorage.setItem(`${jobId}-applicationTablePage`, 1);\n    setUserPreferences(null, null, null, { ...tempFilters }, null);\n    getApplications(1, null, null, null, tempFilters);\n    setDropdownOpen(false);\n    setAnchorEl(null);\n    setNumberOfFilters(calculateNumberOfFilters(tempFilters));\n    clearAllSelection();\n  };\n\n  const handleResetFilters = () => {\n    setTempFilters({ ...defaultFilters });\n    setUserPreferences(null, null, null, { ...defaultFilters }, null);\n    setFilters({ ...defaultFilters });\n    getApplications(null, null, null, null, defaultFilters);\n    setDropdownOpen(false);\n    setAnchorEl(null);\n    setNumberOfFilters(0);\n    clearAllSelection();\n  };\n\n  const statusOptions = useMemo(() => {\n    return statusList?.map((status) => ({\n      name: status.name,\n      id: status.id,\n      colour: status.colour\n    }));\n  }, [statusList]);\n\n  const countryOptions = useMemo(() => {\n    return countryList?.map((country) => ({\n      name: country.name,\n      id: country.id\n    }));\n  }, [countryList]);\n\n  const suburbOptions = useMemo(() => {\n    return suburbList?.map((suburb) => ({\n      name: suburb.name,\n      id: suburb.id\n    }));\n  }, [suburbList]);\n\n  useEffect(() => {\n    setTempFilters({ ...filters });\n    setNumberOfFilters(calculateNumberOfFilters(filters));\n  }, [filters, calculateNumberOfFilters]);\n\n  return (\n    <Tooltip title=\"Filter\" placement=\"top\" arrow>\n      <Box>\n        <Badge\n          badgeContent={numberOfFilters}\n          sx={{ '& .MuiBadge-badge': { backgroundColor: '#E37D7A', color: '#FFF' } }}\n        >\n          <IconButton\n            id=\"filter-dropdown-applications-table-button\"\n            sx={\n              dropdownOpen\n                ? { ...classes.iconButton, ...classes.iconButtonOpen }\n                : classes.iconButton\n            }\n            onClick={handleDropdownOpen}\n          >\n            {loadingFilters ? <CircularProgress size={24} /> : <SortIcon />}\n          </IconButton>\n        </Badge>\n        <Popover\n          id=\"filter-dropdown-popover\"\n          sx={classes.popover}\n          open={dropdownOpen}\n          anchorEl={anchorEl}\n          onClose={() => setDropdownOpen(false)}\n          anchorOrigin={{\n            vertical: 'bottom',\n            horizontal: 'right'\n          }}\n          transformOrigin={{\n            vertical: 'top',\n            horizontal: 'right'\n          }}\n        >\n          <Box sx={classes.filterPopoverContent}>\n            <Box sx={classes.scrollableFilters}>\n              <Box sx={classes.filterPopoverHeader}>\n                <Button\n                  id=\"reset-filters-button\"\n                  variant=\"contained\"\n                  endIcon={<CancelIcon />}\n                  sx={classes.clearButton}\n                  onClick={handleResetFilters}\n                >\n                  Clear all\n                </Button>\n                <Button\n                  id=\"apply-filters-button\"\n                  variant=\"contained\"\n                  onClick={handleApplyFilters}\n                  sx={classes.applyButton}\n                >\n                  Apply\n                </Button>\n              </Box>\n              <Box\n                sx={{ ...classes.filterOptionContainer, marginBottom: '20px' }}\n                id=\"status-filter\"\n              >\n                Status\n                <MultiSelect\n                  handleFilterChange={(name, value) => handleFilterChange(name, value)}\n                  selectOptions={statusOptions}\n                  name={'status'}\n                  filters={tempFilters.status}\n                />\n              </Box>\n              <Box\n                sx={{ ...classes.filterOptionContainer, marginBottom: '20px' }}\n                id=\"country-filter\"\n              >\n                Country\n                <MultiSelect\n                  handleFilterChange={(name, value) => handleFilterChange(name, value)}\n                  selectOptions={countryOptions}\n                  name={'country'}\n                  filters={tempFilters.country}\n                />\n              </Box>\n              <Box\n                sx={{ ...classes.filterOptionContainer, marginBottom: '20px' }}\n                id=\"suburb-filter\"\n              >\n                Suburb\n                <MultiSelect\n                  handleFilterChange={(name, value) => handleFilterChange(name, value)}\n                  selectOptions={suburbOptions}\n                  name={'suburb'}\n                  filters={tempFilters.suburb}\n                />\n              </Box>\n              <Box\n                sx={{ ...classes.filterOptionContainer, paddingBottom: '6px' }}\n                id=\"rating-filter\"\n              >\n                Rating\n                <Box sx={{ padding: '0px 9px' }}>\n                  <Slider\n                    sx={sharedClasses.ratingSlider}\n                    getAriaLabel={() => 'Applicant Rating'}\n                    value={tempFilters.rating}\n                    onChange={(event, value: number | number[]) =>\n                      handleFilterChange('rating', value as number[])\n                    }\n                    valueLabelDisplay=\"on\"\n                    valueLabelFormat={(value: number) => `${value}%`}\n                    getAriaValueText={(value: number) => `${value}%`}\n                  />\n                </Box>\n              </Box>\n              <Box sx={classes.checkboxContainer} id=\"unrated-filter\">\n                <FormControlLabel\n                  sx={\n                    !tempFilters.excludeApplicantsWithoutRating\n                      ? { ...classes.filterSwitchLabels, ...classes.labelActive }\n                      : classes.filterSwitchLabels\n                  }\n                  control={\n                    <Switch\n                      sx={\n                        tempFilters.excludeApplicantsWithoutRating\n                          ? classes.filterSwitchActive\n                          : classes.filterSwitch\n                      }\n                      checked={tempFilters.excludeApplicantsWithoutRating}\n                      onChange={() =>\n                        handleFilterChange(\n                          'excludeApplicantsWithoutRating',\n                          !tempFilters.excludeApplicantsWithoutRating\n                        )\n                      }\n                    />\n                  }\n                  label=\"Exclude unrated\"\n                  labelPlacement=\"start\"\n                />\n              </Box>\n            </Box>\n          </Box>\n        </Popover>\n      </Box>\n    </Tooltip>\n  );\n}\n","import React from 'react';\nimport { Box, IconButton, FormControlLabel, Switch } from '@mui/material';\nimport DragIndicatorIcon from '@mui/icons-material/DragIndicator';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { IDropdownProps } from '../../types';\nimport { classes } from '../styles';\n\nconst SortableField = ({\n  field,\n  handleFieldSwitchChange\n}: {\n  field: IDropdownProps['sortableColumns'][0];\n  handleFieldSwitchChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}) => {\n  const { attributes, listeners, setNodeRef, setActivatorNodeRef, transform, transition } =\n    useSortable({ id: field.id });\n\n  const style = {\n    transform: CSS.Translate.toString(transform),\n    transition\n  };\n\n  return (\n    <Box key={field.id} sx={classes.sortableField} style={style} ref={setNodeRef} {...attributes}>\n      <IconButton ref={setActivatorNodeRef} {...listeners}>\n        <DragIndicatorIcon sx={{ fontSize: 16 }} />\n      </IconButton>\n      <FormControlLabel\n        sx={\n          !field.enabled\n            ? { ...classes.sortableSwitchLabels, ...classes.labelActive }\n            : classes.sortableSwitchLabels\n        }\n        control={\n          <Switch\n            sx={field.enabled ? classes.switchActive : classes.switch}\n            checked={field.enabled}\n            onChange={handleFieldSwitchChange}\n            name={field.id}\n          />\n        }\n        label={field.label}\n        labelPlacement=\"start\"\n      />\n    </Box>\n  );\n};\n\nexport default SortableField;\n","import { Close } from '@mui/icons-material';\nimport { Box, Button, CircularProgress, TextField, Tooltip } from '@mui/material';\nimport { useMutation } from '@tanstack/react-query';\nimport React, { ChangeEvent, FC, useCallback, useEffect, useState } from 'react';\nimport API from '../API';\nimport { IEditableNotes } from '../types';\nimport { classes } from './styles';\nimport { IError } from '../../SmartForms/types';\nimport { emojiInString } from '../../utils/emoji-checker';\nimport { NOTES_ERROR_MESSAGE } from '../../constants';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\n\nconst EditableNote: FC<IEditableNotes> = ({\n  application,\n  setApplications,\n  jobId,\n  setSnackbarState,\n  noteRef\n}) => {\n  const [note, setNote] = useState(application.suitability_comment || '');\n  const [isNotEditable, setIsNotEditable] = useState(true);\n  const [noteError, setNoteError] = useState('');\n\n  const handleOnChange = (e: ChangeEvent<HTMLInputElement>) => {\n    if (isNotEditable) return;\n    const { value } = e.target;\n    setNote(value);\n  };\n\n  const handleCancel = () => {\n    setNoteError('');\n    setNote(application.suitability_comment);\n    setIsNotEditable(true);\n  };\n\n  const handleInputFocus = (): void => setIsNotEditable(false);\n\n  const validateInput = () => {\n    if (emojiInString(note)) {\n      setNoteError(NOTES_ERROR_MESSAGE);\n      return true;\n    }\n    return false;\n  };\n\n  const { mutate: saveNote, isLoading } = useMutation({\n    mutationFn: async (): Promise<void> => {\n      await API.updateNote(jobId, application.id, { suitability_comment: note }).then(\n        (response) => {\n          if (response.success) {\n            setSnackbarState({\n              message: response.message,\n              state: 'success'\n            });\n          }\n          setApplications((prevApplications) => {\n            const newApplications = [...prevApplications];\n            const applicationIndex = newApplications.findIndex(\n              (currentApplication) => currentApplication.id === application.id\n            );\n            newApplications[applicationIndex].suitability_comment = note;\n            return newApplications;\n          });\n          setIsNotEditable(true);\n          setNoteError('');\n        }\n      );\n    },\n    onError: (error: IError) => {\n      const errorMessage = error.errors ? error.errors.join('. ') : error;\n      setSnackbarState({\n        message: `There was an error updating the note ${errorMessage}`,\n        state: 'error'\n      });\n    }\n  });\n\n  const handleEditClick = () => {\n    setIsNotEditable(false);\n  };\n\n  const handleKeyDown = useCallback((e: KeyboardEvent) => {\n    if (e.key == 'Escape') {\n      setIsNotEditable(true);\n    }\n  }, []);\n\n  useEffect(() => {\n    window.addEventListener('keydown', handleKeyDown);\n\n    return () => window.removeEventListener('keydown', handleKeyDown);\n  }, [handleKeyDown]);\n\n  return (\n    <Tooltip placement=\"top-end\" title=\"Edit\" arrow>\n      <Box sx={classes.noteContainer}>\n        <TextField\n          id={`notes-text-area-${application.id}`}\n          InputProps={{ sx: classes.text }}\n          inputRef={noteRef}\n          multiline={true}\n          onChange={handleOnChange}\n          onClick={handleEditClick}\n          onFocus={handleInputFocus}\n          rows={2}\n          value={note}\n        />\n        {!!noteError && <Box sx={sharedClasses.errorText}>{noteError}</Box>}\n        {!isNotEditable && (\n          <Box sx={classes.noteEditButtonContainer}>\n            <Button sx={classes.notesCancelButton} endIcon={<Close />} onClick={handleCancel}>\n              Cancel\n            </Button>\n            <Button\n              type=\"submit\"\n              sx={classes.notesEditSaveButton}\n              disabled={isLoading}\n              onClick={() => {\n                if (validateInput()) return;\n                saveNote();\n              }}\n            >\n              {isLoading ? <CircularProgress size={20} color=\"inherit\" /> : 'Save'}\n            </Button>\n          </Box>\n        )}\n      </Box>\n    </Tooltip>\n  );\n};\n\nexport default EditableNote;\n","import React, { useState } from 'react';\nimport { Box, Button, Modal, Stack } from '@mui/material';\nimport { Close as CloseIcon, NavigateBefore as NavigateBeforeIcon } from '@mui/icons-material';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { ControlledStaticDatePicker } from '../../../Components/CustomUIElements/SingleDatePicker';\nimport SelectedApplicants from '../SelectedApplicants';\nimport { IAddToEventModalProps } from '../../types';\nimport { classes } from '../styles';\nimport { useQuery, useMutation } from '@tanstack/react-query';\nimport { IEvent } from '../../types';\nimport API from '../../API';\nimport { IError } from '../../../SmartForms/types';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport VirtualizeGrouped from '../../../Components/CustomUIElements/VirtualizedGroupedAutocomplete';\nimport SmsTemplateComponent from '../../../Components/CustomUIElements/SmsTemplateComponent';\nimport HtmlEditor from '../../../Components/Utilities/HtmlEditor';\nimport NotificationOptionSwitch from '../../../Application/Modals/Components/NotificationOptionsSwitch';\nimport { usePlaceholders } from '../../../hooks';\nimport { useEmailTemplatesOptions } from '../../../hooks';\nimport { ISmsTemplate } from './SMSCandidates';\nimport formatToUserTimeZone from '../../../utils/formatToUserTimeZone';\n\nexport default function AddToEvent({\n  apiKey,\n  jobId,\n  setSnackbar,\n  modalsOpen,\n  setModalsOpen,\n  globalSelected,\n  handleDeselectCandidate,\n  filters,\n  smsTemplatePermissions\n}: IAddToEventModalProps) {\n  const [selectedDay, setSelectedDay] = useState<Date | null>(new Date());\n  const [selectedTimeSlot, setSelectedTimeSlot] = useState<number>(0);\n  const [step, setStep] = useState<number>(1);\n  const [notification, setNotification] = useState<string>('email');\n  const [smsMessage, setSmsMessage] = useState<string>('');\n  const [smsTemplate, setSmsTemplate] = useState<ISmsTemplate | null>(null);\n  const [selectedEmailTemplate, setSelectedEmailTemplate] = useState<string | null>('');\n  const [body, setBody] = useState<string>('');\n\n  const { data: events, isLoading: loadingEvents } = useQuery({\n    queryKey: ['events'],\n    queryFn: async () => {\n      const { events } = await API.getEvents(new Date(), { 'X-api-authenticate': apiKey });\n      return events as IEvent[];\n    },\n    onError: (error: IError) => setSnackbar({ message: error.errors.join(', '), state: 'error' })\n  });\n\n  const { data: placeholders } = usePlaceholders({\n    type: 'event',\n    apiKey,\n    onError: (message: string) => setSnackbar({ message, state: 'error' })\n  });\n\n  const { data: emailTemplates, isLoading: loadingEmailTemplates } = useEmailTemplatesOptions({\n    apiKey,\n    onError: (message: string) => setSnackbar({ message, state: 'error' })\n  });\n\n  useQuery({\n    queryKey: [selectedEmailTemplate],\n    queryFn: async () => {\n      if (!selectedEmailTemplate) return;\n      const res = await API.getEmailTemplate(\n        { 'X-api-authenticate': apiKey },\n        Number(selectedEmailTemplate.split(' -')[0])\n      );\n      return res;\n    },\n    onSuccess: (emailTemplate) => setBody(emailTemplate.body),\n    onError: (error: IError) => setSnackbar({ message: error.errors.join(', '), state: 'error' }),\n    enabled: !!selectedEmailTemplate\n  });\n\n  const eventCandidates = events\n    ?.find((e) => e.id === selectedTimeSlot)\n    ?.attendees.filter((a) => a.type === 'Candidate')\n    .map((c) => c.application_id);\n\n  const bookableCandidates = globalSelected\n    .map((s) => s.id)\n    .filter((c) => !eventCandidates?.includes(c));\n\n  const { mutate: sendEmail, isLoading: sendingEmail } = useMutation({\n    mutationFn: async () => {\n      if (!selectedEmailTemplate) return;\n      const res = await API.sendEmail(\n        { 'X-api-authenticate': apiKey },\n        jobId,\n        selectedTimeSlot,\n        Number(selectedEmailTemplate.split(' -')[0]),\n        body,\n        bookableCandidates\n      );\n      return res;\n    },\n    onSuccess: () => {\n      setSnackbar({\n        message: 'Add to event email notification has been sent successfully',\n        state: 'success'\n      });\n      setModalsOpen((prev) => ({ ...prev, addToEvent: false }));\n    },\n    onError: (error: { success: boolean; message: string }) =>\n      setSnackbar({ message: error.message, state: 'error' })\n  });\n\n  const { mutate: sendSms, isLoading: sendingSms } = useMutation({\n    mutationFn: async () => {\n      const res = await API.addToEventSms(\n        jobId,\n        selectedTimeSlot,\n        bookableCandidates,\n        smsMessage,\n        smsTemplate?.id\n      );\n      if (res.success !== 0) {\n        setSnackbar({\n          message: 'Add to event SMS notification has been sent successfully',\n          state: 'success'\n        });\n        setModalsOpen((prev) => ({ ...prev, addToEvent: false }));\n      } else {\n        setSnackbar({ message: 'There is an error in sending SMS notification', state: 'error' });\n      }\n      return res;\n    }\n  });\n\n  const selectedDayEvents = events?.filter((e) => {\n    if (!selectedDay) return false;\n    return formatToUserTimeZone(e.begins_at, 'ymd') === formatToUserTimeZone(selectedDay, 'ymd');\n  });\n\n  const shouldDisableDate = (date: Date) => {\n    if (!events) return true;\n    return !events\n      .map((e) => formatToUserTimeZone(e.begins_at, 'ymd'))\n      .includes(formatToUserTimeZone(date, 'ymd'));\n  };\n\n  const buttonName = step === 1 ? 'Next' : 'Send';\n\n  const disableButton = () => {\n    if (step === 1) {\n      return !selectedTimeSlot || !bookableCandidates.length;\n    } else {\n      return notification === 'email' ? !body : !smsMessage.trim();\n    }\n  };\n\n  const handleSubmit = () => {\n    if (step === 1) {\n      setStep(2);\n    } else {\n      notification === 'email' ? sendEmail() : sendSms();\n    }\n  };\n\n  return (\n    <Modal\n      open={modalsOpen.addToEvent}\n      onClose={() => setModalsOpen((prev) => ({ ...prev, addToEvent: false }))}\n      aria-labelledby=\"add-to-event-modal\"\n    >\n      <Box sx={classes.actionsModalReducedPadding}>\n        <CloseIcon\n          onClick={() => setModalsOpen((prev) => ({ ...prev, addToEvent: false }))}\n          sx={classes.closeIcon}\n        />\n        <Box id=\"add-to-event-title\" sx={{ ...classes.actionModalHeader, paddingBottom: 3 }}>\n          Add to Event\n        </Box>\n        {step === 1 ? (\n          <>\n            <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between' }}>\n              <Box sx={classes.calendar}>\n                <ControlledStaticDatePicker\n                  displayStaticWrapperAs=\"desktop\"\n                  views={['day']}\n                  value={selectedDay}\n                  disablePast\n                  onChange={(value) => setSelectedDay(value)}\n                  shouldDisableDate={shouldDisableDate}\n                />\n              </Box>\n              <Box sx={classes.dailyTimeslots}>\n                <Box sx={{ ...classes.dailyTimeslotsHeader, marginTop: 2, marginBottom: '20px' }}>\n                  Choose available timeslot\n                </Box>\n                {loadingEvents ? (\n                  <Box sx={classes.noTimeslots}>\n                    <CircularProgress size={32} />\n                  </Box>\n                ) : (\n                  <Stack sx={classes.addToEventTimeslotsContainer}>\n                    {selectedDayEvents?.map((e) => {\n                      const candidates = e.attendees.filter((a) => a.type === 'Candidate');\n                      const fullyBooked = candidates.length === e.max_candidates;\n                      return (\n                        <Stack\n                          key={e.id}\n                          sx={{\n                            ...classes.addToEventTimeslot,\n                            border: `1px solid ${\n                              e.id === selectedTimeSlot ? '#5BC4C0' : '#DDDDDD'\n                            }`,\n                            color: `${fullyBooked ? '#939393' : '#666666'}`,\n                            background: `${fullyBooked ? '#EAEEF0' : 'inherit'}`,\n                            cursor: `${fullyBooked ? 'unset' : 'pointer'}`\n                          }}\n                          onClick={() => {\n                            if (fullyBooked) return;\n                            if (globalSelected.length > e.max_candidates - candidates.length) {\n                              setSnackbar({\n                                message:\n                                  'Candidate count exceeds timeslot capacity. please align candidate numbers with available capacity',\n                                state: 'warning'\n                              });\n                            } else {\n                              setSelectedTimeSlot(e.id);\n                            }\n                          }}\n                        >\n                          <Stack sx={{ rowGap: '4px' }}>\n                            <Stack sx={{ fontSize: '14px' }}>\n                              {formatToUserTimeZone(e.begins_at, 'onlyTime')}\n                            </Stack>\n                            <Stack sx={{ fontSize: '12px' }}>{e.subject}</Stack>\n                          </Stack>\n                          <Stack sx={{ color: `${fullyBooked ? '#939393' : '#084D6D'}` }}>\n                            {candidates.length}/{e.max_candidates} BOOKED\n                          </Stack>\n                        </Stack>\n                      );\n                    })}\n                  </Stack>\n                )}\n              </Box>\n            </Stack>\n            <Box\n              sx={{\n                ...classes.modalContent,\n                margin: 'unset',\n                '&::-webkit-scrollbar': {\n                  display: 'none'\n                }\n              }}\n              id=\"add-to-event-modal-content\"\n              aria-label=\"Add to Event Modal Content\"\n            >\n              <Box sx={{ marginLeft: '15px' }}>\n                <h3>Candidates</h3>\n                <SelectedApplicants\n                  globalSelected={globalSelected}\n                  handleDeselectCandidate={handleDeselectCandidate}\n                  closeModalCallback={() =>\n                    setModalsOpen((prev) => ({ ...prev, addToEvent: false }))\n                  }\n                  filters={filters}\n                  eventCandidates={eventCandidates}\n                />\n              </Box>\n            </Box>\n          </>\n        ) : (\n          <Stack sx={classes.addToEventSecondStepContainer}>\n            <NotificationOptionSwitch\n              setNotification={setNotification}\n              notification={notification}\n            />\n            {notification === 'email' ? (\n              <Stack sx={{ paddingTop: 4, rowGap: 3 }}>\n                <VirtualizeGrouped\n                  options={emailTemplates || []}\n                  value={selectedEmailTemplate}\n                  onChange={(value) => {\n                    !value && setBody('');\n                    setSelectedEmailTemplate(value);\n                  }}\n                  styles={{\n                    ...sharedClasses.formAutocomplete,\n                    marginRight: '1px',\n                    '&.MuiAutocomplete-root': {\n                      '& .MuiOutlinedInput-root': {\n                        paddingRight: '16px !important'\n                      }\n                    }\n                  }}\n                  label=\"Choose email template\"\n                  loading={loadingEmailTemplates}\n                  loadingText=\"Loading email templates...\"\n                />\n                <Stack sx={{ marginLeft: '3px', rowGap: 0.5 }}>\n                  <Stack sx={{ color: '#838383' }}>Body</Stack>\n                  <HtmlEditor body={body} onBlur={setBody} maxHeight={400} />\n                  <Stack sx={classes.addToEventEmailPlaceholder}>\n                    Available placeholders are: {placeholders}\n                  </Stack>\n                </Stack>\n              </Stack>\n            ) : (\n              <SmsTemplateComponent\n                smsTemplatePermissions={smsTemplatePermissions}\n                setSnackbar={setSnackbar}\n                smsMessage={smsMessage}\n                setSmsMessage={setSmsMessage}\n                smsTemplate={smsTemplate}\n                setSmsTemplate={setSmsTemplate}\n              />\n            )}\n          </Stack>\n        )}\n        <Box sx={{ ...classes.modalFooter, columnGap: 1, paddingTop: 2 }}>\n          <Button\n            id=\"close-add-to-event-modal-button\"\n            sx={classes.modalCancelButton}\n            onClick={() => setModalsOpen((prev) => ({ ...prev, addToEvent: false }))}\n          >\n            Cancel\n          </Button>\n          {step !== 1 && (\n            <Button\n              onClick={() => setStep(1)}\n              sx={{ ...sharedClasses.genericButtonSecondary, minWidth: 'unset', padding: 1 }}\n            >\n              <NavigateBeforeIcon />\n            </Button>\n          )}\n          <Button\n            id=\"add-to-event-submit-button\"\n            type=\"submit\"\n            sx={{\n              ...sharedClasses.genericButton,\n              '&.Mui-disabled ': { background: '#DDDDDD', color: '#939393' }\n            }}\n            onClick={handleSubmit}\n            disabled={disableButton()}\n          >\n            {sendingSms || sendingEmail ? (\n              <CircularProgress size={20} color=\"inherit\" />\n            ) : (\n              buttonName\n            )}\n          </Button>\n        </Box>\n      </Box>\n    </Modal>\n  );\n}\n","import React, { useState } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport Chip from '@mui/material/Chip';\nimport Button from '@mui/material/Button';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport CloseIcon from '@mui/icons-material/Close';\nimport IconButton from '@mui/material/IconButton';\nimport IosShareIcon from '@mui/icons-material/IosShare';\nimport { IExportCSVProps } from '../../types';\nimport { classes } from '../styles';\n\nexport default function CSVExport({\n  apiKey,\n  filters,\n  order,\n  orderBy,\n  activeColumns\n}: IExportCSVProps) {\n  const [modalOpen, setModalOpen] = useState(false);\n  const [isLoading, setIsLoading] = useState(false);\n  const [selectedFields, setSelectedFields] = useState({\n    candidate: activeColumns.candidate,\n    gender: activeColumns.gender,\n    suburb: activeColumns.suburb,\n    country: activeColumns.country,\n    date: activeColumns.date,\n    rating: activeColumns.rating,\n    status: activeColumns.status,\n    answers: true,\n    notes: false,\n    individualRating: false\n  });\n\n  const handleModalOpen = () => {\n    setModalOpen(true);\n    setSelectedFields({\n      candidate: activeColumns.candidate,\n      gender: activeColumns.gender,\n      suburb: activeColumns.suburb,\n      country: activeColumns.country,\n      date: activeColumns.date,\n      rating: activeColumns.rating,\n      status: activeColumns.status,\n      answers: true,\n      notes: false,\n      individualRating: false\n    });\n  };\n\n  const handleClickChip = (field: string) => {\n    setSelectedFields((previousSelections) => ({\n      ...previousSelections,\n      [field]: !previousSelections[field]\n    }));\n  };\n\n  const handleExportCSV = () => {\n    setIsLoading(true);\n    try {\n      console.log('api call will go here');\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsLoading(false);\n      setModalOpen(false);\n    }\n  };\n\n  return (\n    <>\n      <Box>\n        <IconButton id=\"export-applications-csv\" sx={classes.iconButton} onClick={handleModalOpen}>\n          <IosShareIcon />\n        </IconButton>\n      </Box>\n      <Modal\n        open={modalOpen}\n        onClose={() => setModalOpen(false)}\n        aria-labelledby=\"export-applications-csv-modal\"\n      >\n        <Box sx={classes.csvExportModal}>\n          <CloseIcon onClick={() => setModalOpen(false)} sx={classes.closeIcon} />\n          <Box id=\"export-applications-csv-modal-title\" sx={classes.csvExportHeader}>\n            Select the fields to include in the CSV export\n          </Box>\n          <Box sx={classes.csvExportSubheader}>\n            Your active filters and sorting will be applied automatically.\n          </Box>\n          <Box sx={classes.chipPacket}>\n            <Chip label=\"ID\" sx={classes.chipSelected} />\n            <Chip label=\"Candidate\" sx={classes.chipSelected} />\n            <Chip\n              label=\"Gender\"\n              sx={selectedFields.gender ? classes.chipSelected : classes.chip}\n              onClick={() => handleClickChip('gender')}\n            />\n            <Chip\n              label=\"Suburb\"\n              sx={selectedFields.suburb ? classes.chipSelected : classes.chip}\n              onClick={() => handleClickChip('suburb')}\n            />\n            <Chip\n              label=\"Country\"\n              sx={selectedFields.country ? classes.chipSelected : classes.chip}\n              onClick={() => handleClickChip('country')}\n            />\n            <Chip\n              label=\"Date\"\n              sx={selectedFields.date ? classes.chipSelected : classes.chip}\n              onClick={() => handleClickChip('date')}\n            />\n            <Chip\n              label=\"Rating\"\n              sx={selectedFields.rating ? classes.chipSelected : classes.chip}\n              onClick={() => handleClickChip('rating')}\n            />\n            <Chip\n              label=\"Status\"\n              sx={selectedFields.status ? classes.chipSelected : classes.chip}\n              onClick={() => handleClickChip('status')}\n            />\n            <Chip\n              label=\"Answers\"\n              sx={selectedFields.answers ? classes.chipSelected : classes.chip}\n              onClick={() => handleClickChip('answers')}\n            />\n            <Chip\n              label=\"Notes\"\n              sx={selectedFields.notes ? classes.chipSelected : classes.chip}\n              onClick={() => handleClickChip('notes')}\n            />\n            <Chip\n              label=\"Individual Rating\"\n              sx={selectedFields.individualRating ? classes.chipSelected : classes.chip}\n              onClick={() => handleClickChip('individualRating')}\n            />\n          </Box>\n          <Button\n            id=\"export-applications-csv-button\"\n            sx={classes.csvExportButton}\n            onClick={handleExportCSV}\n          >\n            Export CSV\n          </Button>\n        </Box>\n      </Modal>\n    </>\n  );\n}\n","import React, { useState, useEffect, useRef } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport Button from '@mui/material/Button';\nimport CloseIcon from '@mui/icons-material/Close';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport TextField from '@mui/material/TextField';\nimport SelectedApplicants from '../SelectedApplicants';\nimport GenericDialog from '../../../Components/Modals/GenericDialog';\nimport {\n  IExtendedActionModalProps,\n  IApplicationStatus,\n  IJobApplication,\n  IGetApplications\n} from '../../types';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\n\ninterface IChangeStatusModalProps extends IExtendedActionModalProps {\n  applicationStatuses: IApplicationStatus[];\n  getApplications: IGetApplications;\n}\n\nexport default function ChangeStatus({\n  apiKey,\n  jobId,\n  setSnackbar,\n  modalsOpen,\n  setModalsOpen,\n  globalSelected,\n  handleDeselectCandidate,\n  applicationStatuses,\n  getApplications,\n  filters\n}: IChangeStatusModalProps) {\n  const [isSending, setIsSending] = useState(false);\n  const [noStatusSelected, setNoStatusSelected] = useState(false);\n  const [selectedStatus, setSelectedStatus] = useState<IApplicationStatus | null>(null);\n  const [tempGlobalSelected, setTempGlobalSelected] = useState<IJobApplication[]>([]);\n  const [confirmCancelIsOpen, setConfirmCancelIsOpen] = useState(false);\n  const selectStatusRef = useRef(null);\n\n  const handleClose = (confirm: boolean) => {\n    if (selectedStatus && confirm) {\n      setConfirmCancelIsOpen(true);\n    } else {\n      setModalsOpen((prev) => ({ ...prev, changeStatus: false }));\n      setSelectedStatus(null);\n    }\n  };\n\n  const handleSubmit = async () => {\n    if (!selectedStatus) {\n      setNoStatusSelected(true);\n      return;\n    }\n    setIsSending(true);\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/bulk_change_applications_status`, {\n        method: 'POST',\n        headers: {\n          'Content-Type': 'application/json',\n          'x-api-authenticate': apiKey\n        },\n        body: JSON.stringify({\n          application_ids: tempGlobalSelected.map((app) => app.id),\n          change_status: selectedStatus.id\n        })\n      });\n      if (response.ok) {\n        getApplications(null, null, null, null, null);\n        handleClose(false);\n        setSnackbar({\n          message:\n            'Status changes queued, please allow up to a few minutes for them to take effect.',\n          state: 'success'\n        });\n      }\n    } catch (error) {\n      setSnackbar({\n        message: 'An error occurred while changing statuses, please try again',\n        state: 'error'\n      });\n    } finally {\n      setIsSending(false);\n    }\n  };\n\n  const handleStatusSelect = (\n    event: React.SyntheticEvent<Element, Event>,\n    value: IApplicationStatus | null\n  ) => {\n    setSelectedStatus(value);\n    setNoStatusSelected(false);\n  };\n\n  useEffect(() => {\n    if (globalSelected.length > 0 && modalsOpen.changeStatus) {\n      setTempGlobalSelected(\n        globalSelected.map((application) => ({\n          ...application,\n          status: selectedStatus?.name,\n          status_details: selectedStatus\n        }))\n      );\n    }\n  }, [globalSelected, modalsOpen.changeStatus, selectedStatus]);\n\n  return (\n    <Modal\n      open={modalsOpen.changeStatus}\n      onClose={() => handleClose(true)}\n      aria-labelledby=\"change-status-modal\"\n    >\n      <Box sx={classes.actionsModalReducedPadding}>\n        <CloseIcon onClick={() => handleClose(true)} sx={classes.closeIcon} />\n        <Box id=\"change-status-title\" sx={classes.actionModalHeader}>\n          Change status\n        </Box>\n        <Box\n          sx={classes.modalContent}\n          id=\"change-status-modal-content\"\n          aria-label=\"Change Status Modal Content\"\n        >\n          <Box role=\"form\" id=\"change-status-form\" aria-label=\"Change Status form\">\n            <Box sx={{ ...classes.actionModalFormLine, marginTop: '20px' }} ref={selectStatusRef}>\n              <Autocomplete\n                options={applicationStatuses}\n                getOptionLabel={(option) => option.name}\n                onChange={handleStatusSelect}\n                value={selectedStatus}\n                sx={{ ...sharedClasses.formAutocomplete, width: '287px' }}\n                ListboxProps={{\n                  style: {\n                    fontFamily: 'Source Sans Pro, sans-serif',\n                    color: '#333333',\n                    maxHeight: '200px'\n                  }\n                }}\n                renderInput={(params) => (\n                  <TextField\n                    {...params}\n                    label=\"Change to status\"\n                    InputLabelProps={{ shrink: true }}\n                  />\n                )}\n              />\n\n              {noStatusSelected && <Box sx={classes.formError}>Status must be selected</Box>}\n            </Box>\n          </Box>\n          <Box sx={{ marginLeft: '15px' }}>\n            <h3>Candidates</h3>\n            <SelectedApplicants\n              globalSelected={selectedStatus ? tempGlobalSelected : globalSelected}\n              handleDeselectCandidate={handleDeselectCandidate}\n              closeModalCallback={() => handleClose(false)}\n              filters={filters}\n            />\n          </Box>\n        </Box>\n        <Box sx={classes.modalFooter}>\n          <Button\n            id=\"close-change-status-button\"\n            sx={classes.modalCancelButton}\n            onClick={() => handleClose(true)}\n          >\n            Cancel\n          </Button>\n          <Button\n            id=\"submit-change-status-button\"\n            type=\"submit\"\n            sx={{ ...classes.modalSendButton, width: '91px', height: '41px' }}\n            onClick={handleSubmit}\n          >\n            {isSending ? <CircularProgress size={20} color=\"inherit\" /> : 'Confirm'}\n          </Button>\n        </Box>\n        <GenericDialog\n          isDialogOpen={confirmCancelIsOpen}\n          setDialogOpen={setConfirmCancelIsOpen}\n          title=\"Status changes have not been saved\"\n          description=\"Are you sure you want to close without submitting your changes?\"\n          buttonCallback={() => {\n            setConfirmCancelIsOpen(false);\n            handleClose(false);\n          }}\n          callbackLoading={false}\n          buttonText=\"Close without saving\"\n          url=\"\"\n        />\n      </Box>\n    </Modal>\n  );\n}\n","import React, { useState, useEffect, useCallback, useRef } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport Button from '@mui/material/Button';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport VirtualizeGrouped, {\n  formatOptions\n} from '../../../Components/CustomUIElements/VirtualizedGroupedAutocomplete';\nimport { FormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Checkbox from '@mui/material/Checkbox';\nimport SelectedApplicants from '../SelectedApplicants';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { IExtendedActionModalProps } from '../../types';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport HtmlEditor from '../../../Components/Utilities/HtmlEditor';\nimport { FileWithPath } from 'react-dropzone';\nimport { serialize } from 'object-to-formdata';\nimport { Virtualize } from '../../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport AttachmentSelectorAndPreview from '../../../Components/CustomUIElements/AttachmentSelectorAndPreview';\nimport { stringToSeconds } from '../../../Components/Utilities/stringToSeconds';\nimport DelaySelectWrapper from '../../../EditJob/Automation/shared/DelaySelectWrapper';\n\nexport default function EmailCandidates({\n  apiKey,\n  jobId,\n  setSnackbar,\n  modalsOpen,\n  setModalsOpen,\n  globalSelected,\n  handleDeselectCandidate,\n  filters\n}: IExtendedActionModalProps) {\n  const [isSending, setIsSending] = useState(false);\n  const [templateError, setTemplateError] = useState(false);\n  const [isLoadingTemplateList, setIsLoadingTemplateList] = useState(false);\n  const [templates, setTemplates] = useState<string[]>([]);\n  const [selectedTemplate, setSelectedTemplate] = useState<string | null>(null);\n  const [excludeApplicants, setExcludeApplicants] = useState(false);\n  const [delay, setDelay] = useState('None');\n  const [subject, setSubject] = useState('');\n  const [body, setBody] = useState('');\n  const [sendableBody, setSendableBody] = useState('');\n  const [attachments, setAttachments] = useState<FileWithPath[]>([]);\n  const [templateAttachments, setTemplateAttachments] = useState([]);\n  const [placeholders, setPlaceholders] = useState<string>('');\n  const [isLoadingEventList, setIsLoadingEventList] = useState(false);\n  const [hasCareAdvantageIntegration, setHasCareAdvantageIntegration] = useState(false);\n  const [careAdvantageEvents, setCareAdvantageEvents] = useState([]);\n  const [selectedEvent, setSelectedEvent] = useState<string | null>(null);\n\n  const templateRef = useRef<HTMLDivElement>(null);\n\n  const handleSelectTemplate = async (value: string) => {\n    if (!value) {\n      setSelectedTemplate(null);\n      setBody('');\n      setSendableBody('');\n      return;\n    }\n    setBody(\n      '<p style=\"text-align: center;\"><span style=\"font-size: 14pt;\"><strong>Loading template...</strong></span></p>'\n    );\n    const id = value.split(' -')[0];\n    setSelectedTemplate(value);\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/email_templates/${id}`, {\n        method: 'GET',\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      });\n      const data = await response.json();\n      setSubject(data.subject);\n      setBody(data.body);\n      setSendableBody(data.body);\n      setTemplateAttachments(data.email_attachments);\n      setTemplateError(false);\n      if (response.status !== 200) {\n        throw new Error(data);\n      }\n    } catch (error) {\n      setSnackbar({\n        message: 'Error loading template',\n        state: 'error'\n      });\n      setBody('');\n    }\n  };\n\n  const getTemplatesAndPlaceholders = useCallback(async () => {\n    setIsLoadingTemplateList(true);\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/email_templates?group_templates=true`, {\n        method: 'GET',\n        headers: {\n          'Content-Type': 'application/json',\n          'X-api-authenticate': apiKey\n        }\n      }).then((res) => res.json());\n      const formattedTemplates = formatOptions(response.email_templates);\n      setTemplates(formattedTemplates);\n      setPlaceholders(response.placeholders);\n    } catch (error) {\n      setSnackbar({\n        message: 'Error fetching templates',\n        state: 'error'\n      });\n    } finally {\n      setIsLoadingTemplateList(false);\n    }\n  }, [apiKey, jobId, setSnackbar]);\n\n  const handleClose = () => {\n    setModalsOpen((prev) => ({ ...prev, email: false }));\n    setSelectedTemplate(null);\n    setExcludeApplicants(false);\n    setDelay('None');\n    setSubject('');\n    setBody('');\n    setSendableBody('');\n    setAttachments([]);\n  };\n\n  const getCareAdvantageEvents = useCallback(async () => {\n    setIsLoadingEventList(true);\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/auto_emails/care_advantage_events`, {\n        method: 'GET',\n        headers: {\n          'Content-Type': 'application/json',\n          'X-api-authenticate': apiKey\n        }\n      }).then((res) => res.json());\n      setHasCareAdvantageIntegration(response.has_care_advantage_integration);\n      setCareAdvantageEvents(response.care_advantage_events);\n    } catch (error) {\n      setSnackbar({\n        message: 'Error fetching care advantage events',\n        state: 'error'\n      });\n    } finally {\n      setIsLoadingEventList(false);\n    }\n  }, [apiKey, jobId, setSnackbar]);\n\n  const handleSubmit = async () => {\n    if (!selectedTemplate) {\n      setTemplateError(true);\n      templateRef?.current?.scrollIntoView({ behavior: 'smooth' });\n      return;\n    }\n    setIsSending(true);\n    const targetEvent = careAdvantageEvents.find((event) => event.name === selectedEvent);\n    const commaSeparatedAppIds = globalSelected.map((app) => app.id).join(',');\n    const data = {\n      email_batch: {\n        applications_ids: commaSeparatedAppIds,\n        email_template_id: selectedTemplate.split(' -')[0],\n        subject,\n        body: sendableBody,\n        delay: stringToSeconds(delay),\n        only_new: excludeApplicants,\n        care_advantage_event_id: targetEvent ? targetEvent.id : '',\n        ...(attachments.length > 0 && { new_email_attachments: attachments }),\n        filters: filters\n      }\n    };\n    const formData = serialize(data);\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/applications/bulk_email`, {\n        method: 'POST',\n        headers: {\n          'X-api-authenticate': apiKey\n        },\n        body: formData\n      });\n      if (response.status !== 201) {\n        const errorData = await response.json();\n        throw new Error(errorData.errors || 'An unexpected error occurred');\n      } else {\n        setSnackbar({\n          message: 'Candidates emailed successfully',\n          state: 'success'\n        });\n        handleClose();\n      }\n    } catch (error) {\n      setSnackbar({\n        message: error.message,\n        state: 'error'\n      });\n    } finally {\n      setIsSending(false);\n    }\n  };\n\n  useEffect(() => {\n    if (modalsOpen.email) {\n      getTemplatesAndPlaceholders();\n      getCareAdvantageEvents();\n    }\n  }, [getTemplatesAndPlaceholders, getCareAdvantageEvents, modalsOpen.email]);\n\n  return (\n    <Modal\n      open={modalsOpen.email}\n      onClose={handleClose}\n      disableEnforceFocus\n      aria-labelledby=\"email-candidates-modal\"\n    >\n      <Box sx={classes.actionsModalReducedPadding}>\n        <CloseIcon onClick={handleClose} sx={classes.closeIcon} />\n        <Box id=\"email-candidates-title\" sx={classes.actionModalHeader}>\n          Email Candidates\n        </Box>\n        <Box\n          sx={classes.modalContent}\n          id=\"email-candidates-modal-content\"\n          aria-label=\"email Candidates Modal Content\"\n        >\n          <Box role=\"form\" id=\"email-candidates-form\" aria-label=\"Email Candidates form\">\n            <Box sx={classes.actionModalFormLine} ref={templateRef}>\n              <VirtualizeGrouped\n                value={selectedTemplate}\n                options={templates}\n                onChange={handleSelectTemplate}\n                styles={{\n                  ...sharedClasses.formAutocomplete,\n                  width: '600px',\n                  marginTop: '20px'\n                }}\n                label=\"Template\"\n                loading={isLoadingTemplateList}\n                loadingText=\"Loading template list...\"\n              />\n              {templateError && <Box sx={classes.formError}>Please select a template</Box>}\n            </Box>\n            <Box sx={classes.actionModalFormLine}>\n              <FormControlLabel\n                control={\n                  <Checkbox\n                    sx={classes.formCheckbox}\n                    onChange={(e) => setExcludeApplicants(e.target.checked)}\n                    value={excludeApplicants}\n                  />\n                }\n                label=\"Exclude applicants who have received this email template\"\n                sx={classes.checkboxLabel}\n              />\n            </Box>\n            <Box sx={{ marginLeft: '15px' }}>\n              <h3>Email details</h3>\n            </Box>\n            <DelaySelectWrapper delay={delay} setDelay={setDelay} />\n            {hasCareAdvantageIntegration && (\n              <Box sx={{ ...classes.actionModalFormLine, rowGap: '0px !important' }}>\n                <Virtualize\n                  value={selectedEvent}\n                  passOptions={careAdvantageEvents.map((event) => event.name)}\n                  setValue={(value: string) => {\n                    setSelectedEvent(value);\n                  }}\n                  passedStyles={{\n                    ...sharedClasses.formAutocomplete,\n                    width: '600px',\n                    marginTop: '20px'\n                  }}\n                  label=\"Select a Care Advantage Event\"\n                />\n                <Box sx={classes.placeholderText}>\n                  Placeholder to use: {'{'}CARE_ADVANTAGE_INVITE_LINK{'}'}\n                </Box>\n              </Box>\n            )}\n            <Box sx={classes.actionModalFormLine}>\n              <FormTextField\n                id=\"email-subject\"\n                label=\"Subject\"\n                value={subject}\n                styles={{ width: '290px' }}\n                onChange={(e) => setSubject(e.target.value)}\n              />\n            </Box>\n            <Box sx={classes.modalSection}>\n              <Box sx={classes.formLabel}>Body</Box>\n              <HtmlEditor body={body} onChange={setSendableBody} />\n              <Box sx={classes.placeholderText}>Available placeholders are: {placeholders}</Box>\n            </Box>\n            <AttachmentSelectorAndPreview\n              attachments={attachments}\n              setAttachments={setAttachments}\n              templateAttachments={templateAttachments}\n            />\n            <Box sx={{ marginLeft: '15px' }}>\n              <h3>Candidates</h3>\n              <SelectedApplicants\n                globalSelected={globalSelected}\n                handleDeselectCandidate={handleDeselectCandidate}\n                closeModalCallback={handleClose}\n                filters={filters}\n              />\n            </Box>\n          </Box>\n        </Box>\n        <Box sx={classes.modalFooter}>\n          <Button\n            id=\"close-email-candidate-button\"\n            sx={classes.modalCancelButton}\n            onClick={handleClose}\n          >\n            Cancel\n          </Button>\n          <Button\n            id=\"send-email-candidate-button\"\n            type=\"submit\"\n            sx={{ ...classes.modalSendButton, width: '71px', height: '41px' }}\n            onClick={handleSubmit}\n          >\n            {isSending ? <CircularProgress size={20} color=\"inherit\" /> : 'Send'}\n          </Button>\n        </Box>\n      </Box>\n    </Modal>\n  );\n}\n","import React, { useState } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport Button from '@mui/material/Button';\nimport Checkbox from '@mui/material/Checkbox';\nimport CloseIcon from '@mui/icons-material/Close';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport SelectedApplicants from '../SelectedApplicants';\nimport { IExtendedActionModalProps } from '../../types';\nimport { classes } from '../styles';\n\nexport default function ExportFoundU({\n  apiKey,\n  jobId,\n  setSnackbar,\n  modalsOpen,\n  setModalsOpen,\n  globalSelected,\n  handleDeselectCandidate,\n  filters\n}: IExtendedActionModalProps) {\n  const [isSubmitting, setIsSubmitting] = useState(false);\n  const [sendEmail, setSendEmail] = useState(false);\n\n  const handleSubmit = async () => {\n    setIsSubmitting(true);\n    try {\n      const body = { application_ids: globalSelected.map((app) => app.id) };\n      if (sendEmail) {\n        body.send_welcome_email = '1';\n      }\n\n      const response = await fetch(`/api/v4/jobs/${jobId}/export_foundu`, {\n        method: 'POST',\n        headers: {\n          'Content-Type': 'application/json',\n          'x-api-authenticate': apiKey\n        },\n        body: JSON.stringify(body)\n      });\n      if (response.ok) {\n        const json = await response.json();\n        const failedCount = json.failed;\n        const workato: boolean = json.workato;\n\n        setModalsOpen((prev) => ({ ...prev, exportToFoundu: false }));\n        if (workato) {\n          setSnackbar({\n            message: 'Applications exported.',\n            state: 'success'\n          });\n        } else {\n          setSnackbar({\n            message: `Applications exported. ${failedCount} failed`,\n            state: failedCount === 0 ? 'success' : 'warning'\n          });\n        }\n      }\n    } catch (error) {\n      setSnackbar({\n        message: 'An error occurred while exporting to FoundU. Please try again.',\n        state: 'error'\n      });\n    } finally {\n      setIsSubmitting(false);\n    }\n  };\n\n  return (\n    <Modal\n      open={modalsOpen.exportToFoundu}\n      onClose={() => setModalsOpen((prev) => ({ ...prev, exportToFoundu: false }))}\n      aria-labelledby=\"export-foundu-modal\"\n    >\n      <Box sx={classes.actionsModalReducedPadding}>\n        <CloseIcon\n          onClick={() => setModalsOpen((prev) => ({ ...prev, exportToFoundu: false }))}\n          sx={classes.closeIcon}\n        />\n        <Box id=\"export-foundu-title\" sx={classes.actionModalHeader}>\n          Export to FoundU\n        </Box>\n        <Box\n          sx={classes.modalContent}\n          id=\"export-foundu-modal-content\"\n          aria-label=\"Export Foundu Modal Content\"\n        >\n          <Box sx={{ marginLeft: '15px' }}>\n            <h3>Candidates</h3>\n            <SelectedApplicants\n              globalSelected={globalSelected}\n              handleDeselectCandidate={handleDeselectCandidate}\n              closeModalCallback={() =>\n                setModalsOpen((prev) => ({ ...prev, exportToFoundu: false }))\n              }\n              filters={filters}\n            />\n          </Box>\n          <Box sx={{ marginLeft: '15px' }}>\n            <Checkbox\n              sx={classes.checkbox}\n              checked={sendEmail}\n              onChange={({ target }) => setSendEmail(target.checked)}\n            />\n            <span>Send welcome email</span>\n          </Box>\n        </Box>\n        <Box sx={classes.modalFooter}>\n          <Button\n            id=\"close-export-foundu-button\"\n            sx={classes.modalCancelButton}\n            onClick={() => setModalsOpen((prev) => ({ ...prev, exportToFoundu: false }))}\n          >\n            Cancel\n          </Button>\n          <Button\n            id=\"submit-export-foundu-button\"\n            type=\"submit\"\n            sx={{ ...classes.modalSendButton, width: '128px', height: '41px' }}\n            onClick={handleSubmit}\n          >\n            {isSubmitting ? <CircularProgress size={20} color=\"inherit\" /> : 'Export'}\n          </Button>\n        </Box>\n      </Box>\n    </Modal>\n  );\n}\n","import React, { useState } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport Button from '@mui/material/Button';\nimport CloseIcon from '@mui/icons-material/Close';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport SelectedApplicants from '../SelectedApplicants';\nimport { IExtendedActionModalProps } from '../../types';\nimport { classes } from '../styles';\n\nexport default function ExportPDF({\n  apiKey,\n  jobId,\n  setSnackbar,\n  modalsOpen,\n  setModalsOpen,\n  globalSelected,\n  handleDeselectCandidate,\n  filters\n}: IExtendedActionModalProps) {\n  const [isSending, setIsSending] = useState(false);\n\n  const handleSubmit = async () => {\n    setIsSending(true);\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/export_pdf`, {\n        method: 'POST',\n        headers: {\n          'Content-Type': 'application/json',\n          'x-api-authenticate': apiKey\n        },\n        body: JSON.stringify({\n          application_ids: globalSelected.map((app) => app.id)\n        })\n      });\n      if (response.ok) {\n        setModalsOpen((prev) => ({ ...prev, exportToPdf: false }));\n        setSnackbar({\n          message:\n            'PDFs are being generated. You will receive a download link via email when they are ready.',\n          state: 'success'\n        });\n      }\n    } catch (error) {\n      setSnackbar({\n        message: 'An error occurred while exporting to PDF. Please try again.',\n        state: 'error'\n      });\n    } finally {\n      setIsSending(false);\n    }\n  };\n\n  return (\n    <Modal\n      open={modalsOpen.exportToPdf}\n      onClose={() => setModalsOpen((prev) => ({ ...prev, exportToPdf: false }))}\n      aria-labelledby=\"export-pdf-modal\"\n    >\n      <Box sx={classes.actionsModalReducedPadding}>\n        <CloseIcon\n          onClick={() => setModalsOpen((prev) => ({ ...prev, exportToPdf: false }))}\n          sx={classes.closeIcon}\n        />\n        <Box id=\"export-pdf-title\" sx={classes.actionModalHeader}>\n          Export to PDF\n        </Box>\n        <Box\n          sx={classes.modalContent}\n          id=\"export-pdf-modal-content\"\n          aria-label=\"Export PDF Modal Content\"\n        >\n          <Box sx={{ marginLeft: '15px' }}>\n            <h3>Candidates</h3>\n            <SelectedApplicants\n              globalSelected={globalSelected}\n              handleDeselectCandidate={handleDeselectCandidate}\n              closeModalCallback={() => setModalsOpen((prev) => ({ ...prev, exportToPdf: false }))}\n              filters={filters}\n            />\n          </Box>\n        </Box>\n        <Box sx={classes.modalFooter}>\n          <Button\n            id=\"close-export-pdf-button\"\n            sx={classes.modalCancelButton}\n            onClick={() => setModalsOpen((prev) => ({ ...prev, exportToPdf: false }))}\n          >\n            Cancel\n          </Button>\n          <Button\n            id=\"submit-export-pdf-button\"\n            type=\"submit\"\n            sx={{ ...classes.modalSendButton, width: '128px', height: '41px' }}\n            onClick={handleSubmit}\n          >\n            {isSending ? <CircularProgress size={20} color=\"inherit\" /> : 'Export to PDF'}\n          </Button>\n        </Box>\n      </Box>\n    </Modal>\n  );\n}\n","import React, { useState } from 'react';\nimport { Box, Button, CircularProgress, Modal, Stack } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport SelectedApplicants from '../SelectedApplicants';\nimport { IExtendedActionModalProps } from '../../types';\nimport { classes } from '../styles';\nimport moment from 'moment';\nimport { SingleDatePicker } from '../../../Components/CustomUIElements/SingleDatePicker';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\n\ninterface IFailedExports {\n  candidate_name: string;\n  error: string;\n}\n\nexport default function ExportToOnboard({\n  apiKey,\n  jobId,\n  setSnackbar,\n  modalsOpen,\n  setModalsOpen,\n  globalSelected,\n  handleDeselectCandidate,\n  filters\n}: IExtendedActionModalProps) {\n  const [isSending, setIsSending] = useState(false);\n  const [failedExports, setFailedExports] = useState<IFailedExports[] | null>(null);\n  const [startDate, setStartDate] = useState<Date | null>(null);\n  const [dateError, setDateError] = useState<string>('');\n\n  const handleClose = () => {\n    setStartDate(null);\n    setDateError('');\n    setFailedExports(null);\n    setModalsOpen((prev) => ({ ...prev, exportToOnboard: false }));\n  };\n\n  const handleSubmit = async () => {\n    if (startDate) {\n      setIsSending(true);\n      try {\n        const response = await fetch(`/api/v4/jobs/${jobId}/scout_onboard_exports`, {\n          method: 'POST',\n          headers: {\n            'Content-Type': 'application/json',\n            'x-api-authenticate': apiKey\n          },\n          body: JSON.stringify({\n            start_date: moment(startDate).format('YYYY-MM-DD'),\n            application_ids: globalSelected.map((app) => app.id)\n          })\n        });\n        if (response.ok) {\n          const data = await response.json();\n          if (data.errors) {\n            setFailedExports(data.errors);\n            setSnackbar({\n              message: 'Some candidates failed to export',\n              state: 'warning'\n            });\n          } else {\n            handleClose();\n            setSnackbar({\n              message: 'Successfully exported candidate(s) to SCOUT Onboard',\n              state: 'success'\n            });\n          }\n        }\n      } catch (error) {\n        setSnackbar({\n          message: 'Error exporting candidate(s) to SCOUT Onboard',\n          state: 'error'\n        });\n      } finally {\n        setIsSending(false);\n      }\n    } else {\n      setDateError('Please select a start date');\n    }\n  };\n\n  return (\n    <Modal\n      open={modalsOpen.exportToOnboard}\n      onClose={handleClose}\n      aria-labelledby=\"export-onboard-modal\"\n    >\n      <Box sx={classes.actionsModalReducedPadding}>\n        <CloseIcon onClick={handleClose} sx={classes.closeIcon} />\n        <Box id=\"export-onboard-title\" sx={classes.actionModalHeader}>\n          Export candidates to Onboard\n        </Box>\n        <Box\n          sx={classes.modalContent}\n          id=\"export-onboard-modal-content\"\n          aria-label=\"Export Onboard Modal Content\"\n        >\n          <Box sx={{ marginLeft: '15px' }}>\n            <Stack sx={{ paddingBottom: 2 }}>\n              <SingleDatePicker\n                value={startDate}\n                label={`When will the candidate(s) start?`}\n                inputStyles={{ ...sharedClasses.datePicker, width: '275px' }}\n                onChange={(value) => {\n                  if (!value?.isValid()) {\n                    setDateError('Please input a valid date');\n                  } else {\n                    setDateError('');\n                    setStartDate(moment(value).toDate());\n                  }\n                }}\n                showTodayButton\n                error={dateError}\n                required\n              />\n            </Stack>\n            {!failedExports ? (\n              <>\n                <h3>Candidates</h3>\n                <SelectedApplicants\n                  globalSelected={globalSelected}\n                  handleDeselectCandidate={handleDeselectCandidate}\n                  closeModalCallback={handleClose}\n                  filters={filters}\n                />\n              </>\n            ) : (\n              <Box sx={classes.centerColumn}>\n                <h3>Some candidates failed to export:</h3>\n                <Box sx={{ ...classes.centerColumn, ...classes.exportErrors }}>\n                  {failedExports.map((failedExport) => (\n                    <Box key={failedExport.candidate_name} sx={classes.centerColumn}>\n                      <h4>{failedExport.candidate_name}</h4>\n                      <p>{failedExport.error}</p>\n                    </Box>\n                  ))}\n                </Box>\n              </Box>\n            )}\n          </Box>\n        </Box>\n        {!failedExports ? (\n          <Box sx={classes.modalFooter}>\n            <Button\n              id=\"close-export-onboard-button\"\n              sx={classes.modalCancelButton}\n              onClick={handleClose}\n            >\n              Cancel\n            </Button>\n            <Button\n              id=\"submit-export-onboard-button\"\n              type=\"submit\"\n              sx={{ ...classes.modalSendButton, width: '160px', height: '41px' }}\n              onClick={handleSubmit}\n            >\n              {isSending ? <CircularProgress size={20} color=\"inherit\" /> : 'Export to Onboard'}\n            </Button>\n          </Box>\n        ) : (\n          <Box sx={classes.modalFooter}>\n            <Button\n              id=\"close-export-onboard-button\"\n              sx={{ ...classes.modalSendButton, width: '91px', height: '41px' }}\n              onClick={handleClose}\n            >\n              Close\n            </Button>\n          </Box>\n        )}\n      </Box>\n    </Modal>\n  );\n}\n","import React, { useState, useContext } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport Button from '@mui/material/Button';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Checkbox from '@mui/material/Checkbox';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport MultiTagInput from '../../../Components/CustomUIElements/MultiTagInput';\nimport { MultilineFormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { IExternalEmailProps } from '../../types';\nimport { classes } from '../styles';\nimport { EntityContext } from '../../Job';\nimport SelectedApplicants from '../SelectedApplicants';\n\nexport default function ExternalEmail({\n  apiKey,\n  jobId,\n  setSnackbar,\n  modalsOpen,\n  setModalsOpen,\n  globalSelected,\n  handleDeselectCandidate,\n  filters\n}: IExternalEmailProps) {\n  const [isSubmitting, setIsSubmitting] = useState(false);\n  const [emails, setEmails] = useState<string[]>([]);\n  const [includeAttachments, setIncludeAttachments] = useState(false);\n  const [includeSmartForms, setIncludeSmartForms] = useState(false);\n  const [includeSummaries, setIncludeSummaries] = useState(false);\n  const [submissionError, setSubmissionError] = useState('');\n  const [notes, setNotes] = useState('');\n  const { ai_studio_summaries_enabled } = useContext(EntityContext);\n\n  const emailIsValid = (email: string) => {\n    const simpleEmailRex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n    if (simpleEmailRex.test(String(email).toLowerCase())) {\n      setSubmissionError('');\n      return true;\n    } else {\n      return false;\n    }\n  };\n\n  const handleSubmit = async () => {\n    if (emails.length === 0) {\n      setSubmissionError('Please enter at least one email address');\n      return;\n    }\n    setIsSubmitting(true);\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/applications/bulk_external_email`, {\n        method: 'POST',\n        headers: {\n          'Content-Type': 'application/json',\n          'X-api-authenticate': apiKey\n        },\n        body: JSON.stringify({\n          application_ids: globalSelected.map((app) => app.id),\n          external_view: {\n            emails: emails.join(','),\n            full_view: includeAttachments,\n            smart_forms: includeSmartForms,\n            include_summary: includeSummaries,\n            notes\n          }\n        })\n      });\n      if (response.status === 201) {\n        setSnackbar({\n          message: 'External emails sent successfully',\n          state: 'success'\n        });\n        handleClose();\n      } else {\n        setSnackbar({\n          message:\n            'Error sending emails, please try again or contact support if the issue persists',\n          state: 'error'\n        });\n      }\n    } catch (error) {\n      setSnackbar({\n        message: 'Error sending emails, please try again or contact support if the issue persists',\n        state: 'error'\n      });\n    } finally {\n      setIsSubmitting(false);\n    }\n  };\n\n  const handleClose = () => {\n    setEmails([]);\n    setIncludeAttachments(false);\n    setIncludeSmartForms(false);\n    setSubmissionError('');\n    setNotes('');\n    setModalsOpen({ ...modalsOpen, externalEmail: false });\n  };\n\n  return (\n    <Modal\n      open={modalsOpen.externalEmail}\n      onClose={handleClose}\n      aria-labelledby=\"external-email-modal\"\n    >\n      <Box sx={classes.actionsModalReducedPadding}>\n        <CloseIcon onClick={handleClose} sx={classes.closeIcon} />\n        <Box id=\"external-email-title\" sx={classes.actionModalHeader}>\n          External email\n        </Box>\n        <Box\n          sx={classes.modalContent}\n          id=\"external-email-modal-content\"\n          aria-label=\"External email modal content\"\n        >\n          <Box\n            role=\"form\"\n            id=\"external-email-form\"\n            aria-label=\"External email form\"\n            sx={{ overflowX: 'hidden' }}\n          >\n            <h3 style={{ marginLeft: '12px' }}>Recipient Details</h3>\n            <Box sx={{ ...classes.actionModalFormLine, marginBottom: '18px' }}>\n              <MultiTagInput\n                tags={emails}\n                setTags={setEmails}\n                validation={emailIsValid}\n                validationMessage=\"Must input valid email\"\n                label=\"Email address/s\"\n                width=\"600px\"\n                error={submissionError}\n                tagType=\"emails\"\n                helperText=\"To copy and paste bulk emails, email addresses must be separated with a comma\"\n              />\n            </Box>\n            <Box sx={{ ...classes.actionModalFormLine, marginLeft: '15px' }}>\n              <FormControlLabel\n                control={\n                  <Checkbox\n                    sx={classes.formCheckbox}\n                    onChange={(e) => setIncludeAttachments(e.target.checked)}\n                    value={includeAttachments}\n                  />\n                }\n                label=\"Include Attachments\"\n                sx={classes.checkboxLabel}\n              />\n              <FormControlLabel\n                control={\n                  <Checkbox\n                    sx={classes.formCheckbox}\n                    onChange={(e) => setIncludeSmartForms(e.target.checked)}\n                    value={includeSmartForms}\n                  />\n                }\n                label=\"Include Smart Forms\"\n                sx={classes.checkboxLabel}\n              />\n              {ai_studio_summaries_enabled && (\n                <FormControlLabel\n                  control={\n                    <Checkbox\n                      sx={classes.formCheckbox}\n                      onChange={(e) => setIncludeSummaries(e.target.checked)}\n                      value={includeSummaries}\n                    />\n                  }\n                  label=\"Include Summaries\"\n                  sx={classes.checkboxLabel}\n                />\n              )}\n            </Box>\n            <Box sx={classes.actionModalFormLine}>\n              <MultilineFormTextField\n                label=\"Notes\"\n                value={notes}\n                onChange={(e) => setNotes(e.target.value)}\n                styles={{ width: '740px' }}\n              />\n            </Box>\n            <Box sx={{ marginLeft: '15px' }}>\n              <h3>Candidates</h3>\n              <SelectedApplicants\n                globalSelected={globalSelected}\n                handleDeselectCandidate={handleDeselectCandidate}\n                closeModalCallback={() =>\n                  setModalsOpen((prev) => ({ ...prev, externalEmail: false }))\n                }\n                filters={filters}\n              />\n            </Box>\n          </Box>\n        </Box>\n        <Box sx={classes.modalFooter}>\n          <Button\n            id=\"close-external-email-button\"\n            sx={classes.modalCancelButton}\n            onClick={handleClose}\n          >\n            Cancel\n          </Button>\n          <Button\n            id=\"send-external-email-button\"\n            type=\"submit\"\n            sx={{ ...classes.modalSendButton, width: '71px', height: '41px' }}\n            onClick={handleSubmit}\n          >\n            {isSubmitting ? <CircularProgress size={20} color=\"inherit\" /> : 'Send'}\n          </Button>\n        </Box>\n      </Box>\n    </Modal>\n  );\n}\n","import {\n  Autocomplete,\n  Box,\n  Button,\n  Checkbox,\n  CircularProgress,\n  Collapse,\n  FormControlLabel,\n  Modal,\n  Switch,\n  Stack,\n  TextField\n} from '@mui/material';\nimport { Close as CloseIcon, NavigateBefore as NavigateBeforeIcon } from '@mui/icons-material';\nimport API from '../../API';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { useQuery, useMutation } from '@tanstack/react-query';\nimport { ControlledStaticDatePicker } from '../../../Components/CustomUIElements/SingleDatePicker';\nimport VirtualizeGrouped from '../../../Components/CustomUIElements/VirtualizedGroupedAutocomplete';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport HtmlEditor from '../../../Components/Utilities/HtmlEditor';\nimport { IError } from '../../../SmartForms/types';\nimport { IEvent, IAddToEventModalProps, ISMSTemplate } from '../../types';\nimport SelectedApplicants from '../SelectedApplicants';\nimport { classes } from '../styles';\nimport NotificationOptionSwitch from '../../../Application/Modals/Components/NotificationOptionsSwitch';\nimport SmsTemplateComponent from '../../../Components/CustomUIElements/SmsTemplateComponent';\nimport { usePlaceholders } from '../../../hooks';\nimport { useEmailTemplatesOptions } from '../../../hooks';\nimport { scrollToElement } from '../../../utils/scroll-to-element';\nimport formatToUserTimeZone from '../../../utils/formatToUserTimeZone';\n\ninterface IRecruiter {\n  id: number;\n  name: string;\n}\n\ninterface IEventType {\n  id: number;\n  name: string;\n}\n\nexport default function InviteToTimeslot({\n  apiKey,\n  jobId,\n  setSnackbar,\n  modalsOpen,\n  setModalsOpen,\n  globalSelected,\n  handleDeselectCandidate,\n  filters,\n  smsTemplatePermissions\n}: IAddToEventModalProps) {\n  const [isSending, setIsSending] = useState(false);\n  const [isLoading, setIsLoading] = useState({\n    templates: false,\n    recruiters: false,\n    eventTypes: false,\n    events: false\n  });\n  const [selectedTemplate, setSelectedTemplate] = useState<string | null>(null);\n  const [body, setBody] = useState('');\n  const [subject, setSubject] = useState('');\n  const [sendableBody, setSendableBody] = useState('');\n  const [selectedRecruiter, setSelectedRecruiter] = useState<IRecruiter | null>(null);\n  const [eventTypes, setEventTypes] = useState<IEventType[]>([]);\n  const [selectedEventType, setSelectedEventType] = useState<IEventType | null>(null);\n  const [excludeApplicants, setExcludeApplicants] = useState(false);\n  const [showTimeslots, setShowTimeslots] = useState(false);\n  const [events, setEvents] = useState<IEvent[]>([]);\n  const [selectedDay, setSelectedDay] = useState<Date | null>(null);\n  const [step, setStep] = useState<number>(1);\n  const [timeslotHovered, setTimeslotHovered] = useState<number | null>(null);\n  const recruiterRef = useRef<HTMLDivElement>(null);\n  const eventTypeRef = useRef<HTMLDivElement>(null);\n  const templateRef = useRef<HTMLDivElement>(null);\n  const bodyRef = useRef<HTMLDivElement>(null);\n  const [selectedMonth, setSelectedMonth] = useState<string>(\n    formatToUserTimeZone(new Date(), 'ymd')\n  );\n  const [notification, setNotification] = useState<string>('email');\n  const [smsMessage, setSmsMessage] = useState<string>('');\n  const [smsTemplate, setSmsTemplate] = useState<ISMSTemplate | null>(null);\n  const [errors, setErrors] = useState<Record<string, string>>({});\n\n  const buttonName = step === 1 ? 'Next' : 'Send';\n\n  const { data: emailTemplates, isLoading: loadingEmailTemplates } = useEmailTemplatesOptions({\n    apiKey,\n    onError: (message: string) => setSnackbar({ message, state: 'error' })\n  });\n\n  const { data: placeholders } = usePlaceholders({\n    type: 'interview',\n    apiKey,\n    onError: (message: string) => setSnackbar({ message, state: 'error' })\n  });\n\n  const { data: recruiters, isLoading: loadingRecruiters } = useQuery({\n    queryKey: ['recruiters'],\n    queryFn: async () => {\n      const { users } = await API.getRecruiters({ 'X-api-authenticate': apiKey });\n      return users;\n    },\n    onError: (error: IError) => setSnackbar({ message: error.errors.join(', '), state: 'error' })\n  });\n\n  const { mutate: sendSms, isLoading: sendingSms } = useMutation({\n    mutationFn: async () => {\n      if (!selectedEventType) return;\n\n      const res = await API.sendInviteSms(\n        jobId,\n        selectedEventType.id,\n        globalSelected.map((a) => a.id),\n        smsMessage,\n        smsTemplate?.id\n      );\n      if (res.success !== 0) {\n        setSnackbar({\n          message: 'Invitation to the event has been sent successfully',\n          state: 'success'\n        });\n        setModalsOpen((prev) => ({ ...prev, inviteToTimeslot: false }));\n      } else {\n        setSnackbar({ message: 'There is an error in sending SMS invitation', state: 'error' });\n      }\n      return res;\n    }\n  });\n\n  const getEventTypes = useCallback(async () => {\n    setIsLoading((prev) => ({ ...prev, eventTypes: true }));\n    try {\n      const response = await fetch(`/api/v4/calendar/event_types`, {\n        method: 'GET',\n        headers: {\n          'x-api-authenticate': apiKey\n        }\n      });\n      const data = await response.json();\n      setEventTypes(data.event_types);\n    } catch (error) {\n      setSnackbar({\n        message: 'Failed to load event types',\n        state: 'error'\n      });\n    } finally {\n      setIsLoading((prev) => ({ ...prev, eventTypes: false }));\n    }\n  }, [apiKey, setSnackbar]);\n\n  const handleSelectTemplate = async (template: string) => {\n    if (!template) {\n      setSelectedTemplate(null);\n      setBody('');\n      setSendableBody('');\n      return;\n    }\n    setSelectedTemplate(template);\n    const templateId = template.split(' -')[0];\n    try {\n      const response = await fetch(`/api/v4/calendar/email_templates/${templateId}`, {\n        method: 'GET',\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      });\n      const data = await response.json();\n      setSubject(data.subject);\n      setBody(data.body);\n      setSendableBody(data.body);\n      if (response.status !== 200) {\n        throw new Error(data);\n      }\n    } catch (error) {\n      setSnackbar({\n        message: 'Error loading template',\n        state: 'error'\n      });\n      setBody('');\n    }\n  };\n\n  const getTimeslots = useCallback(\n    async (eventId?: number) => {\n      setIsLoading((prev) => ({ ...prev, events: true }));\n      const queryString = `/api/v4/calendar/events?${\n        eventId ? 'event_type_id=' + eventId : ''\n      }&date=${selectedMonth}&override_limit=true`;\n      try {\n        const response = await fetch(queryString, {\n          method: 'GET',\n          headers: {\n            'x-api-authenticate': apiKey\n          }\n        });\n        const data = await response.json();\n        setEvents(data.events);\n      } catch (error) {\n        setSnackbar({\n          message: 'Failed to load timeslots',\n          state: 'error'\n        });\n      } finally {\n        setIsLoading((prev) => ({ ...prev, events: false }));\n      }\n    },\n    [apiKey, setSnackbar, selectedMonth]\n  );\n\n  const handleClose = () => setModalsOpen((prev) => ({ ...prev, inviteToTimeslot: false }));\n\n  const validateInput = () => {\n    const fieldsErrors: Record<string, string> = {};\n    if (step === 1) {\n      !selectedRecruiter && (fieldsErrors.recruiter = 'Must select a recruiter');\n      !selectedEventType && (fieldsErrors.eventType = 'Must select an event type');\n    } else {\n      if (notification === 'email') {\n        !selectedTemplate && (fieldsErrors.template = 'Must select a template');\n        !sendableBody.trim() && (fieldsErrors.body = 'Must add email body');\n      } else {\n        !smsMessage.trim() && (fieldsErrors.sms = 'Must add SMS content');\n      }\n    }\n    setErrors(fieldsErrors);\n    if (fieldsErrors.recruiter) {\n      scrollToElement(recruiterRef);\n    } else if (fieldsErrors.eventType) {\n      scrollToElement(eventTypeRef);\n    } else if (fieldsErrors.template) {\n      scrollToElement(templateRef);\n    } else if (fieldsErrors.body) {\n      scrollToElement(bodyRef);\n    }\n    return !Object.keys(fieldsErrors).length;\n  };\n\n  const handleSubmit = async () => {\n    if (step === 1) {\n      validateInput() && setStep(step + 1);\n    } else {\n      notification === 'email'\n        ? validateInput() && handleSubmitEmail()\n        : validateInput() && sendSms();\n    }\n  };\n\n  const handleSubmitEmail = async () => {\n    setIsSending(true);\n    const templateId = selectedTemplate?.split(' -')[0];\n    try {\n      const response = await fetch('/api/v4/calendar/invitations', {\n        method: 'POST',\n        headers: {\n          'Content-Type': 'application/json',\n          'x-api-authenticate': apiKey\n        },\n        body: JSON.stringify({\n          user_id: selectedRecruiter?.id,\n          event_type_id: selectedEventType?.id,\n          job_id: jobId,\n          invitation: {\n            application_ids: globalSelected.map((a) => a.id),\n            subject: subject,\n            body: sendableBody,\n            ...(selectedTemplate ? { email_template_id: templateId } : {}),\n            only_new: Number(excludeApplicants)\n          }\n        })\n      });\n      if (response.ok) {\n        setSnackbar({\n          message: 'Timeslot invitations sent successfully',\n          state: 'success'\n        });\n        handleClose();\n      } else {\n        setSnackbar({\n          message: 'Failed to send timeslot invitations, please try again',\n          state: 'error'\n        });\n      }\n    } catch (error) {\n      setSnackbar({\n        message: 'Failed to send timeslot invitations, please try again',\n        state: 'error'\n      });\n    } finally {\n      setIsSending(false);\n    }\n  };\n\n  const disableDate = (date: Date) => {\n    const datelist = events.map((e) => formatToUserTimeZone(e.begins_at, 'ymd'));\n    return !selectedEventType ? true : !datelist.includes(formatToUserTimeZone(date, 'ymd'));\n  };\n\n  const sameDay = (date: string) => {\n    return formatToUserTimeZone(date, 'ymd') === formatToUserTimeZone(selectedDay, 'ymd');\n  };\n\n  useEffect(() => {\n    if (modalsOpen.inviteToTimeslot) {\n      getTimeslots();\n      getEventTypes();\n    }\n  }, [getEventTypes, getTimeslots, modalsOpen.inviteToTimeslot, selectedMonth]);\n\n  return (\n    <Modal\n      open={modalsOpen.inviteToTimeslot}\n      onClose={handleClose}\n      disableEnforceFocus\n      aria-labelledby=\"invite-to-event-modal\"\n    >\n      <Box sx={classes.actionsModalReducedPadding}>\n        <CloseIcon onClick={handleClose} sx={classes.closeIcon} />\n        <Box id=\"invite-to-event-title\" sx={{ ...classes.actionModalHeader, paddingBottom: 3 }}>\n          Invite to Event\n        </Box>\n        <Box\n          sx={{ padding: '0px 8px', flexGrow: 1, overflow: 'auto' }}\n          id=\"invite-to-event-modal-content\"\n          aria-label=\"Invite to event modal content\"\n        >\n          <Box role=\"form\" id=\"invite-to-event-form\" aria-label=\"Invite to event form\">\n            {step === 1 && (\n              <Stack sx={{ rowGap: 2 }}>\n                <Autocomplete\n                  options={recruiters}\n                  loading={loadingRecruiters}\n                  getOptionLabel={(option) => option.name}\n                  onChange={(_event, value) => {\n                    value && setErrors({ ...errors, recruiter: '' });\n                    setSelectedRecruiter(value);\n                  }}\n                  value={selectedRecruiter}\n                  sx={{ ...sharedClasses.formAutocomplete, width: '287px', marginTop: 3 }}\n                  ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n                  renderInput={(params) => (\n                    <TextField\n                      {...params}\n                      label=\"Recruiter\"\n                      InputLabelProps={{ shrink: true }}\n                      required\n                      sx={sharedClasses.autoCompleteTextfield}\n                      helperText={errors.recruiter}\n                    />\n                  )}\n                  ref={recruiterRef}\n                />\n                <Autocomplete\n                  options={eventTypes}\n                  getOptionLabel={(option) => option.name}\n                  onChange={(_event, value) => {\n                    value && setErrors({ ...errors, eventType: '' });\n                    setSelectedEventType(value);\n                    getTimeslots(value?.id);\n                  }}\n                  value={selectedEventType}\n                  sx={{ ...sharedClasses.formAutocomplete, width: '287px', marginTop: 3 }}\n                  ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n                  renderInput={(params) => (\n                    <TextField\n                      {...params}\n                      label=\"Event type\"\n                      InputLabelProps={{ shrink: true }}\n                      required\n                      sx={sharedClasses.autoCompleteTextfield}\n                      helperText={errors.eventType}\n                    />\n                  )}\n                  ref={eventTypeRef}\n                />\n                <FormControlLabel\n                  sx={classes.formSwitchLabels}\n                  control={\n                    <Switch\n                      sx={{\n                        ...(showTimeslots ? classes.switchActive : classes.switch)\n                      }}\n                      checked={showTimeslots}\n                      onChange={() => {\n                        setSelectedDay(new Date());\n                        setShowTimeslots((prev) => !prev);\n                      }}\n                    />\n                  }\n                  label=\"Show timeslots\"\n                  labelPlacement=\"start\"\n                />\n                <Collapse in={showTimeslots}>\n                  <Box sx={classes.timeslotsContainer}>\n                    <Box sx={classes.calendar}>\n                      <ControlledStaticDatePicker\n                        displayStaticWrapperAs=\"desktop\"\n                        views={['day']}\n                        value={selectedDay}\n                        shouldDisableDate={disableDate}\n                        onChange={(value) => setSelectedDay(value)}\n                        onMonthChange={(value) =>\n                          setSelectedMonth(formatToUserTimeZone(value._d, 'ymd'))\n                        }\n                      />\n                    </Box>\n                    <Box sx={classes.dailyTimeslots}>\n                      <Box sx={classes.dailyTimeslotsHeader}>Timeslots</Box>\n                      <Box sx={classes.dailyTimeslotsContainer}>\n                        {events.length > 0 &&\n                          !isLoading.events &&\n                          events\n                            .filter((event) => sameDay(event.begins_at))\n                            .map((event) => (\n                              <Box\n                                key={event.id}\n                                sx={classes.timeslot}\n                                onMouseEnter={() => {\n                                  setTimeslotHovered(event.id);\n                                }}\n                                onMouseLeave={() => {\n                                  setTimeslotHovered(null);\n                                }}\n                              >\n                                <Box sx={classes.timeslotTime}>\n                                  {formatToUserTimeZone(event.begins_at, 'onlyTime')}\n                                </Box>\n                                <Box sx={{ ...classes.timeslotType, ...classes.ellipsis }}>\n                                  {event.subject}\n                                </Box>\n                                {timeslotHovered === event.id && (\n                                  <Box sx={classes.expandedTimeslot}>\n                                    <Box sx={classes.timeslotTime}>\n                                      {formatToUserTimeZone(event.begins_at, 'onlyTime')}\n                                    </Box>\n                                    <Box sx={classes.timeslotType}>{event.subject}</Box>\n                                    {event.note && (\n                                      <Box sx={classes.timeslotNote}>{event.note}</Box>\n                                    )}\n                                  </Box>\n                                )}\n                              </Box>\n                            ))}\n                        {!isLoading.events &&\n                          events.filter((event) => sameDay(event.begins_at)).length === 0 && (\n                            <Box sx={classes.noTimeslots}>No timeslots on selected date</Box>\n                          )}\n                        {isLoading.events && (\n                          <Box sx={classes.noTimeslots}>\n                            <CircularProgress size={32} />\n                          </Box>\n                        )}\n                      </Box>\n                    </Box>\n                  </Box>\n                </Collapse>\n                <Box sx={{ marginLeft: '8px' }}>\n                  <Stack sx={classes.modalCandidatesHeader}>Candidates</Stack>\n                  <SelectedApplicants\n                    globalSelected={globalSelected}\n                    handleDeselectCandidate={handleDeselectCandidate}\n                    closeModalCallback={handleClose}\n                    filters={filters}\n                  />\n                </Box>\n              </Stack>\n            )}\n            {step === 2 && (\n              <Box>\n                <NotificationOptionSwitch\n                  setNotification={setNotification}\n                  notification={notification}\n                />\n                {notification === 'email' ? (\n                  <Stack sx={{ paddingTop: 4, rowGap: 3 }}>\n                    <VirtualizeGrouped\n                      value={selectedTemplate}\n                      options={emailTemplates || []}\n                      onChange={(value) => {\n                        value ? handleSelectTemplate(value) : setBody('');\n                      }}\n                      styles={{ ...sharedClasses.formAutocomplete, width: '600px' }}\n                      label=\"Template\"\n                      loading={loadingEmailTemplates}\n                      loadingText=\"Loading template list...\"\n                      innerRef={templateRef}\n                      error={errors.template}\n                      errorStyles={{ ...sharedClasses.errorBox, top: '-24px', right: '0px' }}\n                    />\n                    <FormControlLabel\n                      control={\n                        <Checkbox\n                          sx={classes.formCheckbox}\n                          onChange={(e) => setExcludeApplicants(e.target.checked)}\n                          value={excludeApplicants}\n                        />\n                      }\n                      label=\"Exclude applicants who have received this email template\"\n                      sx={classes.checkboxLabel}\n                    />\n                    <Box ref={bodyRef}>\n                      <Stack sx={{ ...classes.formLabel, flexDirection: 'row', columnGap: '2px' }}>\n                        Body <Stack sx={{ color: '#E37D7A' }}>*</Stack>\n                      </Stack>\n                      <HtmlEditor body={body} onChange={setSendableBody} />\n                      <Stack sx={sharedClasses.errorBox}>{errors.body}</Stack>\n                      <Box sx={classes.placeholderText}>\n                        Available placeholders are: {placeholders}\n                      </Box>\n                    </Box>\n                  </Stack>\n                ) : (\n                  <SmsTemplateComponent\n                    smsTemplatePermissions={smsTemplatePermissions}\n                    setSnackbar={setSnackbar}\n                    smsMessage={smsMessage}\n                    setSmsMessage={setSmsMessage}\n                    smsTemplate={smsTemplate}\n                    setSmsTemplate={setSmsTemplate}\n                    smsMessageError={errors.sms}\n                  />\n                )}\n              </Box>\n            )}\n          </Box>\n        </Box>\n        <Box sx={{ ...classes.modalFooter, columnGap: 1, paddingTop: 2 }}>\n          <Button\n            id=\"close-invite-to-event-button\"\n            sx={classes.modalCancelButton}\n            onClick={handleClose}\n          >\n            Cancel\n          </Button>\n          {step !== 1 && (\n            <Button\n              onClick={() => setStep(1)}\n              sx={{ ...sharedClasses.genericButtonSecondary, minWidth: 'unset', padding: 1 }}\n            >\n              <NavigateBeforeIcon />\n            </Button>\n          )}\n          <Button\n            id=\"send-invite-to-event-button\"\n            type=\"submit\"\n            sx={{ ...classes.modalSendButton, width: '71px', height: '41px' }}\n            onClick={handleSubmit}\n          >\n            {isSending || sendingSms ? <CircularProgress size={20} color=\"inherit\" /> : buttonName}\n          </Button>\n        </Box>\n      </Box>\n    </Modal>\n  );\n}\n","import React, { useState, useEffect, useCallback, useRef } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport Button from '@mui/material/Button';\nimport CloseIcon from '@mui/icons-material/Close';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport SelectedApplicants from '../SelectedApplicants';\nimport { Virtualize } from '../../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport { IExtendedActionModalProps, IGetApplications } from '../../types';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\n\ninterface IProps extends IExtendedActionModalProps {\n  getApplications: IGetApplications;\n  deselectAll: () => void;\n}\n\nexport default function MoveApplications({\n  apiKey,\n  jobId,\n  setSnackbar,\n  modalsOpen,\n  setModalsOpen,\n  globalSelected,\n  handleDeselectCandidate,\n  getApplications,\n  deselectAll,\n  filters\n}: IProps) {\n  const [isSending, setIsSending] = useState(false);\n  const [loadingJobs, setIsLoadingJobs] = useState(false);\n  const [jobList, setJobList] = useState<string[]>([]);\n  const [selectedJob, setSelectedJob] = useState<string | null>(null);\n  const [noJobSelected, setNoJobSelected] = useState(false);\n\n  const jobListRef = useRef<HTMLDivElement>(null);\n\n  const getJobList = useCallback(async () => {\n    setIsLoadingJobs(true);\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/bulk_move_applications`, {\n        method: 'GET',\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      });\n      const data = await response.json();\n      setJobList(\n        data?.jobs\n          .filter((job: { reference: string; title: string }) => job.reference)\n          .map((job: { reference: string; title: string }) => `${job.reference} - ${job.title}`)\n      );\n    } catch (error) {\n      setSnackbar({\n        message: 'Error fetching jobs',\n        state: 'error'\n      });\n    } finally {\n      setIsLoadingJobs(false);\n    }\n  }, [apiKey, jobId, setSnackbar]);\n\n  const handleSubmit = async () => {\n    if (!selectedJob) {\n      setNoJobSelected(true);\n      jobListRef?.current?.scrollIntoView({ behavior: 'smooth' });\n      return;\n    }\n    setIsSending(true);\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/bulk_move_applications`, {\n        method: 'POST',\n        headers: {\n          'Content-Type': 'application/json',\n          'X-api-authenticate': apiKey\n        },\n        body: JSON.stringify({\n          target_job: selectedJob.split(' -')[0],\n          application_ids: globalSelected.map((application) => application.id)\n        })\n      });\n      if (response.status === 200) {\n        setSnackbar({\n          message: `Successfully queued moving ${globalSelected.length} applications to ${\n            selectedJob.split('- ')[1]\n          }`,\n          state: 'success'\n        });\n        deselectAll();\n        getApplications(null, null, null, null, null);\n        handleClose();\n      }\n    } catch (error) {\n      setSnackbar({\n        message: 'Error moving applications',\n        state: 'error'\n      });\n    } finally {\n      setIsSending(false);\n    }\n  };\n\n  const handleClose = () => {\n    setModalsOpen((prev) => ({ ...prev, move: false }));\n    setSelectedJob(null);\n    setNoJobSelected(false);\n  };\n\n  useEffect(() => {\n    if (modalsOpen.move && !jobList.length) {\n      getJobList();\n    }\n  }, [modalsOpen.move, getJobList, jobList.length]);\n\n  return (\n    <Modal open={modalsOpen.move} onClose={handleClose} aria-labelledby=\"move-applications-modal\">\n      <Box sx={classes.actionsModalReducedPadding}>\n        <CloseIcon onClick={handleClose} sx={classes.closeIcon} />\n        <Box id=\"move-applications-title\" sx={classes.actionModalHeader}>\n          Move Applications\n        </Box>\n        <Box\n          sx={classes.modalContent}\n          id=\"move-applications-modal-content\"\n          aria-label=\"Move Applications Modal Content\"\n        >\n          <Box role=\"form\" id=\"move-applications-form\" aria-label=\"Move Applications form\">\n            <Box sx={classes.actionModalFormLine} ref={jobListRef}>\n              <Virtualize\n                value={selectedJob}\n                passOptions={jobList}\n                setValue={setSelectedJob}\n                passedStyles={{\n                  ...sharedClasses.formAutocomplete,\n                  width: '600px',\n                  marginTop: '20px'\n                }}\n                label=\"Select job to move applications to\"\n                loading={loadingJobs}\n                loadingText=\"Loading job list...\"\n              />\n              {noJobSelected && <Box sx={classes.formError}>Job must be selected</Box>}\n            </Box>\n          </Box>\n          <Box sx={{ marginLeft: '15px' }}>\n            <h3>Candidates</h3>\n            <SelectedApplicants\n              globalSelected={globalSelected}\n              handleDeselectCandidate={handleDeselectCandidate}\n              closeModalCallback={handleClose}\n              filters={filters}\n            />\n          </Box>\n        </Box>\n        <Box sx={classes.modalFooter}>\n          <Button\n            id=\"close-move-application-button\"\n            sx={classes.modalCancelButton}\n            onClick={handleClose}\n          >\n            Cancel\n          </Button>\n          <Button\n            id=\"submit-move-application-button\"\n            type=\"submit\"\n            sx={{ ...classes.modalSendButton, width: '71px', height: '41px' }}\n            onClick={handleSubmit}\n          >\n            {isSending ? <CircularProgress size={20} color=\"inherit\" /> : 'Move'}\n          </Button>\n        </Box>\n      </Box>\n    </Modal>\n  );\n}\n","import React, { useState, useRef, useEffect, useContext } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport Button from '@mui/material/Button';\nimport TextField from '@mui/material/TextField';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Checkbox from '@mui/material/Checkbox';\nimport { DebouncedFormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport FormSelectField from '../../../Components/CustomUIElements/FormSelectField';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { INewApplicationProps } from '../../types';\nimport { applicantDetailsDefault } from '../config';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport SingleAttachmentSelector from '../../../Components/Utilities/SingleAttachmentSelector';\nimport { FileWithPath } from 'react-dropzone';\nimport { serialize } from 'object-to-formdata';\nimport QuestionFieldGenerator, {\n  IApplicantQuestion,\n  IFieldChoice\n} from '../../../Components/Utilities/QuestionFieldGenerator';\nimport GenericDialog from '../../../Components/Modals/GenericDialog';\nimport { EntityContext } from '../../Job';\nimport { emailIsValid } from '../../../Components/Utilities/emailIsValid';\nimport { ICountries, IStates } from '../../../Components/sharedTypes';\nimport { parseCountryData } from '../../../Components/Utilities/countryParser';\n\nconst createApplicantQuestionsObject = (questions: IApplicantQuestion[]) => {\n  const newObject = {};\n  questions.forEach((question: IApplicantQuestion) => {\n    if (question.type === 'RankField') {\n      newObject[question.id] = {\n        ...question,\n        data: {}\n      };\n      question.field_choices.forEach((choice: IFieldChoice, index: number) => {\n        newObject[question.id]['data'][choice.id] = index + 1;\n      });\n    } else if (\n      question.type === 'AvailabilityField' ||\n      question.type === 'CsvDataLookupField' ||\n      question.type === 'JobReferenceLookupField'\n    ) {\n      newObject[question.id] = {\n        ...question,\n        data: 'validation bypass'\n      };\n    } else {\n      newObject[question.id] = {\n        ...question,\n        data: ''\n      };\n    }\n  });\n  return newObject;\n};\n\nconst createQuestionErrorsObject = (questions: IApplicantQuestion[]) => {\n  const errors: Record<number, string> = {};\n  questions.forEach((question: IApplicantQuestion) => {\n    errors[question.id] = '';\n  });\n  return errors;\n};\n\nconst BASE_URL = window.location.origin;\nexport const genderOptions = [\n  { id: 'm', label: 'Male' },\n  { id: 'f', label: 'Female' },\n  { id: 'Non-binary / Non-conforming', label: 'Non-binary / Non-conforming' },\n  { id: 'Prefer not to say', label: 'Prefer not to say' }\n];\nexport default function NewApplication({\n  apiKey,\n  modalsOpen,\n  setModalsOpen,\n  getApplications,\n  jobId,\n  jobQuestions,\n  jobAttachments,\n  jobSources,\n  jobHasPrivacyAcknowledgement,\n  setSnackbar,\n  setJob\n}: INewApplicationProps) {\n  const { apply_with_mobile, apply_with_phone } = useContext(EntityContext);\n  const [isSubmitting, setIsSubmitting] = useState(false);\n  const [confirmCancelIsOpen, setConfirmCancelIsOpen] = useState(false);\n  const [countries, setCountries] = useState<ICountries[]>([]);\n  const [regionValue, setRegionValue] = useState<IStates | null>(null);\n  const [countryValue, setCountryValue] = useState<ICountries | null>(null);\n  const [applicantDetails, setApplicantDetails] = useState({\n    ...applicantDetailsDefault,\n    phone: { ...applicantDetailsDefault.phone, required: apply_with_phone },\n    phone2: { ...applicantDetailsDefault.phone2, required: apply_with_mobile }\n  });\n  const [applicantQuestions, setApplicantQuestions] = useState(() =>\n    createApplicantQuestionsObject(jobQuestions || [])\n  );\n  const [questionErrors, setQuestionErrors] = useState(() =>\n    createQuestionErrorsObject(jobQuestions || [])\n  );\n  const [fileList, setFileList] = useState<Record<string, FileWithPath>>({});\n  const [uploadErrors, setUploadErrors] = useState<Record<string, string>>({});\n  const [sourceValue, setSourceValue] = useState<string | number>('');\n  const [sourceError, setSourceError] = useState('');\n  const [privacyAcknowledged, setPrivacyAcknowledged] = useState(false);\n  const [privacyError, setPrivacyError] = useState('');\n  const [sendNotification, setSendNotification] = useState<boolean>(false);\n  const questionsRef = useRef<Array<HTMLDivElement | null>>([]);\n  const uploadsRef = useRef<Array<HTMLDivElement | null>>([]);\n  const containsDuplicates = (array: string[]) => {\n    return new Set(array).size !== array.length;\n  };\n\n  const fieldRefs = {\n    firstName: useRef<HTMLInputElement>(null),\n    lastName: useRef<HTMLInputElement>(null),\n    email: useRef<HTMLInputElement>(null),\n    phone: useRef<HTMLInputElement>(null),\n    phone2: useRef<HTMLInputElement>(null),\n    addressFirstLine: useRef<HTMLInputElement>(null),\n    addressSecondLine: useRef<HTMLInputElement>(null),\n    suburb: useRef<HTMLInputElement>(null),\n    postcode: useRef<HTMLInputElement>(null),\n    country: useRef<HTMLInputElement>(null),\n    region: useRef<HTMLInputElement>(null),\n    employeeId: useRef<HTMLInputElement>(null)\n  };\n\n  const sourceRef = useRef<HTMLInputElement>(null);\n  const privacyRef = useRef<HTMLInputElement>(null);\n\n  const handleClearForm = () => {\n    setApplicantDetails(applicantDetailsDefault);\n    setApplicantQuestions(createApplicantQuestionsObject(jobQuestions || []));\n    setQuestionErrors(createQuestionErrorsObject(jobQuestions || []));\n    setFileList({});\n    setCountryValue(null);\n    setRegionValue(null);\n    setModalsOpen((prev) => ({ ...prev, newApplication: false }));\n    setPrivacyError('');\n  };\n\n  useEffect(() => {\n    if (!modalsOpen.newApplication || countries.length > 0) return;\n    let isMounted = true;\n    const handleGetCountries = async () => {\n      try {\n        const response = await fetch(`${BASE_URL}/api/system/v1/countries_states.json`, {\n          method: 'GET'\n        });\n        const data = await response.json();\n        const countriesWithlabels = parseCountryData(data);\n        if (isMounted) {\n          setCountries(countriesWithlabels);\n        }\n      } catch (error) {\n        console.error(error);\n      }\n    };\n    handleGetCountries();\n    return () => {\n      isMounted = false;\n    };\n  }, [modalsOpen.newApplication, countries]);\n\n  const handleSubmitApplication = async () => {\n    if (!handleValidateFields()) return;\n    setIsSubmitting(true);\n    const answers_attributes = Object.entries(applicantQuestions)\n      .filter(([_, value]) => value.data !== '')\n      .map(([id, value]) => {\n        if (value.type === 'RadioButtonField' || value.type === 'SelectField') {\n          return {\n            field_id: id,\n            field_choice_id: value.data\n          };\n        } else if (value.type === 'CheckBoxField') {\n          return {\n            field_id: id,\n            field_choice_ids: Object.entries(value.data)\n              .filter(([_, value]) => value)\n              .map(([id]) => id)\n          };\n        } else {\n          return {\n            field_id: id,\n            data: value.data\n          };\n        }\n      });\n    const candidate_attributes = {\n      firstname: applicantDetails.firstName.value,\n      lastname: applicantDetails.lastName.value,\n      email: applicantDetails.email.value,\n      phone1: applicantDetails.phone.value,\n      phone2: applicantDetails.phone2.value,\n      address_attributes: {\n        street1: applicantDetails.addressFirstLine.value,\n        ...(applicantDetails.addressSecondLine.value !== '' && {\n          street2: applicantDetails.addressSecondLine.value\n        }),\n        suburb: applicantDetails.suburb.value,\n        postcode: applicantDetails.postcode.value,\n        country_id: applicantDetails.country.value,\n        state_id: applicantDetails.region.value,\n        ...(applicantDetails.employeeId.value !== '' && {\n          employee_id: applicantDetails.employeeId.value\n        })\n      },\n      gender: applicantDetails.gender.value.id\n    };\n    const applicationData = {\n      application: {\n        candidate_attributes,\n        answers_attributes,\n        ...(jobHasPrivacyAcknowledgement && { privacy_acknowledgement: privacyAcknowledged }),\n        ...(sourceValue && { source_id: sourceValue }),\n        asset: fileList,\n        send_notification: sendNotification\n      }\n    };\n    const formData = serialize(applicationData);\n    try {\n      const response = await fetch(`${BASE_URL}/api/v4/jobs/${jobId}/applications`, {\n        method: 'POST',\n        headers: {\n          'X-api-authenticate': apiKey\n        },\n        body: formData\n      });\n      if (response.status === 201) {\n        setModalsOpen({ ...modalsOpen, newApplication: false });\n        handleClearForm();\n        getApplications(null, null, null, null, null);\n        setJob((prev) => ({ ...prev, applications_count: prev.applications_count + 1 }));\n        setSnackbar({\n          message: 'Application created successfully',\n          state: 'success'\n        });\n      } else {\n        throw new Error('Error creating application');\n      }\n    } catch (error) {\n      setSnackbar({\n        message: 'Something went wrong. Please try again.',\n        state: 'error'\n      });\n    } finally {\n      setIsSubmitting(false);\n    }\n  };\n\n  const handleValidateFields = () => {\n    let isValid = true;\n    let detailsError: keyof typeof fieldRefs | undefined = undefined;\n    let questionError: number | undefined = undefined;\n    let uploadError: number | undefined = undefined;\n    let sourceInvalid = false;\n\n    // Validate applicant detial fields\n    Object.entries(applicantDetails).forEach((field) => {\n      let tempErrorMessage = '';\n      if (field[1].required && !field[1].value) {\n        if (detailsError === undefined) {\n          detailsError = field[0] as keyof typeof fieldRefs;\n        }\n        isValid = false;\n        tempErrorMessage = 'This field is required';\n      } else if (field[0] === 'email' && !emailIsValid(field[1].value)) {\n        if (detailsError === undefined) {\n          detailsError = field[0];\n        }\n        isValid = false;\n        tempErrorMessage = 'Please input valid email';\n      } else if (field[0] === 'postcode' && field[1]?.value?.length > 10) {\n        if (detailsError === undefined) {\n          detailsError = field[0];\n        }\n        isValid = false;\n        tempErrorMessage = 'Postcode must be less than 10 characters';\n      }\n      setApplicantDetails((prev) => ({\n        ...prev,\n        [field[0]]: { ...prev[field[0] as keyof typeof prev], error: tempErrorMessage }\n      }));\n    });\n\n    // Validate applicant question fields\n    jobQuestions &&\n      jobQuestions.forEach((question: IApplicantQuestion, index: number) => {\n        let tempErrorMessage = '';\n        if (question.type === 'CheckBoxField') {\n          const isChecked = Object.values(applicantQuestions[question.id].data).some(\n            (value) => value === true\n          );\n          if (question.required && !isChecked) {\n            tempErrorMessage = 'Must select at least one option';\n            if (questionError === undefined) {\n              questionError = index;\n            }\n            isValid = false;\n          }\n        } else if (question.type === 'RankField') {\n          const duplicates = containsDuplicates(\n            Object.values(applicantQuestions[question.id].data)\n          );\n          if (question.required && duplicates) {\n            tempErrorMessage = 'Ranked choices must be unique';\n            if (questionError === undefined) {\n              questionError = index;\n            }\n            isValid = false;\n          }\n        } else if (question.required && !applicantQuestions[question.id].data) {\n          tempErrorMessage =\n            question.type !== 'RadioButtonField'\n              ? 'This field is required'\n              : 'Must select an option';\n          if (questionError === undefined) {\n            questionError = index;\n          }\n          isValid = false;\n        }\n        setQuestionErrors((prev) => ({\n          ...prev,\n          [question.id]: tempErrorMessage\n        }));\n      });\n\n    // Validate applicant attachment fields\n    jobAttachments &&\n      jobAttachments.forEach((attachment, index) => {\n        if (attachment.required && !fileList[attachment.value]) {\n          setUploadErrors((prev) => ({\n            ...prev,\n            [attachment.value]: 'Upload required'\n          }));\n          if (uploadError === undefined) {\n            uploadError = index;\n          }\n          isValid = false;\n        }\n      });\n\n    // Validate applicant source field\n    if (jobSources && jobSources.length > 0 && !sourceValue) {\n      sourceInvalid = true;\n      isValid = false;\n      setSourceError('Source is required');\n    }\n\n    if (jobHasPrivacyAcknowledgement && !privacyAcknowledged) {\n      setPrivacyError('Please acknowledge privacy statement');\n      isValid = false;\n    }\n\n    // Scroll to first invalid field\n    if (detailsError !== undefined) {\n      fieldRefs[detailsError]?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n    } else if (questionError !== undefined) {\n      questionsRef?.current[questionError]?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n    } else if (jobHasPrivacyAcknowledgement && !privacyAcknowledged) {\n      privacyRef?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n    } else if (uploadError !== undefined) {\n      uploadsRef?.current[uploadError]?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n    } else if (sourceInvalid) {\n      sourceRef?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n    }\n    return isValid;\n  };\n\n  return (\n    <Modal\n      open={modalsOpen.newApplication}\n      onClose={() => setConfirmCancelIsOpen(true)}\n      aria-labelledby=\"new-application-modal\"\n    >\n      <Box sx={classes.actionsModal}>\n        <CloseIcon onClick={() => setConfirmCancelIsOpen(true)} sx={classes.closeIcon} />\n        <Box id=\"new-application-modal-title\" sx={classes.modalHeader}>\n          Lodge new application\n        </Box>\n        <Box\n          sx={classes.modalContent}\n          id=\"new-application-modal-content\"\n          aria-label=\"New application modal content\"\n        >\n          <Box role=\"form\" id=\"new-application-form\" aria-label=\"New application form\">\n            <Box sx={classes.modalFormLine}>\n              <DebouncedFormTextField\n                onDebouncedChange={(value: string) =>\n                  setApplicantDetails((prev) => ({\n                    ...prev,\n                    firstName: {\n                      ...prev.firstName,\n                      value,\n                      error:\n                        value || !applicantDetails.firstName.required\n                          ? ''\n                          : 'This field is required'\n                    }\n                  }))\n                }\n                id=\"first-name\"\n                label=\"First Name\"\n                required={applicantDetails.firstName.required}\n                error={applicantDetails.firstName.error}\n                innerRef={fieldRefs.firstName}\n                styles={{ width: '290px' }}\n              />\n              <DebouncedFormTextField\n                onDebouncedChange={(value: string) =>\n                  setApplicantDetails((prev) => ({\n                    ...prev,\n                    lastName: {\n                      ...prev.lastName,\n                      value,\n                      error:\n                        value || !applicantDetails.lastName.required ? '' : 'This field is required'\n                    }\n                  }))\n                }\n                id=\"last-name\"\n                label=\"Last Name\"\n                required={applicantDetails.lastName.required}\n                error={applicantDetails.lastName.error}\n                innerRef={fieldRefs.lastName}\n                styles={{ width: '290px' }}\n              />\n            </Box>\n            <Box sx={classes.modalFormLine}>\n              <DebouncedFormTextField\n                onDebouncedChange={(value: string) => {\n                  setApplicantDetails((prev) => ({\n                    ...prev,\n                    email: {\n                      ...prev.email,\n                      value,\n                      error: value && !emailIsValid(value) ? 'Please input valid email' : ''\n                    }\n                  }));\n                }}\n                id=\"email\"\n                label=\"Email\"\n                required={applicantDetails.email.required}\n                error={applicantDetails.email.error}\n                innerRef={fieldRefs.email}\n                styles={{ width: '290px' }}\n              />\n              <DebouncedFormTextField\n                onDebouncedChange={(value: string) =>\n                  setApplicantDetails((prev) => ({\n                    ...prev,\n                    phone: {\n                      ...prev.phone,\n                      value,\n                      error:\n                        value || applicantDetails.phone.required ? '' : 'This field is required'\n                    }\n                  }))\n                }\n                id=\"phone\"\n                label=\"Phone\"\n                required={applicantDetails.phone.required}\n                error={applicantDetails.phone.error}\n                innerRef={fieldRefs.phone}\n                styles={{ width: '290px' }}\n              />\n              <DebouncedFormTextField\n                onDebouncedChange={(value: string) =>\n                  setApplicantDetails((prev) => ({\n                    ...prev,\n                    phone2: {\n                      ...prev.phone2,\n                      value,\n                      error:\n                        value || applicantDetails.phone2.required ? '' : 'This field is required'\n                    }\n                  }))\n                }\n                id=\"phone2\"\n                label=\"Mobile\"\n                required={applicantDetails.phone2.required}\n                error={applicantDetails.phone2.error}\n                innerRef={fieldRefs.phone2}\n                styles={{ width: '290px' }}\n              />\n            </Box>\n            <Box sx={classes.fullWidthFieldContainer}>\n              <DebouncedFormTextField\n                onDebouncedChange={(value: string) =>\n                  setApplicantDetails((prev) => ({\n                    ...prev,\n                    addressFirstLine: {\n                      ...prev.addressFirstLine,\n                      value,\n                      error:\n                        value || !applicantDetails.addressFirstLine.required\n                          ? ''\n                          : 'This field is required'\n                    }\n                  }))\n                }\n                id=\"street-address\"\n                label=\"Street Address\"\n                required={applicantDetails.addressFirstLine.required}\n                error={applicantDetails.addressFirstLine.error}\n                innerRef={fieldRefs.addressFirstLine}\n                styles={classes.fullWidthField}\n              />\n              <DebouncedFormTextField\n                onDebouncedChange={(value: string) =>\n                  setApplicantDetails((prev) => ({\n                    ...prev,\n                    addressSecondLine: {\n                      ...prev.addressSecondLine,\n                      value,\n                      error:\n                        value || !applicantDetails.addressSecondLine.required\n                          ? ''\n                          : 'This field is required'\n                    }\n                  }))\n                }\n                id=\"street-address-2\"\n                label=\"Street Address Cont'd\"\n                error={applicantDetails.addressSecondLine.error}\n                innerRef={fieldRefs.addressSecondLine}\n                styles={classes.fullWidthField}\n              />\n            </Box>\n            <Box sx={classes.modalFormLine}>\n              <DebouncedFormTextField\n                onDebouncedChange={(value: string) =>\n                  setApplicantDetails((prev) => ({\n                    ...prev,\n                    suburb: {\n                      ...prev.suburb,\n                      value,\n                      error:\n                        value || !applicantDetails.suburb.required ? '' : 'This field is required'\n                    }\n                  }))\n                }\n                id=\"suburb\"\n                label=\"City, Town or Suburb\"\n                required={applicantDetails.suburb.required}\n                error={applicantDetails.suburb.error}\n                innerRef={fieldRefs.suburb}\n                styles={{ width: '290px' }}\n              />\n              <DebouncedFormTextField\n                onDebouncedChange={(value: string) =>\n                  setApplicantDetails((prev) => ({\n                    ...prev,\n                    postcode: {\n                      ...prev.postcode,\n                      value,\n                      error:\n                        value || !applicantDetails.postcode.required ? '' : 'This field is required'\n                    }\n                  }))\n                }\n                id=\"postcode\"\n                label=\"Postcode or zipcode\"\n                required={applicantDetails.postcode.required}\n                error={applicantDetails.postcode.error}\n                innerRef={fieldRefs.postcode}\n                styles={{ width: '290px' }}\n              />\n            </Box>\n            <Box sx={classes.modalFormLine}>\n              <Box sx={{ position: 'relative', marginTop: '26px' }}>\n                <Autocomplete\n                  disablePortal\n                  ref={fieldRefs.country}\n                  id=\"country\"\n                  options={countries}\n                  value={countryValue}\n                  loading={countries.length < 1}\n                  sx={{ ...sharedClasses.formAutocomplete, width: '287px' }}\n                  ListboxProps={{\n                    style: {\n                      fontFamily: 'Source Sans Pro, sans-serif',\n                      color: '#333333',\n                      maxHeight: '200px'\n                    }\n                  }}\n                  renderInput={(params) => (\n                    <TextField\n                      {...params}\n                      label=\"Country\"\n                      InputLabelProps={{ shrink: true }}\n                      required={applicantDetails.country.required}\n                    />\n                  )}\n                  onChange={(event, value) => {\n                    setCountryValue(value);\n                    setRegionValue(null);\n                    setApplicantDetails((prev) => ({\n                      ...prev,\n                      country: {\n                        ...prev.country,\n                        value: value ? value.id : null,\n                        error:\n                          value || !applicantDetails.country.required\n                            ? ''\n                            : 'This field is required'\n                      },\n                      region: { ...prev.region, value: null }\n                    }));\n                  }}\n                />\n                {applicantDetails.country.error && (\n                  <Box sx={sharedClasses.errorBox}>{applicantDetails.country.error}</Box>\n                )}\n              </Box>\n              <Box sx={{ position: 'relative', marginTop: '26px' }}>\n                <Autocomplete\n                  disablePortal\n                  ref={fieldRefs.region}\n                  id=\"state-region-province\"\n                  options={countryValue?.states || []}\n                  disabled={!countryValue}\n                  value={regionValue}\n                  onChange={(event, value) => {\n                    setRegionValue(value ? value : null);\n                    setApplicantDetails((prev) => ({\n                      ...prev,\n                      region: {\n                        ...prev.region,\n                        value: value ? value.id : null,\n                        error:\n                          value || !applicantDetails.region.required ? '' : 'This field is required'\n                      }\n                    }));\n                  }}\n                  sx={{\n                    ...(!countryValue\n                      ? sharedClasses.formAutocompleteDisabled\n                      : sharedClasses.formAutocomplete),\n                    width: '287px'\n                  }}\n                  ListboxProps={{\n                    style: {\n                      fontFamily: 'Source Sans Pro, sans-serif',\n                      color: '#333333',\n                      maxHeight: '200px'\n                    }\n                  }}\n                  renderInput={(params) => (\n                    <TextField\n                      {...params}\n                      label=\"State, Region or Province\"\n                      InputLabelProps={{ shrink: true }}\n                      required={applicantDetails.region.required}\n                    />\n                  )}\n                />\n                {applicantDetails.region.error && (\n                  <Box sx={sharedClasses.errorBox}>{applicantDetails.region.error}</Box>\n                )}\n              </Box>\n            </Box>\n            <Box sx={classes.modalFormLine}>\n              <DebouncedFormTextField\n                onDebouncedChange={(value: string) =>\n                  setApplicantDetails((prev) => ({\n                    ...prev,\n                    employeeId: {\n                      ...prev.employeeId,\n                      error:\n                        value || !applicantDetails.employeeId.required\n                          ? ''\n                          : 'This field is required',\n                      value\n                    }\n                  }))\n                }\n                id=\"employee-id\"\n                label=\"Employee ID (optional)\"\n                error={applicantDetails.employeeId.error}\n                innerRef={fieldRefs.employeeId}\n                styles={{ width: '290px' }}\n              />\n              <Autocomplete\n                disablePortal\n                id=\"gender\"\n                options={genderOptions}\n                getOptionLabel={(option) => option.label}\n                value={applicantDetails.gender.value}\n                sx={{ ...sharedClasses.formAutocomplete, width: '287px', marginTop: '25px' }}\n                ListboxProps={{\n                  style: {\n                    fontFamily: 'Source Sans Pro, sans-serif',\n                    color: '#333333',\n                    maxHeight: '200px'\n                  }\n                }}\n                renderInput={(params) => (\n                  <TextField\n                    {...params}\n                    label=\"Gender (Optional)\"\n                    InputLabelProps={{ shrink: true }}\n                    required={applicantDetails.gender.required}\n                  />\n                )}\n                onChange={(event, value) => {\n                  setApplicantDetails((prev) => ({\n                    ...prev,\n                    gender: {\n                      ...prev.gender,\n                      value\n                    }\n                  }));\n                }}\n              />\n            </Box>\n            {jobQuestions &&\n              jobQuestions.map((question, index) => (\n                <Box key={question.id} sx={{ ...classes.modalFormLine, position: 'relative' }}>\n                  <QuestionFieldGenerator\n                    question={question}\n                    questionRef={(el) => (questionsRef.current[index] = el)}\n                    questionError={questionErrors[question.id]}\n                    onChangeCallback={(id, value) => {\n                      setApplicantQuestions((prev) => ({\n                        ...prev,\n                        [id]: {\n                          ...prev[id],\n                          data: value\n                        }\n                      }));\n                      setQuestionErrors((prev) => ({\n                        ...prev,\n                        [id]: value || !question.required ? '' : 'This field is required'\n                      }));\n                    }}\n                  />\n                </Box>\n              ))}\n            {jobHasPrivacyAcknowledgement && (\n              <Box sx={{ padding: '6px 0px 12px 12px', position: 'relative' }} ref={privacyRef}>\n                <FormControlLabel\n                  control={\n                    <Checkbox\n                      sx={classes.formCheckbox}\n                      onChange={(e) => setPrivacyAcknowledged(e.target.checked)}\n                      value={privacyAcknowledged}\n                      required\n                    />\n                  }\n                  label={\n                    <>\n                      Yes I agree to the privacy statement <span>*</span>\n                    </>\n                  }\n                  sx={classes.checkboxLabel}\n                />\n                {privacyError && (\n                  <Box sx={{ ...sharedClasses.errorBox, bottom: '-6px', left: '13px' }}>\n                    {privacyError}\n                  </Box>\n                )}\n              </Box>\n            )}\n          </Box>\n          {jobAttachments && (\n            <Box id=\"applicant-uploads\" sx={classes.uploadSection}>\n              <h3>Candidate Uploads</h3>\n              <Box sx={classes.uploadSectionContent}>\n                {jobAttachments.map((upload, index) => (\n                  <Box\n                    key={index}\n                    sx={classes.uploadContainer}\n                    ref={(el) => (uploadsRef.current[index] = el)}\n                  >\n                    <Box sx={classes.uploadLabel}>\n                      {upload.label}\n                      {upload.required && <span>*</span>}\n                    </Box>\n                    <SingleAttachmentSelector\n                      setFile={(file) => {\n                        setFileList((previous) => ({ ...previous, [upload.value]: file }));\n                        setUploadErrors((previous) => ({\n                          ...previous,\n                          [upload.value]: ''\n                        }));\n                      }}\n                      file={fileList[upload.value]}\n                      maxSize={50000000}\n                      performUpload={false}\n                    />\n                    {uploadErrors[upload.value] && (\n                      <Box sx={classes.uploadError}>{`${upload.label} upload is required`}</Box>\n                    )}\n                  </Box>\n                ))}\n              </Box>\n            </Box>\n          )}\n          {jobSources && jobSources.length > 0 && (\n            <Box sx={classes.sourceContainer}>\n              <h3>Where did the applicant find this job?</h3>\n              <Box sx={classes.modalFormLine}>\n                <FormSelectField\n                  options={jobSources.map((source) => ({ label: source.label, value: source.id }))}\n                  defaultValue=\"\"\n                  onChange={(value) => setSourceValue(value)}\n                  label=\"Source\"\n                  styles={{ width: '290px' }}\n                  innerRef={sourceRef}\n                  error={sourceError}\n                  required={true}\n                />\n              </Box>\n            </Box>\n          )}\n        </Box>\n        <Box sx={classes.modalFooter}>\n          <FormControlLabel\n            control={\n              <Checkbox\n                sx={sharedClasses.formCheckbox}\n                checked={sendNotification}\n                onClick={() => setSendNotification(!sendNotification)}\n                disableRipple\n              />\n            }\n            label=\"Send Notification\"\n            sx={{ ...sharedClasses.checkboxLabel, flexGrow: 1 }}\n          />\n          <Button\n            id=\"cancel-application-button\"\n            sx={classes.modalCancelButton}\n            onClick={() => setConfirmCancelIsOpen(true)}\n          >\n            Cancel\n          </Button>\n          <Button\n            id=\"submit-new-application-button\"\n            type=\"submit\"\n            sx={classes.modalConfirmationButton}\n            onClick={handleSubmitApplication}\n          >\n            {isSubmitting ? (\n              <CircularProgress size={20} color=\"inherit\" />\n            ) : (\n              'Lodge new application'\n            )}\n          </Button>\n        </Box>\n        <GenericDialog\n          isDialogOpen={confirmCancelIsOpen}\n          setDialogOpen={setConfirmCancelIsOpen}\n          title=\"Close without submitting?\"\n          description=\"Are you sure you want to cancel your application? You will lose any progress you have made.\"\n          buttonCallback={() => {\n            setConfirmCancelIsOpen(false);\n            handleClearForm();\n          }}\n          callbackLoading={false}\n          buttonText=\"Close without saving\"\n          url=\"\"\n        />\n      </Box>\n    </Modal>\n  );\n}\n","import React, { useState, useCallback, useEffect, useRef } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport Collapse from '@mui/material/Collapse';\nimport Button from '@mui/material/Button';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport TextField from '@mui/material/TextField';\nimport IconButton from '@mui/material/IconButton';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport CloseIcon from '@mui/icons-material/Close';\nimport GenericDialog from '../../../Components/Modals/GenericDialog';\nimport { FormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport { MultilineFormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport SelectedApplicants from '../SelectedApplicants';\nimport { ISMSModalProps } from '../../types';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\n\nexport interface ISmsTemplate {\n  id: number;\n  title: string;\n  body: string;\n}\n\nexport default function SMSCandidates({\n  apiKey,\n  jobId,\n  setSnackbar,\n  modalsOpen,\n  setModalsOpen,\n  globalSelected,\n  handleDeselectCandidate,\n  hasTemplatePermissions,\n  filters\n}: ISMSModalProps) {\n  const [isSubmitting, setIsSubmitting] = useState(false);\n  const [templatesLoading, setTemplatesLoading] = useState(false);\n  const [savingTemplate, setSavingTemplate] = useState(false);\n  const [messageContent, setMessageContent] = useState('');\n  const [contentError, setContentError] = useState('');\n  const [selectedTemplate, setSelectedTemplate] = useState<ISmsTemplate | null>(null);\n  const [templates, setTemplates] = useState<ISmsTemplate[]>([]);\n  const [templateError, setTemplateError] = useState('');\n  const [templateName, setTemplateName] = useState('');\n  const [isDialogOpen, setIsDialogOpen] = useState(false);\n  const [isDeleting, setIsDeleting] = useState(false);\n\n  const contentRef = useRef<HTMLDivElement>(null);\n\n  const handleClose = () => {\n    setMessageContent('');\n    setContentError('');\n    setSelectedTemplate(null);\n    setTemplateName('');\n    setTemplateError('');\n    setModalsOpen((prev) => ({ ...prev, sms: false }));\n  };\n\n  const isSMSContentValid = useCallback(() => {\n    if (!messageContent) {\n      setContentError('Please enter a message');\n      contentRef.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n      return false;\n    } else if (messageContent.length > 160) {\n      setContentError('Message cannot be more than 160 characters');\n      contentRef.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n      return false;\n    }\n    return true;\n  }, [messageContent]);\n\n  const getTemplates = useCallback(async () => {\n    setTemplatesLoading(true);\n    try {\n      const response = await fetch(`/api/v4/sms_templates`, {\n        method: 'GET',\n        headers: {\n          'x-api-authenticate': apiKey\n        }\n      });\n      const data = await response.json();\n      setTemplates(data?.sms_templates);\n    } catch (error) {\n      setSnackbar({\n        message: 'Error fetching templates',\n        state: 'error'\n      });\n    } finally {\n      setTemplatesLoading(false);\n    }\n  }, [apiKey, setSnackbar]);\n\n  const deleteSmsTemplate = async (url: string, smsTemplateId: number) => {\n    setIsDeleting(true);\n    try {\n      const response = await fetch(`${url}${smsTemplateId}`, {\n        method: 'DELETE',\n        headers: {\n          'x-api-authenticate': apiKey\n        }\n      });\n\n      if (response.status === 204) {\n        var newTemplates = templates?.filter((template: ISmsTemplate) => template.id !== smsTemplateId);\n        setTemplates(newTemplates);\n        setTemplateError('');\n        setMessageContent('');\n        setSnackbar({\n          message: 'Template deleted',\n          state: 'success'\n        });\n      }\n      else {\n        setSnackbar({\n          message: 'Error deleting template',\n          state: 'error'\n        });\n      }\n    } catch (error) {\n      setSnackbar({\n        message: 'Error deleting template2',\n        state: 'error'\n      });\n    } finally {\n      setIsDeleting(false);\n      setIsDialogOpen(false);\n    }\n  };\n\n  const saveTemplate = useCallback(async () => {\n    if (!isSMSContentValid()) return;\n    if (templates?.find((template) => template.title === templateName)) {\n      setTemplateError('Template name already exists');\n      return;\n    }\n    setSavingTemplate(true);\n    setTemplatesLoading(true);\n    try {\n      const response = await fetch(`/api/v4/sms_templates`, {\n        method: 'POST',\n        headers: {\n          'Content-Type': 'application/json',\n          'x-api-authenticate': apiKey\n        },\n        body: JSON.stringify({\n          sms_template: {\n            title: templateName,\n            body: messageContent\n          }\n        })\n      });\n      const data = await response.json();\n      if (response.ok) {\n        setTemplates((prev) => [...prev, data]);\n        setSelectedTemplate(data);\n        setTemplateError('');\n        setSnackbar({\n          message: 'Template saved',\n          state: 'success'\n        });\n      } else {\n        setSnackbar({\n          message: data?.errors ? data.errors : 'Error saving template',\n          state: 'error'\n        });\n      }\n    } catch (error) {\n      setSnackbar({\n        message: 'Error saving template',\n        state: 'error'\n      });\n    } finally {\n      setSavingTemplate(false);\n      setTemplatesLoading(false);\n    }\n  }, [apiKey, messageContent, setSnackbar, templateName, templates]);\n\n  const editTemplate = useCallback(async () => {\n    if (!isSMSContentValid()) return;\n    setSavingTemplate(true);\n    setTemplatesLoading(true);\n    try {\n      const response = await fetch(`/api/v4/sms_templates/${selectedTemplate?.id}`, {\n        method: 'PUT',\n        headers: {\n          'Content-Type': 'application/json',\n          'x-api-authenticate': apiKey\n        },\n        body: JSON.stringify({\n          sms_template: {\n            title: templateName,\n            body: messageContent\n          }\n        })\n      });\n      const data = await response.json();\n      if (response.ok) {\n        var newTemplates = templates?.map(template => template.id === selectedTemplate?.id ? data : template)\n        setTemplates(newTemplates);\n        setSelectedTemplate(data);\n        setTemplateError('');\n        setSnackbar({\n          message: 'Template edited',\n          state: 'success'\n        });\n      } else {\n        setSnackbar({\n          message: data?.errors ? data.errors : 'Error editing template',\n          state: 'error'\n        });\n      }\n    } catch (error) {\n      setSnackbar({\n        message: 'Error editing template',\n        state: 'error'\n      });\n    } finally {\n      setSavingTemplate(false);\n      setTemplatesLoading(false);\n    }\n  }, [apiKey, messageContent, setSnackbar, templateName, templates]);\n\n  const [dialogProps, setDialogProps] = useState({\n    url: '',\n    title: 'Permanently delete SMS Template?',\n    description: '',\n    buttonText: 'Delete',\n    callbackLoading: false,\n    dialogId: 0,\n    buttonCallback: deleteSmsTemplate\n  });\n\n  useEffect(() => {\n    if (modalsOpen.sms) {\n      getTemplates();\n    }\n  }, [modalsOpen.sms, getTemplates]);\n\n  useEffect(() => {\n    if (selectedTemplate) {\n        setTemplateName(selectedTemplate.title);\n    }\n}, [selectedTemplate]);\n\n  const handleSubmit = async () => {\n    if (!isSMSContentValid()) return;\n    setIsSubmitting(true);\n    try {\n      const response = await fetch(`/api/v4/jobs/${jobId}/applications/bulk_sms`, {\n        method: 'POST',\n        headers: {\n          'Content-Type': 'application/json',\n          'X-api-authenticate': apiKey\n        },\n        body: JSON.stringify({\n          applications_ids: globalSelected.map((app) => app.id),\n          content: messageContent,\n          sms_template_id: selectedTemplate?.id\n        })\n      });\n      if (response.status === 201) {\n        setSnackbar({\n          message: 'Candidate SMS messages sent successfully',\n          state: 'success'\n        });\n        handleClose();\n      } else {\n        setSnackbar({\n          message:\n            'Error sending messages, please try again or contact support if the issue persists',\n          state: 'error'\n        });\n      }\n    } catch (error) {\n      setSnackbar({\n        message:\n          'Error sending messages, please try again or contact support if the issue persists',\n        state: 'error'\n      });\n    } finally {\n      setIsSubmitting(false);\n    }\n  };\n\n  return (\n    <Modal open={modalsOpen.sms} onClose={handleClose} aria-labelledby=\"sms-candidates-modal\">\n      <Box sx={classes.actionsModalReducedPadding}>\n        <CloseIcon onClick={handleClose} sx={classes.closeIcon} />\n        <Box id=\"sms-candidates-title\" sx={classes.actionModalHeader}>\n          SMS Candidates\n        </Box>\n        <Box\n          sx={{ ...classes.modalContent, marginTop: '16px' }}\n          id=\"sms-candidates-modal-content\"\n          aria-label=\"SMS Candidates Modal Content\"\n        >\n          <Box\n            sx={{ overflowX: 'hidden' }}\n            role=\"form\"\n            id=\"sms-candidates-form\"\n            aria-label=\"SMS Candidates form\"\n          >\n            <h3 style={{ marginLeft: '14px' }}>Message</h3>\n            <Box sx={classes.actionModalFormLine}>\n              <Autocomplete\n                key={selectedTemplate?.title}\n                disablePortal\n                id=\"sms-template-select\"\n                options={templates?.map((option) => option.title)}\n                value={selectedTemplate?.title}\n                sx={{ ...sharedClasses.formAutocomplete, width: '287px', marginTop: '20px' }}\n                loading={templatesLoading}\n                loadingText=\"Loading SMS templates...\"\n                ListboxProps={{\n                  style: {\n                    fontFamily: 'Source Sans Pro, sans-serif',\n                    color: '#333333',\n                    maxHeight: '200px'\n                  }\n                }}\n                renderInput={(params) => (\n                  <TextField {...params} label=\"Template\" InputLabelProps={{ shrink: true }} />\n                )}\n                onChange={(event, value) => {\n                  if (!value) {\n                    setSelectedTemplate(null);\n                    setTemplateName('');\n                    setMessageContent('');\n                  }\n                  const selectedTemplate = templates?.find((template) => template.title === value);\n                  if (selectedTemplate) {\n                    setSelectedTemplate(selectedTemplate);\n                    setMessageContent(selectedTemplate.body);\n                  }\n                }}\n                renderOption={(props, option) => (\n                  <Box component=\"li\" {...props} display=\"flex\">\n                    {option}\n                    <Box flexGrow={1} />\n                    <IconButton\n                      edge=\"end\"\n                      aria-label=\"delete\"\n                      onClick={(event) => {\n                        event.stopPropagation();\n                        const selectedTemplate = templates?.find((template: ISmsTemplate) => template.title === option);\n\n                        selectedTemplate && setDialogProps((prev) => ({\n                          ...prev,\n                          url: '/api/v4/sms_templates/',\n                          description: `Are you sure you want to delete '${selectedTemplate.title}'? This action cannot be undone.`,\n                          dialogId: selectedTemplate.id,\n                          buttonCallback: deleteSmsTemplate\n                        }));\n                        setIsDialogOpen(true);\n                      }}\n                    >\n                      <DeleteIcon />\n                    </IconButton>\n                  </Box>\n                )}\n              />\n            </Box>\n            <Box sx={classes.actionModalFormLine} ref={contentRef}>\n              <MultilineFormTextField\n                label=\"Content\"\n                value={messageContent}\n                onChange={(e) => {\n                  setMessageContent(e.target.value);\n                  if (contentError) setContentError('');\n                }}\n                styles={{ width: '740px' }}\n                error={contentError}\n              />\n              <Box\n                sx={{\n                  ...classes.characterCount,\n                  ...(messageContent.length > 160 && { color: theme.palette.error.main })\n                }}\n              >\n                {messageContent.length} / 160\n              </Box>\n            </Box>\n            <Collapse\n              in={\n                !hasTemplatePermissions &&\n                !!messageContent &&\n                messageContent !== selectedTemplate?.body\n              }\n            >\n              <Box sx={classes.saveSMSTemplateContainer}>\n                <FormTextField\n                  id=\"new-sms-template-title\"\n                  label=\"Template title\"\n                  value={templateName}\n                  styles={{ width: '290px' }}\n                  onChange={(e) => {\n                    setTemplateName(e.target.value);\n                    if (templateError) setTemplateError('');\n                  }}\n                />\n                <Box sx={{ transform: 'translateY(-1.5px)' }}>\n                  {!!messageContent && !selectedTemplate && (\n                    <Button\n                      id=\"save-sms-template\"\n                      type=\"submit\"\n                      sx={classes.saveSMSTemplateButton}\n                      onClick={saveTemplate}\n                    >\n                      {savingTemplate ? (\n                        <CircularProgress size={20} color=\"inherit\" />\n                      ) : (\n                        'Save template'\n                      )}\n                    </Button>\n                  )}\n                  {selectedTemplate && messageContent !== selectedTemplate?.body && (\n                    <Button\n                      id=\"edit-sms-template\"\n                      type=\"submit\"\n                      sx={classes.saveSMSTemplateButton}\n                      onClick={editTemplate}\n                    >\n                      {savingTemplate ? (\n                        <CircularProgress size={20} color=\"inherit\" />\n                      ) : (\n                        'Edit template'\n                      )}\n                    </Button>\n                  )}\n                </Box>\n                {templateError && <Box sx={classes.saveSMSTemplateError}>{templateError}</Box>}\n              </Box>\n            </Collapse>\n            <Box sx={{ marginLeft: '15px' }}>\n              <h3>Candidates</h3>\n              <SelectedApplicants\n                globalSelected={globalSelected}\n                handleDeselectCandidate={handleDeselectCandidate}\n                closeModalCallback={handleClose}\n                filters={filters}\n              />\n            </Box>\n          </Box>\n        </Box>\n        <Box sx={classes.modalFooter}>\n          <Button\n            id=\"close-sms-candidate-button\"\n            sx={classes.modalCancelButton}\n            onClick={handleClose}\n          >\n            Cancel\n          </Button>\n          <Button\n            id=\"send-sms-candidate-button\"\n            type=\"submit\"\n            sx={{ ...classes.modalSendButton, width: '71px', height: '41px' }}\n            onClick={handleSubmit}\n          >\n            {isSubmitting ? <CircularProgress size={20} color=\"inherit\" /> : 'Send'}\n          </Button>\n        </Box>\n        <GenericDialog\n        url={dialogProps.url}\n        title={dialogProps.title}\n        description={dialogProps.description}\n        buttonText={dialogProps.buttonText}\n        buttonCallback={dialogProps.buttonCallback}\n        callbackLoading={isDeleting}\n        isDialogOpen={isDialogOpen}\n        setDialogOpen={setIsDialogOpen}\n        dialogId={dialogProps.dialogId}\n      />\n      </Box>\n    </Modal>\n  );\n}\n","import React, { useState } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport Checkbox from '@mui/material/Checkbox';\nimport Button from '@mui/material/Button';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport CloseIcon from '@mui/icons-material/Close';\nimport IconButton from '@mui/material/IconButton';\nimport IosShareIcon from '@mui/icons-material/IosShare';\nimport { classes } from '../styles';\nimport { StyledSnackbarProps } from '../../../Components/CustomUIElements/StyledSnackbar';\nimport Tooltip from '@mui/material/Tooltip';\nimport { IFilterDropdownProps, IDropdownProps } from '../../types';\n\nconst BASE_URL = window.location.origin;\n\nexport default function TempCSVExport({\n  apiKey,\n  jobId,\n  setSnackbarState,\n  filters,\n  sortBy,\n  sortOrder,\n  sortableColumns\n}: {\n  apiKey: string;\n  jobId: number;\n  setSnackbarState: StyledSnackbarProps['setSnackBarState'];\n  filters: IFilterDropdownProps['filters'];\n  sortBy: string;\n  sortOrder: string;\n  sortableColumns: IDropdownProps['sortableColumns'];\n}) {\n  const [modalOpen, setModalOpen] = useState(false);\n  const [isLoading, setIsLoading] = useState(false);\n\n  const activeColumns = {};\n  sortableColumns.forEach((column) => {\n    activeColumns[column.id] = column.enabled;\n  });\n\n  const handleSortTranslate = (sort: string) => {\n    switch (sort) {\n      case 'candidate':\n        return 'candidate_name';\n      case 'gender':\n        return 'candidate_gender';\n      case 'email':\n        return 'candidate_email';\n      case 'suburb':\n        return 'candidate_suburb';\n      case 'state':\n        return 'candidate_state';\n      case 'country':\n        return 'candidate_state';\n      case 'status':\n        return 'status_name';\n      case 'date':\n        return 'created_at';\n      default:\n        return sort;\n    }\n  };\n\n  const checkboxStyle = {\n    color: '#DDDDDD',\n    marginLeft: '10px',\n    '&.Mui-checked': {\n      color: '#5BC4BF'\n    },\n    '& .MuiSvgIcon-root': {\n      fontSize: '28px'\n    }\n  };\n\n  const handleModalOpen = () => {\n    setModalOpen(true);\n  };\n\n  const handleExportCSV = async () => {\n    setIsLoading(true);\n    let body;\n\n    body = JSON.stringify({\n      applications_report: {\n        with_answers: true,\n        sort: handleSortTranslate(sortBy),\n        sort_order: sortOrder,\n        filter: {\n          min_rating: filters?.rating[0],\n          max_rating: filters?.rating[1],\n          exact_states: filters?.status.map((s) => s.id)\n        },\n        activeColumns: activeColumns,\n        exclude_unrated: filters?.excludeApplicantsWithoutRating\n      }\n    });\n\n    try {\n      const response = await fetch(\n        `${BASE_URL}/api/v4/jobs/${jobId}/applications/applications_report`,\n        {\n          method: 'POST',\n          headers: {\n            'Content-Type': 'application/json',\n            'X-api-authenticate': apiKey\n          },\n          body: body\n        }\n      );\n      if (response.status === 202) {\n        setSnackbarState({\n          message:\n            'Your CSV is being generated. Once complete, a download link will be sent to your email.',\n          state: 'success'\n        });\n      } else {\n        setSnackbarState({\n          message: 'There was an error generating your CSV. Please try again.',\n          state: 'error'\n        });\n      }\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsLoading(false);\n      setModalOpen(false);\n    }\n  };\n\n  return (\n    <Tooltip title=\"Export CSV\" placement=\"top\" arrow>\n      <Box>\n        <Box>\n          <IconButton\n            id=\"export-applications-csv-button\"\n            sx={classes.iconButton}\n            onClick={handleModalOpen}\n          >\n            <IosShareIcon />\n          </IconButton>\n        </Box>\n        <Modal\n          open={modalOpen}\n          onClose={() => setModalOpen(false)}\n          aria-labelledby=\"export-applications-csv-modal\"\n        >\n          <Box sx={classes.csvExportModal}>\n            <CloseIcon onClick={() => setModalOpen(false)} sx={classes.closeIcon} />\n            <Button\n              id=\"export-applications-csv-button\"\n              sx={classes.csvExportButton}\n              onClick={handleExportCSV}\n            >\n              {isLoading ? (\n                <CircularProgress sx={{ color: '#FFFFFF', fontSize: '20px' }} />\n              ) : (\n                'Export CSV'\n              )}\n            </Button>\n          </Box>\n        </Modal>\n      </Box>\n    </Tooltip>\n  );\n}\n","import CloseIcon from '@mui/icons-material/Close';\nimport DoneIcon from '@mui/icons-material/Done';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Popover from '@mui/material/Popover';\nimport TextField from '@mui/material/TextField';\nimport { useMutation } from '@tanstack/react-query';\nimport React, { useEffect, useState } from 'react';\nimport API from '../API';\nimport { INoteProps, NoteState } from '../types';\nimport { classes } from './styles';\nimport { IError } from '../../SmartForms/types';\nimport { emojiInString } from '../../utils/emoji-checker';\nimport { NOTES_ERROR_MESSAGE } from '../../constants';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { Stack } from '@mui/material';\n\nconst defaultErrors = {\n  note: '',\n  subject: ''\n};\n\nconst NotesPopover = ({\n  anchorEl,\n  applicationId,\n  handleCloseNote,\n  jobId,\n  onSuccess,\n  setApplications,\n  setSnackbarState,\n  noteState,\n  newNoteOnApplicationEnabled\n}: INoteProps) => {\n  const [note, setNote] = useState('');\n  const [noteSubject, setNoteSubject] = useState('');\n  const isNotePad = noteState === NoteState.NOTEPAD;\n\n  const [notesError, setNotesError] = useState<{ note: string; subject: string }>(\n    Object.create(defaultErrors)\n  );\n\n  const validateInputs = () => {\n    setNotesError(defaultErrors);\n    if (emojiInString(note) || emojiInString(noteSubject)) {\n      setNotesError((prev) => ({\n        ...prev,\n        ...(emojiInString(note) && { note: NOTES_ERROR_MESSAGE }),\n        ...(emojiInString(noteSubject) && { subject: NOTES_ERROR_MESSAGE })\n      }));\n      return true;\n    }\n    return false;\n  };\n\n  const { mutate: saveNote, isLoading: savingNote } = useMutation({\n    mutationFn: async (): Promise<void> => {\n      if (!noteState) return;\n      switch (noteState) {\n        case NoteState.PERMANENT_RECORD:\n          await API.addRecord(jobId, applicationId, { body: note, subject: noteSubject })\n          .then((newNote) => {\n            if (newNote) {\n              setApplications((prevApplications) => {\n                const newApplications = [...prevApplications];\n                const applicationIndex = newApplications.findIndex(\n                  (application) => application.id === applicationId\n                );\n                newApplications[applicationIndex].notes = [\n                  newNote,\n                  ...newApplications[applicationIndex].notes\n                ];\n                return newApplications;\n              });\n            }\n          });\n          break;\n        case NoteState.NOTEPAD:\n          await API.updateNote(jobId, applicationId, { suitability_comment: note }).then(() => {\n            setApplications((prevApplications) => {\n              const newApplications = [...prevApplications];\n              const applicationIndex = newApplications.findIndex(\n                (application) => application.id === applicationId\n              );\n              newApplications[applicationIndex].suitability_comment = note;\n              return newApplications;\n            });\n          });\n      }\n    },\n    onError: (error: IError) => {\n      const errorMessage = error.errors ? error.errors.join('. ') : error;\n\n      if (!isNotePad) {\n        setNote('');\n        setNoteSubject('');\n      }\n      setSnackbarState({\n        message: `Error ${isNotePad ? 'adding' : 'saving'} note, ${errorMessage}`,\n        state: 'error'\n      });\n    },\n    onSuccess: () => {\n      setNotesError(defaultErrors);\n      setNote('');\n      handleCloseNote();\n      onSuccess();\n      setSnackbarState({\n        message: `Note was successfully ${isNotePad ? 'added' : 'saved'}`,\n        state: 'success'\n      });\n    }\n  });\n\n  const closeNoteHandler = () => {\n    setNotesError(defaultErrors);\n    handleCloseNote();\n  };\n\n  useEffect(() => {\n    if (!anchorEl) return;\n    setNote('');\n  }, [anchorEl]);\n\n  return (\n    <Popover\n      id={anchorEl ? 'edit-note-popover' : undefined}\n      open={Boolean(anchorEl)}\n      anchorEl={anchorEl}\n      onClose={closeNoteHandler}\n      anchorOrigin={{\n        vertical: 'bottom',\n        horizontal: 'right'\n      }}\n      transformOrigin={{\n        vertical: 'top',\n        horizontal: 'right'\n      }}\n    >\n      <Stack sx={classes.notesContainer} spacing={2}>\n        <Box sx={classes.notesTitle}>\n          {newNoteOnApplicationEnabled && !isNotePad ? 'Add permanent record' : 'Add note'}\n        </Box>\n        {!isNotePad && (\n          <>\n            <TextField\n              id=\"note-input\"\n              sx={classes.noteInput}\n              label=\"Subject\"\n              fullWidth\n              variant=\"outlined\"\n              onChange={(e) => setNoteSubject(e.target.value)}\n              InputLabelProps={{\n                shrink: true\n              }}\n              required\n            />\n            {!!notesError.subject && <Box sx={sharedClasses.errorText}>{notesError.subject}</Box>}\n          </>\n        )}\n        <TextField\n          id=\"note-input\"\n          sx={classes.noteInput}\n          label=\"Note\"\n          multiline\n          fullWidth\n          maxRows={4}\n          variant=\"outlined\"\n          onChange={(e) => setNote(e.target.value)}\n          required\n          InputLabelProps={{\n            shrink: true\n          }}\n        />\n        {!!notesError.note && <Box sx={sharedClasses.errorText}>{notesError.note}</Box>}\n        <Box id=\"notes-button-container\" sx={classes.notesButtonContainer}>\n          <Button sx={classes.notesCancelButton} endIcon={<CloseIcon />} onClick={closeNoteHandler}>\n            Cancel\n          </Button>\n          <Button\n            sx={classes.notesEditSaveButton}\n            endIcon={savingNote ? <CircularProgress size={16} /> : <DoneIcon />}\n            onClick={() => {\n              if (validateInputs()) return;\n              saveNote();\n            }}\n            disabled={!note || savingNote}\n          >\n            {`${isNotePad ? 'Save' : 'Add'}`}\n          </Button>\n        </Box>\n      </Stack>\n    </Popover>\n  );\n};\nexport default NotesPopover;\n","import React, { useState } from 'react';\nimport Box from '@mui/material/Box';\nimport FormControl from '@mui/material/FormControl';\nimport OutlinedInput from '@mui/material/OutlinedInput';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport SearchIcon from '@mui/icons-material/Search';\nimport { IGetApplications } from '../types';\nimport { classes } from './styles';\nimport { useDebouncedCallback } from 'use-debounce';\n\nexport default function Search({\n  setSearch,\n  getApplications,\n  setPage,\n  jobId,\n}: {\n  setSearch: (query: string) => void;\n  getApplications: IGetApplications;\n  setPage: (page: number) => void;\n  jobId: number;\n}) {\n  const [tempSearch, setTempSearch] = useState('');\n  const debouncedAPICall = useDebouncedCallback((searchQuery) => {\n    sessionStorage.setItem(`${jobId}-applicationTablePage`, 1);\n    getApplications(1, null, searchQuery, null, null);\n    setPage(1);\n    setSearch(searchQuery);\n  }, 600);\n\n  const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    setTempSearch(event.target.value);\n    debouncedAPICall(event.target.value);\n  };\n\n  return (\n    <Box sx={{ width: '100%' }}>\n      <FormControl fullWidth>\n        <OutlinedInput\n          id=\"applicant-search\"\n          sx={classes.searchInput}\n          placeholder={'Search by name'}\n          value={tempSearch}\n          onChange={handleChange}\n          startAdornment={\n            <InputAdornment sx={{ padding: '0px 0px 0px 14px' }} position=\"start\">\n              <SearchIcon />\n            </InputAdornment>\n          }\n        />\n      </FormControl>\n    </Box>\n  );\n}\n","import React, { useRef, useState } from 'react';\nimport Box from '@mui/material/Box';\nimport Table from '@mui/material/Table';\nimport TableBody from '@mui/material/TableBody';\nimport TableCell from '@mui/material/TableCell';\nimport TableContainer from '@mui/material/TableContainer';\nimport TableHead from '@mui/material/TableHead';\nimport TableRow from '@mui/material/TableRow';\nimport Paper from '@mui/material/Paper';\nimport OutlinedInput from '@mui/material/OutlinedInput';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport IconButton from '@mui/material/IconButton';\nimport { Stack } from '@mui/material';\nimport ClearIcon from '@mui/icons-material/Clear';\nimport SearchIcon from '@mui/icons-material/Search';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport { classes } from './styles';\nimport { ISelectedApplicantsProps } from '../types';\n\nexport const getRatingColor = (rating: number) => {\n  if (rating <= 20) {\n    return '#CF5005';\n  } else if (rating <= 40) {\n    return '#E7B500';\n  } else if (rating <= 60) {\n    return '#B7F018';\n  } else if (rating <= 80) {\n    return '#94EDBB';\n  } else if (rating <= 100) {\n    return '#6FCC7C';\n  } else {\n    return '#FFFFFF';\n  }\n};\n\nexport default function SelectedApplicants({\n  globalSelected,\n  handleDeselectCandidate,\n  closeModalCallback,\n  filters,\n  eventCandidates\n}: ISelectedApplicantsProps) {\n  const [searchTerm, setSearchTerm] = useState('');\n  const statusDropdownRef = useRef<HTMLDivElement>(null);\n\n  const filterCandidates = (application: ISelectedApplicantsProps['globalSelected'][0]) => {\n    return searchTerm\n      ? `${application.candidate?.firstname?.toLowerCase()} ${application.candidate?.lastname?.toLowerCase()}`.includes(\n          searchTerm.toLowerCase()\n        ) || application.candidate?.phone1?.includes(searchTerm)\n      : true;\n  };\n\n  const onRemoveCandidate = (id: number) => {\n    handleDeselectCandidate(id);\n    if (globalSelected?.length <= 1) closeModalCallback();\n  };\n\n  return (\n    <>\n      {globalSelected.length > 50 ? (\n        <Box></Box>\n      ) : (\n        <OutlinedInput\n          id=\"job-search\"\n          sx={classes.candidateSearch}\n          placeholder={'Search candidates'}\n          value={searchTerm}\n          onChange={(e) => setSearchTerm(e.target.value)}\n          startAdornment={\n            <InputAdornment sx={{ padding: '0px 0px 0px 10px' }} position=\"start\">\n              <SearchIcon />\n            </InputAdornment>\n          }\n        />\n      )}\n      <Box sx={classes.selectedApplicantsTableHeader}>\n        {globalSelected.length} candidates selected\n      </Box>\n      {globalSelected.length > 50 ? (\n        <>\n          <Box sx={classes.selectedApplicantsTableHeader}>Status</Box>\n          {filters?.status.length === 0 && <Box sx={classes.filterButton}>No Status Selected</Box>}\n          <Stack sx={{ flexDirection: 'row' }}>\n            {filters?.status.map((filterStatus) => (\n              <Stack\n                key={filterStatus.id}\n                sx={{\n                  ...classes.filterButton,\n                  flexDirection: 'row',\n                  alignItems: 'center',\n                  marginRight: 2\n                }}\n              >\n                <Box\n                  sx={{\n                    ...classes.statusColour,\n                    position: 'unset',\n                    marginRight: 1,\n                    height: '8px',\n                    width: '8px',\n                    backgroundColor: filterStatus.colour ? filterStatus.colour : '#AAAAAA'\n                  }}\n                ></Box>\n                {filterStatus.name}\n              </Stack>\n            ))}\n          </Stack>\n          <Box>\n            <Box sx={classes.selectedApplicantsTableHeader}>Rating</Box>\n            <Box sx={classes.filterButton}>\n              {filters?.rating[0]} - {filters?.rating[1]} %\n            </Box>\n          </Box>\n        </>\n      ) : (\n        <TableContainer sx={{ boxShadow: 'none' }} component={Paper}>\n          <Table\n            sx={{ ...classes.selectedApplicantsTable, width: eventCandidates ? '100%' : 'unset' }}\n            aria-label=\"selected applicants\"\n          >\n            <TableHead>\n              <TableRow>\n                <TableCell>Name</TableCell>\n                <TableCell>Phone</TableCell>\n                <TableCell>Status</TableCell>\n                <TableCell>Rating</TableCell>\n                {eventCandidates && <TableCell>Timeslot Availability</TableCell>}\n                <TableCell></TableCell>\n              </TableRow>\n            </TableHead>\n            <TableBody>\n              {globalSelected\n                .filter((candidate) => filterCandidates(candidate))\n                .map((application: ISelectedApplicantsProps['globalSelected'][0]) => (\n                  <TableRow key={application.id}>\n                    <TableCell>\n                      {application.candidate.firstname} {application.candidate.lastname}\n                    </TableCell>\n                    <TableCell>{application.candidate.phone1}</TableCell>\n                    <TableCell sx={classes.applicationStatus}>\n                      <Box\n                        sx={{ ...classes.statusDropdownSelected, ...classes.statusClampSelected }}\n                        ref={statusDropdownRef}\n                      >\n                        <Box\n                          className=\"status-dropdown-full\"\n                          sx={{\n                            '&::after': {\n                              display: 'block',\n                              top:\n                                statusDropdownRef.current &&\n                                statusDropdownRef.current.clientHeight > 45\n                                  ? '25.5px'\n                                  : '50%'\n                            }\n                          }}\n                        >\n                          <>\n                            <Box\n                              sx={{\n                                ...classes.statusColour,\n                                backgroundColor: application.status_details?.colour\n                                  ? application.status_details?.colour\n                                  : '#AAAAAA'\n                              }}\n                            ></Box>\n                            {application.status}\n                          </>\n                        </Box>\n                        <Box\n                          sx={{\n                            ...classes.statusColour,\n                            backgroundColor: application.status_details?.colour\n                              ? application.status_details?.colour\n                              : '#AAAAAA'\n                          }}\n                        ></Box>\n                        {application.status}\n                      </Box>\n                    </TableCell>\n                    <TableCell\n                      sx={{\n                        color: '#000000',\n                        fontWeight: '600'\n                      }}\n                    >\n                      <Box\n                        sx={{\n                          ...classes.rating,\n                          backgroundColor: getRatingColor(\n                            application.rating === null ? 101 : Number(application.rating)\n                          )\n                        }}\n                      >\n                        {application.rating ? Math.ceil(Number(application.rating)) + '%' : '-'}\n                      </Box>\n                    </TableCell>\n                    {eventCandidates && (\n                      <TableCell>\n                        <Stack\n                          sx={{\n                            ...classes.availabilityColumnCell,\n                            background: eventCandidates.includes(application.id)\n                              ? '#E5E5E5'\n                              : '#EFFDF3',\n                            color: eventCandidates.includes(application.id) ? '#939393' : '#8CCF95'\n                          }}\n                        >\n                          {eventCandidates.includes(application.id) ? 'BOOKED' : 'AVAILABLE'}\n                        </Stack>\n                      </TableCell>\n                    )}\n                    <TableCell>\n                      <IconButton\n                        onClick={() => onRemoveCandidate(application.id)}\n                        sx={{ marginLeft: '35px' }}\n                      >\n                        <ClearIcon sx={{ color: theme.palette.error.main }} />\n                      </IconButton>\n                    </TableCell>\n                  </TableRow>\n                ))}\n            </TableBody>\n          </Table>\n        </TableContainer>\n      )}\n    </>\n  );\n}\n","import React, { useEffect, useState, useCallback, ChangeEvent } from 'react';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\nimport moment from 'moment';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport Table from '@mui/material/Table';\nimport TableBody from '@mui/material/TableBody';\nimport TableCell from '@mui/material/TableCell';\nimport TableContainer from '@mui/material/TableContainer';\nimport TableHead from '@mui/material/TableHead';\nimport TableRow from '@mui/material/TableRow';\nimport Pagination from '@mui/material/Pagination';\nimport MenuItem from '@mui/material/MenuItem';\nimport FormControl from '@mui/material/FormControl';\nimport Select from '@mui/material/Select';\nimport Paper from '@mui/material/Paper';\nimport Skeleton from '@mui/material/Skeleton';\nimport IconButton from '@mui/material/IconButton';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport FilePreviewModal from '../../Components/Modals/FilePreviewModal';\nimport DocTypeIcon from '../../Components/Utilities/DocTypeIcon';\nimport AttachmentSelector from '../../Components/Utilities/AttachmentSelector';\nimport { IJobAttachment } from '../types';\nimport { classes } from './styles';\nimport Api from '../API';\n\nexport default function Attachments({\n  apiKey,\n  jobId,\n  permissions\n}: {\n  apiKey: string;\n  jobId: number;\n  permissions: Record<string, boolean>;\n}) {\n  const BASE_URL = window.location.origin;\n  const [attachments, setAttachments] = useState([]);\n  const [totalAttachments, setTotalAttachments] = useState(0);\n  const [totalPages, setTotalPages] = useState(0);\n  const [currentPage, setCurrentPage] = useState(1);\n  const [rowsPerPage, setRowsPerPage] = useState(10);\n  const [copied, setCopied] = useState({});\n  const [previewOpen, setPreviewOpen] = useState(false);\n  const [selectedAttachment, setSelectedAttachment] = useState<IJobAttachment | null>(null);\n  const [isLoading, setIsLoading] = useState(false);\n  const [isDialogOpen, setIsDialogOpen] = useState(false);\n  const [isDeleting, setIsDeleting] = useState(false);\n\n  const deleteAttachment = async (url: string, attachmentId: number) => {\n    setIsDeleting(true);\n    try {\n      await Api.deleteJobAttachment({ 'X-api-authenticate': apiKey }, jobId, attachmentId);\n      fetchAttachments(currentPage, rowsPerPage);\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsDeleting(false);\n      setIsDialogOpen(false);\n    }\n  };\n\n  const [dialogProps, setDialogProps] = useState({\n    url: '',\n    title: 'Permanently delete attachment?',\n    description: '',\n    buttonText: 'Delete',\n    buttonCallback: deleteAttachment,\n    callbackLoading: false,\n    dialogId: 0\n  });\n\n  const fetchInitialAttachments = useCallback(async () => {\n    setIsLoading(true);\n    try {\n      const response = await Api.getJobAttachments({ 'X-api-authenticate': apiKey }, jobId, {});\n      setAttachments(response.data.job_attachments);\n      setTotalAttachments(response.totalItems);\n      setTotalPages(response.totalPages);\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsLoading(false);\n    }\n  }, [apiKey, jobId]);\n\n  const fetchAttachments = async (page: number, rows: number) => {\n    setIsLoading(true);\n    try {\n      const response = await Api.getJobAttachments({ 'X-api-authenticate': apiKey }, jobId, {\n        page: page,\n        limit: rows\n      });\n      setAttachments(response.data.job_attachments);\n      setTotalAttachments(response.totalItems);\n      setTotalPages(response.totalPages);\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsLoading(false);\n    }\n  };\n\n  const handleRowsPerPageChange = (selection: number) => {\n    if (selection === rowsPerPage) return;\n    setRowsPerPage(selection);\n    fetchAttachments(currentPage, selection);\n  };\n\n  const handlePageChange = (event: React.ChangeEvent<unknown>, newPage: number) => {\n    if (newPage === currentPage) return;\n    setCurrentPage(newPage);\n    fetchAttachments(newPage, rowsPerPage);\n  };\n\n  const handleCopy = (attachmentId: number) => {\n    setCopied((prev) => ({ ...prev, [attachmentId]: true }));\n    setTimeout(() => setCopied((prev) => ({ ...prev, [attachmentId]: false })), 3000);\n  };\n\n  const handleDeleteAttachment = (attachmentId: number, attachmentName: string) => {\n    setDialogProps((prev) => ({\n      ...prev,\n      url: `/api/v1/jobs/${jobId}/attachments/${attachmentId}`,\n      description: `Are you sure you want to delete ${attachmentName}? This action cannot be undone.`,\n      dialogId: attachmentId,\n      buttonCallback: deleteAttachment\n    }));\n    setIsDialogOpen(true);\n  };\n\n  const handleSelectAttachment = (attachment: IJobAttachment) => {\n    setSelectedAttachment(attachment);\n    setPreviewOpen(true);\n  };\n\n  useEffect(() => {\n    fetchInitialAttachments();\n  }, [fetchInitialAttachments]);\n\n  return (\n    <Box>\n      <AttachmentSelector\n        performUpload={true}\n        apiKey={apiKey}\n        uploadUrl={`${BASE_URL}/api/v4/jobs/${jobId}/job_attachments`}\n        onUploadComplete={() => fetchAttachments(currentPage, rowsPerPage)}\n        maxSize={50000000}\n        data-testid=\"job-attachments-selector\"\n      />\n      <TableContainer sx={{ boxShadow: 'none' }} component={Paper}>\n        <Table sx={classes.tableWrapper} aria-label=\"job attachments\">\n          <TableHead>\n            <TableRow>\n              <TableCell>File</TableCell>\n              <TableCell>Public link</TableCell>\n              <TableCell>Attached by</TableCell>\n              <TableCell></TableCell>\n            </TableRow>\n          </TableHead>\n          <TableBody>\n            {attachments &&\n              !isLoading &&\n              attachments.map((attachment: IJobAttachment) => (\n                <TableRow key={attachment.id}>\n                  <TableCell>\n                    <Box\n                      onClick={() => handleSelectAttachment(attachment)}\n                      sx={classes.fileIconContainer}\n                    >\n                      <Box sx={classes.fileIcon}>\n                        {DocTypeIcon(attachment.attached_file_name.split('.').pop())}\n                      </Box>\n                      <Box>\n                        <Box\n                          sx={classes.fileName}\n                          className=\"attachment-file-name\"\n                          data-testid=\"attachment-file-name\"\n                        >\n                          {attachment.attached_file_name}\n                        </Box>\n                        <Box sx={classes.fileDate}>\n                          {moment(attachment.created_at).format('Do MMMM YYYY[,] h:mma')}\n                        </Box>\n                      </Box>\n                    </Box>\n                  </TableCell>\n                  <TableCell>\n                    <Box sx={classes.fileLinkContainer}>\n                      <a href={attachment.public_link} target=\"_blank\" rel=\"noopener noreferrer\">\n                        <Box>{attachment.public_link}</Box>\n                      </a>\n                      <CopyToClipboard\n                        text={attachment.public_link}\n                        onCopy={() => handleCopy(attachment.id)}\n                      >\n                        <Button sx={classes.copyButton}>\n                          {copied[attachment.id as keyof typeof copied] ? 'Copied!' : 'Copy'}\n                        </Button>\n                      </CopyToClipboard>\n                    </Box>\n                  </TableCell>\n                  <TableCell sx={classes.fileAttachedBy}>{attachment.attached_by}</TableCell>\n                  <TableCell>\n                    {permissions.delete && (\n                      <IconButton\n                        onClick={() =>\n                          handleDeleteAttachment(attachment.id, attachment.attached_file_name)\n                        }\n                        className=\"delete-job-attachment-button\"\n                        data-testid=\"delete-job-attachment-button\"\n                      >\n                        <DeleteIcon sx={{ color: '#D6827D' }} />\n                      </IconButton>\n                    )}\n                  </TableCell>\n                </TableRow>\n              ))}\n          </TableBody>\n        </Table>\n        {!isLoading && attachments?.length === 0 && (\n          <Box sx={classes.noAttachments} className=\"no-attachments\" data-testid=\"no-attachments\">\n            No attachments added\n          </Box>\n        )}\n        {isLoading && (\n          <>\n            <Skeleton animation=\"wave\" height={60} />\n            <Skeleton animation=\"wave\" height={60} />\n            <Skeleton animation=\"wave\" height={60} />\n            <Skeleton animation=\"wave\" height={60} />\n          </>\n        )}\n      </TableContainer>\n      <Box sx={classes.paginationParent}>\n        <Box sx={classes.rowSelectContainer}>\n          <span>Rows per page: </span>\n          <FormControl>\n            <Select\n              id=\"rows-per-page\"\n              sx={classes.rowSelect}\n              value={rowsPerPage}\n              onChange={(e) => handleRowsPerPageChange(Number(e.target.value))}\n              displayEmpty\n              MenuProps={{ sx: classes.paginationMenuItems }}\n            >\n              <MenuItem id=\"first-rpp-item\" value={10}>\n                10\n              </MenuItem>\n              <MenuItem id=\"second-rpp-item\" value={20}>\n                20\n              </MenuItem>\n              <MenuItem value={30}>30</MenuItem>\n              <MenuItem value={40}>40</MenuItem>\n              <MenuItem value={50}>50</MenuItem>\n            </Select>\n          </FormControl>\n        </Box>\n        <Box sx={classes.paginationContainer}>\n          <Pagination\n            id=\"pagination-menu\"\n            count={totalPages}\n            page={currentPage}\n            siblingCount={0}\n            onChange={(event, page) => handlePageChange(event, page)}\n            sx={classes.pagination}\n          />\n          <span id=\"total-jobs\">{totalAttachments} Total</span>\n        </Box>\n      </Box>\n      <FilePreviewModal\n        previewOpen={previewOpen}\n        setPreviewOpen={setPreviewOpen}\n        selectedAttachment={selectedAttachment}\n        isShareable={true}\n      />\n      <GenericDialog\n        url={dialogProps.url}\n        title={dialogProps.title}\n        description={dialogProps.description}\n        buttonText={dialogProps.buttonText}\n        buttonCallback={dialogProps.buttonCallback}\n        callbackLoading={isDeleting}\n        isDialogOpen={isDialogOpen}\n        setDialogOpen={setIsDialogOpen}\n        dialogId={dialogProps.dialogId}\n      />\n    </Box>\n  );\n}\n","import React, { Dispatch, SetStateAction, useCallback, useEffect, useState } from 'react';\nimport {\n  Box,\n  Button,\n  Table,\n  TableBody,\n  TableCell,\n  TableContainer,\n  TableHead,\n  TableRow,\n  Paper,\n  Stack\n} from '@mui/material';\nimport { classes } from './styles';\nimport { FormTextField } from '../../Components/CustomUIElements/FormTextField';\nimport CheckIcon from '@mui/icons-material/Check';\nimport { v4 as uuidv4 } from 'uuid';\nimport { IJob } from '../../Job/types';\nimport { DndContext, DragStartEvent, DragEndEvent } from '@dnd-kit/core';\nimport { arrayMove, SortableContext, rectSortingStrategy } from '@dnd-kit/sortable';\nimport { restrictToVerticalAxis, restrictToWindowEdges } from '@dnd-kit/modifiers';\nimport SortableRow from './SortableRow';\n\nexport default function CandidateAttachments({\n  apiKey,\n  job,\n  candidateAttachments,\n  setCandidateAttachments,\n  attachmentsTabJobData,\n  setAttachmentsTabJobData,\n  setIsEdited\n}: {\n  apiKey: string;\n  job: IJob;\n  setIsEdited: Dispatch<SetStateAction<boolean>>;\n}) {\n  const [isPillTick, setIsPillTick] = useState<Record<string, boolean>>({\n    Resume: false,\n    'Drivers licence': false,\n    Video: false\n  });\n  const [newAttachment, setNewAttachment] = useState('');\n  const [activeId, setActiveId] = useState<string | null>(null);\n\n  const handleDragStart = useCallback((event: DragStartEvent) => {\n    setActiveId(event.active.id as string);\n  }, []);\n\n  const handleDragEnd = useCallback(\n    (event: DragEndEvent) => {\n      setIsEdited(true);\n      const { active, over } = event;\n      if (over === null) {\n        return;\n      }\n      if (active.id !== over.id) {\n        const oldIndex = candidateAttachments\n          .map((item) => {\n            return item.id;\n          })\n          .indexOf(active.id as string);\n        const newIndex = candidateAttachments\n          .map((item) => {\n            return item.id;\n          })\n          .indexOf(over.id as string);\n        const newData = arrayMove(candidateAttachments, oldIndex, newIndex);\n        setCandidateAttachments(newData);\n      }\n      setActiveId(null);\n    },\n    [candidateAttachments]\n  );\n\n  const checkPillValue = useCallback(async () => {\n    candidateAttachments?.map((attachment) => {\n      const flag = Object.keys(isPillTick).includes(attachment.label);\n      flag && setIsPillTick((prev) => ({ ...prev, [attachment.label]: attachment.required }));\n    });\n  }, [job]);\n\n  const handleAttachmentInput = (e, index: number) => {\n    setIsEdited(true);\n    const { name, value } = e.target;\n    const list = [...candidateAttachments];\n    list[index].label = value;\n    setCandidateAttachments(list);\n  };\n\n  const onRemoveAttachment = (index: number) => {\n    setIsEdited(true);\n    const list = [...candidateAttachments];\n    if (Object.keys(isPillTick).includes(list[index].label)) {\n      setIsPillTick((prev) => ({ ...prev, [list[index].label]: false }));\n    }\n    list.splice(index, 1);\n    setCandidateAttachments(list);\n  };\n\n  const handleChange = (e, index: number) => {\n    setIsEdited(true);\n    const list = [...candidateAttachments];\n    list[index].required = !list[index].required;\n    setCandidateAttachments(list);\n  };\n\n  const handleAddAttachment = (name: string) => {\n    setIsEdited(true);\n    const flag = Object.keys(isPillTick).includes(name);\n\n    setNewAttachment('');\n\n    if (flag && !isPillTick[name]) {\n      setCandidateAttachments([\n        ...candidateAttachments,\n        { id: uuidv4(), label: name, value: name, required: flag }\n      ]);\n      setIsPillTick((prev) => ({ ...prev, [name]: true }));\n    } else if (!flag) {\n      setCandidateAttachments([\n        ...candidateAttachments,\n        { id: uuidv4(), label: name, value: name, required: flag }\n      ]);\n    }\n  };\n\n  useEffect(() => {\n    checkPillValue();\n  }, [checkPillValue]);\n\n  return (\n    <Box sx={classes.pageContainer}>\n      <Box sx={classes.pageHeader}>\n        <h2>Candidate attachments</h2>\n      </Box>\n      <Box sx={{ color: '#939393', fontSize: '16px', padding: '30px 0' }}>\n        Select or add the documents that you want candidates to attach. All attachments will be\n        optional unless made mandatory.\n      </Box>\n      <Box sx={classes.actionsContianer}>\n        {Object.keys(isPillTick).map((pill, index) => (\n          <Button\n            key={index}\n            variant=\"outlined\"\n            startIcon={isPillTick[pill] ? <CheckIcon /> : ''}\n            sx={isPillTick[pill] ? classes.checkedPill : classes.actionButton}\n            onClick={() => handleAddAttachment(pill)}\n          >\n            {pill}\n          </Button>\n        ))}\n      </Box>\n      <Box sx={{ padding: '20px 0' }}>\n        <Box id=\"add-attachment-title\" sx={{ color: '#939393', marginBottom: 1 }}>\n          New attachment\n        </Box>\n        <Box sx={{ display: 'flex', alignItems: 'center' }}>\n          <Stack flexGrow=\"0.5\" maxWidth=\"250px\">\n            <FormTextField\n              dataTestId=\"new-attachment-text-input\"\n              value={newAttachment}\n              onChange={(e) => {\n                setNewAttachment(e.target.value);\n                setIsEdited(true);\n              }}\n              required={true}\n            />\n          </Stack>\n          <Button\n            id=\"add-attachment-button\"\n            data-testid=\"add-attachment-button\"\n            sx={classes.addAttachmentButton}\n            onClick={() => handleAddAttachment(newAttachment)}\n            disabled={!newAttachment}\n          >\n            Add attachment\n          </Button>\n        </Box>\n      </Box>\n      <DndContext\n        onDragStart={handleDragStart}\n        onDragEnd={handleDragEnd}\n        modifiers={[restrictToVerticalAxis, restrictToWindowEdges]}\n      >\n        <TableContainer sx={{ boxShadow: 'none' }} component={Paper}>\n          <Table sx={classes.tableWrapper} aria-label=\"attachment table\">\n            <TableHead>\n              <TableRow>\n                <TableCell align=\"left\" sx={{ minWidth: '150px' }}>\n                  Mandatory\n                </TableCell>\n                <TableCell>Title</TableCell>\n                <TableCell></TableCell>\n              </TableRow>\n            </TableHead>\n            <TableBody>\n              <SortableContext items={candidateAttachments} strategy={rectSortingStrategy}>\n                {candidateAttachments &&\n                  candidateAttachments.map((attachment, index) => (\n                    <SortableRow\n                      key={attachment.value + attachment.id}\n                      id={attachment.id}\n                      row={attachment}\n                      index={index}\n                      handleChange={handleChange}\n                      handleAttachmentInput={handleAttachmentInput}\n                      onRemoveAttachment={onRemoveAttachment}\n                    />\n                  ))}\n              </SortableContext>\n            </TableBody>\n          </Table>\n        </TableContainer>\n      </DndContext>\n    </Box>\n  );\n}\n","import React from 'react';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { classes } from './styles';\nimport IconButton from '@mui/material/IconButton';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport TableCell from '@mui/material/TableCell';\nimport TableRow from '@mui/material/TableRow';\nimport Checkbox from '@mui/material/Checkbox';\nimport { FormTextField } from '../../Components/CustomUIElements/FormTextField';\nimport DragIndicatorIcon from '@mui/icons-material/DragIndicator';\n\nexport default function SortableRow({\n  id,\n  row,\n  index,\n  handleChange,\n  handleAttachmentInput,\n  onRemoveAttachment\n}: {\n  id: string;\n  row: any;\n  index: number;\n  handleChange: any;\n  handleAttachmentInput: any;\n  onRemoveAttachment: any;\n}) {\n  const { attributes, listeners, setNodeRef, setActivatorNodeRef, transform, transition } =\n    useSortable({ id: id });\n\n  const style = {\n    transform: CSS.Translate.toString(transform),\n    transition\n  };\n\n  return (\n    <TableRow ref={setNodeRef} style={style} {...attributes}>\n      <TableCell align=\"left\">\n        <Checkbox\n          id={`select-checkbox-${index}`}\n          sx={classes.checkbox}\n          onChange={(e) => handleChange(e, index)}\n          checked={row.required}\n        />\n      </TableCell>\n      <TableCell>\n        <FormTextField\n          value={row.label}\n          onChange={(e) => handleAttachmentInput(e, index)}\n          required={true}\n          styles={{ width: '250px' }}\n        />\n      </TableCell>\n      <TableCell>\n        <IconButton\n          data-testid={`delete-attachment-button-${index}`}\n          onClick={() => onRemoveAttachment(index)}\n        >\n          <DeleteIcon sx={{ color: '#E37D7A', fontSize: 16 }} />\n        </IconButton>\n      </TableCell>\n      <TableCell>\n        <IconButton ref={setActivatorNodeRef} {...listeners}>\n          <DragIndicatorIcon />\n        </IconButton>\n      </TableCell>\n    </TableRow>\n  );\n}\n","import React from 'react';\n\nexport default function ClicksNoBackgroundSVG() {\nreturn (<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" viewBox=\"0 0 53 53\">\n<g id=\"Group_579\" data-name=\"Group 579\" transform=\"translate(-899 -710)\">\n  <g id=\"MDI_cursor-default-click\" data-name=\"MDI / cursor-default-click\" transform=\"translate(912.333 723.833)\">\n    <g id=\"Boundary\" fill=\"#084d6d\" stroke=\"rgba(0,0,0,0)\" strokeWidth=\"1\" opacity=\"0\">\n      <rect width=\"26.334\" height=\"26.334\" stroke=\"none\"/>\n      <rect x=\"0.5\" y=\"0.5\" width=\"25.334\" height=\"25.334\" fill=\"none\"/>\n    </g>\n    <path id=\"Path_cursor-default-click\" data-name=\"Path / cursor-default-click\" d=\"M11.612,9.535a.834.834,0,0,0-.834.834V22.933a.834.834,0,0,0,.834.834.845.845,0,0,0,.527-.176l2.1-1.7,1.821,3.972a.835.835,0,0,0,.757.472.558.558,0,0,0,.362-.088l3.028-1.4a.815.815,0,0,0,.4-1.108L18.766,19.75l2.644-.494a.965.965,0,0,0,.472-.285.824.824,0,0,0-.132-1.185l-9.59-8.065-.011.011a.829.829,0,0,0-.538-.2m4.652,1.437V8.778H21.75v2.194H16.264M14.98,5.223l3.105-3.105,1.547,1.547L16.528,6.77,14.98,5.223M10.778,0h2.194V5.486H10.778V0M4.118,16.086,7.223,12.98,8.77,14.528,5.665,17.633,4.118,16.086m0-12.421L5.665,2.118,8.77,5.223,7.223,6.77,4.118,3.665m3.369,7.308H2V8.778H7.486v2.194\" transform=\"translate(1.292)\" fill=\"#084d6d\"/>\n  </g>\n</g>\n</svg>)\n}","import React from 'react';\nimport { classes } from './styles';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport CloseIcon from '@mui/icons-material/Close';\nimport Modal from '@mui/material/Modal';\nexport interface IEmailPreviewModalProps {\n  title: string;\n  subject: string;\n  body: string;\n  isDialogOpen: boolean;\n  dialogId: number;\n  setDialogOpen: React.Dispatch<React.SetStateAction<boolean>>;\n}\n\nfunction EmailPreviewModal({\n  title,\n  subject,\n  body,\n  isDialogOpen,\n  setDialogOpen,\n  dialogId\n}: IEmailPreviewModalProps) {\n  return (\n    <Modal\n      id={`${dialogId}`}\n      open={isDialogOpen}\n      onClose={() => setDialogOpen(false)}\n    >\n      <Box sx={classes.attachmentPreviewModal}>\n        <CloseIcon onClick={() => setDialogOpen(false)} sx={classes.closeIcon} />\n        <Box id=\"modal-modal-title\" sx={classes.attachmentPreviewTitle}>\n          {title}\n        </Box>\n        {\n          subject && body ? \n            <Box sx={classes.attachmentPreviewContent}>{<div dangerouslySetInnerHTML={{ __html: `<h3>${subject}</h3>${body}` }} />}</Box>\n            : <Box sx={classes.noPreview}>No email template.</Box>\n        }\n        <Box sx={classes.attachmentPreviewActions}>\n          <Button onClick={() => setDialogOpen(false)} sx={classes.downloadButton}>Close</Button>\n        </Box>\n      </Box>\n    </Modal>\n  );\n}\n\nexport default EmailPreviewModal;\n","import React, { useState, useEffect, useCallback } from 'react';\nimport Box from '@mui/material/Box';\nimport Skeleton from '@mui/material/Skeleton';\nimport NoEmailStatusSVG from '../EmailStatus/NoEmailStatusSVG';\nimport Button from '@mui/material/Button';\nimport FormControl from '@mui/material/FormControl';\nimport Table from '@mui/material/Table';\nimport TableBody from '@mui/material/TableBody';\nimport TableCell from '@mui/material/TableCell';\nimport TableContainer from '@mui/material/TableContainer';\nimport TableHead from '@mui/material/TableHead';\nimport TableRow from '@mui/material/TableRow';\nimport Paper from '@mui/material/Paper';\nimport IconButton from '@mui/material/IconButton';\nimport KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport Collapse from '@mui/material/Collapse';\nimport Statistics from './Widgets/Statistics';\nimport Select from '@mui/material/Select';\nimport Pagination from '@mui/material/Pagination';\nimport MenuItem from '@mui/material/MenuItem';\nimport { IJobEmailStatus } from '../types';\nimport moment from 'moment';\nimport Api from '../API';\nimport { classes } from './styles';\nimport VisibilityIcon from '@mui/icons-material/Visibility';\nimport EmailPreviewModal from './EmailPreviewModal';\nimport StatusTypeIcon from './StatusTypeIcon';\nimport { StyledSnackbarProps } from '../../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport Chip from '@mui/material/Chip';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\n\nexport default function EmailStatus({\n  apiKey,\n  jobId,\n  setSnackbarState\n}: {\n  apiKey: string;\n  jobId: number;\n  setSnackbarState: StyledSnackbarProps['setSnackbarState'];\n}) {\n  const [emailStatuses, setEmailStatuses] = useState(null);\n  const [totalEmailStatuses, setTotalEmailStatuses] = useState(0);\n  const [totalPages, setTotalPages] = useState(0);\n  const [currentPage, setCurrentPage] = useState(1);\n  const [rowsPerPage, setRowsPerPage] = useState(10);\n  const [isLoading, setIsLoading] = useState(false);\n  const [open, setOpen] = useState([]);\n  const [isDialogOpen, setIsDialogOpen] = useState(false);\n  const [previewId, setPreviewId] = useState(null);\n  const [subject, setSubject] = useState('');\n  const [body, setBody] = useState('');\n  const [isCancelling, setIsCancelling] = useState([]);\n  const [hoveredScheduleButtons, setHoveredScheduleButtons] = useState(\n    new Array(emailStatuses?.length || 0).fill(false)\n  );\n  const [unscheduleIndex, setUnscheduleIndex] = useState(-1);\n  const [unscheduleDialogOpen, setUnscheduleDialogOpen] = useState(false);\n  const [unscheduledDetailsIsHovered, setUnscheduledDetailsIsHovered] = useState(\n    new Array(emailStatuses?.length || 0).fill(false)\n  );\n  const [selectedEmailStatusId, setSelectedEmailStatusId] = useState(null);\n\n  const fetchInitialEmailStatuses = useCallback(async () => {\n    setIsLoading(true);\n    try {\n      const response = await Api.getEmailStatuses({ 'X-api-authenticate': apiKey }, jobId, {});\n      setEmailStatuses(response.data.job_email_statuses);\n      setTotalEmailStatuses(response.totalItems);\n      setTotalPages(response.totalPages);\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsLoading(false);\n    }\n  }, [apiKey, jobId]);\n\n  const fetchEmailStatuses = async (page: number, rows: number) => {\n    setIsLoading(true);\n    try {\n      const response = await Api.getEmailStatuses({ 'X-api-authenticate': apiKey }, jobId, {\n        page: page,\n        limit: rows\n      });\n      setEmailStatuses(response.data.job_email_statuses);\n      setTotalEmailStatuses(response.totalItems);\n      setTotalPages(response.totalPages);\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsLoading(false);\n    }\n  };\n\n  const handleRowsPerPageChange = (selection: number) => {\n    if (selection === rowsPerPage) return;\n    setRowsPerPage(selection);\n    fetchEmailStatuses(currentPage, selection);\n  };\n\n  const handlePageChange = (event: React.ChangeEvent, newPage: number) => {\n    if (newPage === currentPage) return;\n    setCurrentPage(newPage);\n    fetchEmailStatuses(newPage, rowsPerPage);\n  };\n\n  const handleOpen = (id: number) => {\n    if (!open.includes(id)) {\n      const copy = [...open];\n      copy.push(id);\n      setOpen(copy);\n    }\n    const flag = open.indexOf(id);\n    if (flag > -1) {\n      const copy = [...open];\n      copy.splice(flag, 1);\n      setOpen(copy);\n    }\n  };\n  const cancelEmail = async (emailStatusId: number) => {\n    try {\n      await Api.cancelEmailBatch(jobId, emailStatusId);\n    } catch (error) {\n      setSnackbarState({\n        message: 'Error cancelling email, please try again',\n        state: 'error'\n      });\n    }\n  };\n\n  const handleCancel = async (emailStatusId: number) => {\n    if (unscheduleIndex !== -1) {\n      const index = emailStatuses.findIndex((emailStatus) => emailStatus.id === emailStatusId);\n      const newIsCancelling = [...isCancelling];\n      newIsCancelling[index] = true;\n      setIsCancelling(newIsCancelling);\n      try {\n        await cancelEmail(emailStatusId);\n      } catch (error) {\n        setSnackbarState({\n          message: 'Error cancelling email, please try again',\n          state: 'error'\n        });\n      } finally {\n        const response = await Api.getEmailStatuses({ 'X-api-authenticate': apiKey }, jobId, {});\n        setEmailStatuses(response.data.job_email_statuses);\n        setTotalEmailStatuses(response.totalItems);\n        setTotalPages(response.totalPages);\n        const resetIsCancelling = [...isCancelling];\n        resetIsCancelling[index] = false;\n        setIsCancelling(resetIsCancelling);\n      }\n      setUnscheduleIndex(-1);\n    } else {\n      handleUnscheduleDialogOpen(emailStatusId);\n    }\n  };\n\n  const handlePreview = (emailStatus: IJobEmailStatus) => {\n    setIsDialogOpen(true);\n    setPreviewId(emailStatus.id);\n    setSubject(emailStatus.email_template?.subject);\n    setBody(emailStatus.email_template?.body);\n  };\n\n  const statusPastTense = (name: string) => {\n    switch (name) {\n      case 'open':\n        return 'opened';\n      case 'click':\n        return 'clicked';\n      case 'bounce':\n        return 'bounced';\n      case 'unsubscribe':\n        return 'unsubscribed';\n      case 'deliver':\n        return 'delivered';\n      default:\n        return name;\n    }\n  };\n  const handleUnscheduleDialogOpen = (emailStatusId: number) => {\n    setSelectedEmailStatusId(emailStatusId);\n    setUnscheduleIndex(emailStatusId);\n    setIsDialogOpen(true);\n  };\n  useEffect(() => {\n    fetchInitialEmailStatuses();\n  }, [fetchInitialEmailStatuses]);\n\n  return (\n    <>\n      {emailStatuses && emailStatuses.length > 0 && (\n        <>\n          <TableContainer sx={{ boxShadow: 'none' }} component={Paper}>\n            <Table sx={classes.tableWrapper} aria-label=\"job email status\">\n              <TableHead>\n                <TableRow style={{ borderBottom: '1px solid #f3f3f3' }}>\n                  <TableCell></TableCell>\n                  <TableCell>Email Template</TableCell>\n                  <TableCell>User</TableCell>\n                  <TableCell>Created at</TableCell>\n                  <TableCell>Sent From</TableCell>\n                  <TableCell sx={{ textAlign: 'right' }}>Applications</TableCell>\n                  <TableCell sx={classes.center}>State</TableCell>\n                  <TableCell></TableCell>\n                </TableRow>\n              </TableHead>\n              <TableBody>\n                {emailStatuses &&\n                  !isLoading &&\n                  emailStatuses.map((emailStatus: IJobEmailStatus, index: number) => (\n                    <>\n                      <TableRow key={emailStatus.id}>\n                        <TableCell style={{ padding: '24px 0px 12px 12px' }}>\n                          <VisibilityIcon\n                            sx={classes.preview}\n                            onClick={() => handlePreview(emailStatus)}\n                          />\n                        </TableCell>\n                        <TableCell>\n                          <Box sx={classes.title}>{emailStatus.email_template?.name || '-'}</Box>\n                        </TableCell>\n                        <TableCell>\n                          <Box>{`${emailStatus.created_by.firstname} ${emailStatus.created_by.lastname}`}</Box>\n                        </TableCell>\n                        <TableCell>\n                          {moment(emailStatus.created_at).format('D MMMM YYYY, h:mm A')}\n                        </TableCell>\n                        <TableCell>{emailStatus.from}</TableCell>\n                        <TableCell sx={{ textAlign: 'right' }}>\n                          {emailStatus.applications_count}\n                        </TableCell>\n                        <TableCell sx={classes.center}>\n                          {emailStatus.state == 'Sent' ? (\n                            <Box\n                              sx={{\n                                ...classes.state,\n                                backgroundColor: '#8CCF951F',\n                                color: '#8CCF95'\n                              }}\n                            >\n                              {emailStatus.state}\n                            </Box>\n                          ) : emailStatus.canceled_at ? (\n                            <Box\n                              sx={{ display: 'flex', alignItems: 'center', position: 'relative' }}\n                            >\n                              <Box\n                                sx={{ ...classes.unscheduledEmailDetails }}\n                                onMouseEnter={() => {\n                                  const newHoveredRows = [...unscheduledDetailsIsHovered];\n                                  newHoveredRows[index] = true;\n                                  setUnscheduledDetailsIsHovered(newHoveredRows);\n                                }}\n                                onMouseLeave={() => {\n                                  const newHoveredRows = [...unscheduledDetailsIsHovered];\n                                  newHoveredRows[index] = false;\n                                  setUnscheduledDetailsIsHovered(newHoveredRows);\n                                }}\n                              >\n                                Unscheduled\n                              </Box>\n                              <Box\n                                sx={{\n                                  display: unscheduledDetailsIsHovered[index] ? 'flex' : 'none',\n                                  flexDirection: 'column',\n                                  transform: 'translateY(4px)',\n                                  ...classes.unsheduledDetailsPopover\n                                }}\n                              >\n                                <Box sx={classes.unsheduledDetailsLabel}>Unscheduled by:</Box>\n                                <Box sx={classes.unsheduledDetailsInfo}>\n                                  {emailStatus.canceled_by.firstname}{' '}\n                                  {emailStatus.canceled_by.lastname}\n                                </Box>\n                                <Box sx={classes.unsheduledDetailsLabel}>Unscheduled at:</Box>\n                                <Box sx={classes.unsheduledDetailsInfo}>\n                                  {moment(emailStatus.canceled_at).format('D MMMM YYYY, h:mm A')}\n                                </Box>\n                              </Box>\n                            </Box>\n                          ) : (\n                            <Box sx={{ display: 'flex', alignItems: 'center' }}>\n                              <Button\n                                variant=\"contained\"\n                                color=\"secondary\"\n                                onClick={() => {\n                                  handleCancel(emailStatus.id);\n                                  setUnscheduleDialogOpen(true);\n                                }}\n                                disabled={isCancelling[index]}\n                                sx={{ ...classes.cancelEmailButton }}\n                                onMouseEnter={() => {\n                                  const newHoveredScheduleButton = [...hoveredScheduleButtons];\n                                  newHoveredScheduleButton[index] = true;\n                                  setHoveredScheduleButtons(newHoveredScheduleButton);\n                                }}\n                                onMouseLeave={() => {\n                                  const newHoveredScheduleButtons = [...hoveredScheduleButtons];\n                                  newHoveredScheduleButtons[index] = false;\n                                  setHoveredScheduleButtons(newHoveredScheduleButtons);\n                                }}\n                              >\n                                {isCancelling[index]\n                                  ? 'Cancelling...'\n                                  : hoveredScheduleButtons[index]\n                                    ? 'UnSchedule'\n                                    : 'Scheduled'}\n                              </Button>\n                            </Box>\n                          )}\n                        </TableCell>\n                        <TableCell>\n                          <Box sx={classes.details} onClick={() => handleOpen(emailStatus.id)}>\n                            <Box sx={classes.center}>More details</Box>\n                            <IconButton\n                              aria-label=\"expand row\"\n                              size=\"small\"\n                              disableFocusRipple={true}\n                              disableRipple={true}\n                            >\n                              {open.includes(emailStatus.id) ? (\n                                <KeyboardArrowDownIcon />\n                              ) : (\n                                <KeyboardArrowRightIcon />\n                              )}\n                            </IconButton>\n                          </Box>\n                        </TableCell>\n                      </TableRow>\n                      <TableRow style={{ borderBottom: '1px solid #f3f3f3' }}>\n                        <TableCell style={{ paddingBottom: '12px', paddingTop: '0px' }} colSpan={8}>\n                          <Collapse in={open.includes(emailStatus.id)} timeout=\"auto\" unmountOnExit>\n                            {emailStatus.filters && (\n                              <Box sx={classes.chipContainer} id=\"applied-filter-chips\">\n                                <Chip\n                                  sx={classes.filterLabel}\n                                  label=\"Filters Applied\"\n                                  variant=\"outlined\"\n                                />\n                                {Object.entries(emailStatus.filters).map((filter) => {\n                                  const [key, value] = filter;\n                                  const newKey = key == 'withoutRating' ? 'without rating' : key;\n                                  const newValue =\n                                    key == 'rating' ? `${value[0]}-${value[1]}` : value;\n                                  const label = `${newKey}: ${newValue}`;\n                                  return (\n                                    <div>\n                                      {value !== '' && (\n                                        <Chip\n                                          key={key}\n                                          sx={classes.chipItem}\n                                          label={label}\n                                          variant=\"outlined\"\n                                        />\n                                      )}\n                                    </div>\n                                  );\n                                })}\n                              </Box>\n                            )}\n                            <Box>\n                              <Box sx={classes.widgetContainer}>\n                                <Statistics\n                                  bounced={emailStatus.statistics.bounced}\n                                  bounced_pcent={emailStatus.statistics.bounced_pcent}\n                                  clicks={emailStatus.statistics.clicks}\n                                  clicks_pcent={emailStatus.statistics.clicks_pcent}\n                                  delivered={emailStatus.statistics.delivered}\n                                  delivered_pcent={emailStatus.statistics.delivered_pcent}\n                                  opened={emailStatus.statistics.opened}\n                                  opened_pcent={emailStatus.statistics.opened_pcent}\n                                  unsubscribed={emailStatus.statistics.unsubscribed}\n                                  unsubscribed_pcent={emailStatus.statistics.unsubscribed_pcent}\n                                  isLoading={isLoading}\n                                />\n                              </Box>\n                              <TableContainer sx={{ maxHeight: 440 }}>\n                                <Table\n                                  stickyHeader\n                                  aria-label=\"sticky table\"\n                                  sx={classes.candidateTableWrapper}\n                                >\n                                  <TableHead>\n                                    <TableRow>\n                                      <TableCell>ID</TableCell>\n                                      <TableCell>Candidate</TableCell>\n                                      <TableCell>Email</TableCell>\n                                      <TableCell>Status</TableCell>\n                                    </TableRow>\n                                  </TableHead>\n                                  <TableBody>\n                                    {emailStatus.applications.candidates.map((candidate) => (\n                                      <TableRow key={candidate.id}>\n                                        <TableCell>{candidate.id}</TableCell>\n                                        <TableCell>{candidate.candidate}</TableCell>\n                                        <TableCell>{candidate.email}</TableCell>\n                                        <TableCell sx={classes.status}>\n                                          <Box\n                                            sx={\n                                              StatusTypeIcon(candidate.status) && {\n                                                paddingRight: '10px'\n                                              }\n                                            }\n                                          >\n                                            {StatusTypeIcon(statusPastTense(candidate.status))}\n                                          </Box>\n                                          <Box>{statusPastTense(candidate.status)}</Box>\n                                        </TableCell>\n                                      </TableRow>\n                                    ))}\n                                  </TableBody>\n                                </Table>\n                              </TableContainer>\n                            </Box>\n                          </Collapse>\n                        </TableCell>\n                      </TableRow>\n                    </>\n                  ))}\n              </TableBody>\n            </Table>\n            {isLoading && (\n              <>\n                <Skeleton animation=\"wave\" height={60} />\n                <Skeleton animation=\"wave\" height={60} />\n                <Skeleton animation=\"wave\" height={60} />\n                <Skeleton animation=\"wave\" height={60} />\n              </>\n            )}\n          </TableContainer>\n          <Box sx={classes.paginationParent}>\n            <Box sx={classes.rowSelectContainer}>\n              <span>Rows per page: </span>\n              <FormControl>\n                <Select\n                  id=\"rows-per-page\"\n                  sx={classes.rowSelect}\n                  value={rowsPerPage}\n                  onChange={(e) => handleRowsPerPageChange(Number(e.target.value))}\n                  displayEmpty\n                  MenuProps={{ sx: classes.paginationMenuItems }}\n                >\n                  <MenuItem id=\"first-rpp-item\" value={10}>\n                    10\n                  </MenuItem>\n                  <MenuItem id=\"second-rpp-item\" value={20}>\n                    20\n                  </MenuItem>\n                  <MenuItem value={30}>30</MenuItem>\n                  <MenuItem value={40}>40</MenuItem>\n                  <MenuItem value={50}>50</MenuItem>\n                </Select>\n              </FormControl>\n            </Box>\n            <Box sx={classes.paginationContainer}>\n              <Pagination\n                id=\"pagination-menu\"\n                count={totalPages}\n                page={currentPage}\n                siblingCount={0}\n                onChange={handlePageChange}\n                sx={classes.pagination}\n              />\n              <span id=\"total-jobs\">{totalEmailStatuses} Total</span>\n            </Box>\n          </Box>\n        </>\n      )}\n      {!isLoading && emailStatuses?.length === 0 && (\n        <Box sx={{ ...classes.noEmailStatusContainer, margin: '100px 0px' }}>\n          <Box>\n            <NoEmailStatusSVG />\n          </Box>\n          <Box sx={classes.noEmailStatusesText}>No emails have been sent yet</Box>\n        </Box>\n      )}\n      {unscheduleDialogOpen && (\n        <GenericDialog\n          isDialogOpen={unscheduleDialogOpen}\n          setDialogOpen={setUnscheduleDialogOpen}\n          title=\"Unschedule Email Batch?\"\n          description=\"Are you sure you want to unschedule this email batch?\"\n          buttonCallback={() => {\n            handleCancel(selectedEmailStatusId);\n            setSelectedEmailStatusId(null);\n            setUnscheduleDialogOpen(false);\n          }}\n          callbackLoading={false}\n          buttonText=\"Unschedule\"\n          url=\"\"\n        />\n      )}\n      {previewId && isDialogOpen && (\n        <EmailPreviewModal\n          title={'Email Template'}\n          subject={subject}\n          body={body}\n          isDialogOpen={isDialogOpen}\n          setDialogOpen={setIsDialogOpen}\n          dialogId={previewId}\n        />\n      )}\n    </>\n  );\n}\n","import React from 'react';\n\nexport default function NoEmailStatusSVG() {\nreturn (<svg \nid=\"Group_299\" \ndata-name=\"Group 299\" \nxmlns=\"http://www.w3.org/2000/svg\" \nxmlnsXlink=\"http://www.w3.org/1999/xlink\" \nwidth=\"116.117\" height=\"115.798\" \nviewBox=\"0 0 116.117 115.798\">\n<defs>\n  <clipPath id=\"clip-path\">\n    <rect id=\"Rectangle_619\" data-name=\"Rectangle 619\" width=\"116.117\" height=\"115.798\" fill=\"none\"/>\n  </clipPath>\n</defs>\n<g id=\"Group_298\" data-name=\"Group 298\" clipPath=\"url(#clip-path)\">\n  <path id=\"Path_128\" data-name=\"Path 128\" d=\"M116.117,57.813A57.783,57.783,0,1,1,112.626,38a58.07,58.07,0,0,1,3.491,19.81M58.159,115.469A57.569,57.569,0,1,0,.652,57.739a57.46,57.46,0,0,0,57.507,57.73\" transform=\"translate(0 0)\" fill=\"#cfcfcf\"/>\n  <path id=\"Path_129\" data-name=\"Path 129\" d=\"M61.743,117.287a57.569,57.569,0,1,1,57.305-57.293,57.685,57.685,0,0,1-57.305,57.293M96.434,88.636l.741-.844-1.249-.084c.252-.038.5-.1.756-.112,4.377-.266,8.754-.538,13.132-.778.637-.035.859-.266.808-.893-.09-1.1-.126-2.2-.193-3.3q-.482-7.948-.97-15.9-.657-10.674-1.32-21.347-.545-8.869-1.072-17.739c-.034-.582-.27-.751-.817-.706-1.124.093-2.251.154-3.378.219q-4.607.267-9.215.527l-1.086-1.223a2.23,2.23,0,0,0-.368-.667Q74.74,10.815,52.151,15.215c-.313.061-.613.183-.991.3.22.457.389.825.572,1.186Q69.064,50.864,86.4,85.028q2.175,4.288,4.349,8.577c.2.39.427.827.9.366,1.646-1.613,3.262-3.258,4.873-4.906.058-.059-.051-.282-.083-.428M25.144,91.867,29,91.727a3.3,3.3,0,0,1,1.863,1.4,9.51,9.51,0,0,0,1.028,1.217,45.75,45.75,0,0,0,48.579,6.806c.247-.113.481-.256.768-.41-.165-.345-.29-.622-.427-.892Q72.53,83.52,64.245,67.191,52.411,43.864,40.576,20.536c-.465-.917-.485-.923-1.37-.423a45.105,45.105,0,0,0-11.487,9.181c-.318.354-.576.761-.862,1.143l-.775,1.329.49.1a4.085,4.085,0,0,1-.526.1c-4.2.252-8.394.523-12.594.724-.689.033-.827.25-.787.853.212,3.224.406,6.449.6,9.674q.694,11.286,1.384,22.573.786,12.9,1.549,25.8c.038.649.26.836.881.793,2.686-.189,5.373-.348,8.061-.517\" transform=\"translate(-3.584 -1.819)\" fill=\"#fff\"/>\n  <path id=\"Path_130\" data-name=\"Path 130\" d=\"M369.019,166.181a3.75,3.75,0,0,1,.906-.3q11.579-.721,23.16-1.414c3.067-.188,6.133-.4,9.2-.606q4.608-.263,9.215-.527c1.127-.065,2.254-.126,3.378-.219.546-.045.783.124.817.706q.517,8.87,1.072,17.739.656,10.674,1.32,21.347.489,7.948.97,15.9c.067,1.1.1,2.2.193,3.3.051.627-.171.858-.808.893-4.378.241-8.755.512-13.132.778-.253.015-.5.074-.756.112l-5.9.307c-.1-.6.387-.515.7-.544.919-.084,1.842-.125,2.763-.18q6.988-.413,13.975-.827c.567-.034,1.132-.11,1.919-.189l-32.688-22.3.084-.248a1.952,1.952,0,0,1,.631.014,3.136,3.136,0,0,1,.646.412q15.573,10.628,31.146,21.256c.195.133.4.244.732.441l-3.552-58.051c-.4.335-.632.521-.855.717q-2.776,2.436-5.549,4.875-8.307,7.274-16.617,14.544-4.6,4.03-9.2,8.065a5.5,5.5,0,0,1-.8.49l-.187-.284,32.721-28.668c-.461,0-.708-.013-.954,0q-5.106.306-10.211.617-8.062.484-16.124.965c-2.687.164-5.372.365-8.059.53q-4.607.283-9.216.522a4.111,4.111,0,0,1-.943-.171\" transform=\"translate(-312.211 -138)\" fill=\"#cfcfcf\"/>\n  <path id=\"Path_131\" data-name=\"Path 131\" d=\"M72.866,189.992q5.1-.286,10.191-.571c2.4-.131,4.8-.252,7.2-.377a3.181,3.181,0,0,1-.749.289c-.661.079-1.329.106-1.995.145q-12.249.73-24.5,1.459c-.922.055-1.842.134-2.763.2l-.029.178,48.558,33.022c-.8.484-1.17-.058-1.556-.318-4.039-2.728-8.061-5.481-12.091-8.222Q77.7,203.94,60.259,192.089c-.159-.108-.336-.188-.612-.34l3.543,57.933c.5-.422.829-.7,1.155-.984q2.722-2.381,5.442-4.764,8.512-7.45,17.025-14.9,5.444-4.763,10.9-9.517a3.21,3.21,0,0,1,.692-.355l.174.275L63.7,249.962l.109.181,6.514-.308,1.116.156c-2.687.17-5.375.328-8.061.517-.621.044-.843-.144-.881-.792q-.75-12.9-1.549-25.8-.687-11.287-1.384-22.573c-.2-3.225-.392-6.45-.6-9.674-.04-.6.1-.82.787-.853,4.2-.2,8.4-.472,12.594-.724a4.08,4.08,0,0,0,.526-.1\" transform=\"translate(-49.877 -159.942)\" fill=\"#cfcfcf\"/>\n  <path id=\"Path_132\" data-name=\"Path 132\" d=\"M169.35,127.827q-1.98-3.951-3.962-7.9c-.448-.891-.9-1.778-1.431-2.812-1.295.831-2.561,1.586-3.767,2.429a45.464,45.464,0,0,0-8.069,7.209,3.876,3.876,0,0,1-.939.586c.286-.382.544-.789.862-1.143a45.108,45.108,0,0,1,11.487-9.181c.885-.5.9-.494,1.37.423q11.836,23.327,23.669,46.655,8.284,16.329,16.568,32.659c.137.27.262.547.427.892-.287.154-.521.3-.768.41a45.75,45.75,0,0,1-48.579-6.806,9.535,9.535,0,0,1-1.028-1.217,4.007,4.007,0,0,1,1.057.476A44.892,44.892,0,0,0,177.686,201a44.277,44.277,0,0,0,26.349-2.951c.165-.071.327-.149.485-.233a2.456,2.456,0,0,0,.283-.236l-6.062-11.864q-2.929-5.8-5.858-11.6-9.846-19.417-19.7-38.829c-1.265-2.491-2.553-4.969-3.831-7.453\" transform=\"translate(-127.909 -98.718)\" fill=\"#cfcfcf\"/>\n  <path id=\"Path_133\" data-name=\"Path 133\" d=\"M350.467,92.773a3.6,3.6,0,0,1-.992-.438,45.043,45.043,0,0,0-21.737-10.7,44.435,44.435,0,0,0-17.114.076c-.222.044-.438.119-.689.188a2.229,2.229,0,0,0,.11.4q3.572,7.023,7.15,14.043c.139.3.268.61.418.906q9.9,19.512,19.807,39.022,4.6,9.05,9.2,18.095l2.8,5.568c.962-.95,1.837-1.8,2.692-2.663.75-.76,1.479-1.542,2.217-2.315.031.146.141.369.083.428-1.611,1.648-3.227,3.293-4.873,4.906-.47.46-.7.024-.9-.366q-2.172-4.29-4.349-8.577-17.333-34.164-34.666-68.33c-.183-.361-.352-.729-.572-1.186.377-.115.678-.237.99-.3q22.583-4.4,40.053,10.577a2.241,2.241,0,0,1,.368.667\" transform=\"translate(-261.478 -68.133)\" fill=\"#cfcfcf\"/>\n  <path id=\"Path_134\" data-name=\"Path 134\" d=\"M133.922,581.814l-1.115-.155,6.22-.414,1.277.158-2.525.27-3.858.141\" transform=\"translate(-112.362 -491.766)\" fill=\"#cfcfcf\"/>\n  <path id=\"Path_135\" data-name=\"Path 135\" d=\"M80.357,249.421l-6.221.414-6.514.308-.109-.181,34.876-30.524-.174-.275a3.2,3.2,0,0,0-.692.355q-5.456,4.749-10.9,9.517-8.513,7.448-17.025,14.9-2.721,2.381-5.442,4.764c-.326.285-.659.561-1.155.984-1.186-19.385-2.361-38.6-3.543-57.933.276.152.454.232.612.34Q81.514,203.941,98.951,215.8c4.03,2.741,8.052,5.494,12.091,8.222.386.261.759.8,1.556.318L64.04,191.317l.029-.178c.921-.068,1.841-.146,2.762-.2q12.249-.733,24.5-1.459c.666-.04,1.333-.066,1.995-.145a3.184,3.184,0,0,0,.749-.289l1.059.006c1.277,2.484,2.566,4.962,3.831,7.453q9.856,19.411,19.7,38.829,2.939,5.8,5.858,11.6l-.9,0a3.222,3.222,0,0,0-.72-.14c-.9.03-1.791.083-2.686.148-1.148.083-2.294.186-3.44.28-2.89.157-5.781.3-8.67.476-4.168.252-8.335.527-12.5.792l-3.918.264c-.737.055-1.473.12-2.21.162q-4.558.256-9.117.5\" transform=\"translate(-53.692 -159.942)\" fill=\"#eaeaea\"/>\n  <path id=\"Path_136\" data-name=\"Path 136\" d=\"M272.245,568.263c4.167-.265,8.334-.54,12.5-.792,2.889-.175,5.78-.319,8.67-.476l1.123.151c-4.039.259-8.077.528-12.116.774-2.965.18-5.933.33-8.9.493l-1.28-.15\" transform=\"translate(-230.335 -479.71)\" fill=\"#cfcfcf\"/>\n  <path id=\"Path_137\" data-name=\"Path 137\" d=\"M173.214,577.613q4.559-.249,9.117-.5c.737-.041,1.473-.107,2.21-.162l.964.158-11.015.661-1.277-.158\" transform=\"translate(-146.549 -488.134)\" fill=\"#cfcfcf\"/>\n  <path id=\"Path_138\" data-name=\"Path 138\" d=\"M410.9,564.8l-1.123-.151c1.146-.094,2.292-.2,3.44-.28.894-.065,1.79-.118,2.686-.148a3.209,3.209,0,0,1,.72.14c-.655.085-1.309.2-1.967.247-1.25.086-2.5.13-3.756.192\" transform=\"translate(-346.696 -477.358)\" fill=\"#cfcfcf\"/>\n  <path id=\"Path_139\" data-name=\"Path 139\" d=\"M247.762,575.656l-.965-.158,3.917-.264,1.28.15-4.233.272\" transform=\"translate(-208.804 -486.68)\" fill=\"#cfcfcf\"/>\n  <path id=\"Path_140\" data-name=\"Path 140\" d=\"M392.657,227.5l-1.3.03q-4.6-9.047-9.2-18.095-9.907-19.509-19.807-39.022c-.15-.3-.279-.6-.418-.906l1.091-.024a4.109,4.109,0,0,0,.943.171q4.609-.239,9.216-.522c2.687-.165,5.372-.366,8.059-.53q8.061-.493,16.124-.965,5.106-.306,10.211-.617c.246-.015.493,0,.954,0l-32.721,28.668.187.284a5.491,5.491,0,0,0,.8-.49q4.608-4.023,9.2-8.065,8.307-7.274,16.617-14.544,2.778-2.433,5.549-4.875c.223-.2.455-.382.855-.717,1.189,19.428,2.365,38.653,3.552,58.051-.328-.2-.537-.308-.732-.441q-15.574-10.626-31.146-21.256a3.139,3.139,0,0,0-.646-.412,1.951,1.951,0,0,0-.631-.014l-.084.248,32.689,22.3c-.787.079-1.352.155-1.919.189q-6.987.42-13.975.827c-.922.054-1.844.1-2.763.18-.314.029-.8-.056-.7.544\" transform=\"translate(-306.213 -141.3)\" fill=\"#eaeaea\"/>\n</g>\n</svg>)\n}","import React from 'react';\n\nexport default function StatusTypeOcpm(status: string) {\n  switch (status) {\n    case 'clicked':\n      return (\n        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"20\" viewBox=\"16 16 22 22\">\n          <g id=\"Group_579\" data-name=\"Group 579\" transform=\"translate(-899 -710)\">\n            <g id=\"MDI_cursor-default-click\" data-name=\"MDI / cursor-default-click\" transform=\"translate(912.333 723.833)\">\n              <g id=\"Boundary\" fill=\"#084d6d\" stroke=\"rgba(0,0,0,0)\" strokeWidth=\"1\" opacity=\"0\">\n                <rect width=\"26.334\" height=\"26.334\" stroke=\"none\"/>\n                <rect x=\"0.5\" y=\"0.5\" width=\"25.334\" height=\"25.334\" fill=\"none\"/>\n              </g>\n              <path id=\"Path_cursor-default-click\" data-name=\"Path / cursor-default-click\" d=\"M11.612,9.535a.834.834,0,0,0-.834.834V22.933a.834.834,0,0,0,.834.834.845.845,0,0,0,.527-.176l2.1-1.7,1.821,3.972a.835.835,0,0,0,.757.472.558.558,0,0,0,.362-.088l3.028-1.4a.815.815,0,0,0,.4-1.108L18.766,19.75l2.644-.494a.965.965,0,0,0,.472-.285.824.824,0,0,0-.132-1.185l-9.59-8.065-.011.011a.829.829,0,0,0-.538-.2m4.652,1.437V8.778H21.75v2.194H16.264M14.98,5.223l3.105-3.105,1.547,1.547L16.528,6.77,14.98,5.223M10.778,0h2.194V5.486H10.778V0M4.118,16.086,7.223,12.98,8.77,14.528,5.665,17.633,4.118,16.086m0-12.421L5.665,2.118,8.77,5.223,7.223,6.77,4.118,3.665m3.369,7.308H2V8.778H7.486v2.194\" transform=\"translate(1.292)\" fill=\"#084d6d\"/>\n            </g>\n          </g>\n        </svg>\n      );\n    case 'delivered':\n      return (\n        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"12 14 28 28\">\n          <g id=\"Group_577\" data-name=\"Group 577\" transform=\"translate(-415 -710)\">\n            <g id=\"MDI_account-multiple-check\" data-name=\"MDI / account-multiple-check\" transform=\"translate(426.592 721.592)\">\n              <g id=\"Boundary\" fill=\"#084d6d\" stroke=\"rgba(0,0,0,0)\" strokeWidth=\"1\" opacity=\"0\">\n                <rect width=\"29.815\" height=\"29.815\" stroke=\"none\"/>\n                <rect x=\"0.5\" y=\"0.5\" width=\"28.815\" height=\"28.815\" fill=\"none\"/>\n              </g>\n              <path id=\"Path_account-multiple-check\" data-name=\"Path / account-multiple-check\" d=\"M23.361,19.908v2.485H8.454V19.908s0-4.969,7.454-4.969,7.454,4.969,7.454,4.969M19.634,8.727a3.727,3.727,0,1,0-3.727,3.727,3.727,3.727,0,0,0,3.727-3.727m3.975,6.286a6.957,6.957,0,0,1,2.236,4.895v2.485h3.727V19.908s0-4.286-5.963-4.895M22.119,5a3.615,3.615,0,0,0-1.106.174,6.211,6.211,0,0,1,0,7.106,3.615,3.615,0,0,0,1.106.174,3.727,3.727,0,1,0,0-7.454M8.876,9.87l1.441,1.752-5.9,5.9L1,13.8l1.441-1.441,1.975,1.963L8.876,9.87\" transform=\"translate(0.242 1.211)\" fill=\"#084d6d\"/>\n            </g>\n          </g>\n        </svg>\n      );\n    case 'opened':\n      return (\n        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"20\" viewBox=\"16 16 22 22\">\n          <g id=\"Group_578\" data-name=\"Group 578\" transform=\"translate(-657 -710)\">\n            <g id=\"MDI_email-open\" data-name=\"MDI / email-open\" transform=\"translate(671.5 724.5)\">\n              <g id=\"Boundary\" fill=\"#084d6d\" stroke=\"rgba(0,0,0,0)\" strokeWidth=\"1\" opacity=\"0\">\n                <rect width=\"24\" height=\"24\" stroke=\"none\"/>\n                <rect x=\"0.5\" y=\"0.5\" width=\"23\" height=\"23\" fill=\"none\"/>\n              </g>\n              <path id=\"Path_email-open\" data-name=\"Path / email-open\" d=\"M4,8l8,5,8-5h0L12,3,4,8H4M22,8V18a2,2,0,0,1-2,2H4a2,2,0,0,1-2-2V8a1.991,1.991,0,0,1,.97-1.71L12,.64l9.03,5.65A1.991,1.991,0,0,1,22,8Z\" transform=\"translate(0 1.36)\" fill=\"#084d6d\"/>\n            </g>\n          </g>\n        </svg>\n      );\n    case 'bounced':\n      return (\n        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"20\" viewBox=\"16 16 22 22\">\n          <g id=\"Group_580\" data-name=\"Group 580\" transform=\"translate(-1141 -710)\">\n            <g id=\"MDI_close-thick\" data-name=\"MDI / close-thick\" transform=\"translate(1153.658 722.658)\">\n              <g id=\"Boundary\" fill=\"#084d6d\" stroke=\"rgba(0,0,0,0)\" strokeWidth=\"1\" opacity=\"0\">\n                <rect width=\"27.684\" height=\"27.684\" stroke=\"none\"/>\n                <rect x=\"0.5\" y=\"0.5\" width=\"26.684\" height=\"26.684\" fill=\"none\"/>\n              </g>\n              <path id=\"Path_close-thick\" data-name=\"Path / close-thick\" d=\"M22.456,7.357,19.1,4,13.228,9.871,7.357,4,4,7.357l5.871,5.871L4,19.1l3.357,3.357,5.871-5.871L19.1,22.456,22.456,19.1l-5.871-5.871Z\" transform=\"translate(0.614 0.614)\" fill=\"#084d6d\"/>\n            </g>\n          </g>\n        </svg>\n      );\n    case 'unsubscribed':\n      return (\n        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"20\" viewBox=\"22 16 22 22\">\n          <g id=\"Group_581\" data-name=\"Group 581\" transform=\"translate(-1379 -710)\">\n            <g id=\"MDI_exclamation-thick\" data-name=\"MDI / exclamation-thick\" transform=\"translate(1393 723.114)\">\n              <g id=\"Boundary\" transform=\"translate(0 0.886)\" fill=\"#084d6d\" stroke=\"rgba(0,0,0,0)\" strokeWidth=\"1\" opacity=\"0\">\n                <rect width=\"25\" height=\"25\" stroke=\"none\"/>\n                <rect x=\"0.5\" y=\"0.5\" width=\"24\" height=\"24\" fill=\"none\"/>\n              </g>\n              <path id=\"Path_exclamation-thick\" data-name=\"Path / exclamation-thick\" d=\"M10,3h4.3V14.838H10V3m0,19.371v-4.3h4.3v4.3Z\" transform=\"translate(0.762 0.286)\" fill=\"#084d6d\"/>\n            </g>\n          </g>\n        </svg>\n      );\n    default:\n      return ( null );\n  }\n}\n","import React from 'react';\n\nexport default function BouncedSVG() {\nreturn (<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53\" height=\"53\" viewBox=\"0 0 53 53\">\n<g id=\"Group_580\" data-name=\"Group 580\" transform=\"translate(-1141 -710)\">\n  <rect id=\"Rectangle_676\" data-name=\"Rectangle 676\" width=\"53\" height=\"53\" rx=\"16\" transform=\"translate(1141 710)\" fill=\"#edf2f5\"/>\n  <g id=\"MDI_close-thick\" data-name=\"MDI / close-thick\" transform=\"translate(1153.658 722.658)\">\n    <g id=\"Boundary\" fill=\"#084d6d\" stroke=\"rgba(0,0,0,0)\" strokeWidth=\"1\" opacity=\"0\">\n      <rect width=\"27.684\" height=\"27.684\" stroke=\"none\"/>\n      <rect x=\"0.5\" y=\"0.5\" width=\"26.684\" height=\"26.684\" fill=\"none\"/>\n    </g>\n    <path id=\"Path_close-thick\" data-name=\"Path / close-thick\" d=\"M22.456,7.357,19.1,4,13.228,9.871,7.357,4,4,7.357l5.871,5.871L4,19.1l3.357,3.357,5.871-5.871L19.1,22.456,22.456,19.1l-5.871-5.871Z\" transform=\"translate(0.614 0.614)\" fill=\"#084d6d\"/>\n  </g>\n</g>\n</svg>)\n}","import React from 'react';\n\nexport default function ClicksSVG() {\nreturn (<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53\" height=\"53\" viewBox=\"0 0 53 53\">\n<g id=\"Group_579\" data-name=\"Group 579\" transform=\"translate(-899 -710)\">\n  <rect id=\"Rectangle_674\" data-name=\"Rectangle 674\" width=\"53\" height=\"53\" rx=\"16\" transform=\"translate(899 710)\" fill=\"#edf2f5\"/>\n  <g id=\"MDI_cursor-default-click\" data-name=\"MDI / cursor-default-click\" transform=\"translate(912.333 723.833)\">\n    <g id=\"Boundary\" fill=\"#084d6d\" stroke=\"rgba(0,0,0,0)\" strokeWidth=\"1\" opacity=\"0\">\n      <rect width=\"26.334\" height=\"26.334\" stroke=\"none\"/>\n      <rect x=\"0.5\" y=\"0.5\" width=\"25.334\" height=\"25.334\" fill=\"none\"/>\n    </g>\n    <path id=\"Path_cursor-default-click\" data-name=\"Path / cursor-default-click\" d=\"M11.612,9.535a.834.834,0,0,0-.834.834V22.933a.834.834,0,0,0,.834.834.845.845,0,0,0,.527-.176l2.1-1.7,1.821,3.972a.835.835,0,0,0,.757.472.558.558,0,0,0,.362-.088l3.028-1.4a.815.815,0,0,0,.4-1.108L18.766,19.75l2.644-.494a.965.965,0,0,0,.472-.285.824.824,0,0,0-.132-1.185l-9.59-8.065-.011.011a.829.829,0,0,0-.538-.2m4.652,1.437V8.778H21.75v2.194H16.264M14.98,5.223l3.105-3.105,1.547,1.547L16.528,6.77,14.98,5.223M10.778,0h2.194V5.486H10.778V0M4.118,16.086,7.223,12.98,8.77,14.528,5.665,17.633,4.118,16.086m0-12.421L5.665,2.118,8.77,5.223,7.223,6.77,4.118,3.665m3.369,7.308H2V8.778H7.486v2.194\" transform=\"translate(1.292)\" fill=\"#084d6d\"/>\n  </g>\n</g>\n</svg>)\n}","import React from 'react';\n\nexport default function DeliveredSVG() {\nreturn (<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53\" height=\"53\" viewBox=\"0 0 53 53\">\n<g id=\"Group_577\" data-name=\"Group 577\" transform=\"translate(-415 -710)\">\n  <rect id=\"Rectangle_59\" data-name=\"Rectangle 59\" width=\"53\" height=\"53\" rx=\"16\" transform=\"translate(415 710)\" fill=\"#edf2f5\"/>\n  <g id=\"MDI_account-multiple-check\" data-name=\"MDI / account-multiple-check\" transform=\"translate(426.592 721.592)\">\n    <g id=\"Boundary\" fill=\"#084d6d\" stroke=\"rgba(0,0,0,0)\" strokeWidth=\"1\" opacity=\"0\">\n      <rect width=\"29.815\" height=\"29.815\" stroke=\"none\"/>\n      <rect x=\"0.5\" y=\"0.5\" width=\"28.815\" height=\"28.815\" fill=\"none\"/>\n    </g>\n    <path id=\"Path_account-multiple-check\" data-name=\"Path / account-multiple-check\" d=\"M23.361,19.908v2.485H8.454V19.908s0-4.969,7.454-4.969,7.454,4.969,7.454,4.969M19.634,8.727a3.727,3.727,0,1,0-3.727,3.727,3.727,3.727,0,0,0,3.727-3.727m3.975,6.286a6.957,6.957,0,0,1,2.236,4.895v2.485h3.727V19.908s0-4.286-5.963-4.895M22.119,5a3.615,3.615,0,0,0-1.106.174,6.211,6.211,0,0,1,0,7.106,3.615,3.615,0,0,0,1.106.174,3.727,3.727,0,1,0,0-7.454M8.876,9.87l1.441,1.752-5.9,5.9L1,13.8l1.441-1.441,1.975,1.963L8.876,9.87\" transform=\"translate(0.242 1.211)\" fill=\"#084d6d\"/>\n  </g>\n</g>\n</svg>)\n}","import React from 'react';\n\nexport default function OpenedSVG() {\nreturn (<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53\" height=\"53\" viewBox=\"0 0 53 53\">\n<g id=\"Group_578\" data-name=\"Group 578\" transform=\"translate(-657 -710)\">\n  <rect id=\"Rectangle_672\" data-name=\"Rectangle 672\" width=\"53\" height=\"53\" rx=\"16\" transform=\"translate(657 710)\" fill=\"#edf2f5\"/>\n  <g id=\"MDI_email-open\" data-name=\"MDI / email-open\" transform=\"translate(671.5 724.5)\">\n    <g id=\"Boundary\" fill=\"#084d6d\" stroke=\"rgba(0,0,0,0)\" strokeWidth=\"1\" opacity=\"0\">\n      <rect width=\"24\" height=\"24\" stroke=\"none\"/>\n      <rect x=\"0.5\" y=\"0.5\" width=\"23\" height=\"23\" fill=\"none\"/>\n    </g>\n    <path id=\"Path_email-open\" data-name=\"Path / email-open\" d=\"M4,8l8,5,8-5h0L12,3,4,8H4M22,8V18a2,2,0,0,1-2,2H4a2,2,0,0,1-2-2V8a1.991,1.991,0,0,1,.97-1.71L12,.64l9.03,5.65A1.991,1.991,0,0,1,22,8Z\" transform=\"translate(0 1.36)\" fill=\"#084d6d\"/>\n  </g>\n</g>\n</svg>)\n}","import React from 'react';\nimport Box from '@mui/material/Box';\nimport Skeleton from '@mui/material/Skeleton';\nimport BouncedSVG from './BouncedSVG'\nimport ClicksSVG from './ClicksSVG'\nimport DeliveredSVG from './DeliveredSVG'\nimport OpenedSVG from './OpenedSVG'\nimport UnsubscribedSVG from './UnsubscribedSVG'\nimport { classes } from './styles';\n\ninterface IStatisticsProps {\n    bounced: number,\n    bounced_pcent: number,\n    clicks: number,\n    clicks_pcent: number,\n    delivered: number,\n    delivered_pcent: number,\n    opened: number,\n    opened_pcent: number,\n    unsubscribed: number,\n    unsubscribed_pcent: number,\n    isLoading: boolean,\n}\n\nexport default function Statistics({\n  bounced,\n  bounced_pcent,\n  clicks,\n  clicks_pcent,\n  delivered,\n  delivered_pcent,\n  opened,\n  opened_pcent,\n  unsubscribed,\n  unsubscribed_pcent,\n  isLoading\n}: IStatisticsProps) {\n  return (\n    <Box sx={classes.subWidget}>\n      <Box sx={classes.widgetBlockContainer}>\n        <Box sx={classes.widgetBlock}>\n          <Box sx={classes.widgetBlockIcon}>\n            <DeliveredSVG />\n          </Box>\n          <Box sx={classes.widgetBlockText}>\n            {isLoading ? (\n              <Skeleton animation=\"wave\" width={80} height={30} />\n            ) : (\n              <Box sx={classes.blockCount}>{`${delivered_pcent}%`}</Box>\n            )}\n            <Box sx={classes.blockTitle}>{`Delivered (${delivered})`}</Box>\n          </Box>\n        </Box>\n        <Box sx={classes.widgetBlock}>\n          <Box sx={classes.widgetBlockIcon}>\n            <OpenedSVG />\n          </Box>\n          <Box sx={classes.widgetBlockText}>\n            {isLoading ? (\n              <Skeleton animation=\"wave\" width={80} height={30} />\n            ) : (\n              <Box sx={classes.blockCount}>{`${opened_pcent}%`}</Box>\n            )}\n            <Box sx={classes.blockTitle}>Opened ({opened})</Box>\n          </Box>\n        </Box>\n        <Box sx={classes.widgetBlock}>\n          <Box sx={classes.widgetBlockIcon}>\n            <ClicksSVG />\n          </Box>\n          <Box sx={classes.widgetBlockText}>\n            {isLoading ? (\n              <Skeleton animation=\"wave\" width={80} height={30} />\n            ) : (\n              <Box sx={classes.blockCount}>{`${clicks_pcent}%`}</Box>\n            )}\n            <Box sx={classes.blockTitle}>Clicks ({clicks})</Box>\n          </Box>\n        </Box>\n        <Box sx={classes.widgetBlock}>\n          <Box sx={classes.widgetBlockIcon}>\n            <BouncedSVG />\n          </Box>\n          <Box sx={classes.widgetBlockText}>\n            {isLoading ? (\n              <Skeleton animation=\"wave\" width={80} height={30} />\n            ) : (\n              <Box sx={classes.blockCount}>{`${bounced_pcent}%`}</Box>\n            )}\n            <Box sx={classes.blockTitle}>Bounced ({bounced})</Box>\n          </Box>\n        </Box>\n        <Box sx={classes.widgetBlock}>\n          <Box sx={classes.widgetBlockIcon}>\n            <UnsubscribedSVG />\n          </Box>\n          <Box sx={classes.widgetBlockText}>\n            {isLoading ? (\n              <Skeleton animation=\"wave\" width={80} height={30} />\n            ) : (\n              <Box sx={classes.blockCount}>{`${unsubscribed_pcent}%`}</Box>\n            )}\n            <Box sx={classes.blockTitle}>Unsubscribed ({unsubscribed})</Box>\n          </Box>\n        </Box>\n      </Box>\n    </Box>\n  );\n}\n","import React from 'react';\n\nexport default function UnsubscribedSVG() {\nreturn (<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53\" height=\"53\" viewBox=\"0 0 53 53\">\n<g id=\"Group_581\" data-name=\"Group 581\" transform=\"translate(-1379 -710)\">\n  <rect id=\"Rectangle_678\" data-name=\"Rectangle 678\" width=\"53\" height=\"53\" rx=\"16\" transform=\"translate(1379 710)\" fill=\"#edf2f5\"/>\n  <g id=\"MDI_exclamation-thick\" data-name=\"MDI / exclamation-thick\" transform=\"translate(1393 723.114)\">\n    <g id=\"Boundary\" transform=\"translate(0 0.886)\" fill=\"#084d6d\" stroke=\"rgba(0,0,0,0)\" strokeWidth=\"1\" opacity=\"0\">\n      <rect width=\"25\" height=\"25\" stroke=\"none\"/>\n      <rect x=\"0.5\" y=\"0.5\" width=\"24\" height=\"24\" fill=\"none\"/>\n    </g>\n    <path id=\"Path_exclamation-thick\" data-name=\"Path / exclamation-thick\" d=\"M10,3h4.3V14.838H10V3m0,19.371v-4.3h4.3v4.3Z\" transform=\"translate(0.762 0.286)\" fill=\"#084d6d\"/>\n  </g>\n</g>\n</svg>)\n}","import React, { useState, useEffect, useCallback, useRef, FC } from 'react';\nimport Box from '@mui/material/Box';\nimport Lottie from 'react-lottie';\nimport chartLoader from './chart-loader.json';\nimport DatePicker from './DatePicker';\nimport moment from 'moment';\nimport { IChartData } from '../../Components/Charts/types';\nimport { classes } from './styles';\nimport { IStyle } from '../types';\nimport Api from '../API';\nimport { CSSProperties } from '@material-ui/core/styles/withStyles';\n\nexport default function ChartWidget({\n  Chart,\n  ChartIcon,\n  chartTitle,\n  url,\n  apiKey\n}: {\n  Chart: ({ data }: { data: IChartData }) => JSX.Element;\n  ChartIcon: ({ sx }: { sx: CSSProperties }) => JSX.Element;\n  chartTitle: string;\n  url: string;\n  apiKey: string;\n}) {\n  const [data, setData] = useState<IChartData>();\n  const [dateFrom, setDateFrom] = useState<Date>(moment().subtract(30, 'days').toDate());\n  const [dateTo, setDateTo] = useState<Date>(moment().toDate());\n  const [dateError, setDateError] = useState(false);\n  const [loading, setLoading] = useState(true);\n\n  const chartAnimation = {\n    loop: true,\n    autoplay: true,\n    animationData: chartLoader,\n    rendererSettings: {\n      preserveAspectRatio: 'xMidYMid slice'\n    }\n  };\n\n  const fetchData = useCallback(\n    async (fromDate: Date, toDate: Date) => {\n      setLoading(true);\n      try {\n        const response = await Api.getGraphData(\n          url,\n          { 'X-api-authenticate': apiKey },\n          {\n            start_date: moment(fromDate).format('YYYY-MM-DD'),\n            end_date: moment(toDate).format('YYYY-MM-DD')\n          }\n        );\n        setData(response.dataset);\n      } catch (error) {\n        console.error(error);\n      } finally {\n        setLoading(false);\n      }\n    },\n    [apiKey, url]\n  );\n\n  useEffect(() => {\n    fetchData(moment().subtract(30, 'days').toDate(), moment().toDate());\n  }, [fetchData]);\n\n  const handleDateChange = (type: 'from' | 'to', date: Date | null) => {\n    if (date) {\n      if (type === 'from') {\n        setDateFrom(date);\n      } else {\n        setDateTo(date);\n      }\n    }\n    const diff = moment(type === 'to' ? date : dateTo).diff(\n      moment(type === 'from' ? date : dateFrom),\n      'days'\n    );\n    if (diff > 0 && diff < 366) {\n      setDateError(false);\n      fetchData(type === 'from' ? date : dateFrom, type === 'to' ? date : dateTo);\n    } else {\n      setDateError(true);\n    }\n  };\n\n  return (\n    <Box sx={classes.widget}>\n      <Box sx={classes.titleAndDateContainer}>\n        <Box sx={classes.title}>{chartTitle}</Box>\n        <DatePicker dateFrom={dateFrom} dateTo={dateTo} handleDateChange={handleDateChange} />\n        <Box sx={classes.error}>{dateError ? 'Invalid date range (365 days maximum)' : ''}</Box>\n      </Box>\n      <Box\n        sx={\n          loading\n            ? { ...classes.loading, backdropFilter: 'blur(3px)', opacity: 1, zIndex: 1 }\n            : classes.loading\n        }\n      >\n        <Lottie options={chartAnimation} height={400} width={400} style={{ zIndex: 2 }} />\n      </Box>\n      {data?.data && data.data.length === 0 ? (\n        <Box sx={classes.noDataContainer}>\n          <ChartIcon sx={classes.noDataIcon} />\n          <Box sx={classes.noData}>No data available for selected time range</Box>\n        </Box>\n      ) : (\n        <Box sx={classes.chart}>\n          <Chart data={data} />\n        </Box>\n      )}\n    </Box>\n  );\n}\n","import React from 'react';\nimport Box from '@mui/material/Box';\nimport { AdapterMoment } from '@mui/x-date-pickers/AdapterMoment';\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\nimport { classes } from './styles';\nimport { SingleDatePicker } from '../../Components/CustomUIElements/SingleDatePicker';\n\nexport default function DatePicker({\n  dateFrom,\n  dateTo,\n  handleDateChange\n}: {\n  dateFrom: Date;\n  dateTo: Date;\n  handleDateChange: (type: 'from' | 'to', date: Date | null) => void;\n}) {\n  return (\n    <Box sx={classes.date}>\n      <LocalizationProvider dateAdapter={AdapterMoment}>\n        <SingleDatePicker\n          value={dateFrom}\n          inputStyles={classes.datePicker}\n          onChange={(date) => {\n            handleDateChange('from', date);\n          }}\n          slotProps={{\n            popper: {\n              sx: classes.calendar,\n              placement: 'bottom-end',\n              modifiers: [\n                {\n                  name: 'offset',\n                  options: {\n                    offset: [28, 15]\n                  }\n                }\n              ]\n            },\n            textField: { InputProps: { sx: classes.datePicker } }\n          }}\n        />\n        <span>to</span>\n        <SingleDatePicker\n          value={dateTo}\n          inputStyles={classes.datePicker}\n          onChange={(date) => {\n            handleDateChange('to', date);\n          }}\n          slotProps={{\n            popper: {\n              sx: classes.calendar,\n              placement: 'bottom-end',\n              modifiers: [\n                {\n                  name: 'offset',\n                  options: {\n                    offset: [28, 15]\n                  }\n                }\n              ]\n            },\n            textField: { InputProps: { sx: classes.datePicker } }\n          }}\n        />\n      </LocalizationProvider>\n    </Box>\n  );\n}\n","import React, { createContext, useCallback, useEffect, useRef, useState } from 'react';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\nimport {\n  Box,\n  Button,\n  CircularProgress,\n  IconButton,\n  Popover,\n  Skeleton,\n  Stack,\n  Tab,\n  Tabs,\n  Tooltip\n} from '@mui/material';\nimport EditIcon from '@mui/icons-material/Edit';\nimport FileCopyIcon from '@mui/icons-material/FileCopy';\nimport ArrowCircleRightIcon from '@mui/icons-material/ArrowCircleRight';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\nimport DoneIcon from '@mui/icons-material/Done';\nimport { ResendIcon } from './Applications/CustomIcons';\nimport Api from './API';\nimport jobsApi from '../Jobs/API';\nimport Applications from './Applications/Applications';\nimport AddTask from './ActionModals/AddTask/AddTasks';\nimport MoveJob from './ActionModals/MoveJob/MoveJob';\nimport StartWorkFlow from './ActionModals/StartWorkflow/StartWorkFlow';\nimport CeridianDayforce from './ActionModals/CeridianDayforce/CeridianDayforce';\nimport EmailStatus from './EmailStatus/EmailStatus';\nimport Attachments from './Attachments/Attachments';\nimport Notes from './Notes/Notes';\nimport Subcontainer from './Widgets/Subcontainer';\nimport JobInformation from './Widgets/JobInformation';\nimport DonutChart from '../Components/Charts/DonutChart';\nimport DonutLargeIcon from '@mui/icons-material/DonutLarge';\nimport LineChart from '../Components/Charts/LineChart';\nimport ShowChartIcon from '@mui/icons-material/ShowChart';\nimport ChartWidget from './Graphs/ChartWidget';\nimport SmartShare from '../../AIStudio/AIStudioSmartShare/SmartShare';\nimport { IJob, IJobCounts, IStyle, ITabs } from './types';\nimport { IUserPermissions } from '../Components/sharedTypes';\nimport { classes } from './styles';\nimport Revisions from './ActionModals/Revisions/Revisions';\nimport StyledSnackbar from '../Components/CustomUIElements/StyledSnackbar';\nimport { resourceDefault } from '../Jobs/config';\nimport queryString from 'query-string';\nimport PushPinIcon from '@mui/icons-material/PushPin';\nimport { formatUserPermissions } from '../Components/Utilities/formatUserPermissions';\nimport { getPermissions } from '../../shared/permissionHelpers';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport { ReactQueryDevtools } from '@tanstack/react-query-devtools';\n\nconst BASE_URL = window.location.origin;\nconst URL_PARAMS = new URL(window.location.href);\n\nconst queryClient = new QueryClient({\n  defaultOptions: {\n    queries: {\n      refetchOnWindowFocus: false\n    }\n  }\n});\n\nexport const EntityContext = createContext({\n  apply_with_phone: undefined,\n  apply_with_mobile: undefined,\n  ai_studio_summaries_enabled: false,\n  foundu_enabled: false\n});\n\nexport default function Job({\n  apiKey,\n  job_id,\n  aiStudioEnabled,\n  ai_studio_summaries_enabled,\n  foundu_enabled,\n  foundu_auth_url,\n  entity,\n  userTimeZone,\n  newNoteOnApplicationEnabled,\n  newApplicationEnabled\n}: {\n  apiKey: string;\n  job_id: number;\n  aiStudioEnabled: boolean;\n  ai_studio_summaries_enabled: boolean;\n  foundu_enabled: boolean;\n  foundu_auth_url?: string;\n  entity: object;\n  userTimeZone: string;\n  newNoteOnApplicationEnabled: boolean;\n  newApplicationEnabled: boolean;\n}) {\n  const getTabNumber = (urlParams: string) => {\n    switch (urlParams) {\n      case '?applications=true':\n        return 1;\n      case '?emailstatus=true':\n        return 2;\n      case '?attachments=true':\n        return 3;\n      case '?notes=true':\n        return 4;\n      default:\n        return 0;\n    }\n  };\n  const [job, setJob] = useState<IJob | null>(null);\n  const [jobCounts, setJobCounts] = useState<IJobCounts | null>(null);\n  const [tabValue, setTabValue] = useState(getTabNumber(URL_PARAMS.search));\n  const [indicatorWidth, setIndicatorWidth] = useState(0);\n  const [copied, setCopied] = useState(false);\n  const [actionsAnchorEl, setActionsAnchorEl] = useState<HTMLButtonElement | null>(null);\n  const [stateAnchorEl, setStateAnchorEl] = useState<HTMLDivElement | null>(null);\n  const [statusAnchorEl, setStatusAnchorEl] = useState<HTMLDivElement | null>(null);\n  const [jobLoading, setJobLoading] = useState(true);\n  const [unarchiveLoading, setUnarchiveLoading] = useState(false);\n  const [cloneLoading, setCloneLoading] = useState(false);\n  const [iframeLoading, setIframeLoading] = useState(true);\n  const [stateIsSending, setStateIsSending] = useState(false);\n  const [statusIsSending, setStatusIsSending] = useState(false);\n  const [isResending, setIsResending] = useState(0);\n  const [resourses, setResourses] = useState(resourceDefault);\n  const [userPermissions, setUserPermissions] = useState<IUserPermissions>({});\n  const [isPinning, setIsPinning] = useState(false);\n  const [pinnedByCurrentUser, setPinnedByCurrentUser] = useState(null);\n\n  const [snackbar, setSnackbar] = useState<{\n    message: string;\n    state: 'success' | 'warning' | 'error';\n  }>({\n    message: '',\n    state: 'success'\n  });\n  const headerRefs = useRef<HTMLDivElement[]>([]);\n  const jobQuestions = job ? job.questions.filter((question) => question.enabled) : [];\n\n  const TabPanel = useCallback((props: ITabs) => {\n    const { children, tabValue, index, ...other } = props;\n\n    return (\n      <div\n        role=\"tabpanel\"\n        hidden={tabValue !== index}\n        id={`jobs-tabpanel-${index}`}\n        data-testid={`jobs-tabpanel-${index}`}\n        aria-labelledby={`jobs-tab-${index}`}\n        {...other}\n      >\n        {tabValue === index && <>{children}</>}\n      </div>\n    );\n  }, []);\n\n  const TabProps = useCallback((index: number) => {\n    return {\n      id: `jobs-tab-${index}`,\n      'aria-controls': `jobs-tabpanel-${index}`,\n      'data-testid': `jobs-tab-${index}`\n    };\n  }, []);\n\n  const getPageParams = (tabNo: number) => {\n    switch (tabNo) {\n      case 0:\n        return '';\n      case 1:\n        return '?applications=true';\n      case 2:\n        return '?emailstatus=true';\n      case 3:\n        return '?attachments=true';\n      case 4:\n        return '?notes=true';\n      default:\n        return '';\n    }\n  };\n\n  const fetchJobs = useCallback(async () => {\n    setJobLoading(true);\n    try {\n      const jobResponse = await Api.getJob(job_id, { 'X-api-authenticate': apiKey });\n      setJob(jobResponse);\n      setPinnedByCurrentUser(jobResponse.pinned_by_user);\n      const jobCountsResponse = await Api.getJobCounts(job_id, { 'X-api-authenticate': apiKey });\n      setJobCounts(jobCountsResponse);\n      setJobLoading(false);\n    } catch (error) {\n      console.error(error);\n    }\n  }, [job_id, apiKey]);\n\n  const getUserPermissions = useCallback(async () => {\n    try {\n      const data = await getPermissions(apiKey);\n      setUserPermissions(formatUserPermissions(data));\n    } catch (error) {\n      console.log(error);\n    }\n  }, [setUserPermissions, apiKey]);\n\n  const handleStateChange = useCallback(\n    async (link: string) => {\n      setStateAnchorEl(null);\n      try {\n        setStateIsSending(true);\n        const response = await Api.putChangedState(link, { 'X-api-authenticate': apiKey });\n        setJob((prev) =>\n          prev\n            ? { ...prev, job_states: response?.job_states, job_statuses: response?.job_statuses }\n            : null\n        );\n      } catch (error) {\n        console.error(error);\n      } finally {\n        setStateIsSending(false);\n      }\n    },\n    [apiKey]\n  );\n\n  const handleStatusChange = useCallback(\n    async (link: string) => {\n      setStatusAnchorEl(null);\n      try {\n        setStatusIsSending(true);\n        const response = await Api.putChangedStatus(link, { 'X-api-authenticate': apiKey });\n        setJob((prev) => (prev ? { ...prev, job_statuses: response?.job_statuses } : null));\n      } catch (error) {\n        console.error(error);\n      } finally {\n        setStatusIsSending(false);\n      }\n    },\n    [apiKey]\n  );\n\n  const handleStateDropdownOpen = (event: React.MouseEvent<HTMLDivElement>) => {\n    setStateAnchorEl(event.currentTarget);\n    document.addEventListener('wheel', () => handleScrollClose('state'));\n  };\n\n  const handleStatusDropdownOpen = (event: React.MouseEvent<HTMLDivElement>) => {\n    setStatusAnchorEl(event.currentTarget);\n    document.addEventListener('wheel', () => handleScrollClose('status'));\n  };\n\n  const handleScrollClose = (type: string) => {\n    if (type === 'state') {\n      setStateAnchorEl(null);\n      document.removeEventListener('wheel', () => handleScrollClose('state'));\n    } else if (type === 'status') {\n      setStatusAnchorEl(null);\n      document.removeEventListener('wheel', () => handleScrollClose('status'));\n    }\n  };\n\n  const displayResendIcon = () => {\n    if (isResending === 1) {\n      return <CircularProgress size={24} color={'inherit'} />;\n    } else if (isResending === 2) {\n      return <DoneIcon />;\n    } else {\n      return <ResendIcon />;\n    }\n  };\n\n  const handleResend = async () => {\n    setIsResending(1);\n    try {\n      const response = await fetch(`/api/v4/jobs/${job_id}/applications/resend_all_emails`, {\n        method: 'POST',\n        headers: {\n          'x-api-authenticate': apiKey\n        }\n      });\n      if (response.ok) {\n        setIsResending(2);\n        setSnackbar({\n          message: 'Successfully resent all applications to recipient.',\n          state: 'success'\n        });\n      } else {\n        setIsResending(0);\n        const error = await response.json();\n        setSnackbar({\n          message: error.errors,\n          state: 'error'\n        });\n      }\n    } catch (error) {\n      setIsResending(0);\n      console.log(error);\n      setSnackbar({\n        message: 'Something went wrong',\n        state: 'error'\n      });\n    } finally {\n      setTimeout(() => {\n        setIsResending(0);\n      }, 5000);\n    }\n  };\n\n  useEffect(() => {\n    fetchJobs();\n    getUserPermissions();\n  }, [fetchJobs, getUserPermissions]);\n\n  useEffect(() => {\n    setIndicatorWidth(headerRefs.current[tabValue].clientWidth - 32);\n  }, [tabValue]);\n\n  const handleCopy = () => {\n    setCopied(true);\n    setTimeout(() => setCopied(false), 3000);\n  };\n\n  const handleTabChange = (event: React.ChangeEvent, newValue: number) => {\n    setTabValue(newValue);\n    URL_PARAMS.search = getPageParams(newValue);\n    window.history.pushState(null, '', URL_PARAMS.href);\n  };\n\n  const cloneJob = async () => {\n    setCloneLoading(true);\n    const queryParams = `?${queryString.stringify(resourses, {\n      arrayFormat: 'bracket',\n      encode: false\n    })}`;\n    try {\n      const response = await fetch(`/api/v4/jobs/${job_id}/clone${queryParams}`, {\n        method: 'POST',\n        headers: {\n          'X-api-authenticate': apiKey,\n          'Content-Type': 'application/json'\n        },\n        body: JSON.stringify({\n          job: {\n            reference: job.reference,\n            title: job.title,\n            expires_at: '',\n            location: job.location\n          }\n        })\n      }).then((response) => response.json());\n      if (response.job_link) {\n        window.location.href = `${BASE_URL}${response.job_link}/edit`;\n      }\n    } catch (error) {\n      setSnackbar({\n        message: 'An error occurred while cloning the job',\n        state: 'error'\n      });\n    } finally {\n      setCloneLoading(false);\n    }\n  };\n\n  async function handleUnarchiveJob(ids: Array<number>) {\n    setUnarchiveLoading(true);\n    try {\n      const response = await Api.putUnarchiveJob(\n        { 'X-api-authenticate': apiKey },\n        { job_ids: ids }\n      );\n      if (response.res?.job_ids?.failure?.length) {\n        const message = 'Unable to unarchive job.';\n        setSnackbar({\n          message: message,\n          state: 'error'\n        });\n      }\n    } catch (error) {\n      setSnackbar({\n        message: 'Something went wrong. Please try again.',\n        state: 'error'\n      });\n    } finally {\n      fetchJobs();\n    }\n  }\n\n  async function pinJob(jobId: number) {\n    setIsPinning(true);\n    try {\n      const response = await jobsApi.putPinJob(jobId);\n      if (!response.res.errors) {\n        setPinnedByCurrentUser(true);\n      } else {\n        setSnackbar({\n          message: response.res.errors,\n          state: 'error'\n        });\n      }\n    } catch (err) {\n      setSnackbar({\n        message: err?.errors,\n        state: 'error'\n      });\n    } finally {\n      setIsPinning(false);\n    }\n  }\n\n  async function unpinJob(jobId: number) {\n    setIsPinning(true);\n    try {\n      const response = await jobsApi.putUnpinJob(jobId);\n      if (!response.res.errors) {\n        setPinnedByCurrentUser(false);\n      }\n    } catch (err) {\n      setSnackbarState({\n        message: err?.errors,\n        state: 'error'\n      });\n    } finally {\n      setIsPinning(false);\n    }\n  }\n\n  const handlePin = (event: React.MouseEvent, id: number, pinned_by_user: boolean) => {\n    pinned_by_user ? unpinJob(id) : pinJob(id);\n  };\n\n  return (\n    <QueryClientProvider client={queryClient}>\n      <Box sx={classes.jobPageContainer}>\n        {job?.archived && (\n          <Box sx={classes.jobArchivedContainer}>\n            <Stack color=\"error\" justifyContent=\"center\" sx={classes.jobArchiveAlert}>\n              THIS JOB HAS BEEN ARCHIVED\n            </Stack>\n            <Button sx={classes.jobUnarchiveButton} onClick={() => handleUnarchiveJob([job.id])}>\n              UNARCHIVE\n              {unarchiveLoading && (\n                <CircularProgress size={24} color={'inherit'} sx={{ marginLeft: 2 }} />\n              )}\n            </Button>\n          </Box>\n        )}\n        <Box sx={classes.jobPageHeader}>\n          {jobLoading ? (\n            <Skeleton animation=\"wave\" width={600} height={56} />\n          ) : (\n            <Box sx={{ color: '#666666' }}>\n              <h4 id=\"reference\">{job?.reference}</h4>\n              <Box\n                sx={{\n                  display: 'flex',\n                  flexDirection: 'row',\n                  alignItems: 'center',\n                  columnGap: '10px'\n                }}\n              >\n                {isPinning ? (\n                  <CircularProgress size={24} sx={{ color: '#E6A052' }} />\n                ) : (\n                  <PushPinIcon\n                    onClick={(event) => handlePin(event, job?.id, pinnedByCurrentUser)}\n                    sx={\n                      pinnedByCurrentUser\n                        ? {\n                            color: '#E6A052',\n                            cursor: 'pointer'\n                          }\n                        : {\n                            color: '#CCCCCC',\n                            cursor: 'pointer'\n                          }\n                    }\n                  />\n                )}\n                <h1 id=\"title\" data-testid=\"title\">\n                  {job?.title}\n                </h1>\n              </Box>\n            </Box>\n          )}\n          <Box sx={classes.actionButtons}>\n            {jobLoading ? (\n              <Skeleton animation=\"wave\" width={200} height={56} />\n            ) : (\n              <>\n                {userPermissions?.Jobs?.['Create / Edit Jobs'] && (\n                  <>\n                    <Tooltip title=\"Edit\">\n                      <IconButton\n                        sx={classes.iconGrey}\n                        onClick={() => {\n                          window.location.href = `${BASE_URL}${job?.job_link}/edit`;\n                        }}\n                        id=\"edit-job-button\"\n                      >\n                        <EditIcon />\n                      </IconButton>\n                    </Tooltip>\n                    <Tooltip title=\"Clone\">\n                      <IconButton\n                        sx={classes.iconGrey}\n                        onClick={cloneJob}\n                        id=\"clone-job-button\"\n                        data-testid=\"clone-job-button\"\n                      >\n                        {cloneLoading ? (\n                          <CircularProgress size={24} color={'inherit'} />\n                        ) : (\n                          <FileCopyIcon />\n                        )}\n                      </IconButton>\n                    </Tooltip>\n                  </>\n                )}\n                {userPermissions?.Integrations?.['Recruit Multiposter (P)'] && (\n                  <Tooltip title=\"Multiposter\">\n                    <IconButton\n                      sx={classes.iconGrey}\n                      onClick={() => {\n                        window.location.href = `${BASE_URL}${job?.job_link}/job_ads`;\n                      }}\n                      id=\"multiposter-job-button\"\n                    >\n                      <ArrowCircleRightIcon />\n                    </IconButton>\n                  </Tooltip>\n                )}\n                {userPermissions?.Applications?.['Re-send Application'] && tabValue === 1 && (\n                  <Tooltip title=\"Resend all\">\n                    <IconButton\n                      sx={classes.iconGrey}\n                      onClick={handleResend}\n                      id=\"resend-all-job-button\"\n                    >\n                      {displayResendIcon()}\n                    </IconButton>\n                  </Tooltip>\n                )}\n                <Tooltip title=\"More Options\">\n                  <IconButton\n                    sx={classes.iconGrey}\n                    onClick={(event) => setActionsAnchorEl(event.currentTarget)}\n                    id=\"more-options-job-button\"\n                  >\n                    <MoreVertIcon />\n                  </IconButton>\n                </Tooltip>\n              </>\n            )}\n          </Box>\n        </Box>\n        <Box sx={classes.linkContainer}>\n          {jobLoading ? (\n            <Skeleton animation=\"wave\" width={400} height={50} />\n          ) : (\n            job?.public_url && (\n              <>\n                <a href={job?.public_url} target=\"_blank\" rel=\"noopener noreferrer\">\n                  <Box id=\"external-link\" sx={classes.link}>\n                    {job.public_url}\n                  </Box>\n                </a>\n                <CopyToClipboard text={job?.public_url} onCopy={handleCopy}>\n                  <Button sx={classes.copyButton} id=\"copy-link-job-button\">\n                    {copied ? 'Copied!' : 'Copy'}\n                  </Button>\n                </CopyToClipboard>\n                {aiStudioEnabled && (\n                  <SmartShare\n                    apiKey={apiKey}\n                    jobTitle={job?.title}\n                    jobUrl={job?.public_url}\n                    jobDescription={job?.description}\n                  />\n                )}\n              </>\n            )\n          )}\n        </Box>\n        <Box sx={classes.stateStatusContainer}>\n          {jobLoading ? (\n            <Skeleton animation=\"wave\" width={200} height={40} />\n          ) : (\n            <>\n              {job?.job_states &&\n                (job.job_states[1] && userPermissions?.Jobs?.['Create / Edit Jobs'] ? (\n                  <Box\n                    id=\"state-dropdown\"\n                    data-testid={'state-dropdown'}\n                    sx={{\n                      ...classes[job.job_states[0].label],\n                      ...classes.stateDropdown,\n                      cursor: 'pointer'\n                    }}\n                    onClick={handleStateDropdownOpen}\n                  >\n                    {stateIsSending ? (\n                      <CircularProgress size={18} />\n                    ) : (\n                      <>\n                        {job?.job_states[0]?.label} <KeyboardArrowDownIcon sx={classes.downIcon} />\n                      </>\n                    )}\n                  </Box>\n                ) : (\n                  <Box sx={{ ...classes[job.job_states[0].label], ...classes.stateDropdown }}>\n                    {job?.job_states[0]?.label}\n                  </Box>\n                ))}\n              {job?.job_statuses &&\n                (job.job_statuses[1] && userPermissions?.Jobs?.['Create / Edit Jobs'] ? (\n                  <Box\n                    id=\"status-job-dropdown\"\n                    sx={{ ...classes.statusDropdown, cursor: 'pointer' }}\n                    onClick={handleStatusDropdownOpen}\n                  >\n                    {statusIsSending || stateIsSending ? (\n                      <CircularProgress size={18} sx={classes.statusLoader} />\n                    ) : (\n                      <>\n                        {job?.job_statuses[0]?.label}\n                        <ArrowDropDownIcon sx={classes.statusDownIcon} />\n                      </>\n                    )}\n                  </Box>\n                ) : (\n                  <Box\n                    id=\"status-dropdown\"\n                    sx={{\n                      ...classes.statusDropdown,\n                      width: 'auto',\n                      maxWidth: '140xp',\n                      '&:hover': {\n                        ...(classes.statusDropdown as IStyle)['&:hover' as keyof IStyle],\n                        border: '1px solid #E5E5E5',\n                        maxWidth: 'unset',\n                        minWidth: 'unset'\n                      }\n                    }}\n                  >\n                    {statusIsSending || stateIsSending ? (\n                      <CircularProgress size={18} sx={classes.statusLoader} />\n                    ) : (\n                      <>{job?.job_statuses[0]?.label}</>\n                    )}\n                  </Box>\n                ))}\n            </>\n          )}\n        </Box>\n        <Box sx={classes.tabsContainer}>\n          <Tabs\n            value={tabValue}\n            onChange={handleTabChange}\n            aria-label=\"Jobs, Archive, Multiposter Tabs\"\n            sx={{\n              ...classes.tabs,\n              '& .MuiTabs-indicator': { ...classes.tabIndicator, maxWidth: indicatorWidth + 'px' }\n            }}\n          >\n            <Tab\n              ref={(el) => (el ? (headerRefs.current[0] = el) : null)}\n              label=\"Overview\"\n              {...TabProps(0)}\n              id=\"job-overview-tab\"\n            />\n            <Tab\n              ref={(el) => (el ? (headerRefs.current[1] = el) : null)}\n              label=\"Applications\"\n              id=\"job-applications-tab\"\n              icon={\n                <Box\n                  sx={{\n                    ...classes.applicationsTabButton,\n                    ...(tabValue !== 1 ? { backgroundColor: '#f6f6f6' } : {})\n                  }}\n                >\n                  {job && `${job.applications_count} (${job.open_applications_count})`}\n                </Box>\n              }\n              iconPosition=\"end\"\n              {...TabProps(1)}\n            />\n            <Tab\n              sx={{\n                display: userPermissions?.Applications?.['View Email Status']\n                  ? 'flex'\n                  : 'none !important'\n              }}\n              ref={(el) => (el ? (headerRefs.current[2] = el) : null)}\n              label=\"Email Status\"\n              id=\"job-email-status-tab\"\n              {...TabProps(2)}\n            />\n            <Tab\n              ref={(el) => (el ? (headerRefs.current[3] = el) : null)}\n              label=\"Attachments\"\n              id=\"job-attachments-tab\"\n              {...TabProps(3)}\n            />\n            <Tab\n              sx={{\n                display: userPermissions?.['Job Options']?.['View Job Notes']\n                  ? 'flex'\n                  : 'none !important'\n              }}\n              ref={(el) => (el ? (headerRefs.current[4] = el) : null)}\n              label=\"Notes\"\n              id=\"job-notes-tab\"\n              {...TabProps(4)}\n            />\n          </Tabs>\n        </Box>\n        <TabPanel tabValue={tabValue} index={0}>\n          <Box sx={classes.tabContent}>\n            <Box sx={classes.widgetContainer}>\n              <Subcontainer\n                applications={job?.applications_count}\n                openApplications={job?.open_applications_count}\n                jobCounts={jobCounts}\n                createdAt={job?.created_at}\n                publishedAt={job?.published_at}\n                expiresAt={job?.expires_at}\n                handleTabChange={handleTabChange}\n                isLoading={jobLoading}\n                timeZone={job?.time_zone ?? userTimeZone}\n              />\n              <JobInformation\n                createdBy={\n                  job?.created_by\n                    ? job?.created_by?.firstname + ' ' + job?.created_by?.lastname\n                    : null\n                }\n                createdByLink={\n                  job?.created_by?.link && job?.created_by?.link !== 'None'\n                    ? `${BASE_URL}${job?.created_by?.link}`\n                    : null\n                }\n                entity={job?.entity}\n                entityLink={\n                  job?.entity_link && job?.entity_link !== 'None'\n                    ? `${BASE_URL}${job?.entity_link}`\n                    : null\n                }\n                brand={job?.brand?.name}\n                brandLink={\n                  job?.brand_link && job?.brand_link !== 'None'\n                    ? `${BASE_URL}${job?.brand_link}`\n                    : null\n                }\n                location={job?.location}\n                tags={job?.tags}\n                assignedUser={\n                  job?.assigned_user\n                    ? job?.assigned_user?.firstname + ' ' + job?.assigned_user?.lastname\n                    : null\n                }\n                isLoading={jobLoading}\n              />\n              <ChartWidget\n                Chart={LineChart}\n                ChartIcon={ShowChartIcon}\n                chartTitle={'Applications per day'}\n                url={`/api/v4/jobs/${job_id}/daily_applications`}\n                apiKey={apiKey}\n              />\n              <ChartWidget\n                Chart={DonutChart}\n                ChartIcon={DonutLargeIcon}\n                chartTitle={'Applications by source'}\n                url={`/api/v4/jobs/${job_id}/sources`}\n                apiKey={apiKey}\n              />\n            </Box>\n            <Box sx={classes.iframeContainer}>\n              {iframeLoading && (\n                <Skeleton\n                  variant=\"rectangular\"\n                  width=\"100%\"\n                  height={600}\n                  sx={{ position: 'absolute', top: 0, bottom: 0, zIndex: 2 }}\n                />\n              )}\n              <iframe\n                src={`${BASE_URL}${job?.job_link}/preview`}\n                title=\"job-iframe\"\n                width=\"100%\"\n                height=\"100%\"\n                frameBorder=\"0\"\n                onLoad={() => setIframeLoading(false)}\n              ></iframe>\n            </Box>\n          </Box>\n        </TabPanel>\n        <TabPanel tabValue={tabValue} index={1}>\n          <Box sx={classes.tabContent}>\n            <EntityContext.Provider\n              value={{\n                ...entity,\n                ai_studio_summaries_enabled,\n                foundu_enabled,\n                foundu_auth_url\n              }}\n            >\n              <Applications\n                apiKey={apiKey}\n                jobId={job_id}\n                jobTitle={job?.title}\n                jobIsLoading={jobLoading}\n                jobQuestions={jobQuestions}\n                jobAttachments={job?.candidate_attachments}\n                jobSources={job?.sources}\n                jobHasPrivacyAcknowledgement={job?.privacy_acknowledgement}\n                setJob={setJob}\n                userPermissions={userPermissions}\n                jobOptions={job?.options}\n                newNoteOnApplicationEnabled={newNoteOnApplicationEnabled}\n                newApplicationEnabled={newApplicationEnabled}\n              />\n            </EntityContext.Provider>\n          </Box>\n        </TabPanel>\n        <TabPanel tabValue={tabValue} index={2}>\n          <EmailStatus apiKey={apiKey} jobId={job_id} setSnackbarState={setSnackbar} />\n        </TabPanel>\n        <TabPanel tabValue={tabValue} index={3}>\n          <Attachments\n            apiKey={apiKey}\n            jobId={job_id}\n            permissions={{\n              delete: userPermissions?.['Job Options']?.['Delete Job Attachments']\n            }}\n          />\n        </TabPanel>\n        <TabPanel tabValue={tabValue} index={4}>\n          <Notes\n            apiKey={apiKey}\n            jobId={job_id}\n            permissions={{\n              create: userPermissions?.['Job Options']?.['Make a Job Note'],\n              edit: userPermissions?.['Job Options']?.['Edit Job Note'],\n              delete: userPermissions?.['Job Options']?.['Delete Job Note']\n            }}\n            setSnackbarState={setSnackbar}\n          />\n        </TabPanel>\n        <Popover\n          id=\"actions-menu-popover\"\n          sx={classes.actionsMenu}\n          open={Boolean(actionsAnchorEl)}\n          anchorEl={actionsAnchorEl}\n          onClose={() => {\n            setActionsAnchorEl(null);\n          }}\n          anchorOrigin={{\n            vertical: 'bottom',\n            horizontal: 'right'\n          }}\n          transformOrigin={{\n            vertical: 'top',\n            horizontal: 'right'\n          }}\n        >\n          {userPermissions?.['Job Options']?.['Move Jobs'] && (\n            <span>\n              <MoveJob\n                apiKey={apiKey}\n                jobId={job_id}\n                entity={job?.entity}\n                fetchJobs={fetchJobs}\n                setSnackbarState={setSnackbar}\n                setActionsAnchorEl={setActionsAnchorEl}\n              />\n            </span>\n          )}\n          <span>\n            <AddTask apiKey={apiKey} jobId={job_id} setActionsAnchorEl={setActionsAnchorEl} />\n          </span>\n          <span>\n            {userPermissions?.['Jobs']?.['Create / Edit Jobs'] && (\n              <Revisions\n                apiKey={apiKey}\n                jobId={job_id}\n                fetchJobs={fetchJobs}\n                setSnackbar={setSnackbar}\n                setActionsAnchorEl={setActionsAnchorEl}\n                userTimeZone={userTimeZone}\n              />\n            )}\n          </span>\n          <span>\n            <StartWorkFlow\n              apiKey={apiKey}\n              jobId={job_id}\n              setSnackbarState={setSnackbar}\n              setActionsAnchorEl={setActionsAnchorEl}\n            />\n          </span>\n          <CeridianDayforce\n            apiKey={apiKey}\n            jobId={job_id}\n            setSnackbar={setSnackbar}\n            setActionsAnchorEl={setActionsAnchorEl}\n          />\n        </Popover>\n        <Popover\n          id=\"state-selection\"\n          sx={classes.stateOptions}\n          open={Boolean(stateAnchorEl)}\n          anchorEl={stateAnchorEl}\n          onClose={() => setStateAnchorEl(null)}\n          anchorOrigin={{\n            vertical: 'bottom',\n            horizontal: 'left'\n          }}\n        >\n          {job?.job_states &&\n            job.job_states.slice(1).map((state: IJob['job_states'][0]) => (\n              <span\n                className=\"state-option\"\n                data-testid={`state-option-${state.label}`}\n                key={state.label}\n                onClick={() => handleStateChange(state.link)}\n              >\n                {state.label}\n              </span>\n            ))}\n        </Popover>\n        <Popover\n          id=\"status-selection\"\n          sx={classes.statusDropdownItems}\n          open={Boolean(statusAnchorEl)}\n          anchorEl={statusAnchorEl}\n          onClose={() => setStatusAnchorEl(null)}\n          anchorOrigin={{\n            vertical: 'bottom',\n            horizontal: 'left'\n          }}\n        >\n          {job?.job_statuses &&\n            job.job_statuses.slice(1).map((status: IJob['job_statuses'][0]) => (\n              <Box\n                className=\"status-option\"\n                key={`${status.link}`}\n                sx={classes.statusDropdownItem}\n                onClick={() => handleStatusChange(status.link)}\n              >\n                {status.label}\n              </Box>\n            ))}\n        </Popover>\n        <StyledSnackbar\n          message={snackbar.message}\n          state={snackbar.state}\n          setSnackbarState={setSnackbar}\n        />\n      </Box>\n      <ReactQueryDevtools />\n    </QueryClientProvider>\n  );\n}\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { Box, ToggleButtonGroup, ToggleButton, Skeleton } from '@mui/material';\nimport IndeedAds from '../Components/Multiposter/Indeed/IndeedAds';\nimport SeekAds from '../Components/Multiposter/Seek/SeekAds';\nimport IdibuAds from '../Components/Multiposter/Idibu/IdibuAds';\nimport BroadbeanAds from '../Components/Multiposter/Broadbean/BroadbeanAds';\nimport CouncilJobsAds from '../Components/Multiposter/CouncilJobs/CouncilJobsAds';\nimport ViewJobsAds from '../Components/Multiposter/ViewJobs/ViewJobsAds';\nimport { ISingleMultiposterProps } from './types';\nimport { classes } from './styles';\n\nexport default function SingleMultiposter({ apiKey, jobId, jobTitle }: ISingleMultiposterProps) {\n  const [isLoading, setIsLoading] = useState(true);\n  const [showSeek, setShowSeek] = useState(false);\n  const [showIndeed, setShowIndeed] = useState(false);\n  const [showIdibu, setShowIdibu] = useState(false);\n  const [showBroadbean, setShowBroadbean] = useState(false);\n  const [showCouncilJobs, setShowCouncilJobs] = useState(false);\n  const [showViewJobs, setViewJobs] = useState(false);\n  const [multiposterSelection, setMultiposterSelection] = useState('');\n\n  const getPermissions = useCallback(async () => {\n    setIsLoading(true);\n    try {\n      const response = await fetch(`/api/v4/job_ad_permissions?job_id=${jobId}`, {\n        method: 'GET',\n        headers: {\n          'X-api-authenticate': apiKey\n        }\n      }).then((response) => response.json());\n      setShowSeek(response.seek);\n      setShowIndeed(response.indeed);\n      setShowIdibu(response.idibu);\n      setShowBroadbean(response.broadbean);\n      setShowCouncilJobs(response.council_jobs);\n      setViewJobs(response.view_jobs);\n      switch (true) {\n        case response.seek:\n          setMultiposterSelection('seek');\n          break;\n        case response.indeed:\n          setMultiposterSelection('indeed');\n          break;\n        case response.idibu:\n          setMultiposterSelection('idibu');\n          break;\n        case response.broadbean:\n          setMultiposterSelection('broadbean');\n          break;\n        case response.council_jobs:\n          setMultiposterSelection('counciljobs');\n          break;\n        case response.view_jobs:\n          setMultiposterSelection('viewjobs');\n          break;\n        default:\n          setMultiposterSelection('');\n      }\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsLoading(false);\n    }\n  }, [apiKey, jobId]);\n\n  useEffect(() => {\n    getPermissions();\n  }, [getPermissions]);\n\n  const displayAdType = () => {\n    switch (multiposterSelection) {\n      case 'seek':\n        return <SeekAds apiKey={apiKey} jobId={jobId} />;\n      case 'indeed':\n        return <IndeedAds apiKey={apiKey} jobId={jobId} />;\n      case 'idibu':\n        return <IdibuAds apiKey={apiKey} jobId={jobId} />;\n      case 'broadbean':\n        return <BroadbeanAds apiKey={apiKey} jobId={jobId} />;\n      case 'counciljobs':\n        return <CouncilJobsAds apiKey={apiKey} jobId={jobId} />;\n      case 'viewjobs':\n        return <ViewJobsAds apiKey={apiKey} jobId={jobId} />;\n      default:\n        return <Box>Multiposter is not enabled for this job</Box>;\n    }\n  };\n\n  return (\n    <Box sx={classes.jobPageContainer}>\n      <Box sx={classes.jobPageHeader}>\n        <h1>{jobTitle}</h1>\n      </Box>\n      <Box sx={classes.multiposterContainer}>\n        <Box sx={classes.toggleContainer}>\n          <ToggleButtonGroup\n            value={multiposterSelection}\n            exclusive\n            onChange={(e, value) => {\n              if (value === null) return;\n              setMultiposterSelection(value);\n            }}\n            aria-label=\"Multiposter selection\"\n            sx={classes.toggleButtonGroup}\n          >\n            {showSeek && (\n              <ToggleButton sx={classes.toggleButton} value=\"seek\" id=\"multiposter-seek-tab\">\n                <Box id=\"seek-logo\" sx={classes.logoSize} />\n              </ToggleButton>\n            )}\n            {showIndeed && (\n              <ToggleButton sx={classes.toggleButton} value=\"indeed\" id=\"multiposter-indeed-tab\">\n                <Box id=\"indeed-logo\" sx={{ transform: 'translateY(3px)', ...classes.logoSize }} />\n              </ToggleButton>\n            )}\n            {showIdibu && (\n              <ToggleButton sx={classes.toggleButton} value=\"idibu\" id=\"multiposter-idibu-tab\">\n                <Box id=\"idibu-logo\" sx={classes.logoSize} />\n              </ToggleButton>\n            )}\n            {showBroadbean && (\n              <ToggleButton\n                sx={classes.toggleButton}\n                value=\"broadbean\"\n                id=\"multiposter-broadbean-tab\"\n              >\n                <Box id=\"broadbean-logo\" sx={classes.logoSize} />\n              </ToggleButton>\n            )}\n            {showCouncilJobs && (\n              <ToggleButton\n                sx={classes.toggleButton}\n                value=\"counciljobs\"\n                id=\"multiposter-counciljobs-tab\"\n              >\n                <Box id=\"counciljobs-logo\" sx={classes.logoSize} />\n              </ToggleButton>\n            )}\n            {showViewJobs && (\n              <ToggleButton\n                sx={classes.toggleButton}\n                value=\"viewjobs\"\n                id=\"multiposter-viewjobs-tab\"\n              >\n                <Box id=\"viewjobs-logo\" sx={classes.logoSize} />\n              </ToggleButton>\n            )}\n          </ToggleButtonGroup>\n        </Box>\n        {isLoading ? <Skeleton sx={classes.skeleton} animation=\"wave\" /> : displayAdType()}\n      </Box>\n    </Box>\n  );\n}\n","import React, { memo } from 'react';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport IconButton from '@mui/material/IconButton';\nimport Skeleton from '@mui/material/Skeleton';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport EditIcon from '@mui/icons-material/Edit';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport SadNoteSVG from './SadNoteSVG';\nimport moment from 'moment';\nimport { IJobNote } from '../types';\nimport { classes } from './styles';\n\ninterface INoteListProps {\n  notes: IJobNote[];\n  editMode: number;\n  isDeleting: boolean;\n  isLoading: boolean;\n  editingId: number;\n  handleNewNote: () => void;\n  handleEditNote: (id: number, note: string) => void;\n  handleDeleteNote: (id: number) => void;\n  permissions: Record<string, boolean>;\n}\n\nfunction NoteList({\n  notes,\n  editMode,\n  isDeleting,\n  isLoading,\n  editingId,\n  handleNewNote,\n  handleEditNote,\n  handleDeleteNote,\n  permissions\n}: INoteListProps) {\n  return notes && notes.length > 0 ? (\n    <Box>\n      {permissions.create && (\n        <Box sx={classes.newNoteContainer}>\n          {!editMode && (\n            <Button\n              sx={classes.notesNewButton}\n              onClick={handleNewNote}\n              id=\"add-a-job-note-button\"\n              data-testid=\"add-a-job-note-button\"\n            >\n              Add a note\n            </Button>\n          )}\n        </Box>\n      )}\n      <Box sx={classes.notesContainer}>\n        {notes.map((note: IJobNote) => (\n          <Box key={note.id} sx={classes.note}>\n            <Box sx={classes.noteContent}>\n              <Box sx={classes.noteText} className=\"job-note\" data-testid=\"job-note\">\n                {note.body}\n              </Box>\n              <Box>\n                {moment(note.updated_at).format('D MMMM YYYY [at] h:mm A')} by {note.noted_by}\n              </Box>\n            </Box>\n            <Box sx={classes.noteActions}>\n              {permissions.edit && (\n                <IconButton\n                  className=\"edit-job-note-button\"\n                  data-testid=\"edit-job-note-button\"\n                  onClick={() => handleEditNote(note.id, note.body)}\n                >\n                  <EditIcon sx={{ color: '#666666' }} />\n                </IconButton>\n              )}\n              {permissions.delete && (\n                <IconButton\n                  className=\"delete-job-note-button\"\n                  data-testid=\"delete-job-note-button\"\n                  onClick={() => handleDeleteNote(note.id)}\n                >\n                  {isDeleting && editingId === note.id ? (\n                    <CircularProgress size={32} sx={{ color: '#D6827D' }} />\n                  ) : (\n                    <DeleteIcon sx={{ color: '#D6827D' }} />\n                  )}\n                </IconButton>\n              )}\n            </Box>\n          </Box>\n        ))}\n      </Box>\n    </Box>\n  ) : (\n    <Box>\n      {isLoading ? (\n        <Box sx={classes.notesSkeleton}>\n          <Skeleton animation=\"wave\" height={40} />\n          <Skeleton animation=\"wave\" height={40} />\n          <Skeleton animation=\"wave\" height={40} />\n          <Skeleton animation=\"wave\" height={40} />\n          <Skeleton animation=\"wave\" height={40} />\n        </Box>\n      ) : (\n        <Box sx={{ ...classes.newNoteContainer, margin: '100px 0px' }}>\n          <Box>\n            <SadNoteSVG />\n          </Box>\n          <Box sx={classes.noNotesText}>No notes added</Box>\n          {!editMode && (\n            <Button\n              sx={classes.notesNewButton}\n              onClick={handleNewNote}\n              id=\"add-a-job-note-button\"\n              data-testid=\"add-a-job-note-button\"\n            >\n              Add a note\n            </Button>\n          )}\n        </Box>\n      )}\n    </Box>\n  );\n}\n\nexport default memo(NoteList);\n","import React, { useEffect, useState, useCallback } from 'react';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport TextField from '@mui/material/TextField';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport DoneIcon from '@mui/icons-material/Done';\nimport CloseIcon from '@mui/icons-material/Close';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport NoteList from './NoteList';\nimport Api from '../API';\nimport { IJobNote } from '../types';\nimport { classes } from './styles';\nimport { emojiInString } from '../../utils/emoji-checker';\nimport { NOTES_ERROR_MESSAGE } from '../../constants';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\n\nexport default function Notes({\n  apiKey,\n  jobId,\n  permissions,\n  setSnackbarState\n}: {\n  apiKey: string;\n  jobId: number;\n  permissions: Record<string, boolean>;\n  setSnackbarState: (state: { message: string; state: string }) => void;\n}) {\n  const [notes, setNotes] = useState(null);\n  const [editMode, setEditMode] = useState(0);\n  const [editedNote, setEditedNote] = useState('');\n  const [editingId, setEditingId] = useState(null);\n  const [isLoading, setIsLoading] = useState(false);\n  const [isSending, setIsSending] = useState(false);\n  const [isDeleting, setIsDeleting] = useState(false);\n  const [isDialogOpen, setIsDialogOpen] = useState(false);\n  const [noteError, setNoteError] = useState('');\n\n  const fetchNotes = useCallback(async () => {\n    setIsLoading(true);\n    try {\n      const response = await Api.getNotes({ 'X-api-authenticate': apiKey }, jobId);\n      setNotes(response.job_notes);\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsLoading(false);\n    }\n  }, [apiKey, jobId]);\n\n  const addNote = async () => {\n    setIsSending(true);\n    try {\n      const response = await Api.newNote({ 'X-api-authenticate': apiKey }, jobId, {\n        job_note: { body: editedNote }\n      });\n      setNotes((prev: IJobNote[]) => [response, ...prev]);\n      setEditMode(0);\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsSending(false);\n    }\n  };\n\n  const updateNote = async () => {\n    setIsSending(true);\n    try {\n      const response = await Api.putNote({ 'X-api-authenticate': apiKey }, jobId, editingId, {\n        job_note: { body: editedNote }\n      });\n      if (!response.error) {\n        setNotes((prev: IJobNote[]) =>\n          prev.map((note) => (note.id === editingId ? response : note))\n        );\n      }\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsSending(false);\n      setEditMode(0);\n      setEditingId(null);\n    }\n  };\n\n  const deleteNote = useCallback(\n    async (url: string, noteId: number) => {\n      setIsDeleting(true);\n      try {\n        const response = await Api.deleteNote({ 'X-api-authenticate': apiKey }, jobId, noteId);\n        if (!response.error) {\n          setNotes((prev: IJobNote[]) => prev.filter((note) => note.id !== noteId));\n        }\n      } catch (error) {\n        console.log(error);\n      } finally {\n        setIsDeleting(false);\n        setEditMode(0);\n        setEditingId(null);\n        setIsDialogOpen(false);\n      }\n    },\n    [apiKey, jobId]\n  );\n\n  const handleNewNote = useCallback(() => {\n    setEditedNote('');\n    setEditMode(2);\n  }, []);\n\n  const handleNoteInput = (value: string) => {\n    setEditedNote(value);\n  };\n\n  const handleSaveNote = () => {\n    setNoteError('');\n    try {\n      if (emojiInString(editedNote)) {\n        setNoteError(NOTES_ERROR_MESSAGE);\n        return;\n      }\n      if (editMode === 2) {\n        addNote();\n      } else if (editMode === 1) {\n        updateNote();\n      }\n    } catch (error) {\n      console.error(error.message);\n      setSnackbarState({\n        message: error.message,\n        state: 'error'\n      });\n    }\n  };\n\n  const handleEditNote = useCallback((noteId: number, note: string) => {\n    setEditingId(noteId);\n    setEditedNote(note);\n    setEditMode(1);\n  }, []);\n\n  const handleDeleteNote = useCallback((noteId: number) => {\n    setEditingId(noteId);\n    setIsDialogOpen(true);\n  }, []);\n\n  useEffect(() => {\n    fetchNotes();\n  }, [fetchNotes]);\n\n  return (\n    <>\n      <Box\n        sx={{\n          ...classes.noteEdit,\n          height: editMode ? 'fit-content' : '0px'\n        }}\n      >\n        <TextField\n          id=\"note-input\"\n          data-testid=\"note-input-[Notes]\"\n          label=\" \"\n          multiline\n          rows={6}\n          fullWidth\n          variant=\"outlined\"\n          value={editedNote}\n          onChange={(e) => handleNoteInput(e.target.value)}\n          InputLabelProps={{\n            shrink: false\n          }}\n        />\n        {!!noteError && (\n          <Box sx={{ ...sharedClasses.errorText, mt: '8px !important' }}>{noteError}</Box>\n        )}\n        <Box sx={classes.noteEditFooter}>\n          <Button\n            sx={classes.notesCancelButton}\n            endIcon={<CloseIcon />}\n            onClick={() => {\n              setNoteError('');\n              setEditMode(0);\n            }}\n          >\n            Cancel\n          </Button>\n          <Button\n            sx={classes.notesEditSaveButton}\n            onClick={handleSaveNote}\n            disabled={!editedNote}\n            endIcon={isSending ? <CircularProgress size={16} /> : <DoneIcon />}\n            id=\"save-job-note-button\"\n            data-testid=\"save-job-note-button\"\n          >\n            Save\n          </Button>\n        </Box>\n      </Box>\n      <NoteList\n        notes={notes}\n        editMode={editMode}\n        isDeleting={isDeleting}\n        isLoading={isLoading}\n        editingId={editingId}\n        handleNewNote={handleNewNote}\n        handleEditNote={handleEditNote}\n        handleDeleteNote={handleDeleteNote}\n        permissions={permissions}\n      />\n      <GenericDialog\n        url={''}\n        title={'Are you sure you want to delete this note?'}\n        description={'This action cannot be undone.'}\n        buttonText={'Delete Note'}\n        buttonCallback={deleteNote}\n        callbackLoading={isDeleting}\n        isDialogOpen={isDialogOpen}\n        setDialogOpen={setIsDialogOpen}\n        dialogId={editingId}\n      />\n    </>\n  );\n}\n","import React from 'react';\n\nexport default function SadNoteSVG() {\nreturn (<svg\nxmlns=\"http://www.w3.org/2000/svg\"\nwidth=\"93.637\"\nheight=\"96.195\"\nviewBox=\"0 0 93.637 96.195\"\n>\n<g id=\"Group_77\" data-name=\"Group 77\" transform=\"translate(-131.839 -176.424)\">\n  <g id=\"_ÎÓÈ_2\" data-name=\"—ÎÓÈ_2\" transform=\"translate(131.839 176.424)\">\n    <path\n      id=\"Path_21\"\n      data-name=\"Path 21\"\n      d=\"M343.215,799.111c-4.859-.158-9.672-.4-14.384-.784-1.849-.151-3.7-.333-5.394-.643a5.6,5.6,0,0,1-1.617-.469c-2.04-1.2,3.466-2.547,6.029-2.812,3.612-.374,7.547-.239,11.285-.312,11.486-.226,23.029-.221,34.554.029,5.15.111,10.526.242,15.742.474,4.745.211,11.074.248,14.791,1.48q.2.066.388.136c.734.274,1.227.657,1.026,1.02a2.848,2.848,0,0,1-1.476.761c-4.442,1.37-10.065,1.558-15.809,1.639-7.4.1-14.858-.135-22.248-.183C358.474,799.4,350.836,799.359,343.215,799.111Z\"\n      transform=\"translate(-317.04 -718.314)\"\n      fill=\"#e5e5e5\"\n    />\n    <path\n      id=\"Path_22\"\n      data-name=\"Path 22\"\n      d=\"M317.6,888.23c-5.4-.186-10.742-.475-15.975-.938a56.13,56.13,0,0,1-5.99-.78,5.774,5.774,0,0,1-1.795-.572c-2.263-1.466,3.854-3.131,6.7-3.46,4.012-.465,8.383-.306,12.535-.4,12.758-.3,25.579-.309,38.379-.022,5.72.128,11.69.28,17.484.556,5.27.251,12.3.287,16.427,1.792q.221.081.43.167c.815.335,1.361.8,1.138,1.249-.191.381-.9.683-1.64.937-4.936,1.689-11.182,1.928-17.562,2.036-8.223.139-16.5-.141-24.71-.188C334.543,888.555,326.059,888.521,317.6,888.23Z\"\n      transform=\"translate(-293.343 -792.635)\"\n      fill=\"#e5e5e5\"\n    />\n    <g id=\"Group_67\" data-name=\"Group 67\" transform=\"translate(4.441 6.923)\">\n      <g id=\"Group_65\" data-name=\"Group 65\">\n        <path\n          id=\"Path_23\"\n          data-name=\"Path 23\"\n          d=\"M407.922,383.372l-41.645-32.386-41.8,32.466.015.012.051,52.882,83.615-.08-.051-52.894Z\"\n          transform=\"translate(-324.104 -350.812)\"\n          fill=\"#e3e3e3\"\n        />\n        <g id=\"Group_64\" data-name=\"Group 64\">\n          <path\n            id=\"Path_24\"\n            data-name=\"Path 24\"\n            d=\"M406.223,382.295l-14.1-10.964-22.439-17.45-5.106-3.971c-.144-.112-.516.016-.639.112l-4.169,3.238-9.949,7.728-12.1,9.395-10.412,8.087-3.469,2.694a17.339,17.339,0,0,0-1.631,1.267.791.791,0,0,1-.073.057c-.038.029-.131.1-.063.148a6.981,6.981,0,0,1-.006,1.391l0,3.836q.006,6.3.012,12.6.007,7.666.015,15.332.006,6.595.013,13.19,0,2.176,0,4.351v1.357a2.351,2.351,0,0,0,0,.714.3.3,0,0,1,0,.093c0,.046.113.059.133.059l8.333-.008,20.005-.019,24.112-.023,20.849-.02c3.389,0,6.784.056,10.173-.01h.143c.142,0,.614-.05.614-.259q0-2.623,0-5.246-.006-6.3-.012-12.6l-.015-15.335q-.006-6.6-.013-13.193l0-4.351v-1.358a2.344,2.344,0,0,0,0-.714.3.3,0,0,1,0-.093c0-.046-.113-.059-.133-.059h-.186c-.168,0-.848.319-.481.319.177,0,.006-.114.053.019a.936.936,0,0,1,0,.258v1.019q0,1.921,0,3.842L405.7,400.3l.015,15.334q.006,6.607.013,13.215,0,2.2,0,4.4,0,.679,0,1.357a2.645,2.645,0,0,0,0,.714.341.341,0,0,1,0,.093l.614-.26-5.715.005-14.422.014-18.966.018-19.585.019-16.052.015-8.421.008c-.1,0-.364.051-.451,0,.237.137.13-.316.13-.5q0-2.13,0-4.26-.008-8.39-.016-16.779-.009-9.6-.018-19.2-.005-5.793-.011-11.586c0-.112.066-.466-.038-.546l-.063.148,4.169-3.238,9.949-7.728,12.1-9.395,10.412-8.087,3.468-2.694a10.483,10.483,0,0,0,1.631-1.267.474.474,0,0,1,.073-.057l-.639.112,14.1,10.965,22.439,17.45,5.106,3.971C405.687,382.684,406.347,382.391,406.223,382.295Z\"\n            transform=\"translate(-322.054 -349.865)\"\n            fill=\"#e3e3e3\"\n          />\n        </g>\n      </g>\n      <g id=\"Group_66\" data-name=\"Group 66\" transform=\"translate(0.004 32.314)\">\n        <path\n          id=\"Path_25\"\n          data-name=\"Path 25\"\n          d=\"M322.89,611.952q0-2.623-.005-5.246-.006-6.3-.012-12.6l-.015-15.335q-.007-6.6-.013-13.193,0-2.176,0-4.352v-1.358a2.5,2.5,0,0,0,0-.714.331.331,0,0,1,0-.093l-.513.281,8.333-.008,20.005-.019,24.112-.023,20.849-.02,6.882-.007,2.17,0a4.437,4.437,0,0,0,1.12,0,.564.564,0,0,1,.143,0l-.24-.208,0,5.246q.006,6.3.012,12.6.007,7.668.015,15.335l.013,13.193q0,2.176,0,4.351,0,.679,0,1.357a2.509,2.509,0,0,0,0,.714.319.319,0,0,1,0,.093l.513-.281-8.333.008-20.005.019-24.112.023-20.849.02c-3.386,0-6.787-.085-10.173.01-.048,0-.1,0-.143,0-.324,0-.776.49-.273.49l8.333-.008,20.005-.019,24.112-.023,20.849-.02c3.386,0,6.787.085,10.173-.01.047,0,.1,0,.143,0,.142,0,.513-.067.513-.282l0-5.246q-.006-6.3-.012-12.6-.007-7.667-.015-15.335-.006-6.6-.013-13.193,0-2.176,0-4.352a11.491,11.491,0,0,0,0-2.071.542.542,0,0,1,0-.093.219.219,0,0,0-.24-.208l-8.333.008-20.005.019-24.112.023-20.849.02c-3.386,0-6.787-.084-10.173.01-.047,0-.1,0-.143,0-.142,0-.513.067-.513.282l.005,5.246q.006,6.3.012,12.6.007,7.668.015,15.335.006,6.6.013,13.193,0,2.176,0,4.352a10.616,10.616,0,0,0,0,2.071.475.475,0,0,1,0,.093C322.138,612.381,322.89,612.246,322.89,611.952Z\"\n          transform=\"translate(-322.077 -558.77)\"\n          fill=\"#cfcfcf\"\n        />\n      </g>\n    </g>\n    <g id=\"Group_72\" data-name=\"Group 72\" transform=\"translate(13.085)\">\n      <path\n        id=\"Path_26\"\n        data-name=\"Path 26\"\n        d=\"M446.946,375.673l0-67.012a2.958,2.958,0,0,0-2.963-2.953l-60.377,0a2.958,2.958,0,0,0-2.963,2.954v10.444l.05,5.756,0,63.638a2.958,2.958,0,0,0,2.963,2.954h47.511l15.778-15.766Z\"\n        transform=\"translate(-380.223 -305.615)\"\n        fill=\"#e5e5e5\"\n      />\n      <path\n        id=\"Path_27\"\n        data-name=\"Path 27\"\n        d=\"M393.844,330.97l.048,5.615,0,62.072a2.863,2.863,0,0,0,2.845,2.881H442.36l.658-.668V389.1a3.127,3.127,0,0,1,3.144-3.111h9.519a2.375,2.375,0,0,0,2.388-2.363l0-62.849a2.863,2.863,0,0,0-2.845-2.881l-58.533,0a2.863,2.863,0,0,0-2.845,2.881Z\"\n        transform=\"translate(-391.383 -315.921)\"\n        fill=\"#fff\"\n      />\n      <g id=\"Group_68\" data-name=\"Group 68\" transform=\"translate(0.063 45.71)\">\n        <path\n          id=\"Path_28\"\n          data-name=\"Path 28\"\n          d=\"M444.2,600.785l-16.918,13.1-2.379,1.843.563-.2-9.221.007-14.625.01-3.4,0,.505.1-16.684-12.924-2.362-1.829c-.488-.378-1.817.32-1.161.828L391.4,611.7l5.9,4.569a1.569,1.569,0,0,0,1.08.31l2.529,0,20.008-.014,3.371,0a2.929,2.929,0,0,0,1.6-.206c.466-.292.891-.691,1.325-1.026l3.14-2.432,14.511-11.239.317-.246c.8-.62-.418-1.055-.975-.623Z\"\n          transform=\"translate(-378.345 -600.611)\"\n          fill=\"#e3e3e3\"\n        />\n      </g>\n      <g id=\"Group_69\" data-name=\"Group 69\">\n        <path\n          id=\"Path_29\"\n          data-name=\"Path 29\"\n          d=\"M445.035,375.312v-7.573q0-8.9,0-17.809,0-10.34,0-20.68,0-8.092,0-16.184,0-2.053,0-4.1c0-.217.005-.435,0-.653a3.212,3.212,0,0,0-3.2-3.161c-2.8-.086-5.612,0-8.41,0H382.3c-.273,0-.546,0-.82,0a3.459,3.459,0,0,0-3.437,2.611,14.6,14.6,0,0,0-.065,2.928v5.01c0,3.255.05,6.509.05,9.763q0,6.021,0,12.042,0,9.911,0,19.822,0,9.732,0,19.463v10.965a6.855,6.855,0,0,0,.032.944,3.224,3.224,0,0,0,3.223,2.674c1.145.026,2.293,0,3.437,0H427.5c.387,0,.784.027,1.17,0a1.169,1.169,0,0,0,.841-.48l12.236-12.226,2.4-2.394c.169-.169.886-.672.892-.956.007-.346-.745-.209-.751.077,0-.1.1-.143-.037,0l-.327.327-1.145,1.144-3.787,3.785-8.438,8.431-1.974,1.973.443-.155H382.067a6.786,6.786,0,0,1-.934-.029,2.812,2.812,0,0,1-2.351-2.821c-.057-2.648,0-5.3,0-7.952q0-8.17,0-16.34V344.964q0-7.52,0-15.04c0-2.051.011-4.1-.007-6.155-.041-4.74-.044-9.479-.044-14.219a4.373,4.373,0,0,1,.627-3.021,2.61,2.61,0,0,1,2.106-.9c1.053,0,2.106,0,3.159,0h49.232c2.552,0,5.119-.082,7.669,0a2.808,2.808,0,0,1,2.759,2.766c.006.188,0,.378,0,.566v3.454q0,6.935,0,13.871,0,9.269,0,18.538,0,8.814,0,17.627V375.39C444.284,375.737,445.035,375.6,445.035,375.312Z\"\n          transform=\"translate(-377.936 -305.109)\"\n          fill=\"#cfcfcf\"\n        />\n      </g>\n      <g id=\"Group_71\" data-name=\"Group 71\" transform=\"translate(23.258 24.837)\">\n        <g id=\"Group_70\" data-name=\"Group 70\" transform=\"translate(1.021 7.165)\">\n          <path\n            id=\"Path_30\"\n            data-name=\"Path 30\"\n            d=\"M554.549,515.673a13.349,13.349,0,0,0-6.148-3.24,15.784,15.784,0,0,0-11.252,1.508,10.784,10.784,0,0,0-2.173,1.5c-.327.305.4.36.611.166,2.437-2.274,6.276-3.232,9.507-3.118a13.424,13.424,0,0,1,8.766,3.5c.207.208.917-.08.69-.309Z\"\n            transform=\"translate(-534.892 -511.996)\"\n            fill=\"#cfcfcf\"\n          />\n        </g>\n        <circle\n          id=\"Ellipse_14\"\n          data-name=\"Ellipse 14\"\n          cx=\"1.154\"\n          cy=\"1.154\"\n          r=\"1.154\"\n          transform=\"translate(0 1.632) rotate(-45)\"\n          fill=\"#cfcfcf\"\n        />\n        <circle\n          id=\"Ellipse_15\"\n          data-name=\"Ellipse 15\"\n          cx=\"1.154\"\n          cy=\"1.154\"\n          r=\"1.154\"\n          transform=\"translate(18.103 1.632) rotate(-45)\"\n          fill=\"#cfcfcf\"\n        />\n      </g>\n    </g>\n    <g id=\"Group_76\" data-name=\"Group 76\" transform=\"translate(4.228 39.419)\">\n      <path\n        id=\"Path_31\"\n        data-name=\"Path 31\"\n        d=\"M351.21,582.735l-28.12-21.79.051,52.882,83.615-.08L406.7,561l-27.672,21.782Z\"\n        transform=\"translate(-322.716 -560.79)\"\n        fill=\"#e3e3e3\"\n      />\n      <path\n        id=\"Path_32\"\n        data-name=\"Path 32\"\n        d=\"M368.324,583.028l-24.989-19.29.034,35.143a12.106,12.106,0,0,0,12.118,12.095l68.379-.065-.047-49.619L395.934,583Z\"\n        transform=\"translate(-339.83 -561.084)\"\n        fill=\"#eaeaea\"\n      />\n      <g id=\"Group_73\" data-name=\"Group 73\" transform=\"translate(0.714 22.123)\">\n        <path\n          id=\"Path_33\"\n          data-name=\"Path 33\"\n          d=\"M326.5,726.275l9.319-7.646,14.719-12.077,3.409-2.8-.754.2,11.689-.011,14.315-.014c.061,0,.379.044.426,0-.068.064-.331-.228-.207-.027a4.395,4.395,0,0,0,.934.761l4.465,3.639,13.507,11.007,5.8,4.729c1.013.825,2,1.731,3.059,2.493.052.037.1.081.149.121.442.36,1.791-.287,1.17-.793L393.016,713.24l-9.607-7.829-2.551-2.079a1.573,1.573,0,0,0-1.2-.368l-23.487.022c-.8,0-1.619-.036-2.423,0-.765.036-1.263.619-1.826,1.081l-8.248,6.767-17.778,14.587-.35.287c-.781.641.442.987.959.563Z\"\n          transform=\"translate(-325.288 -702.965)\"\n          fill=\"#e3e3e3\"\n        />\n      </g>\n      <g id=\"Group_74\" data-name=\"Group 74\">\n        <path\n          id=\"Path_34\"\n          data-name=\"Path 34\"\n          d=\"M349.521,581.765l-9.548-7.4-15.08-11.685-3.493-2.706c-.119-.092-.726.046-.726.225q0,2.622,0,5.245.006,6.3.012,12.6.007,7.666.015,15.332.006,6.6.013,13.19,0,2.175,0,4.351,0,.678,0,1.357a2.3,2.3,0,0,0,0,.714.3.3,0,0,1,0,.093c0,.042.116.047.13.047l8.333-.008,20-.019,24.112-.023,20.849-.02c3.387,0,6.787.08,10.173-.01.047,0,.1,0,.143,0,.127,0,.618-.06.617-.247l-.017-17.858q-.013-14.211-.027-28.422,0-3.234-.006-6.468c0-.169-.651.086-.711.132l-9.443,7.328-15.12,11.735-3.457,2.683.581-.179-9.258,0-14.785-.005h-3.432c-.153,0-.842.294-.488.294l11.737,0,15.007.005a2.987,2.987,0,0,0,1.145-.087,3.473,3.473,0,0,0,.675-.487l4.054-3.146,13.84-10.741,6.2-4.814c1.069-.83,2.273-1.6,3.26-2.53.047-.044.1-.081.155-.12l-.711.132q.009,8.929.017,17.858.014,14.211.027,28.422,0,3.234.006,6.468l.617-.247-5.674.005-14.4.014-18.956.018-19.591.019-16.024.015-8.5.008c-.092,0-.393.054-.474,0,.214.142.123-.31.123-.458l0-4.171q-.008-8.307-.016-16.615-.009-9.651-.018-19.3-.006-5.858-.011-11.716,0-.287,0-.574l-.726.225,9.548,7.4,15.08,11.685,3.493,2.706C348.973,582.137,349.618,581.84,349.521,581.765Z\"\n          transform=\"translate(-320.675 -559.945)\"\n          fill=\"#cfcfcf\"\n        />\n      </g>\n      <g id=\"Group_75\" data-name=\"Group 75\" transform=\"translate(0.039 21.704)\">\n        <path\n          id=\"Path_35\"\n          data-name=\"Path 35\"\n          d=\"M321.6,723.414l9.525-7.74,15.118-12.286,3.491-2.837-.445.148,11.732-.011,14.929-.014a2.266,2.266,0,0,0,.555,0c.2-.058-.067-.034-.067-.034a6.777,6.777,0,0,0,.817.662l4.344,3.518,13.724,11.115,5.959,4.826c1.042.844,2.056,1.757,3.142,2.545.051.037.1.081.149.121.194.157.882-.134.7-.284l-15.877-12.859-9.687-7.845c-.8-.644-1.585-1.3-2.386-1.932-.376-.3-.728-.229-1.205-.229l-24.161.023a20.449,20.449,0,0,0-2.364,0c-.6.072-1.158.727-1.6,1.088l-8.425,6.847-18.207,14.8-.345.28c-.323.263.418.244.593.1Z\"\n          transform=\"translate(-320.926 -700.26)\"\n          fill=\"#cfcfcf\"\n        />\n      </g>\n    </g>\n  </g>\n</g>\n</svg>)\n}","import React from 'react';\nimport Box from '@mui/material/Box';\nimport Skeleton from '@mui/material/Skeleton';\nimport InsertDriveFileIcon from '@mui/icons-material/InsertDriveFile';\nimport VisibilityIcon from '@mui/icons-material/Visibility';\nimport { IAppsAndViewsProps } from '../types';\nimport { classes } from './styles';\n\nexport default function ApplicationsAndViews({\n  applications,\n  openApplications,\n  jobCounts,\n  isLoading,\n  handleTabChange\n}: IAppsAndViewsProps) {\n  return (\n    <Box sx={classes.subWidget}>\n      <Box sx={classes.widgetBlockContainer}>\n        <Box\n          sx={{ ...classes.widgetBlock, cursor: 'pointer' }}\n          onClick={!isLoading ? () => handleTabChange(undefined, 1) : undefined}\n          id=\"applications-widget-job\"\n        >\n          <Box sx={classes.widgetBlockIcon}>\n            <InsertDriveFileIcon />\n          </Box>\n          <Box sx={classes.widgetBlockNew}>\n            {isLoading ? (\n              <Skeleton animation=\"wave\" width={32} height={26} />\n            ) : (\n              jobCounts?.applications_count > 0 && `+ ${jobCounts?.applications_count}`\n            )}\n          </Box>\n          <Box sx={classes.widgetBlockText}>\n            {isLoading ? (\n              <Skeleton animation=\"wave\" width={80} height={30} />\n            ) : (\n              <Box sx={classes.blockCount}>{`${applications} (${openApplications})`}</Box>\n            )}\n            <Box sx={classes.blockTitle}>Applications</Box>\n          </Box>\n        </Box>\n        <Box sx={classes.widgetBlock}>\n          <Box sx={classes.widgetBlockIcon}>\n            <VisibilityIcon />\n          </Box>\n          <Box sx={classes.widgetBlockNew}>\n            {isLoading ? (\n              <Skeleton animation=\"wave\" width={32} height={26} />\n            ) : (\n              jobCounts?.unique_page_views?.daily_unique_views > 0 &&\n              `+ ${jobCounts?.unique_page_views?.daily_unique_views}`\n            )}\n          </Box>\n          <Box sx={classes.widgetBlockText}>\n            {isLoading ? (\n              <Skeleton animation=\"wave\" width={80} height={30} />\n            ) : (\n              <Box sx={classes.blockCount}>{jobCounts?.unique_page_views?.unique_views}</Box>\n            )}\n            <Box sx={classes.blockTitle}>Unique Pageviews</Box>\n          </Box>\n        </Box>\n      </Box>\n    </Box>\n  );\n}\n","import React, { FC } from 'react';\nimport Box from '@mui/material/Box';\nimport EventIcon from '@mui/icons-material/Event';\nimport Skeleton from '@mui/material/Skeleton';\nimport moment from 'moment-timezone';\nimport { ICreationExpiryProps, IDateWidget } from '../types';\nimport { classes } from './styles';\nimport { theme } from '../../../ThemeContext/ThemeObject';\n\nexport default function CreationExpiry({\n  createdAt,\n  publishedAt,\n  expiresAt,\n  isLoading,\n  timeZone\n}: ICreationExpiryProps) {\n  const timeZoneString = Intl.DateTimeFormat().resolvedOptions().timeZone;\n  const jobTimeZone = timeZone ? timeZone : timeZoneString;\n\n  const expiryDateColor = (date: string) => {\n    const dayToExpired = (new Date(date).getTime() - Date.now()) / (1000 * 60 * 60 * 24);\n    if (dayToExpired < 0) {\n      return theme.palette.error.main;\n    } else if (dayToExpired < 1) {\n      return theme.palette.secondary.yellow;\n    } else {\n      return '#333333';\n    }\n  };\n\n  return (\n    <Box sx={{ ...classes.subWidget, border: '1px solid #E3E3E3' }}>\n      <Box sx={classes.creationExpiryContainer}>\n        <Box sx={classes.widgetIcon}>\n          <EventIcon />\n        </Box>\n        <DateWidget\n          isLoading={isLoading}\n          label=\"Creation Date\"\n          timezone={jobTimeZone}\n          utcDate={createdAt}\n        />\n        <DateWidget\n          isLoading={isLoading}\n          label=\"Published Date\"\n          timezone={jobTimeZone}\n          utcDate={publishedAt}\n        />\n        <DateWidget\n          isLoading={isLoading}\n          label=\"Expiry Date\"\n          sx={{ color: expiryDateColor(expiresAt) }}\n          timezone={jobTimeZone}\n          utcDate={expiresAt}\n        />\n      </Box>\n    </Box>\n  );\n}\n\nconst DateWidget: FC<IDateWidget> = ({ isLoading, label, timezone, utcDate, sx }) => {\n  return (\n    <Box sx={{ ...classes.widgetText, marginRight: '20px' }}>\n      <Box sx={classes.widgetTextTitle}>{label}</Box>\n      <Box sx={{ ...classes.widgetTextContent, ...sx }}>\n        {isLoading ? (\n          <Skeleton animation=\"wave\" width={100} height={60} />\n        ) : utcDate ? (\n          <>\n            <Box>{moment.tz(utcDate, timezone).format('DD MMM YY')},</Box>\n            <Box>{moment.tz(utcDate, timezone).format('hh:mma z')}</Box>\n          </>\n        ) : (\n          <Box sx={{ height: '40px' }}>-</Box>\n        )}\n      </Box>\n    </Box>\n  );\n};\n","import React, { useRef, useEffect, useState, memo } from 'react';\nimport Box from '@mui/material/Box';\nimport Skeleton from '@mui/material/Skeleton';\nimport { IJobInformationProps } from '../types';\nimport { classes } from './styles';\n\nfunction JobInformation({\n  createdBy,\n  createdByLink,\n  entity,\n  entityLink,\n  brand,\n  brandLink,\n  location,\n  tags,\n  assignedUser,\n  isLoading\n}: IJobInformationProps) {\n  const [infoWidgetWidth, setInfoWidgetWidth] = useState(0);\n  const infoWidgetRef = useRef(null);\n\n  useEffect(() => {\n    const widgetObserver = new ResizeObserver((entries) => {\n      setInfoWidgetWidth(entries[0].contentRect.width);\n    });\n    widgetObserver.observe(infoWidgetRef.current);\n    return () => {\n      widgetObserver.disconnect();\n    };\n  }, []);\n\n  return (\n    <Box\n      sx={{ ...classes.infoWidget, minHeight: infoWidgetWidth < 1052 ? '250px' : '118px' }}\n      ref={infoWidgetRef}\n    >\n      <Box sx={classes.infoContainer}>\n        <Box sx={classes.jobInfoContainer}>\n          <Box sx={classes.infoText}>\n            <Box sx={classes.infoTextTitle}>Created By</Box>\n            {isLoading ? (\n              <Skeleton animation=\"wave\" width={140} height={30} />\n            ) : createdBy ? (\n              <a href={createdByLink}>\n                <Box sx={classes.infoTextContent}>{createdBy}</Box>\n              </a>\n            ) : (\n              <Box sx={classes.infoTextContent}>-</Box>\n            )}\n          </Box>\n          <Box sx={classes.infoText}>\n            <Box sx={classes.infoTextTitle}>Entity</Box>\n            {isLoading ? (\n              <Skeleton animation=\"wave\" width={140} height={30} />\n            ) : entity ? (\n              <a href={entityLink}>\n                <Box sx={classes.infoTextContent}>{entity}</Box>\n              </a>\n            ) : (\n              <Box sx={classes.infoTextContent}>-</Box>\n            )}\n          </Box>\n          <Box sx={classes.infoText}>\n            <Box sx={classes.infoTextTitle}>Brand</Box>\n            {isLoading ? (\n              <Skeleton animation=\"wave\" width={140} height={30} />\n            ) : brand ? (\n              <a href={brandLink}>\n                <Box sx={classes.infoTextContent}>{brand}</Box>\n              </a>\n            ) : (\n              <Box sx={classes.infoTextContent}>-</Box>\n            )}\n          </Box>\n        </Box>\n        <Box sx={classes.jobInfoContainer}>\n          <Box sx={classes.infoText}>\n            <Box sx={classes.infoTextTitle}>Location</Box>\n            {isLoading ? (\n              <Skeleton animation=\"wave\" width={140} height={30} />\n            ) : (\n              <Box sx={classes.infoTextContent}>{location ? location : '-'}</Box>\n            )}\n          </Box>\n          <Box sx={classes.infoText}>\n            <Box sx={classes.infoTextTitle}>Tags</Box>\n            {isLoading ? (\n              <Skeleton animation=\"wave\" width={140} height={30} />\n            ) : (\n              <Box sx={classes.infoTextContent}>\n                {tags?.length\n                  ? tags.map((tag, i) => (\n                      <Box key={i} sx={classes.tag}>\n                        {tag.name}\n                      </Box>\n                    ))\n                  : '-'}\n              </Box>\n            )}\n          </Box>\n          <Box sx={classes.infoText}>\n            <Box sx={classes.infoTextTitle}>Assigned User</Box>\n            {isLoading ? (\n              <Skeleton animation=\"wave\" width={140} height={30} />\n            ) : (\n              <Box sx={classes.infoTextContent}>{assignedUser ? assignedUser : '-'}</Box>\n            )}\n          </Box>\n        </Box>\n      </Box>\n    </Box>\n  );\n}\n\nexport default memo(JobInformation);\n","import React from 'react';\nimport Box from '@mui/material/Box';\nimport ApplicationsAndViews from './ApplicationsAndViews';\nimport CreationExpiry from './CreationExpiry';\nimport { ISubcontainerProps } from '../types';\nimport { classes } from './styles';\n\nexport default function Subcontainer({\n  applications,\n  openApplications,\n  jobCounts,\n  createdAt,\n  publishedAt,\n  expiresAt,\n  isLoading,\n  handleTabChange,\n  timeZone\n}: ISubcontainerProps) {\n  return (\n    <Box sx={classes.subcontainer}>\n      <ApplicationsAndViews\n        jobCounts={jobCounts}\n        isLoading={isLoading}\n        applications={applications}\n        openApplications={openApplications}\n        handleTabChange={handleTabChange}\n      />\n      <CreationExpiry\n        createdAt={createdAt}\n        publishedAt={publishedAt}\n        expiresAt={expiresAt}\n        isLoading={isLoading}\n        timeZone={timeZone}\n      />\n    </Box>\n  );\n}\n","import React from 'react';\nimport Job from './Job';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport { ReactQueryDevtools } from '@tanstack/react-query-devtools';\n\nconst queryClient = new QueryClient({\n  defaultOptions: {\n    queries: {\n      refetchOnWindowFocus: false\n    }\n  }\n});\n\nexport default function JobPage({\n  apiKey,\n  job_id,\n  aiStudioEnabled,\n  ai_studio_summaries_enabled,\n  foundu_enabled,\n  foundu_auth_url,\n  entity,\n  userTimeZone,\n  newNoteOnApplicationEnabled,\n  newApplicationEnabled\n}: {\n  apiKey: string;\n  job_id: number;\n  aiStudioEnabled: boolean;\n  entity: object;\n  userTimeZone: string;\n  ai_studio_summaries_enabled: boolean;\n  foundu_enabled: boolean;\n  foundu_auth_url?: string;\n  newNoteOnApplicationEnabled: boolean;\n  newApplicationEnabled: boolean;\n}) {\n  return (\n    <QueryClientProvider client={queryClient}>\n      <Job\n        apiKey={apiKey}\n        job_id={job_id}\n        aiStudioEnabled={aiStudioEnabled}\n        ai_studio_summaries_enabled={ai_studio_summaries_enabled}\n        foundu_enabled={foundu_enabled}\n        foundu_auth_url={foundu_auth_url}\n        entity={entity}\n        userTimeZone={userTimeZone}\n        newNoteOnApplicationEnabled={newNoteOnApplicationEnabled}\n        newApplicationEnabled={newApplicationEnabled}\n      />\n      <ReactQueryDevtools />\n    </QueryClientProvider>\n  );\n}\n","import React, { useState } from 'react';\nimport { classes } from './useStyles';\nimport Box from '@mui/material/Box';\nimport IconButton from '@mui/material/IconButton';\nimport IosShareIcon from '@mui/icons-material/IosShare';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport DoneIcon from '@mui/icons-material/Done';\nimport ErrorIcon from '@mui/icons-material/Error';\nimport Tooltip from '@mui/material/Tooltip';\nimport Api from '../API';\nimport { IExportCsvProps, IOptionType } from '../types';\nimport moment from 'moment';\n\nexport default function ExportCSV({\n  filters,\n  order,\n  orderBy,\n  archived,\n  sortableColumns,\n  search,\n  jobStatusFeature\n}: IExportCsvProps) {\n  const [isLoading, setIsLoading] = useState(0);\n  const [isError, setIsError] = useState('');\n\n  const activeColumns = {};\n  sortableColumns.forEach((column) => {\n    activeColumns[column.id] = column.id === 'status' && !jobStatusFeature ? false : column.enabled;\n  });\n\n  const handleClick = async () => {\n    setIsLoading(1);\n    try {\n      const data = await Api.getCSVExport(\n        {\n          'filter[archived]': archived,\n          sort_by: orderBy,\n          sort_direction: order,\n          'filter[location]': filters.location.map((location: IOptionType) => location.name),\n          'filter[state]': filters.state.map((state: IOptionType) => state.value),\n          'filter[entity_ids]': filters.entity.map((entity: IOptionType) => entity.id),\n          'filter[start_published_at]':\n            filters.published[0] && moment(filters.published[0]).format('YYYY-MM-DD'),\n          'filter[end_published_at]':\n            filters.published[1] && moment(filters.published[1]).format('YYYY-MM-DD'),\n          'filter[start_expires_at]':\n            filters.expiry[0] && moment(filters.expiry[0]).format('YYYY-MM-DD'),\n          'filter[end_expires_at]':\n            filters.expiry[1] && moment(filters.expiry[1]).format('YYYY-MM-DD'),\n          activeColumns: JSON.stringify(activeColumns),\n          search: search\n        },\n      );\n      setIsLoading(2);\n      setTimeout(() => {\n        setIsLoading(0);\n      }, 6000);\n    } catch (error) {\n      console.log(error);\n      setIsError('An error occured while exporting the CSV');\n      setIsLoading(3);\n    }\n  };\n\n  const showIcons = () => {\n    switch (isLoading) {\n      case 0:\n        return <IosShareIcon />;\n      case 1:\n        return <CircularProgress size={24} />;\n      case 2:\n        return <DoneIcon />;\n      case 3:\n        return <ErrorIcon />;\n      default:\n        return <IosShareIcon />;\n    }\n  };\n\n  return (\n    <Tooltip title=\"Export CSV\" placement=\"top\" arrow>\n      <Box>\n        <Tooltip\n          open={isLoading === 2}\n          placement=\"top\"\n          title={isError || 'A CSV download link has been sent to your email'}\n          arrow\n        >\n          <IconButton\n            id={`export-jobs-csv-${archived ? 'archived' : 'current'}-button`}\n            sx={classes.iconButton}\n            onClick={handleClick}\n          >\n            {showIcons()}\n          </IconButton>\n        </Tooltip>\n      </Box>\n    </Tooltip>\n  );\n}\n","import React, { useState } from 'react';\nimport { classes } from './useStyles';\nimport {\n  Box,\n  Popover,\n  IconButton,\n  FormControl,\n  FormGroup,\n  FormControlLabel,\n  Switch,\n  Stack,\n  Tooltip\n} from '@mui/material';\nimport ViewColumnIcon from '@mui/icons-material/ViewColumn';\nimport { IDropdownProps } from '../types';\nimport {\n  DndContext,\n  closestCenter,\n  KeyboardSensor,\n  PointerSensor,\n  useSensor,\n  useSensors\n} from '@dnd-kit/core';\nimport {\n  arrayMove,\n  SortableContext,\n  sortableKeyboardCoordinates,\n  verticalListSortingStrategy\n} from '@dnd-kit/sortable';\nimport SortableField from './SortableField';\n\nexport default function FieldDropdown({\n  sortableColumns,\n  setSortableColumns,\n  density,\n  setDensity,\n  postDensitySetting,\n  archived,\n  jobStatusFeature,\n  userPermissions\n}: IDropdownProps) {\n  const [anchorEl, setAnchorEl] = useState(null);\n\n  const handleFieldSwitchChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    const newSortableColumns = sortableColumns.map((field) => {\n      if (field.id === event.target.name) {\n        return { ...field, enabled: event.target.checked };\n      } else {\n        return field;\n      }\n    });\n    setSortableColumns(newSortableColumns);\n  };\n\n  const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n    setAnchorEl(event.currentTarget);\n  };\n\n  const handleClose = () => {\n    setAnchorEl(null);\n  };\n\n  const sensors = useSensors(\n    useSensor(PointerSensor),\n    useSensor(KeyboardSensor, {\n      coordinateGetter: sortableKeyboardCoordinates\n    })\n  );\n\n  function handleDragEnd(event) {\n    const { active, over } = event;\n\n    if (active.id !== over.id) {\n      const oldIndex = sortableColumns.map((c) => c.id).indexOf(active.id);\n      const newIndex = sortableColumns.map((c) => c.id).indexOf(over.id);\n      const newArray = arrayMove(sortableColumns, oldIndex, newIndex);\n\n      setSortableColumns(newArray);\n    }\n  }\n\n  const open = Boolean(anchorEl);\n\n  return (\n    <Tooltip title=\"Table settings\" placement=\"top\" arrow>\n      <Box>\n        <IconButton\n          id={`field-dropdown-${archived ? 'archived' : 'current'}-button}`}\n          sx={{\n            ...classes.iconButton,\n            backgroundColor: open\n              ? classes.iconButtonOpen.backgroundColor\n              : classes.iconButton.backgroundColor\n          }}\n          onClick={handleClick}\n        >\n          <ViewColumnIcon />\n        </IconButton>\n        <Popover\n          id=\"field-dropdown-popover\"\n          sx={classes.popover}\n          open={open}\n          anchorEl={anchorEl}\n          onClose={handleClose}\n          anchorOrigin={{\n            vertical: 'bottom',\n            horizontal: 'right'\n          }}\n          transformOrigin={{\n            vertical: 'top',\n            horizontal: 'right'\n          }}\n        >\n          <Box sx={classes.popoverContent}>\n            <Stack sx={classes.tableSettingsHeader}>Column</Stack>\n            <FormControl component=\"fieldset\" variant=\"standard\">\n              <FormGroup id=\"field-dropdown-switches\">\n                <DndContext\n                  sensors={sensors}\n                  collisionDetection={closestCenter}\n                  onDragEnd={handleDragEnd}\n                >\n                  <SortableContext items={sortableColumns} strategy={verticalListSortingStrategy}>\n                    {sortableColumns.map((field, index) => {\n                      if (field.canToggle === false || (!jobStatusFeature && field.id === 'status'))\n                        return null;\n                      else if (\n                        field.label === 'RM User' &&\n                        !userPermissions?.recruitment_team_enabled\n                      )\n                        return null;\n                      else if (\n                        field.label === 'Entity' &&\n                        !userPermissions?.Jobs?.['Show Job Sub-Entity']\n                      )\n                        return null;\n                      return (\n                        <SortableField\n                          key={index}\n                          field={field}\n                          handleFieldSwitchChange={handleFieldSwitchChange}\n                        />\n                      );\n                    })}\n                  </SortableContext>\n                </DndContext>\n              </FormGroup>\n            </FormControl>\n            <Stack sx={classes.tableSettingsHeader} paddingTop=\"16px\">\n              Density\n            </Stack>\n            <FormControl>\n              <FormGroup>\n                {['Default', 'Compact', 'Ultra Compact'].map((size, index) => {\n                  const isSwitched = size === density;\n                  return (\n                    <FormControlLabel\n                      sx={{\n                        ...classes.switchLabels,\n                        '& .MuiFormControlLabel-label': isSwitched\n                          ? classes.switchLabels['& .MuiFormControlLabel-label']\n                          : {\n                              ...classes.switchLabels['& .MuiFormControlLabel-label'],\n                              ...classes.labelActive['& .MuiFormControlLabel-label']\n                            }\n                      }}\n                      key={index}\n                      control={\n                        <Switch\n                          sx={isSwitched ? classes.switchActive : classes.switch}\n                          checked={isSwitched}\n                          onChange={(event) => {\n                            setDensity(size);\n                            postDensitySetting(size);\n                          }}\n                          name={'density'}\n                        />\n                      }\n                      label={size}\n                      labelPlacement=\"start\"\n                    />\n                  );\n                })}\n              </FormGroup>\n            </FormControl>\n          </Box>\n        </Popover>\n      </Box>\n    </Tooltip>\n  );\n}\n","import React, { useState, useEffect } from 'react';\nimport { IFilterProps, IFilters, IOptionType } from '../types';\nimport { classes } from './useStyles';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport Box from '@mui/material/Box';\nimport Popover from '@mui/material/Popover';\nimport IconButton from '@mui/material/IconButton';\nimport Badge from '@mui/material/Badge';\nimport Button from '@mui/material/Button';\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport SortIcon from '@mui/icons-material/Sort';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Accordion from '@mui/material/Accordion';\nimport AccordionSummary from '@mui/material/AccordionSummary';\nimport AccordionDetails from '@mui/material/AccordionDetails';\nimport Typography from '@mui/material/Typography';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport DayPicker, { DateUtils } from 'react-day-picker';\nimport LocalizationProvider from '@mui/lab/LocalizationProvider';\nimport DateAdapter from '@mui/lab/AdapterMoment';\nimport DesktopDatePicker from '@mui/lab/DesktopDatePicker';\nimport TextField, { TextFieldProps } from '@mui/material/TextField';\nimport moment from 'moment';\nimport MultiSelect from '../../Components/CustomUIElements/MultiSelect';\nimport Tooltip from '@mui/material/Tooltip';\nimport { addLocalStorageItem } from '../../utils/local-storage';\nimport { FILTERS_KEY } from '../../constants';\n\nexport default function FilterDropdown({\n  filters,\n  setFilters,\n  options,\n  setPage,\n  numberOfFilters,\n  loadingFilters,\n  archived,\n  jobStatusFeature,\n  userPermissions\n}: IFilterProps) {\n  const [statusOptions, setStatusOptions] = useState([]);\n  const [anchorEl, setAnchorEl] = useState(null);\n  const [expanded, setExpanded] = useState({ published: true, expiry: false });\n  const [publishedRange, setPublishedRange] = useState({ from: null, to: null });\n  const [expiryRange, setExpiryRange] = useState({ from: null, to: null });\n  const [tempFilters, setTempFilters] = useState({ ...filters });\n  const [validDate, setValidDate] = useState({\n    publishedStart: true,\n    publishedEnd: true,\n    expiryStart: true,\n    expiryEnd: true\n  });\n  const defaultFilters: IFilters = {\n    state: [],\n    status: [],\n    entity: [],\n    location: [],\n    assigned_user: [],\n    recruitment_ad_user: [],\n    published: [],\n    expiry: []\n  };\n  const publishedModifiers = {\n    start: publishedRange.from,\n    end: publishedRange.to,\n    first: { daysOfWeek: [0] },\n    last: { daysOfWeek: [6] }\n  };\n  const expiryModifiers = {\n    start: expiryRange.from,\n    end: expiryRange.to,\n    first: { daysOfWeek: [0] },\n    last: { daysOfWeek: [6] }\n  };\n\n  const modifiersStyles = {\n    first: {\n      borderTopLeftRadius: '50%',\n      borderBottomLeftRadius: '50%'\n    },\n    last: {\n      borderTopRightRadius: '50%',\n      borderBottomRightRadius: '50%'\n    }\n  };\n\n  useEffect(() => {\n    updateStatusTempFilter();\n  }, [tempFilters.state]);\n\n  function handlePublishedDayClick(day: Date) {\n    let range = DateUtils.addDayToRange(day, publishedRange);\n    if (range.from && range.to && range.from > range.to) range = { from: range.to, to: range.from };\n    setPublishedRange(range);\n    setTempFilters({\n      ...tempFilters,\n      published: [range.from ? range.from : null, range.to ? range.to : null]\n    });\n    if (range.from || range.to)\n      setValidDate({ ...validDate, publishedStart: !!range.from, publishedEnd: !!range.to });\n  }\n\n  function handleExpiryDayClick(day: Date) {\n    let range = DateUtils.addDayToRange(day, expiryRange);\n    if (range.from && range.to && range.from > range.to) range = { from: range.to, to: range.from };\n    setExpiryRange(range);\n    setTempFilters({\n      ...tempFilters,\n      expiry: [range.from ? range.from : null, range.to ? range.to : null]\n    });\n    if (range.from || range.to)\n      setValidDate({ ...validDate, expiryStart: !!range.from, expiryEnd: !!range.to });\n  }\n\n  function handleDateInput(day: Date, published: boolean, isStart: boolean) {\n    if (day === null) {\n      if (published) {\n        setPublishedRange({\n          from: isStart ? null : publishedRange.from,\n          to: isStart ? publishedRange.to : null\n        });\n        setTempFilters({\n          ...tempFilters,\n          published: [isStart ? null : publishedRange.from, isStart ? publishedRange.to : null]\n        });\n      } else {\n        setExpiryRange({\n          from: isStart ? null : expiryRange.from,\n          to: isStart ? expiryRange.to : null\n        });\n        setTempFilters({\n          ...tempFilters,\n          expiry: [isStart ? null : expiryRange.from, isStart ? expiryRange.to : null]\n        });\n      }\n      setValidDate({\n        ...validDate,\n        [`${published ? 'published' : 'expiry'}${isStart ? 'Start' : 'End'}`]: true\n      });\n      return;\n    }\n    day = new Date(day);\n    if (!(moment(day).isValid() && day > new Date('1980-01-01T00:00:00'))) {\n      setValidDate({\n        ...validDate,\n        [`${published ? 'published' : 'expiry'}${isStart ? 'Start' : 'End'}`]: false\n      });\n      return;\n    }\n    if (published) {\n      if (isStart) {\n        const publishedEnd =\n          publishedRange.to && day > publishedRange.to ? null : publishedRange.to;\n        setPublishedRange({ from: day, to: publishedEnd });\n        setTempFilters({ ...tempFilters, published: [day, publishedEnd] });\n      } else {\n        const publishedStart =\n          publishedRange.from && day < publishedRange.from ? null : publishedRange.from;\n        setPublishedRange({ from: publishedStart, to: day });\n        setTempFilters({ ...tempFilters, published: [publishedStart, day] });\n      }\n    } else {\n      if (isStart) {\n        const expiryEnd = expiryRange.to && day > expiryRange.to ? null : expiryRange.to;\n        setExpiryRange({ from: day, to: expiryEnd });\n        setTempFilters({ ...tempFilters, expiry: [day, expiryEnd] });\n      } else {\n        const expiryStart = expiryRange.from && day < expiryRange.from ? null : expiryRange.from;\n        setExpiryRange({ from: expiryStart, to: day });\n        setTempFilters({ ...tempFilters, expiry: [expiryStart, day] });\n      }\n    }\n    setValidDate({\n      ...validDate,\n      [`${published ? 'published' : 'expiry'}${isStart ? 'Start' : 'End'}`]: true\n    });\n  }\n\n  function updateStatusSelectOptions(tempFilters: IFilters) {\n    const states = tempFilters.state.map(function (s) {\n      return s.value;\n    });\n    const statusSelectOptions = options.status.filter(function (status) {\n      return states.includes(status.state);\n    });\n    states.length > 0 ? setStatusOptions(statusSelectOptions) : setStatusOptions(options.status);\n  }\n\n  function updateStatusTempFilter() {\n    const states = tempFilters.state.map(function (s) {\n      return s.value;\n    });\n    const newTemp = tempFilters.status.filter(function (status) {\n      return states.includes(status.state);\n    });\n    setTempFilters({ ...tempFilters, status: newTemp });\n  }\n\n  const handleExpandChange = (filter: string) => (event: React.SyntheticEvent) => {\n    setExpanded({ ...expanded, [filter]: !expanded[filter as keyof typeof expanded] });\n  };\n\n  const handleFilterChange = (filter: string, newValues: (string | IOptionType)[]) => {\n    updateStatusSelectOptions({ ...tempFilters, [filter]: newValues });\n    setTempFilters({ ...tempFilters, [filter]: newValues });\n  };\n\n  const handleCheckPinned = (event: React.ChangeEvent<HTMLInputElement>) => {\n    setTempFilters({ ...tempFilters, pinned: event.target.checked });\n  };\n\n  const handleApplyFilters = () => {\n    addLocalStorageItem(FILTERS_KEY, { ...tempFilters });\n    setFilters({ ...tempFilters });\n    setPage(1);\n    setAnchorEl(null);\n  };\n\n  const handleReset = (event: React.MouseEvent<HTMLButtonElement>) => {\n    addLocalStorageItem(FILTERS_KEY, { ...defaultFilters });\n    setFilters(defaultFilters);\n    setTempFilters(defaultFilters);\n    setPublishedRange({ from: null, to: null });\n    setExpiryRange({ from: null, to: null });\n    setPage(1);\n    setAnchorEl(null);\n  };\n\n  const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n    if (loadingFilters) return;\n    setAnchorEl(event.currentTarget);\n  };\n\n  const handleClose = () => {\n    setAnchorEl(null);\n  };\n\n  const open = Boolean(anchorEl);\n\n  useEffect(() => {\n    if (!open) return;\n    setTempFilters({ ...filters });\n  }, [filters, open]);\n\n  return (\n    <Tooltip title=\"Filter\" placement=\"top\" arrow>\n      <Box>\n        <Badge\n          badgeContent={numberOfFilters}\n          sx={{ '& .MuiBadge-badge': { backgroundColor: '#E37D7A', color: '#FFF' } }}\n          data-testid={`filter-badge-[FilterDropdown]`}\n        >\n          <IconButton\n            id={`filter-dropdown-${archived ? 'archived' : 'current'}-button`}\n            data-testid={`filter-dropdown-${archived ? 'archived' : 'current'}-button`}\n            sx={{\n              ...classes.iconButton,\n              backgroundColor: open\n                ? classes.iconButtonOpen.backgroundColor\n                : classes.iconButton.backgroundColor\n            }}\n            onClick={handleClick}\n          >\n            {loadingFilters ? <CircularProgress size={24} /> : <SortIcon />}\n          </IconButton>\n        </Badge>\n        <Popover\n          id=\"filter-dropdown-popover\"\n          sx={classes.popover}\n          open={open}\n          anchorEl={anchorEl}\n          onClose={handleClose}\n          anchorOrigin={{\n            vertical: 'bottom',\n            horizontal: 'right'\n          }}\n          transformOrigin={{\n            vertical: 'top',\n            horizontal: 'right'\n          }}\n        >\n          <Box sx={classes.filterPopoverContent}>\n            <Box sx={classes.scrollableFilters}>\n              <Box sx={classes.filterPopoverHeader}>\n                <Button\n                  id=\"reset-filters-button\"\n                  data-testid=\"reset-filters-button-[FilterDropdown]\"\n                  variant=\"contained\"\n                  endIcon={<CancelIcon />}\n                  sx={classes.clearButton}\n                  onClick={handleReset}\n                >\n                  Clear all\n                </Button>\n                <Button\n                  id=\"apply-filters-button\"\n                  data-testid=\"apply-filters-button-[FilterDropdown]\"\n                  variant=\"contained\"\n                  onClick={handleApplyFilters}\n                  sx={classes.applyButton}\n                >\n                  Apply\n                </Button>\n              </Box>\n              {userPermissions?.Jobs?.['Show Job Sub-Entity'] && (\n                <Box\n                  sx={classes.multiSelectContainer}\n                  id=\"entity-filter\"\n                  data-testid=\"entity-filter\"\n                >\n                  Entity\n                  <MultiSelect\n                    handleFilterChange={handleFilterChange}\n                    selectOptions={options.entity}\n                    name={'entity'}\n                    filters={tempFilters.entity || filters.entity}\n                  />\n                </Box>\n              )}\n              <Box sx={classes.multiSelectContainer} id=\"state-filter\" data-testid=\"state-filter\">\n                State\n                <MultiSelect\n                  handleFilterChange={handleFilterChange}\n                  selectOptions={options.state}\n                  name={'state'}\n                  filters={tempFilters.state || filters.state}\n                />\n              </Box>\n              {jobStatusFeature && (\n                <Box\n                  sx={classes.multiSelectContainer}\n                  id=\"status-filter\"\n                  data-testid=\"status-filter\"\n                >\n                  Status\n                  <MultiSelect\n                    handleFilterChange={handleFilterChange}\n                    selectOptions={tempFilters.state.length > 0 ? statusOptions : options.status}\n                    name={'status'}\n                    filters={tempFilters.status || filters.status}\n                  />\n                </Box>\n              )}\n              <Box sx={classes.multiSelectContainer} id=\"location-filter\">\n                Location\n                <MultiSelect\n                  handleFilterChange={handleFilterChange}\n                  selectOptions={options.location}\n                  name={'location'}\n                  filters={tempFilters.location || filters.location}\n                />\n              </Box>\n              <Box sx={classes.multiSelectContainer} id=\"assigned-user-filter\">\n                Assigned User\n                <MultiSelect\n                  handleFilterChange={handleFilterChange}\n                  selectOptions={options.assigned_user}\n                  name={'assigned_user'}\n                  filters={tempFilters.assigned_user || filters.assigned_user}\n                />\n              </Box>\n              {userPermissions?.recruitment_team_enabled && (\n                <Box sx={classes.multiSelectContainer} id=\"rm-user-filter\">\n                  RM User\n                  <MultiSelect\n                    handleFilterChange={handleFilterChange}\n                    selectOptions={options.recruitment_ad_user}\n                    name={'recruitment_ad_user'}\n                    filters={tempFilters.recruitment_ad_user || filters.recruitment_ad_user}\n                  />\n                </Box>\n              )}\n              <Accordion\n                expanded={expanded.published}\n                onChange={handleExpandChange('published')}\n                sx={classes.accordionRoot}\n              >\n                <AccordionSummary\n                  expandIcon={<ExpandMoreIcon />}\n                  sx={classes.accordionSummary}\n                  aria-controls=\"panel3a-content\"\n                  id=\"panel3a-header\"\n                >\n                  <Typography sx={classes.summaryTypography}>Published Date</Typography>\n                </AccordionSummary>\n                <AccordionDetails sx={classes.accordionDetails}>\n                  <Box\n                    sx={{\n                      ...sharedClasses.datePickerCalendar,\n                      ...(publishedRange.from && publishedRange.to === null\n                        ? sharedClasses.onlyStartDate\n                        : {})\n                    }}\n                  >\n                    <DayPicker\n                      onDayClick={handlePublishedDayClick}\n                      selectedDays={[publishedRange.from, publishedRange]}\n                      modifiers={publishedModifiers}\n                      modifiersStyles={modifiersStyles}\n                    />\n                  </Box>\n                  <Box sx={classes.dateDisplay}>\n                    <LocalizationProvider dateAdapter={DateAdapter}>\n                      <DesktopDatePicker\n                        label=\"\"\n                        inputFormat=\"DD/MM/yyyy\"\n                        value={publishedRange.from}\n                        onChange={(input) => handleDateInput(input, true, true)}\n                        renderInput={(params: TextFieldProps) => (\n                          <TextField\n                            {...params}\n                            sx={{\n                              ...classes.dateInput,\n                              '& .MuiOutlinedInput-root': validDate.publishedStart\n                                ? classes.dateInput['& .MuiOutlinedInput-root']\n                                : {\n                                    ...classes.dateInput['& .MuiOutlinedInput-root'],\n                                    ...classes.invalidDate['& .MuiOutlinedInput-root']\n                                  }\n                            }}\n                          />\n                        )}\n                      />\n                      <span>to</span>\n                      <DesktopDatePicker\n                        label=\"\"\n                        inputFormat=\"DD/MM/yyyy\"\n                        value={publishedRange.to}\n                        onChange={(input) => handleDateInput(input, true, false)}\n                        renderInput={(params: TextFieldProps) => (\n                          <TextField\n                            {...params}\n                            sx={{\n                              ...classes.dateInput,\n                              '& .MuiOutlinedInput-root': validDate.publishedEnd\n                                ? classes.dateInput['& .MuiOutlinedInput-root']\n                                : {\n                                    ...classes.dateInput['& .MuiOutlinedInput-root'],\n                                    ...classes.invalidDate['& .MuiOutlinedInput-root']\n                                  }\n                            }}\n                          />\n                        )}\n                      />\n                    </LocalizationProvider>\n                  </Box>\n                </AccordionDetails>\n              </Accordion>\n              <Accordion\n                expanded={expanded.expiry}\n                onChange={handleExpandChange('expiry')}\n                sx={classes.accordionRoot}\n              >\n                <AccordionSummary\n                  expandIcon={<ExpandMoreIcon />}\n                  sx={classes.accordionSummary}\n                  aria-controls=\"panel3a-content\"\n                  id=\"panel3a-header\"\n                >\n                  <Typography sx={classes.summaryTypography}>Expiry Date</Typography>\n                </AccordionSummary>\n                <AccordionDetails sx={classes.accordionDetails}>\n                  <Box\n                    sx={{\n                      ...classes.datePicker,\n                      ...(expiryRange.from && expiryRange.to === null ? classes.onlyStartDate : {})\n                    }}\n                  >\n                    <DayPicker\n                      onDayClick={handleExpiryDayClick}\n                      selectedDays={[expiryRange.from, expiryRange]}\n                      modifiers={expiryModifiers}\n                      modifiersStyles={modifiersStyles}\n                    />\n                  </Box>\n                  <Box sx={classes.dateDisplay}>\n                    <LocalizationProvider dateAdapter={DateAdapter}>\n                      <DesktopDatePicker\n                        label=\"\"\n                        inputFormat=\"DD/MM/yyyy\"\n                        value={expiryRange.from}\n                        onChange={(input) => handleDateInput(input, false, true)}\n                        renderInput={(params: TextFieldProps) => (\n                          <TextField\n                            {...params}\n                            sx={{\n                              ...classes.dateInput,\n                              '& .MuiOutlinedInput-root': validDate.expiryStart\n                                ? classes.dateInput['& .MuiOutlinedInput-root']\n                                : {\n                                    ...classes.dateInput['& .MuiOutlinedInput-root'],\n                                    ...classes.invalidDate['& .MuiOutlinedInput-root']\n                                  }\n                            }}\n                          />\n                        )}\n                      />\n                      <span>to</span>\n                      <DesktopDatePicker\n                        label=\"\"\n                        inputFormat=\"DD/MM/yyyy\"\n                        value={expiryRange.to}\n                        onChange={(input) => handleDateInput(input, false, false)}\n                        renderInput={(params: TextFieldProps) => (\n                          <TextField\n                            {...params}\n                            sx={{\n                              ...classes.dateInput,\n                              '& .MuiOutlinedInput-root': validDate.expiryEnd\n                                ? classes.dateInput['& .MuiOutlinedInput-root']\n                                : {\n                                    ...classes.dateInput['& .MuiOutlinedInput-root'],\n                                    ...classes.invalidDate['& .MuiOutlinedInput-root']\n                                  }\n                            }}\n                          />\n                        )}\n                      />\n                    </LocalizationProvider>\n                  </Box>\n                </AccordionDetails>\n              </Accordion>\n            </Box>\n          </Box>\n        </Popover>\n      </Box>\n    </Tooltip>\n  );\n}\n","import React from 'react';\nimport { Box, IconButton, FormControlLabel, Switch } from '@mui/material';\nimport DragIndicatorIcon from '@mui/icons-material/DragIndicator';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { IDropdownProps } from '../types';\nimport { classes } from './useStyles';\n\nconst SortableField = ({\n  field,\n  handleFieldSwitchChange\n}: {\n  field: IDropdownProps['sortableColumns'][0];\n  handleFieldSwitchChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}) => {\n  const { attributes, listeners, setNodeRef, setActivatorNodeRef, transform, transition } =\n    useSortable({ id: field.id });\n\n  const style = {\n    transform: CSS.Translate.toString(transform),\n    transition\n  };\n\n  return (\n    <Box key={field.id} sx={classes.sortableField} style={style} ref={setNodeRef} {...attributes}>\n      <IconButton ref={setActivatorNodeRef} {...listeners}>\n        <DragIndicatorIcon sx={{ fontSize: 16 }} />\n      </IconButton>\n      <FormControlLabel\n        sx={{\n          ...classes.sortableSwitchLabels,\n          '& .MuiFormControlLabel-label': field.enabled\n            ? classes.sortableSwitchLabels['& .MuiFormControlLabel-label']\n            : {\n                ...classes.sortableSwitchLabels['& .MuiFormControlLabel-label'],\n                ...classes.labelActive['& .MuiFormControlLabel-label']\n              }\n        }}\n        control={\n          <Switch\n            sx={field.enabled ? classes.switchActive : classes.switch}\n            checked={field.enabled}\n            onChange={handleFieldSwitchChange}\n            name={field.id}\n          />\n        }\n        label={field.label}\n        labelPlacement=\"start\"\n      />\n    </Box>\n  );\n};\n\nexport default SortableField;\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport StyledSnackbar from '../Components/CustomUIElements/StyledSnackbar';\nimport { Box, Tab, Tabs, ToggleButton, ToggleButtonGroup } from '@mui/material';\nimport IconButton from '@mui/material/IconButton';\nimport Tooltip from '@mui/material/Tooltip';\nimport PushPinIcon from '@mui/icons-material/PushPin';\nimport { withScoutTheme } from '../../ThemeContext/ThemeContext';\nimport { styles } from './styles';\nimport FieldDropdown from './Dropdowns/FieldDropdown';\nimport FilterDropdown from './Dropdowns/FilterDropdown';\nimport ExportButton from './Dropdowns/Export';\nimport { IFilters, IOptionType, IPermissions, ITabs } from './types';\nimport CurrentJobs from './JobsTable/CurrentJobs';\nimport ArchivedJobs from './JobsTable/ArchivedJobs';\nimport SeekAds from '../Components/Multiposter/Seek/SeekAds';\nimport CreateNewJob from './NewJob/NewJob';\nimport IndeedAds from '../Components/Multiposter/Indeed/IndeedAds';\nimport ViewJobsAds from '../Components/Multiposter/ViewJobs/ViewJobsAds';\nimport Search from './Search';\nimport Api from './API';\nimport { jobsConfig } from './config';\nimport { useDebounce } from 'use-debounce';\nimport { getLocalStorageItem } from '../utils/local-storage';\nimport { FILTERS_KEY } from '../constants';\nimport { IUserPermissions } from '../Components/sharedTypes';\nimport CreateButton from '../Components/Buttons/CreateButton';\nimport { ISortableColumn, IUIPreferences } from '../Job/types';\nimport { getUpdatedSortableColumns } from '../utils/sortable-column';\nimport { getPermissions } from '../../shared/permissionHelpers';\nimport { fetchPreferences, updateUiSettings } from '../helpers/uiPreferencesHelpers';\n\nconst URL_PARAMS = new URL(window.location.href);\n\nconst getTabNumber = (urlParams: string) => {\n  switch (urlParams) {\n    case '?archived=true':\n      return 1;\n    case '?multiposter=true':\n      return 2;\n    default:\n      return 0;\n  }\n};\n\nfunction AdminJobs({\n  apiKey,\n  aiStudioEnabled,\n  jobStatusFeature,\n  userTimezone\n}: {\n  apiKey: string;\n  aiStudioEnabled: boolean;\n  jobStatusFeature: boolean;\n  userTimezone: string;\n}) {\n  const [rowsPerPage, setRowsPerPage] = useState(10);\n  const [page, setPage] = useState(1);\n  const [search, setSearch] = useState('');\n  const [order, setOrder] = useState('desc');\n  const [orderBy, setOrderBy] = useState('created_at');\n  const [filters, setFilters] = useState<Omit<IFilters, 'pinned'>>({\n    state: [],\n    status: [],\n    entity: [],\n    location: [],\n    assigned_user: [],\n    recruitment_ad_user: [],\n    published: [],\n    expiry: []\n  });\n  const [options, setOptions] = useState(jobsConfig.defaultFilterOptions);\n  const [sortableColumns, setSortableColumns] = useState(jobsConfig.sortableColumnsDefaults);\n  const [fetchUISwitch, setFetchUISwitch] = useState(true);\n  const [numberOfFilters, setNumberOfFilters] = useState(0);\n  const [loadingFilters, setLoadingFilters] = useState(0);\n  const [debouncedSearch] = useDebounce(search, 600);\n  const [tabValue, setTabValue] = useState(getTabNumber(URL_PARAMS.search));\n  const [indicatorWidth, setIndicatorWidth] = useState(0);\n  const [userPermissions, setUserPermissions] = useState<IUserPermissions | undefined>(undefined);\n  const [multiposterSelection, setMultiposterSelection] = useState('seek');\n  const [showPinnedJobs, setShowPinnedJobs] = useState(false);\n  const headerRefs = useRef<HTMLDivElement[]>([]);\n  const [snackbar, setSnackbar] = useState<{\n    message: string;\n    state: 'success' | 'warning' | 'error';\n  }>({\n    message: '',\n    state: 'success'\n  });\n  const [density, setDensity] = useState<string>('Default');\n  const [isDialogOpen, setIsDialogOpen] = useState(false);\n  const filterKeys = Object.keys(filters) as (keyof IFilters)[];\n  const TabPanel = useCallback((props: ITabs) => {\n    const { children, tabValue, index, ...other } = props;\n\n    return (\n      <div\n        role=\"tabpanel\"\n        hidden={tabValue !== index}\n        id={`jobs-tabpanel-${index}`}\n        aria-labelledby={`jobs-tab-${index}`}\n        {...other}\n      >\n        {tabValue === index && <>{children}</>}\n      </div>\n    );\n  }, []);\n\n  const TabProps = useCallback((index: number) => {\n    return {\n      id: `jobs-tab-${index}`,\n      'aria-controls': `jobs-tabpanel-${index}`\n    };\n  }, []);\n\n  const handleTabChange = (event: React.SyntheticEvent, newValue: number) => {\n    setFilters({\n      state: [],\n      status: [],\n      entity: [],\n      location: [],\n      assigned_user: [],\n      recruitment_ad_user: [],\n      published: [],\n      expiry: []\n    });\n    const states = newValue ? jobsConfig.archivedStateOptions : jobsConfig.currentStateOptions;\n    setSearch('');\n    setPage(1);\n    getEntites(states, Boolean(newValue));\n    getLocations(states, Boolean(newValue));\n    getAssignedUsers(states, Boolean(newValue));\n    getRecruitmentAdUsers(states, Boolean(newValue));\n    getStatuses(states, Boolean(newValue));\n    setTabValue(newValue);\n    URL_PARAMS.search = getPageParams(newValue);\n    window.history.pushState(null, null, URL_PARAMS.href);\n  };\n\n  async function getEntites(states: Record<string, IOptionType[]>, archived: boolean) {\n    setLoadingFilters((prevValue) => prevValue + 1);\n    try {\n      const data = await Api.getFilters('entities', {\n        'filter[archived]': archived\n      });\n      setOptions((previous) => ({ ...previous, ...states, entity: data.res.entities }));\n      setLoadingFilters((prevValue) => prevValue - 1);\n    } catch (error) {\n      console.log(error);\n    }\n  }\n\n  async function getLocations(states: Record<string, IOptionType[]>, archived: boolean) {\n    setLoadingFilters((prevValue) => prevValue + 1);\n    try {\n      const data = await Api.getFilters('locations', {\n        'filter[archived]': archived\n      });\n      setOptions((previous) => ({\n        ...previous,\n        ...states,\n        location: data.res.flatMap((location: string, index: number) =>\n          location ? { index: index, name: location } : ([] as null[])\n        )\n      }));\n      setLoadingFilters((prevValue) => prevValue - 1);\n    } catch (error) {\n      console.log(error);\n    }\n  }\n\n  async function getAssignedUsers(states: Record<string, IOptionType[]>, archived: boolean) {\n    setLoadingFilters((prevValue) => prevValue + 1);\n    try {\n      const data = await Api.getFilters('assigned_users', {\n        'filter[archived]': archived\n      });\n      setOptions((previous) => ({\n        ...previous,\n        ...states,\n        assigned_user: data.res.assigned_users\n      }));\n      setLoadingFilters((prevValue) => prevValue - 1);\n    } catch (error) {\n      console.log(error);\n    }\n  }\n\n  async function getRecruitmentAdUsers(states: Record<string, IOptionType[]>, archived: boolean) {\n    setLoadingFilters((prevValue) => prevValue + 1);\n    try {\n      const data = await Api.getFilters('recruitment_ad_users', {\n        'filter[archived]': archived\n      });\n      setOptions((previous) => ({\n        ...previous,\n        ...states,\n        recruitment_ad_user: data.res.recruitment_ad_users\n      }));\n      setLoadingFilters((prevValue) => prevValue - 1);\n    } catch (error) {\n      console.log(error);\n    }\n  }\n\n  async function getStatuses(states: Record<string, IOptionType[]>, archived: boolean) {\n    setLoadingFilters((prevValue) => prevValue + 1);\n    try {\n      const data = await Api.getFilters('statuses', {\n        'filter[archived]': archived\n      });\n      setOptions((previous) => ({ ...previous, ...states, status: data.res.statuses }));\n      setLoadingFilters((prevValue) => prevValue - 1);\n    } catch (error) {\n      console.log(error);\n    }\n  }\n\n  async function getUserPermissions(apiKey: string) {\n    try {\n      const data = await getPermissions(apiKey);\n      const allRoles: Record<string, Record<string, boolean>> = {};\n      data.roles.forEach((role: IPermissions) =>\n        role.feature_groups.forEach((group) => {\n          !allRoles[group.name] ? (allRoles[group.name] = {}) : null;\n          group.permissions.forEach((permission) => (allRoles[group.name][permission] = true));\n        })\n      );\n      const hasRecruitmentTeamEnabled = data.roles.some((user) => user.recruitment_team_enabled);\n      allRoles['recruitment_team_enabled'] = hasRecruitmentTeamEnabled;\n      setUserPermissions(allRoles);\n    } catch (error) {\n      console.log(error);\n    }\n  }\n\n  async function fetchUISettings() {\n    try {\n      const { res } = await fetchPreferences('job');\n      const densityData = await fetchPreferences('universal');\n      if (res.ui_preferences[0]?.sortable_columns) {\n        const { updatedColumns } = getUpdatedSortableColumns(\n          sortableColumns as ISortableColumn[],\n          res.ui_preferences[0] as IUIPreferences\n        );\n        setSortableColumns(updatedColumns);\n      }\n      densityData.res.ui_preferences[0]?.columns?.density &&\n        setDensity(densityData.res.ui_preferences[0]?.columns?.density);\n      res.ui_preferences[0]?.row_count && setRowsPerPage(res.ui_preferences[0].row_count);\n      res.ui_preferences[0]?.sorting?.direction &&\n        setOrder(res.ui_preferences[0].sorting.direction);\n      res.ui_preferences[0]?.sorting?.field && setOrderBy(res.ui_preferences[0].sorting.field);\n      res.ui_preferences[0]?.group_pinned && setShowPinnedJobs(res.ui_preferences[0]?.group_pinned);\n      setFetchUISwitch(false);\n    } catch (error) {\n      console.error(error);\n    }\n  }\n\n  async function postDensitySetting(density: string) {\n    await updateUiSettings({ columns: { density }, source: 'universal' }, (errorMessage) => {\n      setSnackbar({\n        message: `There was an error saving your density preferences, ${errorMessage}`,\n        state: 'error'\n      });\n    });\n  }\n\n  async function postUISettings({ sortableColumns, order, orderBy, rowsPerPage, showPinnedJobs }) {\n    await updateUiSettings({\n      sortable_columns: sortableColumns,\n      sorting: { direction: order, field: orderBy },\n      row_count: rowsPerPage,\n      source: 'job',\n      group_pinned: showPinnedJobs\n    });\n  }\n\n  useEffect(() => {\n    getEntites(jobsConfig.currentStateOptions, Boolean(tabValue));\n    getLocations(jobsConfig.currentStateOptions, Boolean(tabValue));\n    getAssignedUsers(jobsConfig.currentStateOptions, Boolean(tabValue));\n    getRecruitmentAdUsers(jobsConfig.currentStateOptions, Boolean(tabValue));\n    getStatuses(jobsConfig.currentStateOptions, Boolean(tabValue));\n    fetchUISettings();\n    getUserPermissions(apiKey);\n  }, []);\n\n  useEffect(() => {\n    setIndicatorWidth(headerRefs.current[tabValue].clientWidth - 32);\n    getUserPermissions(apiKey);\n  }, [tabValue]);\n\n  useEffect(() => {\n    const filtersLength = filterKeys\n      .map((key) => filters[key].length)\n      .reduce((acc, item) => (acc += item), 0);\n\n    setNumberOfFilters(filtersLength);\n  }, [filters]);\n\n  useEffect(() => {\n    return () => {\n      if (fetchUISwitch) return;\n      postUISettings({ sortableColumns, order, orderBy, rowsPerPage, showPinnedJobs });\n    };\n  }, [sortableColumns, order, orderBy, rowsPerPage, showPinnedJobs]);\n\n  const getPageParams = (tabNo: number) => {\n    switch (tabNo) {\n      case 0:\n        return '';\n      case 1:\n        return '?archived=true';\n      case 2:\n        return '?multiposter=true';\n      default:\n        return '';\n    }\n  };\n\n  useEffect(() => {\n    setFilters({\n      state: getLocalStorageItem(FILTERS_KEY, { state: [] }).state ?? [],\n      status: getLocalStorageItem(FILTERS_KEY, { status: [] }).status ?? [],\n      entity: getLocalStorageItem(FILTERS_KEY, { entity: [] }).entity ?? [],\n      location: getLocalStorageItem(FILTERS_KEY, { location: [] }).location ?? [],\n      assigned_user: getLocalStorageItem(FILTERS_KEY, { assigned_user: [] }).assigned_user ?? [],\n      recruitment_ad_user:\n        getLocalStorageItem(FILTERS_KEY, { recruitment_ad_user: [] }).recruitment_ad_user ?? [],\n      published: getLocalStorageItem(FILTERS_KEY, { published: [] }).published ?? [],\n      expiry: getLocalStorageItem(FILTERS_KEY, { expiry: [] }).expiry ?? []\n    });\n  }, []);\n\n  return (\n    <Box sx={styles.jobPageContainer}>\n      <Box sx={styles.jobPageHeader}>\n        <h1>Jobs</h1>\n        {userPermissions?.Jobs?.['Create / Edit Jobs'] && (\n          <CreateButton\n            id=\"add-job-button\"\n            ariaLabel=\"add job\"\n            onClick={() => setIsDialogOpen(true)}\n            disableDropDown\n          />\n        )}\n      </Box>\n      <Box sx={styles.tabsContainer}>\n        <Tabs\n          value={tabValue}\n          onChange={handleTabChange}\n          aria-label=\"Jobs, Archive, Multiposter Tabs\"\n          sx={{\n            ...styles.tabs,\n            '& .MuiTabs-indicator': { ...styles.tabIndicator, maxWidth: indicatorWidth + 'px' }\n          }}\n        >\n          <Tab\n            ref={(el) => (headerRefs.current[0] = el)}\n            label=\"Current jobs\"\n            {...TabProps(0)}\n            id=\"current-jobs-tab-button\"\n            data-testid=\"current-jobs-tab-button\"\n          />\n          <Tab\n            ref={(el) => (headerRefs.current[1] = el)}\n            label=\"Archived jobs\"\n            {...TabProps(1)}\n            id=\"archived-jobs-tab-button\"\n          />\n          <Tab\n            ref={(el) => (headerRefs.current[2] = el)}\n            label=\"Multiposter job ads\"\n            {...TabProps(2)}\n            id=\"multiposter-jobs-tab-button\"\n          />\n        </Tabs>\n      </Box>\n      <TabPanel tabValue={tabValue} index={0}>\n        <Box sx={styles.filtersRow}>\n          <Search search={search} setSearch={setSearch} setPage={setPage} />\n          <FilterDropdown\n            filters={filters}\n            setFilters={setFilters}\n            options={options}\n            setPage={setPage}\n            numberOfFilters={numberOfFilters}\n            loadingFilters={loadingFilters}\n            jobStatusFeature={jobStatusFeature}\n            userPermissions={userPermissions}\n          />\n          <FieldDropdown\n            sortableColumns={sortableColumns}\n            setSortableColumns={setSortableColumns}\n            density={density}\n            setDensity={setDensity}\n            postDensitySetting={postDensitySetting}\n            jobStatusFeature={jobStatusFeature}\n            userPermissions={userPermissions}\n          />\n          <ExportButton\n            apiKey={apiKey}\n            filters={filters}\n            order={order}\n            orderBy={orderBy}\n            sortableColumns={sortableColumns}\n            search={search}\n            jobStatusFeature={jobStatusFeature}\n          />\n          <Tooltip\n            placement=\"top\"\n            title={showPinnedJobs ? 'Ungroup pinned jobs' : 'Group pinned jobs on top'}\n            arrow\n          >\n            <IconButton\n              id=\"group-pinned-jobs-button\"\n              data-testid=\"group-pinned-jobs-button\"\n              sx={{\n                ...styles.iconButton,\n                ...(showPinnedJobs ? styles.iconButtonSelected : {})\n              }}\n              onClick={() => setShowPinnedJobs((prev) => !prev)}\n            >\n              <PushPinIcon />\n            </IconButton>\n          </Tooltip>\n        </Box>\n        <CurrentJobs\n          {...{ userTimezone }}\n          apiKey={apiKey}\n          sortableColumns={sortableColumns}\n          rowsPerPage={rowsPerPage}\n          setRowsPerPage={setRowsPerPage}\n          search={debouncedSearch}\n          order={order}\n          setOrder={setOrder}\n          orderBy={orderBy}\n          setOrderBy={setOrderBy}\n          filters={filters}\n          fetchUISwitch={fetchUISwitch}\n          page={page}\n          setPage={setPage}\n          filtersApplied={numberOfFilters > 0}\n          userPermissions={userPermissions}\n          setSnackbarState={setSnackbar}\n          showPinnedJobs={showPinnedJobs}\n          setShowPinnedJobs={setShowPinnedJobs}\n          density={density}\n          jobStatusFeature={jobStatusFeature}\n        />\n      </TabPanel>\n      <TabPanel tabValue={tabValue} index={1}>\n        <Box sx={styles.filtersRow}>\n          <Search search={search} setSearch={setSearch} setPage={setPage} />\n          <FilterDropdown\n            filters={filters}\n            setFilters={setFilters}\n            options={options}\n            setPage={setPage}\n            numberOfFilters={numberOfFilters}\n            loadingFilters={loadingFilters}\n            jobStatusFeature={jobStatusFeature}\n            archived\n            userPermissions={userPermissions}\n          />\n          <FieldDropdown\n            sortableColumns={sortableColumns}\n            setSortableColumns={setSortableColumns}\n            density={density}\n            setDensity={setDensity}\n            postDensitySetting={postDensitySetting}\n            archived\n            jobStatusFeature={jobStatusFeature}\n            userPermissions={userPermissions}\n          />\n          <ExportButton\n            apiKey={apiKey}\n            filters={filters}\n            order={order}\n            orderBy={orderBy}\n            sortableColumns={sortableColumns}\n            jobStatusFeature={jobStatusFeature}\n            archived\n          />\n        </Box>\n        <ArchivedJobs\n          apiKey={apiKey}\n          sortableColumns={sortableColumns}\n          rowsPerPage={rowsPerPage}\n          setRowsPerPage={setRowsPerPage}\n          search={debouncedSearch}\n          order={order}\n          setOrder={setOrder}\n          orderBy={orderBy}\n          setOrderBy={setOrderBy}\n          filters={filters}\n          fetchUISwitch={fetchUISwitch}\n          page={page}\n          setPage={setPage}\n          filtersApplied={numberOfFilters > 0}\n          userPermissions={userPermissions}\n          setSnackbarState={setSnackbar}\n          density={density}\n          jobStatusFeature={jobStatusFeature}\n        />\n      </TabPanel>\n      <TabPanel tabValue={tabValue} index={2}>\n        <Box sx={styles.multiposterContainer}>\n          <Box sx={styles.toggleContainer}>\n            <ToggleButtonGroup\n              value={multiposterSelection}\n              exclusive\n              onChange={(e, value) => {\n                if (value === null) return;\n                setMultiposterSelection(value);\n              }}\n              aria-label=\"Multiposter selection\"\n              sx={styles.toggleButtonGroup}\n            >\n              <ToggleButton sx={styles.toggleButton} value=\"seek\" id=\"multiposter-seek-jobs-tab\">\n                <Box id=\"seek-logo\" sx={styles.logoSize} />\n              </ToggleButton>\n              <ToggleButton\n                sx={styles.toggleButton}\n                value=\"indeed\"\n                id=\"multiposter-indeed-jobs-tab\"\n              >\n                <Box id=\"indeed-logo\" sx={{ transform: 'translateY(3px)', ...styles.logoSize }} />\n              </ToggleButton>\n              <ToggleButton\n                sx={styles.toggleButton}\n                value=\"viewjobs\"\n                id=\"multiposter-viewjobs-jobs-tab\"\n              >\n                <Box id=\"viewjobs-logo\" sx={{ transform: 'translateY(3px)', ...styles.logoSize }} />\n              </ToggleButton>\n            </ToggleButtonGroup>\n          </Box>\n          {(() => {\n            switch (multiposterSelection) {\n              case 'seek':\n                return <SeekAds apiKey={apiKey} jobId={null} />;\n              case 'indeed':\n                return <IndeedAds apiKey={apiKey} jobId={null} />;\n              case 'viewjobs':\n                return <ViewJobsAds apiKey={apiKey} jobId={null} />;\n              default:\n                return null;\n            }\n          })()}\n        </Box>\n      </TabPanel>\n      <StyledSnackbar\n        message={snackbar.message}\n        state={snackbar.state}\n        setSnackbarState={setSnackbar}\n      />\n      <CreateNewJob\n        apiKey={apiKey}\n        setFilters={setFilters}\n        filters={filters}\n        isDialogOpen={isDialogOpen}\n        setIsDialogOpen={setIsDialogOpen}\n        aiStudioEnabled={\n          !!(userPermissions?.['AI Features']?.['Activate AI Studio'] && aiStudioEnabled)\n        }\n        showEntitySection={!!userPermissions?.Misc?.['Entity Manager Access']}\n        setSnackbar={setSnackbar}\n        userPermissions={userPermissions}\n        userTimezone={userTimezone}\n      />\n    </Box>\n  );\n}\n\nexport default withScoutTheme(AdminJobs);\n","import React, { useRef, useEffect, useState, memo, useCallback } from 'react';\nimport moment from 'moment-timezone';\nimport Api from '../API';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport Table from '@mui/material/Table';\nimport TableBody from '@mui/material/TableBody';\nimport TableCell from '@mui/material/TableCell';\nimport TableContainer from '@mui/material/TableContainer';\nimport TableHead from '@mui/material/TableHead';\nimport TableRow from '@mui/material/TableRow';\nimport TableSortLabel from '@mui/material/TableSortLabel';\nimport TableSkeleton from './TableSkeleton';\nimport NoJobs from './NoJobs';\nimport Pagination from '@mui/material/Pagination';\nimport Backdrop from '@mui/material/Backdrop';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Paper from '@mui/material/Paper';\nimport Checkbox from '@mui/material/Checkbox';\nimport MenuItem from '@mui/material/MenuItem';\nimport FormControl from '@mui/material/FormControl';\nimport Select from '@mui/material/Select';\nimport Popover from '@mui/material/Popover';\nimport { visuallyHidden } from '@mui/utils';\nimport IconButton from '@mui/material/IconButton';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport KeyboardArrowLeftIcon from '@mui/icons-material/KeyboardArrowLeft';\nimport KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight';\nimport NotesPopover from './NotesPopover';\nimport { TableHeader, IRequestParams, ITableProps, IJob } from '../types';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport { classes } from './useStyles';\n\nconst BASE_URL = window.location.origin;\n\nconst tablePadding = (density: string) => {\n  if (density === 'Default') {\n    return '22px';\n  } else if (density === 'Compact') {\n    return '15px';\n  } else {\n    return '8px';\n  }\n};\n\nconst tableHeadingAlignment = (name: string) => {\n  switch (name) {\n    case 'applications_count':\n      return 'right';\n    case 'state':\n      return 'center';\n    default:\n      return 'left';\n  }\n};\n\nconst tableHeadingWidth = (name: string) => {\n  switch (name) {\n    case 'published_at':\n      return '110px';\n    case 'expires_at':\n      return '110px';\n    case 'created_at':\n      return '110px';\n    case 'title':\n      return '200px';\n    case 'applications_count':\n      return '120px';\n    default:\n      return '150px';\n  }\n};\n\nconst tableHeadingTransform = (name: string) => {\n  switch (name) {\n    case 'state':\n      return 'translateX(18px)';\n    case 'status':\n      return 'translateX(12px)';\n    default:\n      return '';\n  }\n};\n\nfunction EnhancedTableHead(props: TableHeader) {\n  const {\n    onSelectAllClick,\n    order,\n    orderBy,\n    numSelected,\n    rowCount,\n    onRequestSort,\n    sortableColumns,\n    handleScrollableEnter,\n    handleScrollableExit,\n    hovered,\n    actionCellRef,\n    titleCellRef,\n    jobStatusFeature,\n    userPermissions\n  } = props;\n  const createSortHandler = (property: string) => (event: React.MouseEvent) => {\n    onRequestSort(event, property);\n  };\n  return (\n    <TableHead>\n      <TableRow id=\"table-header\" sx={classes.tableHeaderRow}>\n        <TableCell\n          padding=\"checkbox\"\n          key=\"checkbox\"\n          sx={{\n            position: 'sticky',\n            left: 0,\n            width: '60px !important',\n            maxWidth: '60px',\n            background: 'white',\n            zIndex: '4'\n          }}\n        >\n          <Checkbox\n            id=\"select-all-checkbox\"\n            sx={{\n              color: '#aaa !important',\n              '&.Mui-checked': {\n                color: '#15C7C0 !important'\n              }\n            }}\n            indeterminate={numSelected > 0 && numSelected < rowCount}\n            checked={rowCount > 0 && numSelected === rowCount}\n            onChange={onSelectAllClick}\n            inputProps={{\n              'aria-label': 'select all jobs'\n            }}\n          />\n        </TableCell>\n        {sortableColumns.map(\n          (headCell, i) =>\n            headCell.enabled &&\n            !(!jobStatusFeature && headCell.id === 'status') &&\n            (headCell.id === 'recruitment_ad_user'\n              ? userPermissions?.recruitment_team_enabled\n              : true) &&\n            (headCell.id === 'entity' ? userPermissions?.Jobs?.['Show Job Sub-Entity'] : true) && (\n              <TableCell\n                key={headCell.id}\n                align={'left'}\n                padding={'normal'}\n                id={`${headCell.id}-header`}\n                ref={headCell.id === 'title' ? titleCellRef : null}\n                sortDirection={orderBy === headCell.id ? (order as 'asc' | 'desc') : false}\n                onMouseEnter={\n                  headCell.id !== 'title' && headCell.id !== 'reference'\n                    ? () => handleScrollableEnter()\n                    : null\n                }\n                onMouseLeave={\n                  headCell.id !== 'title' && headCell.id !== 'reference'\n                    ? () => handleScrollableExit()\n                    : null\n                }\n                sx={{\n                  ...(i === 0\n                    ? {\n                        position: 'sticky',\n                        left: '60px',\n                        maxWidth: '96px',\n                        width: '96px',\n                        background: 'white',\n                        zIndex: '3'\n                      }\n                    : {\n                        position: i === 1 ? 'sticky' : 'relative',\n                        left: i === 1 ? '156px' : 'auto',\n                        minWidth: tableHeadingWidth(headCell.id),\n                        background: 'white',\n                        zIndex: i === 1 ? '2' : headCell.id === 'applications_count' ? '1' : '0',\n                        textAlign: tableHeadingAlignment(headCell.id),\n                        transform: tableHeadingTransform(headCell.id),\n                        paddingLeft: headCell.id === 'state' ? '35px' : ''\n                      }),\n                  ...(headCell.id === 'title'\n                    ? {\n                        ...classes.titleHeaderCell,\n                        ...(hovered ? classes.cellAnimate : {})\n                      }\n                    : {})\n                }}\n              >\n                <TableSortLabel\n                  id={`${headCell.id}-sort-label-archived`}\n                  active={orderBy === headCell.id}\n                  direction={orderBy === headCell.id ? (order as 'asc' | 'desc') : 'asc'}\n                  onClick={createSortHandler(headCell.id)}\n                >\n                  {headCell.label}\n                  {orderBy === headCell.id ? (\n                    <Box component=\"span\" sx={visuallyHidden}>\n                      {order === 'desc' ? 'sorted descending' : 'sorted ascending'}\n                    </Box>\n                  ) : null}\n                </TableSortLabel>\n              </TableCell>\n            )\n        )}\n        <TableCell\n          padding=\"checkbox\"\n          key=\"actions\"\n          ref={actionCellRef}\n          sx={{ ...classes.actionsHeaderCell, ...(hovered ? classes.cellAnimate : {}) }}\n        />\n      </TableRow>\n    </TableHead>\n  );\n}\n\nfunction ArchivedJobs({\n  apiKey,\n  sortableColumns,\n  rowsPerPage,\n  setRowsPerPage,\n  search,\n  order,\n  setOrder,\n  orderBy,\n  setOrderBy,\n  filters,\n  fetchUISwitch,\n  page,\n  setPage,\n  filtersApplied,\n  userPermissions,\n  setSnackbarState,\n  density,\n  jobStatusFeature\n}: ITableProps) {\n  const [jobs, setJobs] = useState(null);\n  const [selected, setSelected] = useState([]);\n  const [maxPages, setMaxPages] = useState(1);\n  const [maxJobs, setMaxJobs] = useState(0);\n  const [isLoading, setIsLoading] = useState(true);\n  const [firstLoad, setFirstLoad] = useState(true);\n  const [hovered, setHovered] = useState(false);\n  const [canScroll, setCanScroll] = useState([false, true]);\n  const [selectedJob, setSelectedJob] = useState({ id: null });\n  const [actionsAnchorEl, setActionsAnchorEl] = useState(null);\n  const [trashAlertOpen, setTrashAlertOpen] = useState(false);\n  const [deleteJobs, setDeleteJobs] = useState([]);\n  const [showMore, setShowMore] = useState([]);\n  const [noteAnchorEl, setNoteAnchorEl] = useState(null);\n  const allColumns = useRef(null);\n  const actionCellRef = useRef(null);\n  const titleCellRef = useRef(null);\n  const noteRefs = useRef([]);\n  const timeZoneString = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\n  useEffect(() => {\n    if (fetchUISwitch) return;\n    getJobs(\n      {\n        'filter[archived]': true,\n        page: page,\n        limit: rowsPerPage,\n        sort_by: orderBy,\n        sort_direction: order,\n        'q[search]': search ? search : undefined,\n        'filter[location]': filters.location.map((location) => location.name),\n        'filter[state]': filters.state.map((state) => state.value),\n        'filter[entity_ids]': filters.entity.map((entity) => entity.id),\n        'filter[assigned_user_ids]': filters.assigned_user.map((user) => user.id),\n        'filter[recruitment_ad_user_ids]': filters.recruitment_ad_user.map((user) => user.id),\n        'filter[job_status_ids]': filters.status.map((status) => status.id),\n        'filter[start_published_at]':\n          filters.published[0] && moment(filters.published[0]).format('YYYY-MM-DD'),\n        'filter[end_published_at]':\n          filters.published[1] && moment(filters.published[1]).format('YYYY-MM-DD'),\n        'filter[start_expires_at]':\n          filters.expiry[0] && moment(filters.expiry[0]).format('YYYY-MM-DD'),\n        'filter[end_expires_at]':\n          filters.expiry[1] && moment(filters.expiry[1]).format('YYYY-MM-DD')\n      },\n    );\n  }, [search, page, rowsPerPage, orderBy, order, filters, fetchUISwitch]);\n\n  async function getJobs(params: IRequestParams) {\n    setIsLoading(true);\n    try {\n      const data = await Api.getJobs(params);\n      setJobs([...data.res.jobs]);\n      setMaxPages(parseInt(data.resHead['x-total-pages']));\n      setMaxJobs(parseInt(data.resHead['x-total-count']));\n    } catch (err) {\n      console.log(err);\n    } finally {\n      setIsLoading(false);\n      firstLoad && setFirstLoad(false);\n    }\n  }\n\n  const vpHeight = window.innerHeight;\n  const arrowHeight = () => {\n    return allColumns.current?.getBoundingClientRect().top + 100 > vpHeight / 2\n      ? allColumns.current?.getBoundingClientRect().top + 100\n      : allColumns.current?.getBoundingClientRect().bottom < vpHeight\n      ? vpHeight / 2 - (vpHeight - allColumns.current?.getBoundingClientRect().bottom)\n      : vpHeight / 2;\n  };\n\n  const handleScroll = () => {\n    if (allColumns.current.scrollLeft < 10) {\n      setCanScroll([false, true]);\n    } else if (\n      allColumns.current.scrollLeft >\n      allColumns.current.scrollWidth - allColumns.current.clientWidth - 10\n    ) {\n      setCanScroll([true, false]);\n    } else {\n      setCanScroll([true, true]);\n    }\n  };\n\n  const handleScrollLeft = () => {\n    allColumns.current.scrollLeft > 360\n      ? (allColumns.current.scrollLeft -= 300)\n      : (allColumns.current.scrollLeft = 0);\n  };\n\n  const handleScrollRight = () => {\n    allColumns.current.scrollWidth - allColumns.current.clientWidth > 360\n      ? (allColumns.current.scrollLeft += 300)\n      : (allColumns.current.scrollLeft =\n          allColumns.current.scrollWidth - allColumns.current.clientWidth);\n  };\n\n  function isScrollable(element: HTMLElement) {\n    return element && element.scrollWidth > element.clientWidth + 20;\n  }\n\n  const handleScrollableEnter = () => {\n    if (isScrollable(allColumns.current)) setHovered(true);\n  };\n\n  const handleScrollableExit = () => {\n    setHovered(false);\n  };\n\n  const handleRequestSort = (event: React.MouseEvent<Element, MouseEvent>, property: string) => {\n    const isAsc = orderBy === property && order === 'asc';\n    setOrder(isAsc ? 'desc' : 'asc');\n    setOrderBy(property);\n  };\n\n  const handleSelectAllClick = (event: React.ChangeEvent<HTMLInputElement>) => {\n    if (event.target.checked) {\n      const newSelecteds = jobs.map((job: IJob) => job.id);\n      setSelected(newSelecteds);\n      return;\n    }\n    setSelected([]);\n  };\n\n  const handleClick = (event: React.MouseEvent, id: number) => {\n    const selectedIndex = selected.indexOf(id);\n    let newSelected: Array<number> = [];\n\n    if (selectedIndex === -1) {\n      newSelected = newSelected.concat(selected, id);\n    } else if (selectedIndex === 0) {\n      newSelected = newSelected.concat(selected.slice(1));\n    } else if (selectedIndex === selected.length - 1) {\n      newSelected = newSelected.concat(selected.slice(0, -1));\n    } else if (selectedIndex > 0) {\n      newSelected = newSelected.concat(\n        selected.slice(0, selectedIndex),\n        selected.slice(selectedIndex + 1)\n      );\n    }\n\n    setSelected(newSelected);\n  };\n\n  const handleOpenNote = (event: React.MouseEvent<HTMLElement>) => {\n    setNoteAnchorEl(event.currentTarget);\n  };\n\n  const handleCloseNote = () => {\n    setNoteAnchorEl(null);\n  };\n\n  const handleShowMore = useCallback(\n    (id: number) => {\n      if (!showMore.includes(id)) {\n        const copy = [...showMore];\n        copy.push(id);\n        setShowMore(copy);\n      }\n      const flag = showMore.indexOf(id);\n      if (flag > -1) {\n        const copy = [...showMore];\n        copy.splice(flag, 1);\n        setShowMore(copy);\n      }\n    },\n    [showMore]\n  );\n\n  const handlePaginationChange = (event: React.ChangeEvent<HTMLInputElement>, newPage: number) => {\n    setPage(newPage);\n    scrollToTableTop();\n  };\n\n  const handleChangeRowsPerPage = (event: React.ChangeEvent<HTMLInputElement>) => {\n    setRowsPerPage(parseInt(event.target.value, 10));\n    setPage(1);\n  };\n\n  const scrollToTableTop = () => {\n    window.scrollTo({\n      top: 40,\n      behavior: 'smooth'\n    });\n  };\n\n  const reloadJobs = () => {\n    getJobs(\n      {\n        'filter[archived]': true,\n        page: page,\n        limit: rowsPerPage,\n        sort_by: orderBy,\n        sort_direction: order,\n        'q[search]': search ? search : undefined,\n        'filter[location]': filters.location.map((location) => location.name),\n        'filter[state]': filters.state.map((state) => state.value),\n        'filter[entity_ids]': filters.entity.map((entity) => entity.id),\n        'filter[assigned_user_ids]': filters.assigned_user.map((user) => user.id),\n        'filter[recruitment_ad_user_ids]': filters.recruitment_ad_user.map((user) => user.id),\n        'filter[job_status_ids]': filters.status.map((status) => status.id),\n        'filter[start_published_at]':\n          filters.published[0] && moment(filters.published[0]).format('YYYY-MM-DD'),\n        'filter[end_published_at]':\n          filters.published[1] && moment(filters.published[1]).format('YYYY-MM-DD'),\n        'filter[start_expires_at]':\n          filters.expiry[0] && moment(filters.expiry[0]).format('YYYY-MM-DD'),\n        'filter[end_expires_at]':\n          filters.expiry[1] && moment(filters.expiry[1]).format('YYYY-MM-DD')\n      },\n    );\n  };\n\n  async function handleUnarchiveJobs(ids: Array<number>) {\n    setIsLoading(true);\n    try {\n      const response = await Api.putUnrchiveJobs({ job_ids: ids });\n      if (response.res?.job_ids?.failure?.length) {\n        const message =\n          response?.res?.job_ids?.success?.length > 0 || response?.res?.job_ids?.failure?.length > 1\n            ? `${response?.res?.job_ids?.failure?.length} ${\n                response?.res?.job_ids?.failure?.length > 1 ? 'jobs were' : 'job was'\n              } unable to be unarchived. Jobs in the Draft state cannot be unarchived.`\n            : 'Unable to unarchive job. Jobs in the Draft state cannot be unarchived.';\n        setSnackbarState({\n          message: message,\n          state: 'error'\n        });\n      }\n    } catch (error) {\n      setSnackbarState({\n        message: 'Something went wrong. Please try again.',\n        state: 'error'\n      });\n    } finally {\n      setSelected([]);\n      setSelectedJob({ id: null });\n      setActionsAnchorEl(null);\n      reloadJobs();\n    }\n  }\n\n  async function handleTrashJobs(ids: Array<number>) {\n    setIsLoading(true);\n    try {\n      await fetch(`${BASE_URL}/api/v4/jobs/delete`, {\n        method: 'DELETE',\n        headers: {\n          'X-api-authenticate': apiKey,\n          'Content-Type': 'application/json'\n        },\n        body: JSON.stringify({ job_ids: ids })\n      });\n      setDeleteJobs([]);\n    } catch (error) {\n      setSnackbarState({\n        message: 'Something went wrong. Please try again.',\n        state: 'error'\n      });\n    } finally {\n      setSelected([]);\n      setSelectedJob({ id: null });\n      setActionsAnchorEl(null);\n      reloadJobs();\n    }\n  }\n\n  const isSelected = (id: number) => selected.indexOf(id) !== -1;\n\n  const expiryDateColor = (date: string) => {\n    const dayToExpired = (new Date(date).getTime() - Date.now()) / (1000 * 60 * 60 * 24);\n    if (dayToExpired < 0) {\n      return '#E37D7A';\n    } else if (dayToExpired < 1) {\n      return '#E6A052';\n    } else {\n      return '#333333';\n    }\n  };\n\n  const renderTableCell = useCallback(\n    (column, job, publishedAt, createdAt, expiresAt, expiryDateColor, labelId, notes) => {\n      switch (column.id) {\n        case 'reference':\n          return (\n            <TableCell\n              key={job.reference + column.id}\n              component=\"th\"\n              id={labelId}\n              className=\"reference-cell\"\n              scope=\"row\"\n              sx={{\n                position: 'sticky',\n                left: '60px',\n                wordBreak: 'break-word',\n                background: 'white',\n                paddingRight: '8px !important',\n                fontSize: '14px',\n                fontFamily: 'Source Sans Pro',\n                zIndex: '3',\n                '& a': {\n                  wordBreak: 'break-word',\n                  color: '#000000'\n                },\n                '& a:hover': {\n                  textDecoration: 'none'\n                }\n              }}\n            >\n              <a\n                href={`${BASE_URL}${job.job_link || '/admin/jobs/' + job.id}`}\n                className=\"job-reference-link-archived\"\n              >\n                {job.reference ? job.reference : '-'}\n              </a>\n            </TableCell>\n          );\n        case 'title':\n          return (\n            <TableCell\n              key={job.reference + column.id}\n              component=\"th\"\n              id={labelId}\n              scope=\"row\"\n              sx={{\n                ...classes.titleCell,\n                ...(hovered ? classes.cellAnimate : {}),\n                left: '156px !important'\n              }}\n              className=\"title-cell\"\n            >\n              <a\n                href={`${BASE_URL}${job.job_link || '/admin/jobs/' + job.id}`}\n                className=\"job-title-link-archived\"\n              >\n                {job.title ? job.title : '-'}\n              </a>\n            </TableCell>\n          );\n        case 'published_at':\n          return (\n            <TableCell\n              key={job.reference + column.id}\n              sx={{\n                paddingRight: '8px !important',\n                width: '120px !important',\n                lineHeight: '1.22'\n              }}\n              align=\"left\"\n              className=\"published-cell\"\n              onMouseEnter={() => handleScrollableEnter()}\n              onMouseLeave={() => handleScrollableExit()}\n            >\n              {job.published_at ? publishedAt : '-'}\n            </TableCell>\n          );\n        case 'created_at':\n          return (\n            <TableCell\n              key={job.reference + column.id}\n              sx={{\n                paddingRight: '8px !important',\n                width: '120px !important',\n                lineHeight: '1.22'\n              }}\n              align=\"left\"\n              className=\"published-cell\"\n              onMouseEnter={() => handleScrollableEnter()}\n              onMouseLeave={() => handleScrollableExit()}\n            >\n              {job.created_at ? createdAt : '-'}\n            </TableCell>\n          );\n        case 'expires_at':\n          return (\n            <TableCell\n              key={job.reference + column.id}\n              sx={{\n                paddingRight: '8px !important',\n                width: '120px !important',\n                lineHeight: '1.22',\n                color: expiryDateColor(job.expires_at)\n              }}\n              align=\"left\"\n              onMouseEnter={() => handleScrollableEnter()}\n              onMouseLeave={() => handleScrollableExit()}\n            >\n              {job.expires_at ? expiresAt : '-'}\n            </TableCell>\n          );\n        case 'applications_count':\n          return (\n            <TableCell\n              key={job.reference + column.id}\n              sx={{\n                paddingRight: '43px !important',\n                '& a': {\n                  wordBreak: 'break-word',\n                  color: '#000000'\n                },\n                '& a:hover': {\n                  textDecoration: 'none'\n                }\n              }}\n              align=\"right\"\n              className=\"applications-cell\"\n              onMouseEnter={() => handleScrollableEnter()}\n              onMouseLeave={() => handleScrollableExit()}\n            >\n              <a\n                href={`${BASE_URL}/admin/jobs/${job.id}?applications=true`}\n                className=\"application-count-link-archived\"\n              >\n                {job.applications_count} ({job.open_applications_count})\n              </a>\n            </TableCell>\n          );\n        case 'state':\n          return (\n            <TableCell\n              key={job.reference + column.id}\n              sx={{ paddingRight: '8px !important' }}\n              className=\"state-cell\"\n              align=\"center\"\n              onMouseEnter={() => handleScrollableEnter()}\n              onMouseLeave={() => handleScrollableExit()}\n            >\n              <Box sx={{ ...classes.stateColumn, ...classes[job.state] }}>{job.state}</Box>\n            </TableCell>\n          );\n        case 'status':\n          if (!jobStatusFeature) return null;\n          return (\n            <TableCell\n              key={job.reference + column.id}\n              sx={{\n                paddingRight: '8px !important'\n              }}\n              className={'status-cell'}\n              align=\"center\"\n              onMouseEnter={() => handleScrollableEnter()}\n              onMouseLeave={() => handleScrollableExit()}\n            >\n              {job.job_statuses ? (\n                <Box\n                  sx={{\n                    ...classes.statusClamp,\n                    ...classes.noDropdown,\n                    '& .status-dropdown-full': {\n                      ...classes.statusClamp['& .status-dropdown-full'],\n                      ...classes.noDropdown['& .status-dropdown-full']\n                    }\n                  }}\n                >\n                  <Box className={'status-dropdown-full'} sx={classes.noDropdown}>\n                    {job.job_statuses?.length > 0 ? job.job_statuses[0].label : ''}\n                  </Box>\n                  {job.job_statuses?.length > 0 ? job.job_statuses[0]?.label : ''}\n                </Box>\n              ) : (\n                <Box sx={classes.noStatuses}>-</Box>\n              )}\n            </TableCell>\n          );\n        case 'entity':\n          return userPermissions?.Jobs?.['Show Job Sub-Entity'] ? (\n            <TableCell\n              key={job.reference + column.id}\n              sx={{\n                paddingRight: '8px !important',\n                '& a': {\n                  wordBreak: 'break-word',\n                  color: '#000000'\n                },\n                '& a:hover': {\n                  textDecoration: 'none'\n                }\n              }}\n              align=\"left\"\n              className=\"entity-cell\"\n              onMouseEnter={() => handleScrollableEnter()}\n              onMouseLeave={() => handleScrollableExit()}\n            >\n              <a href={`${BASE_URL}${job.entity_link}`} className=\"job-entity-link-archived\">\n                {job.entity ? job.entity : '-'}\n              </a>\n            </TableCell>\n          ) : null;\n        case 'location':\n          return (\n            <TableCell\n              key={job.reference + column.id}\n              sx={{ paddingRight: '8px !important' }}\n              align=\"left\"\n              className=\"location-cell\"\n              onMouseEnter={() => handleScrollableEnter()}\n              onMouseLeave={() => handleScrollableExit()}\n            >\n              {job.location ? job.location : '-'}\n            </TableCell>\n          );\n        case 'assigned_user':\n          return (\n            <TableCell\n              key={job.reference + column.id}\n              sx={{ paddingRight: '8px !important' }}\n              align=\"left\"\n              className=\"location-cell\"\n              onMouseEnter={() => handleScrollableEnter()}\n              onMouseLeave={() => handleScrollableExit()}\n            >\n              {job?.assigned_user ? job.assigned_user : '-'}\n            </TableCell>\n          );\n        case 'recruitment_ad_user':\n          return userPermissions?.recruitment_team_enabled ? (\n            <TableCell\n              key={job.reference + column.id}\n              sx={{ paddingRight: '8px !important' }}\n              align=\"left\"\n              className=\"location-cell\"\n              onMouseEnter={() => handleScrollableEnter()}\n              onMouseLeave={() => handleScrollableExit()}\n            >\n              {job?.recruitment_ad_user ? job.recruitment_ad_user : '-'}\n            </TableCell>\n          ) : null;\n        case 'notes':\n          return (\n            <TableCell\n              key={job.reference + column.id}\n              sx={{ minWidth: '300px', paddingRight: '8px !important' }}\n              align=\"left\"\n              className=\"entity-cell\"\n              onMouseEnter={handleScrollableEnter}\n              onMouseLeave={handleScrollableExit}\n              id={`notes-${labelId}`}\n            >\n              <Box\n                sx={!showMore.includes(job.id) ? classes.noteColumn : {}}\n                ref={(element) => (noteRefs.current[job.id] = element)}\n              >\n                {notes.map((note: { body: string; noted_by: string }, note_index: number) => {\n                  const listId = `enhanced-table-checkbox-${job.id}-${note_index}`;\n                  return (\n                    <Box key={`note-show-${listId}`} style={{ margin: '1em 0' }}>\n                      <Box key={`note-${listId}`}>{note?.body}</Box>\n                      <Box>{note?.noted_by}</Box>\n                    </Box>\n                  );\n                })}\n              </Box>\n              {noteRefs.current[job.id]?.offsetHeight >= 60 &&\n                noteRefs.current[job.id]?.scrollHeight != 81 && (\n                  <Box\n                    key={`show-${labelId}`}\n                    sx={classes.link}\n                    onClick={() => handleShowMore(job.id)}\n                  >\n                    {showMore.includes(job.id) ? 'Show less' : 'Show more'}\n                  </Box>\n                )}\n            </TableCell>\n          );\n        default:\n          return <TableCell></TableCell>;\n      }\n    },\n    [classes, handleScrollableEnter, handleShowMore, hovered, showMore]\n  );\n\n  return (\n    <Box id=\"table-container\" sx={{ width: '100%' }}>\n      <Backdrop sx={{ color: '#83ECE7', zIndex: '99999' }} open={isLoading && !firstLoad}>\n        <CircularProgress color=\"inherit\" />\n      </Backdrop>\n      <Paper sx={{ width: '100%', mb: 2, boxShadow: 'none ' }}>\n        {isLoading && firstLoad ? (\n          <>\n            <TableContainer\n              id=\"table-scrollable\"\n              sx={classes.tableContainer}\n              onScroll={handleScroll}\n            >\n              <Table\n                stickyHeader\n                sx={{\n                  ...classes.tableWrapper,\n                  minWidth: 750,\n                  '& tr': { '& td, th': { padding: `${tablePadding(density)} 18px` } }\n                }}\n                aria-labelledby=\"tableTitle\"\n                size={'medium'}\n              >\n                <EnhancedTableHead\n                  numSelected={selected.length}\n                  order={order}\n                  orderBy={orderBy}\n                  onSelectAllClick={handleSelectAllClick}\n                  onRequestSort={handleRequestSort}\n                  rowCount={jobs && jobs.length}\n                  sortableColumns={sortableColumns}\n                  handleScrollableEnter={handleScrollableEnter}\n                  handleScrollableExit={handleScrollableExit}\n                  hovered={hovered}\n                  actionCellRef={actionCellRef}\n                  titleCellRef={titleCellRef}\n                  jobStatusFeature={jobStatusFeature}\n                  userPermissions={userPermissions}\n                />\n              </Table>\n            </TableContainer>\n            <TableSkeleton />\n          </>\n        ) : (\n          <>\n            <TableContainer\n              id=\"table-scrollable\"\n              ref={allColumns}\n              sx={classes.tableContainer}\n              onScroll={handleScroll}\n            >\n              <Box\n                onMouseEnter={() => handleScrollableEnter()}\n                onMouseLeave={() => handleScrollableExit()}\n                onClick={() => handleScrollLeft()}\n                sx={{\n                  ...classes.leftArrow,\n                  ...(hovered && canScroll[0] ? classes.showArrows : {}),\n                  left: `${titleCellRef.current?.getBoundingClientRect().right}px`,\n                  top: `${arrowHeight()}px`\n                }}\n                id=\"left-arrow\"\n              >\n                <KeyboardArrowLeftIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n              </Box>\n              <Box\n                onMouseEnter={() => handleScrollableEnter()}\n                onMouseLeave={() => handleScrollableExit()}\n                onClick={() => handleScrollRight()}\n                sx={{\n                  ...classes.rightArrow,\n                  ...(hovered && canScroll[1] ? classes.showArrows : {}),\n                  left: `${actionCellRef.current?.getBoundingClientRect().left - 40}px`,\n                  top: `${arrowHeight()}px`\n                }}\n                id=\"right-arrow\"\n              >\n                <KeyboardArrowRightIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n              </Box>\n              <Table\n                stickyHeader\n                sx={{\n                  ...classes.tableWrapper,\n                  minWidth: 750,\n                  '& tr': {\n                    '& td, th': { padding: `${tablePadding(density)} 18px`, textTransform: 'none' }\n                  }\n                }}\n                aria-labelledby=\"tableTitle\"\n                size={'medium'}\n              >\n                <EnhancedTableHead\n                  numSelected={selected.length}\n                  order={order}\n                  orderBy={orderBy}\n                  onSelectAllClick={handleSelectAllClick}\n                  onRequestSort={handleRequestSort}\n                  rowCount={jobs && jobs.length}\n                  sortableColumns={sortableColumns}\n                  handleScrollableEnter={handleScrollableEnter}\n                  handleScrollableExit={handleScrollableExit}\n                  hovered={hovered}\n                  actionCellRef={actionCellRef}\n                  titleCellRef={titleCellRef}\n                  jobStatusFeature={jobStatusFeature}\n                  userPermissions={userPermissions}\n                />\n                <TableBody id=\"table-body\" sx={classes.tableBody}>\n                  {/* if you don't need to support IE11, you can replace the `stableSort` call with:\n                          rows.slice().sort(getComparator(order, orderBy)) */}\n                  {jobs &&\n                    jobs.map((job: IJob, index: number) => {\n                      const jobTimeZone = job.time_zone ? job.time_zone : timeZoneString;\n                      const isItemSelected = isSelected(job.id);\n                      const labelId = `enhanced-table-checkbox-${index}`;\n                      const notes = job.job_notes ? job.job_notes : [];\n                      const publishedAt =\n                        job.published_at &&\n                        moment\n                          .tz(job.published_at, jobTimeZone)\n                          .format('DD MMM YYYY,-h:mma z')\n                          .split('-')\n                          .map((line) => <div key={`${job.id}-${line}`}>{line}</div>);\n                      const createdAt =\n                        job.created_at &&\n                        moment\n                          .tz(job.created_at, jobTimeZone)\n                          .format('DD MMM YYYY,-h:mma z')\n                          .split('-')\n                          .map((line) => <div key={`${job.id}-${line}`}>{line}</div>);\n                      const expiresAt =\n                        job.expires_at &&\n                        moment\n                          .tz(job.expires_at, jobTimeZone)\n                          .format('DD MMM YYYY,-h:mma z')\n                          .split('-')\n                          .map((line) => <div key={`${job.id}-${line}`}>{line}</div>);\n                      return (\n                        <TableRow\n                          hover\n                          role=\"checkbox\"\n                          aria-checked={isItemSelected}\n                          tabIndex={-1}\n                          key={job.id}\n                          selected={isItemSelected}\n                        >\n                          <TableCell\n                            padding=\"checkbox\"\n                            sx={{\n                              position: 'sticky',\n                              left: 0,\n                              width: '60px !important',\n                              maxWidth: '60px',\n                              background: 'white',\n                              zIndex: 3\n                            }}\n                          >\n                            <Checkbox\n                              className=\"individual-checkbox\"\n                              onClick={(event) => handleClick(event, job.id)}\n                              sx={{\n                                color: '#aaa !important',\n                                '&.Mui-checked': {\n                                  color: '#15C7C0 !important'\n                                }\n                              }}\n                              checked={isItemSelected}\n                              inputProps={{\n                                'aria-labelledby': labelId\n                              }}\n                            />\n                          </TableCell>\n                          {sortableColumns.map((column) => {\n                            if (column.enabled) {\n                              return renderTableCell(\n                                column,\n                                job,\n                                publishedAt,\n                                createdAt,\n                                expiresAt,\n                                expiryDateColor,\n                                labelId,\n                                notes\n                              );\n                            }\n                          })}\n                          <TableCell\n                            sx={{ ...classes.actionsCell, ...(hovered ? classes.cellAnimate : {}) }}\n                            align=\"right\"\n                          >\n                            <Box\n                              sx={{\n                                display: 'flex',\n                                '& svg': {\n                                  fontSize: '20px !important'\n                                }\n                              }}\n                            >\n                              {userPermissions?.Trash?.['Trash Jobs'] && (\n                                <IconButton\n                                  onClick={() => {\n                                    setDeleteJobs([job.id]);\n                                    setTrashAlertOpen(true);\n                                  }}\n                                  className=\"trash-button-archived\"\n                                >\n                                  <DeleteIcon sx={classes.iconRed} />\n                                </IconButton>\n                              )}\n                              {(userPermissions?.Jobs?.['Create / Edit Jobs'] ||\n                                userPermissions?.Jobs?.['Archive Jobs']) && (\n                                <IconButton\n                                  className=\"actions-button-archived\"\n                                  onClick={(e) => {\n                                    setActionsAnchorEl(e.currentTarget);\n                                    setSelectedJob({ id: job.id });\n                                  }}\n                                >\n                                  <MoreVertIcon sx={classes.iconGray} />\n                                </IconButton>\n                              )}\n                            </Box>\n                          </TableCell>\n                        </TableRow>\n                      );\n                    })}\n                </TableBody>\n              </Table>\n            </TableContainer>\n            <Popover\n              id={actionsAnchorEl ? 'actions-menu-popover' : undefined}\n              sx={classes.actionsMenu}\n              open={Boolean(actionsAnchorEl)}\n              anchorEl={actionsAnchorEl}\n              onClose={() => {\n                setActionsAnchorEl(null);\n                setSelectedJob({ id: null });\n              }}\n              anchorOrigin={{\n                vertical: 'bottom',\n                horizontal: 'right'\n              }}\n              transformOrigin={{\n                vertical: 'top',\n                horizontal: 'right'\n              }}\n            >\n              {userPermissions?.Jobs?.['Create / Edit Jobs'] && (\n                <>\n                  <span\n                    onClick={() => {\n                      window.location.href = BASE_URL + `/admin/jobs/${selectedJob.id}/edit`;\n                    }}\n                    className=\"edit-job-button-archived\"\n                  >\n                    Edit\n                  </span>\n                  <span\n                    onClick={() => {\n                      window.location.href = BASE_URL + `/admin/jobs/${selectedJob.id}/clone`;\n                    }}\n                    className=\"clone-job-button-archived\"\n                  >\n                    Clone\n                  </span>\n                </>\n              )}\n              {userPermissions?.Jobs?.['Archive Jobs'] && (\n                <span\n                  onClick={() => {\n                    handleUnarchiveJobs([selectedJob.id]);\n                  }}\n                  className=\"unarchive-job-button\"\n                >\n                  Unarchive\n                </span>\n              )}\n              {userPermissions?.['Job Options']?.['View Job Notes'] && (\n                <span\n                  onClick={(e) => handleOpenNote(e, selectedJob.id)}\n                  className=\"add-note-button-archived\"\n                >\n                  Add note\n                </span>\n              )}\n            </Popover>\n            {(userPermissions?.Jobs?.['Archive Jobs'] ||\n              userPermissions?.Trash?.['Trash Jobs']) && (\n              <Box\n                id=\"selected-tooltip\"\n                sx={{\n                  ...classes.selectedTooltip,\n                  ...(selected.length > 0 ? classes.fadeIn : classes.fadeOut)\n                }}\n              >\n                <Box id=\"selected-tooltip-text\" sx={classes.selectedTooltipText}>\n                  {selected.length} selected\n                </Box>\n                <Box sx={classes.selectedTooltipButtonsContainer}>\n                  {userPermissions?.Jobs?.['Archive Jobs'] && (\n                    <Button\n                      variant=\"contained\"\n                      sx={classes.selectedTooltipButton}\n                      onClick={() => {\n                        handleUnarchiveJobs(selected);\n                      }}\n                    >\n                      Unarchive\n                    </Button>\n                  )}\n                  {userPermissions?.Trash?.['Trash Jobs'] && (\n                    <Button\n                      variant=\"contained\"\n                      sx={classes.selectedTooltipButton}\n                      onClick={() => {\n                        setDeleteJobs(selected);\n                        setTrashAlertOpen(true);\n                      }}\n                    >\n                      Trash\n                    </Button>\n                  )}\n                </Box>\n              </Box>\n            )}\n            {jobs?.length === 0 && (\n              <NoJobs searchOrFilterApplied={!!search || !!filtersApplied || isLoading} />\n            )}\n          </>\n        )}\n        <Box\n          sx={{\n            display: 'flex',\n            justifyContent: 'space-between',\n            alignItems: 'center',\n            marginTop: '16px'\n          }}\n        >\n          <Box sx={classes.rowSelectContainer}>\n            <span>Rows per page: </span>\n            <FormControl>\n              <Select\n                id=\"rows-per-page\"\n                sx={classes.rowSelect}\n                value={rowsPerPage}\n                onChange={handleChangeRowsPerPage}\n                displayEmpty\n                MenuProps={{ sx: classes.paginationMenuItems }}\n              >\n                <MenuItem id=\"first-rpp-item\" value={10}>\n                  10\n                </MenuItem>\n                <MenuItem id=\"second-rpp-item\" value={20}>\n                  20\n                </MenuItem>\n                <MenuItem value={30}>30</MenuItem>\n                <MenuItem value={40}>40</MenuItem>\n                <MenuItem value={50}>50</MenuItem>\n              </Select>\n            </FormControl>\n          </Box>\n          <Box sx={classes.paginationContainer}>\n            <Pagination\n              id=\"pagination-menu\"\n              count={maxPages}\n              page={page}\n              defaultPage={Math.ceil(maxPages / 2)}\n              siblingCount={0}\n              onChange={handlePaginationChange}\n              sx={classes.pagination}\n            />\n            <span id=\"total-jobs\">{maxJobs} Total</span>\n          </Box>\n        </Box>\n        <GenericDialog\n          isDialogOpen={trashAlertOpen}\n          setDialogOpen={setTrashAlertOpen}\n          title={deleteJobs.length > 1 ? 'Trash jobs?' : 'Trash job?'}\n          description={\n            deleteJobs.length > 1\n              ? 'Are you sure want to trash these jobs?'\n              : 'Are you sure want to trash this job?'\n          }\n          buttonCallback={() => {\n            setTrashAlertOpen(false);\n            handleTrashJobs(deleteJobs);\n            setDeleteJobs([]);\n          }}\n          callbackLoading={false}\n          buttonText=\"Trash\"\n          url=\"\"\n        />\n      </Paper>\n      <NotesPopover\n        setJobs={setJobs}\n        anchorEl={noteAnchorEl}\n        handleCloseNote={handleCloseNote}\n        selectedJobId={selectedJob.id}\n        apiKey={apiKey}\n        setSnackbarState={setSnackbarState}\n      />\n    </Box>\n  );\n}\n\nexport default memo(ArchivedJobs);\n","import React, { useRef, useEffect, useState, memo } from 'react';\nimport moment from 'moment';\nimport Api from '../API';\nimport NotesPopover from './NotesPopover';\nimport {\n  Box,\n  Button,\n  Table,\n  TableBody,\n  TableContainer,\n  Pagination,\n  Backdrop,\n  CircularProgress,\n  Paper,\n  MenuItem,\n  FormControl,\n  Select,\n  Popover\n} from '@mui/material';\nimport TableSkeleton from './TableSkeleton';\nimport NoJobs from './NoJobs';\nimport KeyboardArrowLeftIcon from '@mui/icons-material/KeyboardArrowLeft';\nimport KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight';\nimport { IRequestParams, ITableProps, IJob } from '../types';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport { classes } from './useStyles';\nimport CurrentJobsTableRow from './CurrentJobsTableRow';\nimport CurrentJobsTableHeader from './CurrentJobsTableHeader';\nimport { resourceDefault } from '../config';\nimport queryString from 'query-string';\n\nconst BASE_URL = window.location.origin;\n\nconst tablePadding = (density: string) => {\n  if (density === 'Default') {\n    return '22px';\n  } else if (density === 'Compact') {\n    return '15px';\n  } else {\n    return '8px';\n  }\n};\n\nfunction CurrentJobs({\n  apiKey,\n  sortableColumns,\n  rowsPerPage,\n  setRowsPerPage,\n  search,\n  order,\n  setOrder,\n  orderBy,\n  setOrderBy,\n  filters,\n  fetchUISwitch,\n  page,\n  setPage,\n  filtersApplied,\n  userPermissions,\n  setSnackbarState,\n  showPinnedJobs,\n  density,\n  jobStatusFeature,\n  isDashboard,\n  showNewApplicants,\n  hideArrows,\n  userTimezone\n}: ITableProps) {\n  const [jobs, setJobs] = useState(null);\n  const [pinnedJobs, setPinnedJobs] = useState(null);\n  const [selected, setSelected] = useState([]);\n  const [maxPages, setMaxPages] = useState(1);\n  const [maxJobs, setMaxJobs] = useState(0);\n  const [isLoading, setIsLoading] = useState(true);\n  const [isLoadingPinned, setIsLoadingPinned] = useState(false);\n  const [firstLoad, setFirstLoad] = useState(true);\n  const [stateIsSending, setStateIsSending] = useState(0);\n  const [hovered, setHovered] = useState(false);\n  const [canScroll, setCanScroll] = useState([false, true]);\n  const [stateAnchorEl, setStateAnchorEl] = useState(null);\n  const [tempState, setTempState] = useState<{\n    [key: number]: { label: string; list: IJob['job_states'] };\n  }>({});\n  const [selectedJob, setSelectedJob] = useState({ id: null, states: null, statuses: null });\n  const [stateError, setStateError] = useState({ id: null, message: null });\n  const [statusIsSending, setStatusIsSending] = useState(0);\n  const [statusAnchorEl, setStatusAnchorEl] = useState(null);\n  const [tempStatus, setTempStatus] = useState<{\n    [key: number]: { label: string; list: IJob['job_statuses'] };\n  }>({});\n  const [noteAnchorEl, setNoteAnchorEl] = useState(null);\n  const [isEditing, setIsEditing] = useState(false);\n  const [actionsAnchorEl, setActionsAnchorEl] = useState(null);\n  const [showMore, setShowMore] = useState([]);\n  const noteRefs = useRef([]);\n  const allColumns = useRef(null);\n  const actionCellRef = useRef(null);\n  const titleCellRef = useRef(null);\n  const statusDropdownRef = useRef([]);\n  const [isPinning, setIsPinning] = useState(0);\n  const [pinResponse, setPinResponse] = useState('');\n  const [trashAlertOpen, setTrashAlertOpen] = useState(false);\n  const [deleteJobs, setDeleteJobs] = useState([]);\n  const [resourses, setResourses] = useState(resourceDefault);\n\n  useEffect(() => {\n    if (fetchUISwitch) return;\n    getJobs(\n      {\n        page: page,\n        limit: rowsPerPage,\n        sort_by: orderBy,\n        sort_direction: order,\n        exclude_pinned: showPinnedJobs,\n        'q[search]': search ? search : undefined,\n        'filter[location]': filters.location.map((location) => location.name),\n        'filter[state]': filters.state.map((state) => state.value),\n        'filter[entity_ids]': filters.entity.map((entity) => entity.id),\n        'filter[assigned_user_ids]': filters.assigned_user.map((user) => user.id),\n        'filter[recruitment_ad_user_ids]': filters.recruitment_ad_user.map((user) => user.id),\n        'filter[job_status_ids]': filters.status.map((status) => status.id),\n        'filter[start_published_at]':\n          filters.published[0] && moment(filters.published[0]).format('YYYY-MM-DD'),\n        'filter[end_published_at]':\n          filters.published[1] && moment(filters.published[1]).format('YYYY-MM-DD'),\n        'filter[start_expires_at]':\n          filters.expiry[0] && moment(filters.expiry[0]).format('YYYY-MM-DD'),\n        'filter[end_expires_at]':\n          filters.expiry[1] && moment(filters.expiry[1]).format('YYYY-MM-DD'),\n        ...(!!isDashboard && { pinned: true, dashboard: true }),\n        ...(!!showNewApplicants && { with_new_applications: true, pinned: false })\n      },\n    );\n    if (!showPinnedJobs) return;\n    getPinnedJobs(\n      {\n        page: 1,\n        limit: 100,\n        sort_by: orderBy,\n        sort_direction: order,\n        'q[search]': search ? search : undefined,\n        'filter[location]': filters.location.map((location) => location.name),\n        'filter[state]': filters.state.map((state) => state.value),\n        'filter[entity_ids]': filters.entity.map((entity) => entity.id),\n        'filter[assigned_user_ids]': filters.assigned_user.map((user) => user.id),\n        'filter[recruitment_ad_user_ids]': filters.recruitment_ad_user.map((user) => user.id),\n        'filter[job_status_ids]': filters.status.map((status) => status.id),\n        'filter[start_published_at]':\n          filters.published[0] && moment(filters.published[0]).format('YYYY-MM-DD'),\n        'filter[end_published_at]':\n          filters.published[1] && moment(filters.published[1]).format('YYYY-MM-DD'),\n        'filter[start_expires_at]':\n          filters.expiry[0] && moment(filters.expiry[0]).format('YYYY-MM-DD'),\n        'filter[end_expires_at]':\n          filters.expiry[1] && moment(filters.expiry[1]).format('YYYY-MM-DD'),\n        pinned: true\n      },\n    );\n  }, [search, page, rowsPerPage, orderBy, order, filters, fetchUISwitch, showPinnedJobs]);\n\n  async function getJobs(params: IRequestParams) {\n    setIsLoading(true);\n    try {\n      const data = await Api.getJobs(params);\n      setJobs([...data.res.jobs]);\n      setMaxPages(parseInt(data.resHead['x-total-pages']));\n      setMaxJobs(parseInt(data.resHead['x-total-count']));\n    } catch (err) {\n      console.log(err);\n    } finally {\n      setIsLoading(false);\n      firstLoad && setFirstLoad(false);\n    }\n  }\n\n  async function getPinnedJobs(params: IRequestParams) {\n    setIsLoadingPinned(true);\n    try {\n      const data = await Api.getJobs(params);\n      setPinnedJobs([...data.res.jobs]);\n    } catch (err) {\n      console.log(err);\n    } finally {\n      setIsLoadingPinned(false);\n    }\n  }\n\n  async function changeState(state: IJob['job_states'][0], jobId: number) {\n    setStateIsSending(jobId);\n    try {\n      const response = await Api.putChangedState(state.link);\n      getNewStateAndStatus(response.res, jobId);\n    } catch (err) {\n      console.log(err);\n      setStateError({ id: jobId, message: err.error ? err.error : 'Unknown error occured' });\n      setTimeout(() => {\n        setStateError((prevState) => ({ ...prevState, id: null }));\n      }, 10000);\n    } finally {\n      setStateIsSending(0);\n    }\n  }\n\n  async function changeStatus(jobId: number, newStatus: string, statusId: number) {\n    setStatusIsSending(jobId);\n    try {\n      const response = await Api.putChangedStatus(jobId, statusId);\n      getNewStateAndStatus(response.res, jobId);\n    } catch (err) {\n      console.log(err);\n    } finally {\n      setStatusIsSending(0);\n    }\n  }\n\n  async function pinJob(jobId: number) {\n    setIsPinning(jobId);\n    try {\n      const response = await Api.putPinJob(jobId);\n      if (!response.res.errors) {\n        if (showPinnedJobs) {\n          setJobs((prev: IJob[]) => prev.filter((job) => job.id !== jobId));\n          reloadJobs('pinned');\n        } else {\n          setJobs((prev: IJob[]) =>\n            prev.map((job) => (job.id === jobId ? { ...job, pinned_by_user: true } : job))\n          );\n        }\n      } else {\n        setPinResponse(response.res.errors);\n      }\n    } catch (err) {\n      setSnackbarState({\n        message: err?.errors,\n        state: 'error'\n      });\n    } finally {\n      setIsPinning(0);\n    }\n  }\n\n  async function unpinJob(jobId: number) {\n    setIsPinning(jobId);\n    try {\n      const response = await Api.putUnpinJob(jobId);\n      if (!response.res.errors) {\n        reloadJobs('jobs');\n        if (showPinnedJobs) {\n          setPinnedJobs((prev: IJob[]) => prev.filter((job) => job.id !== jobId));\n        }\n      }\n    } catch (err) {\n      setSnackbarState({\n        message: err?.errors,\n        state: 'error'\n      });\n    } finally {\n      setIsPinning(0);\n    }\n  }\n\n  const handleScroll = () => {\n    if (allColumns.current.scrollLeft < 10) {\n      setCanScroll([false, true]);\n    } else if (\n      allColumns.current.scrollLeft >\n      allColumns.current.scrollWidth - allColumns.current.clientWidth - 10\n    ) {\n      setCanScroll([true, false]);\n    } else {\n      setCanScroll([true, true]);\n    }\n  };\n\n  const handleScrollLeft = () => {\n    allColumns.current.scrollLeft > 360\n      ? (allColumns.current.scrollLeft -= 300)\n      : (allColumns.current.scrollLeft = 0);\n  };\n\n  const handleScrollRight = () => {\n    allColumns.current.scrollWidth - allColumns.current.clientWidth > 360\n      ? (allColumns.current.scrollLeft += 300)\n      : (allColumns.current.scrollLeft =\n          allColumns.current.scrollWidth - allColumns.current.clientWidth);\n  };\n\n  function isScrollable(element: HTMLElement) {\n    return element && element.scrollWidth > element.clientWidth + 20;\n  }\n\n  const handleScrollableEnter = () => {\n    if (isScrollable(allColumns.current)) setHovered(true);\n  };\n\n  const handleScrollableExit = () => {\n    setHovered(false);\n  };\n\n  const handleRequestSort = (event: React.MouseEvent<Element, MouseEvent>, property: string) => {\n    const isAsc = orderBy === property && order === 'asc';\n    setOrder(isAsc ? 'desc' : 'asc');\n    setOrderBy(property);\n  };\n\n  const handleSelectAllClick = (event: React.ChangeEvent<HTMLInputElement>) => {\n    if (event.target.checked) {\n      const newSelecteds = jobs.map((job: IJob) => job.id);\n      if (showPinnedJobs) {\n        newSelecteds.push(...pinnedJobs.map((job: IJob) => job.id));\n      }\n      setSelected(newSelecteds);\n      return;\n    }\n    setSelected([]);\n  };\n\n  const handleClick = (event: React.MouseEvent, id: number) => {\n    const selectedIndex = selected.indexOf(id);\n    let newSelected: Array<number> = [];\n\n    if (selectedIndex === -1) {\n      newSelected = newSelected.concat(selected, id);\n    } else if (selectedIndex === 0) {\n      newSelected = newSelected.concat(selected.slice(1));\n    } else if (selectedIndex === selected.length - 1) {\n      newSelected = newSelected.concat(selected.slice(0, -1));\n    } else if (selectedIndex > 0) {\n      newSelected = newSelected.concat(\n        selected.slice(0, selectedIndex),\n        selected.slice(selectedIndex + 1)\n      );\n    }\n\n    setSelected(newSelected);\n  };\n\n  const handlePin = (event: React.MouseEvent, id: number, pinned_by_user: boolean) => {\n    pinned_by_user ? unpinJob(id) : pinJob(id);\n  };\n\n  const handlePaginationChange = (event: React.ChangeEvent<HTMLInputElement>, newPage: number) => {\n    setPage(newPage);\n    scrollToTableTop();\n  };\n\n  const handleChangeRowsPerPage = (event: React.ChangeEvent<HTMLInputElement>) => {\n    setRowsPerPage(parseInt(event.target.value, 10));\n    setPage(1);\n  };\n\n  const scrollToTableTop = () => {\n    window.scrollTo({\n      top: 40,\n      behavior: 'smooth'\n    });\n  };\n\n  async function getNewStateAndStatus(data: IJob, jobId: number) {\n    setTempState((prevState) => ({\n      ...prevState,\n      [jobId]: { label: data.job_states[0].label, list: data.job_states }\n    }));\n    setTempStatus((prevState) => ({\n      ...prevState,\n      [jobId]: {\n        label: data.job_statuses?.length ? data.job_statuses[0].label : '',\n        list: data.job_statuses\n      }\n    }));\n  }\n\n  const handleStateDropdown = (\n    event: React.MouseEvent<HTMLElement>,\n    id: number,\n    state: IJob['job_states']\n  ) => {\n    setStateAnchorEl(event.currentTarget);\n    setSelectedJob({ id: id, states: state, statuses: null });\n  };\n\n  const handleStateDropdownClose = () => {\n    setStateAnchorEl(null);\n    setTimeout(() => {\n      // timeout is used to account for the dropdown close animation time\n      setSelectedJob({ id: null, states: null, statuses: null });\n    }, 300);\n  };\n\n  const handleStateChange = (\n    e: React.MouseEvent<HTMLElement>,\n    id: number,\n    state: IJob['job_states'][0]\n  ) => {\n    changeState(state, id);\n    handleStateDropdownClose();\n  };\n\n  const handleStatusDropdown = (\n    event: React.MouseEvent<HTMLElement>,\n    id: number,\n    statuses: IJob['job_statuses']\n  ) => {\n    setStatusAnchorEl(event.currentTarget);\n    setSelectedJob({\n      id: id,\n      states: null,\n      statuses: statuses\n    });\n  };\n\n  const changeStateTense = (state: string) => {\n    switch (state) {\n      case 'Draft':\n        return 'draft';\n      case 'Save':\n        return 'saved';\n      case 'Publish':\n        return 'published';\n      case 'Unpublish':\n        return 'unpublished';\n      case 'Close':\n        return 'closed';\n      default:\n        return state;\n    }\n  };\n\n  const showDropdown = (statuses: IJob['job_statuses']) => {\n    if (statuses[1]) return true;\n    return false;\n  };\n\n  const handleStatusDropdownClose = () => {\n    setStatusAnchorEl(null);\n    setTimeout(() => {\n      // timeout is used to account for the dropdown close animation time\n      setSelectedJob({ id: null, states: null, statuses: null });\n    }, 300);\n  };\n\n  const handleStatusChange = (id: number, newStatus: string, statusId: string) => {\n    handleStatusDropdownClose();\n    changeStatus(id, newStatus, Number(statusId.split('status/')[1]));\n  };\n  const handleOpenNote = (event: React.MouseEvent<HTMLElement>, id: number, pinned: boolean) => {\n    setSelectedJob({ id: id, states: null, statuses: null, isPinnedSection: pinned });\n    setNoteAnchorEl(event.currentTarget);\n  };\n\n  const handleCloseNote = () => {\n    if (isEditing) return;\n    setSelectedJob({ id: null, states: null, statuses: null });\n    setNoteAnchorEl(null);\n  };\n\n  const handleShowMore = (id: number) => {\n    if (!showMore.includes(id)) {\n      const copy = [...showMore];\n      copy.push(id);\n      setShowMore(copy);\n    }\n    const flag = showMore.indexOf(id);\n    if (flag > -1) {\n      const copy = [...showMore];\n      copy.splice(flag, 1);\n      setShowMore(copy);\n    }\n  };\n\n  const reloadJobs = (type: 'all' | 'jobs' | 'pinned') => {\n    if (type === 'all' || type === 'jobs') {\n      getJobs(\n        {\n          page: page,\n          limit: rowsPerPage,\n          sort_by: orderBy,\n          sort_direction: order,\n          exclude_pinned: showPinnedJobs,\n          'q[search]': search ? search : undefined,\n          'filter[location]': filters.location.map((location) => location.name),\n          'filter[state]': filters.state.map((state) => state.value),\n          'filter[entity_ids]': filters.entity.map((entity) => entity.id),\n          'filter[assigned_user_ids]': filters.assigned_user.map((user) => user.id),\n          'filter[recruitment_ad_user_ids]': filters.recruitment_ad_user.map((user) => user.id),\n          'filter[job_status_ids]': filters.status.map((status) => status.id),\n          'filter[start_published_at]':\n            filters.published[0] && moment(filters.published[0]).format('YYYY-MM-DD'),\n          'filter[end_published_at]':\n            filters.published[1] && moment(filters.published[1]).format('YYYY-MM-DD'),\n          'filter[start_expires_at]':\n            filters.expiry[0] && moment(filters.expiry[0]).format('YYYY-MM-DD'),\n          'filter[end_expires_at]':\n            filters.expiry[1] && moment(filters.expiry[1]).format('YYYY-MM-DD'),\n          pinned: !!isDashboard\n        },\n        apiKey\n      );\n    }\n    if (showPinnedJobs && (type === 'all' || type === 'pinned')) {\n      getPinnedJobs(\n        {\n          page: 1,\n          limit: 100,\n          sort_by: orderBy,\n          sort_direction: order,\n          'q[search]': search ? search : undefined,\n          'filter[location]': filters.location.map((location) => location.name),\n          'filter[state]': filters.state.map((state) => state.value),\n          'filter[entity_ids]': filters.entity.map((entity) => entity.id),\n          'filter[assigned_user_ids]': filters.assigned_user.map((user) => user.id),\n          'filter[recruitment_ad_user_ids]': filters.recruitment_ad_user.map((user) => user.id),\n          'filter[job_status_ids]': filters.status.map((status) => status.id),\n          'filter[start_published_at]':\n            filters.published[0] && moment(filters.published[0]).format('YYYY-MM-DD'),\n          'filter[end_published_at]':\n            filters.published[1] && moment(filters.published[1]).format('YYYY-MM-DD'),\n          'filter[start_expires_at]':\n            filters.expiry[0] && moment(filters.expiry[0]).format('YYYY-MM-DD'),\n          'filter[end_expires_at]':\n            filters.expiry[1] && moment(filters.expiry[1]).format('YYYY-MM-DD'),\n          pinned: true\n        },\n        apiKey\n      );\n    }\n  };\n\n  async function handleArchiveJobs(ids: Array<number>) {\n    setIsLoading(true);\n    try {\n      const response = await Api.putArchiveJobs({ job_ids: ids });\n      if (response.res?.job_ids?.failure?.length) {\n        const message =\n          response.res.job_ids.success?.length > 0 || response.res.job_ids.failure?.length > 1\n            ? `${response.res.job_ids.failure?.length} ${\n                response.res.job_ids.failure?.length > 1 ? 'jobs were' : 'job was'\n              } unable to be archived. Jobs in the Published, Closed and Draft state cannot be archived.`\n            : `${\n                response.res.job_ids.failure?.length === 1\n                  ? 'Unable to archive job. Jobs in the Published, Closed and Draft state cannot be archived.'\n                  : ''\n              }`;\n        setSnackbarState({\n          message: message,\n          state: 'error'\n        });\n      }\n    } catch (error) {\n      setSnackbarState({\n        message: error?.errors,\n        state: 'error'\n      });\n      alert('Something went wrong. Please try again.');\n    } finally {\n      setSelected([]);\n      setSelectedJob({ id: null, states: null, statuses: null });\n      setActionsAnchorEl(null);\n      reloadJobs('all');\n    }\n  }\n\n  async function handleTrashJobs(ids: Array<number>) {\n    setIsLoading(true);\n    try {\n      await fetch(`${BASE_URL}/api/v4/jobs/delete`, {\n        method: 'DELETE',\n        headers: {\n          'X-api-authenticate': apiKey,\n          'Content-Type': 'application/json'\n        },\n        body: JSON.stringify({ job_ids: ids })\n      });\n      setDeleteJobs([]);\n    } catch (error) {\n      console.log(error);\n      alert('Something went wrong. Please try again.');\n    } finally {\n      setSelected([]);\n      setSelectedJob({ id: null, states: null, statuses: null });\n      setActionsAnchorEl(null);\n      reloadJobs('all');\n    }\n  }\n\n  useEffect(() => {\n    setSelected([]);\n  }, [showPinnedJobs]);\n\n  const cloneJob = async (id: number) => {\n    setIsLoading(true);\n    const queryParams = `?${queryString.stringify(resourses, {\n      arrayFormat: 'bracket',\n      encode: false\n    })}`;\n    const cloningJob = jobs.find((x) => x.id === id) || pinnedJobs.find((x) => x.id === id);\n    try {\n      const response = await fetch(`/api/v4/jobs/${id}/clone${queryParams}`, {\n        method: 'POST',\n        headers: {\n          'X-api-authenticate': apiKey,\n          'Content-Type': 'application/json'\n        },\n        body: JSON.stringify({\n          job: {\n            reference: cloningJob.reference,\n            title: cloningJob.title,\n            expires_at: '',\n            location: cloningJob.location\n          }\n        })\n      }).then((response) => response.json());\n      if (response.job_link) {\n        window.location.href = `${BASE_URL}${response.job_link}/edit`;\n      }\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsLoading(false);\n    }\n  };\n\n  const isSelected = (id: number) => selected.indexOf(id) !== -1;\n\n  const tableRowSharedProps = {\n    userPermissions,\n    BASE_URL,\n    isPinning,\n    sortableColumns,\n    tempState,\n    stateIsSending,\n    stateError,\n    tempStatus,\n    statusIsSending,\n    statusDropdownRef,\n    noteRefs,\n    hovered,\n    isSelected,\n    showMore,\n    handleShowMore,\n    handleClick,\n    handlePin,\n    handleScrollableEnter,\n    handleScrollableExit,\n    handleStateDropdown,\n    showDropdown,\n    handleStatusDropdown,\n    handleOpenNote,\n    setActionsAnchorEl,\n    setSelectedJob,\n    jobStatusFeature,\n    userTimezone\n  };\n\n  return (\n    <Box id=\"table-container\" sx={{ width: '100%', position: 'relative' }}>\n      <Backdrop\n        sx={{ color: '#83ECE7', zIndex: '99999' }}\n        open={(isLoading || isLoadingPinned) && !firstLoad}\n      >\n        <CircularProgress color=\"inherit\" />\n      </Backdrop>\n      <Paper sx={{ width: '100%', mb: 2, boxShadow: 'none ' }}>\n        {(isLoading || isLoadingPinned) && firstLoad ? (\n          <>\n            <TableContainer\n              id=\"table-scrollable\"\n              sx={classes.tableContainer}\n              onScroll={handleScroll}\n            >\n              <Table\n                stickyHeader\n                sx={{\n                  ...classes.tableWrapper,\n                  minWidth: 750,\n                  '& tr': { '& td, th': { padding: `${tablePadding(density)} 18px` } }\n                }}\n                aria-labelledby=\"tableTitle\"\n                size={'medium'}\n              >\n                <CurrentJobsTableHeader\n                  numSelected={selected.length}\n                  order={order}\n                  orderBy={orderBy}\n                  onSelectAllClick={handleSelectAllClick}\n                  onRequestSort={handleRequestSort}\n                  rowCount={jobs && jobs.length}\n                  pinnedCount={pinnedJobs && showPinnedJobs ? pinnedJobs.length : 0}\n                  sortableColumns={sortableColumns}\n                  handleScrollableEnter={handleScrollableEnter}\n                  handleScrollableExit={handleScrollableExit}\n                  hovered={hovered}\n                  actionCellRef={actionCellRef}\n                  titleCellRef={titleCellRef}\n                  jobStatusFeature={jobStatusFeature}\n                  userPermissions={userPermissions}\n                  isDashboard={isDashboard}\n                />\n              </Table>\n            </TableContainer>\n            <TableSkeleton />\n          </>\n        ) : (\n          <>\n            <TableContainer\n              id=\"table-scrollable\"\n              ref={allColumns}\n              sx={classes.tableContainer}\n              onScroll={handleScroll}\n            >\n              {!hideArrows && (\n                <>\n                  <Box\n                    onMouseEnter={() => handleScrollableEnter()}\n                    onMouseLeave={() => handleScrollableExit()}\n                    onClick={() => handleScrollLeft()}\n                    sx={{\n                      ...classes.leftArrow,\n                      ...(hovered && canScroll[0] ? classes.showArrows : {}),\n                      left: `${titleCellRef.current?.getBoundingClientRect().right}px`\n                    }}\n                    id=\"left-arrow\"\n                  >\n                    <KeyboardArrowLeftIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n                  </Box>\n                  <Box\n                    onMouseEnter={() => handleScrollableEnter()}\n                    onMouseLeave={() => handleScrollableExit()}\n                    onClick={() => handleScrollRight()}\n                    sx={{\n                      ...classes.rightArrow,\n                      ...(hovered && canScroll[1] ? classes.showArrows : {}),\n                      left: `${actionCellRef.current?.getBoundingClientRect().left - 40}px`\n                    }}\n                    id=\"right-arrow\"\n                  >\n                    <KeyboardArrowRightIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n                  </Box>\n                </>\n              )}\n              <Table\n                stickyHeader\n                sx={{\n                  ...classes.tableWrapper,\n                  minWidth: 750,\n                  '& tr': {\n                    '& td, th': { padding: `${tablePadding(density)} 18px`, textTransform: 'none' }\n                  }\n                }}\n                aria-labelledby=\"tableTitle\"\n                size={'medium'}\n              >\n                <CurrentJobsTableHeader\n                  numSelected={selected.length}\n                  order={order}\n                  orderBy={orderBy}\n                  onSelectAllClick={handleSelectAllClick}\n                  onRequestSort={handleRequestSort}\n                  rowCount={jobs && jobs.length}\n                  pinnedCount={pinnedJobs && showPinnedJobs ? pinnedJobs.length : 0}\n                  sortableColumns={sortableColumns}\n                  handleScrollableEnter={handleScrollableEnter}\n                  handleScrollableExit={handleScrollableExit}\n                  hovered={hovered}\n                  actionCellRef={actionCellRef}\n                  titleCellRef={titleCellRef}\n                  jobStatusFeature={jobStatusFeature}\n                  userPermissions={userPermissions}\n                  isDashboard={isDashboard}\n                />\n                <TableBody id=\"table-body\" data-testid=\"table-body\" sx={classes.tableBody}>\n                  {pinnedJobs && showPinnedJobs && (\n                    <CurrentJobsTableRow\n                      jobs={pinnedJobs}\n                      isPinnedSection={true}\n                      {...tableRowSharedProps}\n                    />\n                  )}\n                  {jobs && (\n                    <CurrentJobsTableRow\n                      showPinnedBorder={showPinnedJobs && !isLoadingPinned}\n                      isPinnedSection={false}\n                      {...{ ...tableRowSharedProps, jobs, isDashboard }}\n                    />\n                  )}\n                </TableBody>\n              </Table>\n            </TableContainer>\n            <Popover\n              id={stateAnchorEl ? 'state-selection' : undefined}\n              sx={classes.stateDropdown}\n              open={Boolean(stateAnchorEl)}\n              anchorEl={stateAnchorEl}\n              onClose={handleStateDropdownClose}\n              anchorOrigin={{\n                vertical: 'bottom',\n                horizontal: 'left'\n              }}\n            >\n              {selectedJob.states &&\n                selectedJob.states.map(\n                  (state: IJob['job_states'][0]) =>\n                    state.label !==\n                      (tempState[selectedJob.id as keyof typeof tempState]?.label ||\n                        selectedJob.states[0].label) && (\n                      <span\n                        key={`${selectedJob.id}-${state.label}`}\n                        onClick={(e) => handleStateChange(e, selectedJob.id, state)}\n                      >\n                        {changeStateTense(state.label)}\n                      </span>\n                    )\n                )}\n            </Popover>\n            <Popover\n              id={statusAnchorEl ? 'status-selection' : undefined}\n              sx={classes.statusDropdownItems}\n              open={Boolean(statusAnchorEl)}\n              anchorEl={statusAnchorEl}\n              onClose={handleStatusDropdownClose}\n              anchorOrigin={{\n                vertical: 'bottom',\n                horizontal: 'left'\n              }}\n            >\n              {selectedJob.statuses &&\n                selectedJob.statuses.map(\n                  (status: IJob['job_statuses'][0]) =>\n                    ![\n                      tempStatus[selectedJob.id as keyof typeof tempStatus]?.label ||\n                        selectedJob.statuses[0].label,\n                      'draft',\n                      'published',\n                      'unpublished',\n                      'closed',\n                      'saved'\n                    ].includes(status.label) && (\n                      <Box\n                        key={`${selectedJob.id}-${status.label}`}\n                        sx={classes.statusDropdownItem}\n                        onClick={() =>\n                          handleStatusChange(selectedJob.id, status.label, status.link)\n                        }\n                      >\n                        {status.label}\n                      </Box>\n                    )\n                )}\n            </Popover>\n            <NotesPopover\n              setJobs={selectedJob.isPinnedSection ? setPinnedJobs : setJobs}\n              anchorEl={noteAnchorEl}\n              handleCloseNote={handleCloseNote}\n              selectedJobId={selectedJob.id}\n              apiKey={apiKey}\n              setSnackbarState={setSnackbarState}\n            />\n            <Popover\n              id={actionsAnchorEl ? 'actions-menu-popover' : undefined}\n              sx={classes.actionsMenu}\n              open={Boolean(actionsAnchorEl)}\n              anchorEl={actionsAnchorEl}\n              onClose={() => {\n                setActionsAnchorEl(null);\n                setSelectedJob({ id: null, states: null, statuses: null });\n              }}\n              anchorOrigin={{\n                vertical: 'bottom',\n                horizontal: 'right'\n              }}\n              transformOrigin={{\n                vertical: 'top',\n                horizontal: 'right'\n              }}\n            >\n              {userPermissions?.Jobs?.['Create / Edit Jobs'] && (\n                <>\n                  <span\n                    onClick={() => {\n                      window.location.href = BASE_URL + `/admin/jobs/${selectedJob.id}/edit`;\n                    }}\n                    className=\"edit-job-button\"\n                  >\n                    Edit\n                  </span>\n                  {!isDashboard && !showNewApplicants && (\n                    <span onClick={() => cloneJob(selectedJob.id)} className=\"clone-job-button\">\n                      Clone\n                    </span>\n                  )}\n                </>\n              )}\n              {userPermissions?.Jobs?.['Archive Jobs'] && (\n                <span\n                  onClick={() => handleArchiveJobs([selectedJob.id])}\n                  className=\"archive-job-button\"\n                >\n                  Archive\n                </span>\n              )}\n              {userPermissions?.Trash?.['Trash Jobs'] && (\n                <span\n                  onClick={() => {\n                    setActionsAnchorEl(null);\n                    setTimeout(() => setTrashAlertOpen(true), 100);\n                    setDeleteJobs([selectedJob.id]);\n                  }}\n                  className=\"trash-job-button\"\n                  data-testid=\"trash-job-button-[CurrentJobs]\"\n                >\n                  Trash\n                </span>\n              )}\n            </Popover>\n            {(userPermissions?.Jobs?.['Archive Jobs'] ||\n              userPermissions?.Trash?.['Trash Jobs']) && (\n              <Box\n                id=\"selected-tooltip\"\n                sx={{\n                  ...classes.selectedTooltip,\n                  ...(selected.length > 0 ? classes.fadeIn : classes.fadeOut)\n                }}\n              >\n                <Box id=\"selected-tooltip-text\" sx={classes.selectedTooltipText}>\n                  {selected.length} selected\n                </Box>\n                <Box sx={classes.selectedTooltipButtonsContainer}>\n                  {userPermissions?.Jobs?.['Archive Jobs'] && (\n                    <Button\n                      variant=\"contained\"\n                      sx={classes.selectedTooltipButton}\n                      onClick={() => handleArchiveJobs(selected)}\n                    >\n                      Archive\n                    </Button>\n                  )}\n                  {userPermissions?.Trash?.['Trash Jobs'] && (\n                    <Button\n                      id=\"popover-trash-button\"\n                      data-testid=\"popover-trash-button\"\n                      variant=\"contained\"\n                      sx={classes.selectedTooltipButton}\n                      onClick={() => {\n                        setDeleteJobs(selected);\n                        setTrashAlertOpen(true);\n                      }}\n                    >\n                      Trash\n                    </Button>\n                  )}\n                </Box>\n              </Box>\n            )}\n            {jobs?.length === 0 && (\n              <NoJobs searchOrFilterApplied={!!search || !!filtersApplied || isLoading} />\n            )}\n          </>\n        )}\n        <Box\n          sx={{\n            display: 'flex',\n            justifyContent: 'space-between',\n            alignItems: 'center',\n            marginTop: '16px'\n          }}\n        >\n          <Box sx={classes.rowSelectContainer}>\n            <span>Rows per page: </span>\n            <FormControl>\n              <Select\n                id=\"rows-per-page\"\n                data-testid=\"rows-per-page-[CurrentJobs]\"\n                sx={classes.rowSelect}\n                value={rowsPerPage}\n                onChange={handleChangeRowsPerPage}\n                displayEmpty\n                MenuProps={{ sx: classes.paginationMenuItems }}\n              >\n                <MenuItem id=\"first-rpp-item\" data-testid=\"first-rpp-item-[CurrentJobs]\" value={10}>\n                  10\n                </MenuItem>\n                <MenuItem\n                  id=\"second-rpp-item\"\n                  data-testid=\"second-rpp-item-[CurrentJobs]\"\n                  value={20}\n                >\n                  20\n                </MenuItem>\n                <MenuItem value={30}>30</MenuItem>\n                <MenuItem value={40}>40</MenuItem>\n                <MenuItem value={50}>50</MenuItem>\n              </Select>\n            </FormControl>\n          </Box>\n          <Box sx={classes.paginationContainer} data-testid={'pagination-container-[CurrentJobs]'}>\n            <Pagination\n              id=\"pagination-menu\"\n              count={maxPages}\n              page={page}\n              defaultPage={Math.ceil(maxPages / 2)}\n              siblingCount={0}\n              onChange={handlePaginationChange}\n              sx={classes.pagination}\n            />\n            <span id=\"total-jobs\" data-testid=\"total-jobs-[CurrentJobs]\">\n              {maxJobs} Total\n            </span>\n          </Box>\n        </Box>\n        <GenericDialog\n          isDialogOpen={trashAlertOpen}\n          setDialogOpen={setTrashAlertOpen}\n          title={deleteJobs.length > 1 ? 'Trash jobs?' : 'Trash job?'}\n          description={\n            deleteJobs.length > 1\n              ? 'Are you sure want to trash these jobs?'\n              : 'Are you sure want to trash this job?'\n          }\n          buttonCallback={() => {\n            setTrashAlertOpen(false);\n            handleTrashJobs(deleteJobs);\n            setDeleteJobs([]);\n          }}\n          callbackLoading={false}\n          buttonText=\"Trash\"\n          url=\"\"\n        />\n      </Paper>\n    </Box>\n  );\n}\n\nexport default memo(CurrentJobs);\n","import React from 'react';\nimport { Box, TableHead, TableRow, TableCell, Checkbox, TableSortLabel } from '@mui/material';\nimport { TableHeader } from '../types';\nimport { visuallyHidden } from '@mui/utils';\nimport { classes } from './useStyles';\n\nexport default function CurrentJobsTableHeader(props: TableHeader) {\n  const {\n    onSelectAllClick,\n    order,\n    orderBy,\n    numSelected,\n    rowCount,\n    pinnedCount,\n    onRequestSort,\n    sortableColumns,\n    handleScrollableEnter,\n    handleScrollableExit,\n    hovered,\n    actionCellRef,\n    titleCellRef,\n    jobStatusFeature,\n    userPermissions,\n    isDashboard\n  } = props;\n  const createSortHandler = (property: string) => (event: React.MouseEvent) => {\n    onRequestSort(event, property);\n  };\n\n  const tableHeadingAlignment = (name: string) => {\n    switch (name) {\n      case 'applications_count':\n        return 'right';\n      case 'state':\n        return 'center';\n      case 'status':\n        return 'left';\n      default:\n        return 'left';\n    }\n  };\n\n  const tableHeadingWidth = (name: string) => {\n    switch (name) {\n      case 'published_at':\n        return '115px';\n      case 'expires_at':\n        return '115px';\n      case 'created_at':\n        return '115px';\n      case 'title':\n        return '200px';\n      case 'applications_count':\n        return '120px';\n      default:\n        return '150px';\n    }\n  };\n\n  const tableHeadingTransform = (name: string) => {\n    switch (name) {\n      case 'state':\n        return 'translateX(18px)';\n      case 'status':\n        return 'translateX(12px)';\n      default:\n        return '';\n    }\n  };\n\n  return (\n    <TableHead>\n      <TableRow id=\"table-header\" sx={classes.tableHeaderRow}>\n        <TableCell\n          padding=\"checkbox\"\n          key=\"checkbox\"\n          sx={{\n            position: 'sticky',\n            left: 0,\n            width: '60px !important',\n            maxWidth: '60px',\n            background: 'white',\n            zIndex: '4'\n          }}\n        >\n          <Checkbox\n            id=\"select-all-checkbox\"\n            data-testid=\"select-all-checkbox-[CurrentJobsTableHeader]\"\n            sx={{\n              color: '#aaa !important',\n              '&.Mui-checked': {\n                color: '#15C7C0 !important'\n              }\n            }}\n            indeterminate={numSelected > 0 && numSelected < rowCount + pinnedCount}\n            checked={rowCount > 0 && numSelected === rowCount + pinnedCount}\n            onChange={onSelectAllClick}\n            inputProps={{\n              'aria-label': 'select all jobs'\n            }}\n          />\n        </TableCell>\n        <TableCell\n          sx={{\n            position: 'sticky',\n            left: '60px',\n            width: '50px !important',\n            maxWidth: '50px',\n            background: 'white',\n            zIndex: '4'\n          }}\n        ></TableCell>\n        {sortableColumns.map(\n          (headCell, i) =>\n            headCell.enabled &&\n            !(!jobStatusFeature && headCell.id === 'status') &&\n            (headCell.id === 'recruitment_ad_user'\n              ? userPermissions?.recruitment_team_enabled\n              : true) &&\n            (headCell.id === 'entity' ? userPermissions?.Jobs?.['Show Job Sub-Entity'] : true) && (\n              <TableCell\n                key={headCell.id}\n                align={'left'}\n                padding={'normal'}\n                id={`${headCell.id}-header`}\n                ref={headCell.id === 'title' ? titleCellRef : null}\n                sortDirection={orderBy === headCell.id ? (order as 'asc' | 'desc') : false}\n                onMouseEnter={\n                  headCell.id !== 'title' && headCell.id !== 'reference'\n                    ? () => handleScrollableEnter()\n                    : null\n                }\n                onMouseLeave={\n                  headCell.id !== 'title' && headCell.id !== 'reference'\n                    ? () => handleScrollableExit()\n                    : null\n                }\n                sx={{\n                  ...(i === 0\n                    ? {\n                        position: 'sticky',\n                        left: '110px',\n                        maxWidth: '96px',\n                        width: '96px',\n                        background: 'white',\n                        zIndex: '3'\n                      }\n                    : {\n                        position: i === 1 ? 'sticky' : 'relative',\n                        left: i === 1 ? '206px' : 'auto',\n                        minWidth: tableHeadingWidth(headCell.id),\n                        background: 'white',\n                        zIndex: i === 1 ? '2' : headCell.id === 'applications_count' ? '1' : '0',\n                        textAlign: tableHeadingAlignment(headCell.id),\n                        transform: tableHeadingTransform(headCell.id),\n                        paddingLeft: headCell.id === 'state' ? '35px' : '',\n                        '& span': (headCell.id === 'status' || headCell.id === 'notes') && {\n                          '&:hover': {\n                            color: '#084d6d !important',\n                            cursor: 'default'\n                          }\n                        }\n                      }),\n                  ...(headCell.id === 'title'\n                    ? {\n                        ...classes.titleHeaderCell,\n                        ...(hovered ? classes.cellAnimate : {})\n                      }\n                    : {})\n                }}\n              >\n                <TableSortLabel\n                  id={`${headCell.id}-sort-label`}\n                  data-testid={`${headCell.id}-sort-label`}\n                  active={orderBy === headCell.id}\n                  direction={orderBy === headCell.id ? (order as 'asc' | 'desc') : 'asc'}\n                  onClick={\n                    headCell.id !== 'status' && headCell.id !== 'notes'\n                      ? createSortHandler(headCell.id)\n                      : null\n                  }\n                  hideSortIcon={headCell.id === 'status' || headCell.id === 'notes'}\n                >\n                  {headCell.label}\n                  {headCell.id !== 'status' &&\n                  headCell.id !== 'notes' &&\n                  orderBy === headCell.id ? (\n                    <Box component=\"span\" sx={visuallyHidden}>\n                      {order === 'desc' ? 'sorted descending' : 'sorted ascending'}\n                    </Box>\n                  ) : null}\n                </TableSortLabel>\n              </TableCell>\n            )\n        )}\n        <TableCell\n          padding=\"checkbox\"\n          key=\"actions\"\n          ref={actionCellRef}\n          sx={{\n            ...classes.actionsHeaderCell,\n            ...(hovered ? classes.cellAnimate : {}),\n            ...(isDashboard && {\n              minWidth: '140px'\n            })\n          }}\n        />\n      </TableRow>\n    </TableHead>\n  );\n}\n","import React, { useCallback } from 'react';\nimport { Box, Checkbox, CircularProgress, TableCell, TableRow, Tooltip } from '@mui/material';\nimport PushPinIcon from '@mui/icons-material/PushPin';\nimport NoteAddIcon from '@mui/icons-material/NoteAdd';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport IconButton from '@mui/material/IconButton';\nimport moment from 'moment-timezone';\nimport { classes } from './useStyles';\nimport { ICurrentJobsTableRowProps, IJob } from '../types';\nimport NotesWithSubjectLine from '../../Components/GenericTable/TableCells/NotesWithSubjectLine';\nimport { SortableColumnId } from '../../Job/types';\n\nexport default function CurrentJobsTableRow({\n  jobs,\n  userPermissions,\n  BASE_URL,\n  isPinning,\n  sortableColumns,\n  tempState,\n  stateIsSending,\n  stateError,\n  tempStatus,\n  statusIsSending,\n  statusDropdownRef,\n  noteRefs,\n  hovered,\n  isSelected,\n  showMore,\n  handleShowMore,\n  handleClick,\n  handlePin,\n  handleScrollableEnter,\n  handleScrollableExit,\n  handleStateDropdown,\n  showDropdown,\n  handleStatusDropdown,\n  handleOpenNote,\n  setActionsAnchorEl,\n  setSelectedJob,\n  showPinnedBorder,\n  isPinnedSection,\n  jobStatusFeature,\n  isDashboard,\n  userTimezone\n}: ICurrentJobsTableRowProps) {\n  const timeZoneString = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\n  const renderTableCell = useCallback(\n    (column, job, publishedAt, createdAt, expiresAt, notes, expiryDateColor, labelId, index) => {\n      switch (column.id) {\n        case 'reference':\n          return (\n            <TableCell\n              key={job.reference + column.id}\n              component=\"th\"\n              id={labelId}\n              data-testid={`reference-cell-${index}-[CurrentJobsTableRow]`}\n              className=\"reference-cell\"\n              scope=\"row\"\n              sx={{\n                position: 'sticky',\n                left: '110px',\n                background: 'white',\n                paddingRight: '8px !important',\n                fontSize: '14px',\n                fontFamily: 'Source Sans Pro',\n                zIndex: '3',\n                '& a': {\n                  wordBreak: 'break-word',\n                  color: '#000000'\n                },\n                '& a:hover': {\n                  textDecoration: 'none'\n                }\n              }}\n            >\n              <a\n                href={`${BASE_URL}${job.job_link || '/admin/jobs/' + job.id}`}\n                className=\"job-reference-link\"\n                data-testid={`job-reference-link-${index}-[CurrentJobsTableRow]`}\n              >\n                {job.reference ? job.reference : '-'}\n              </a>\n            </TableCell>\n          );\n        case 'title':\n          return (\n            <TableCell\n              key={job.reference + column.id}\n              component=\"th\"\n              id={labelId}\n              scope=\"row\"\n              className=\"title-cell\"\n              data-testid={`title-cell-${index}-[CurrentJobsTableRow]`}\n              sx={{ ...classes.titleCell, ...(hovered ? classes.cellAnimate : {}) }}\n            >\n              <a\n                href={`${BASE_URL}${job.job_link || '/admin/jobs/' + job.id}`}\n                className=\"job-title-link\"\n                data-testid=\"job-title-link\"\n              >\n                {job.title ? job.title : '-'}\n              </a>\n            </TableCell>\n          );\n        case 'published_at':\n          return (\n            <TableCell\n              key={job.reference + column.id}\n              sx={{\n                paddingRight: '8px !important',\n                width: '120px !important',\n                lineHeight: '1.22'\n              }}\n              align=\"left\"\n              className=\"published-cell\"\n              onMouseEnter={() => handleScrollableEnter()}\n              onMouseLeave={() => handleScrollableExit()}\n            >\n              {job.published_at ? publishedAt : '-'}\n            </TableCell>\n          );\n        case 'created_at':\n          return (\n            <TableCell\n              key={job.reference + column.id}\n              sx={{\n                paddingRight: '8px !important',\n                width: '120px !important',\n                lineHeight: '1.22'\n              }}\n              align=\"left\"\n              className=\"created-cell\"\n              data-testid={`created-cell-${index}-[CurrentJobsTableRow]`}\n              onMouseEnter={() => handleScrollableEnter()}\n              onMouseLeave={() => handleScrollableExit()}\n            >\n              {job.created_at ? createdAt : '-'}\n            </TableCell>\n          );\n        case 'expires_at':\n          return (\n            <TableCell\n              key={job.reference + column.id}\n              sx={{\n                paddingRight: '8px !important',\n                width: '120px !important',\n                lineHeight: '1.22',\n                color: expiryDateColor(job.expires_at)\n              }}\n              align=\"left\"\n              onMouseEnter={() => handleScrollableEnter()}\n              onMouseLeave={() => handleScrollableExit()}\n            >\n              {job.expires_at ? expiresAt : '-'}\n            </TableCell>\n          );\n        case 'applications_count':\n          return (\n            <TableCell\n              key={job.reference + column.id}\n              sx={{\n                paddingRight: '43px !important',\n                '& a': {\n                  wordBreak: 'break-word',\n                  color: '#000000'\n                },\n                '& a:hover': {\n                  textDecoration: 'none'\n                }\n              }}\n              align=\"right\"\n              className=\"applications-cell\"\n              data-testid={`applications-cell-${index}-[CurrentJobsTableRow]`}\n              onMouseEnter={() => handleScrollableEnter()}\n              onMouseLeave={() => handleScrollableExit()}\n            >\n              <a\n                href={`${BASE_URL}/admin/jobs/${job.id}?applications=true`}\n                className=\"application-count-link\"\n              >\n                {job.applications_count} ({job.open_applications_count})\n              </a>\n            </TableCell>\n          );\n        case 'state':\n          return (\n            <TableCell\n              key={job.reference + column.id}\n              sx={{ paddingRight: '8px !important' }}\n              className={'state-cell'}\n              align=\"center\"\n              onMouseEnter={() => handleScrollableEnter()}\n              onMouseLeave={() => handleScrollableExit()}\n            >\n              {userPermissions?.Jobs?.['Create / Edit Jobs'] && job.job_states[1] ? (\n                <Tooltip\n                  open={Boolean(stateError.id === job.id)}\n                  placement=\"top\"\n                  sx={classes.stateErrorTooltip}\n                  title={stateError.message ? stateError.message : ''}\n                  arrow\n                >\n                  <Box\n                    className=\"state-dropdown\"\n                    sx={{\n                      ...classes.stateColumn,\n                      ...classes[\n                        tempState[job.id as keyof typeof tempState]?.label.toLowerCase() ||\n                          job.state\n                      ],\n                      cursor: 'pointer'\n                    }}\n                    onClick={(e) =>\n                      handleStateDropdown(\n                        e,\n                        job.id,\n                        tempState[job.id as keyof typeof tempState]?.list || job.job_states\n                      )\n                    }\n                  >\n                    {stateIsSending === job.id ? (\n                      <CircularProgress size={18} sx={classes.stateLoader} />\n                    ) : (\n                      <>\n                        {tempState[job.id as keyof typeof tempState]?.label || job.state}\n                        &nbsp;&nbsp;&#9662;\n                      </>\n                    )}\n                  </Box>\n                </Tooltip>\n              ) : (\n                <Box sx={{ ...classes.stateColumn, ...classes[job.state] }}>{job.state}</Box>\n              )}\n            </TableCell>\n          );\n        case 'status':\n          if (!jobStatusFeature) return null;\n          return (\n            <TableCell\n              key={job.reference + column.id}\n              sx={{\n                paddingRight: '8px !important'\n              }}\n              className={'status-cell'}\n              align=\"center\"\n              onMouseEnter={() => handleScrollableEnter()}\n              onMouseLeave={() => handleScrollableExit()}\n            >\n              {job.job_statuses ? (\n                userPermissions?.Jobs?.['Create / Edit Jobs'] &&\n                showDropdown(\n                  tempStatus[job.id as keyof typeof tempStatus]?.list || job.job_statuses\n                ) ? (\n                  <Box\n                    className={`status-dropdown`}\n                    sx={{ ...classes.statusDropdown, ...classes.statusClamp }}\n                    onClick={(e) =>\n                      handleStatusDropdown(\n                        e,\n                        job.id,\n                        tempStatus[job.id as keyof typeof tempStatus]?.list || job.job_statuses\n                      )\n                    }\n                    ref={(e) => (statusDropdownRef.current[index] = e)}\n                  >\n                    <>\n                      <Box\n                        className=\"status-dropdown-full\"\n                        sx={{\n                          '&::after': {\n                            display: 'block',\n                            top:\n                              statusDropdownRef.current[index] &&\n                              statusDropdownRef.current[index].clientHeight > 45\n                                ? '25.5px'\n                                : '50%'\n                          }\n                        }}\n                      >\n                        {statusIsSending !== job.id &&\n                          (tempStatus[job.id as keyof typeof tempStatus]?.label ||\n                            (job.job_statuses?.length > 0 ? job.job_statuses[0].label : ''))}\n                      </Box>\n                      {statusIsSending === job.id ? (\n                        <CircularProgress size={18} sx={classes.statusLoader} />\n                      ) : (\n                        <>\n                          {tempStatus[job.id as keyof typeof tempStatus]?.label ||\n                            (job.job_statuses?.length > 0 ? job.job_statuses[0].label : '')}\n                        </>\n                      )}\n                    </>\n                  </Box>\n                ) : (\n                  <Box\n                    sx={{\n                      ...classes.statusClamp,\n                      ...classes.noDropdown,\n                      '& .status-dropdown-full': {\n                        ...classes.statusClamp['& .status-dropdown-full'],\n                        ...classes.noDropdown['& .status-dropdown-full']\n                      }\n                    }}\n                  >\n                    <Box className={'status-dropdown-full'} sx={classes.noDropdown}>\n                      {statusIsSending !== job.id &&\n                        (tempStatus[job.id as keyof typeof tempStatus]?.label ||\n                          (job.job_statuses?.length > 0 ? job.job_statuses[0].label : ''))}\n                    </Box>\n                    {tempStatus[job.id as keyof typeof tempStatus]?.label ||\n                      (job.job_statuses?.length > 0 ? job.job_statuses[0]?.label : '')}\n                  </Box>\n                )\n              ) : (\n                <Box sx={classes.noStatuses}>-</Box>\n              )}\n            </TableCell>\n          );\n        case 'entity':\n          return userPermissions?.Jobs?.['Show Job Sub-Entity'] ? (\n            <TableCell\n              key={job.reference + column.id}\n              sx={{\n                paddingRight: '8px !important',\n                '& a': {\n                  wordBreak: 'break-word',\n                  color: '#000000'\n                },\n                '& a:hover': {\n                  textDecoration: 'none'\n                }\n              }}\n              align=\"left\"\n              className=\"entity-cell\"\n              onMouseEnter={() => handleScrollableEnter()}\n              onMouseLeave={() => handleScrollableExit()}\n            >\n              <a href={`${BASE_URL}${job.entity_link}`} className=\"job-entity-link\">\n                {job.entity ? job.entity : '-'}\n              </a>\n            </TableCell>\n          ) : null;\n        case 'location':\n          return (\n            <TableCell\n              key={job.reference + column.id}\n              sx={{ paddingRight: '8px !important' }}\n              align=\"left\"\n              className=\"location-cell\"\n              onMouseEnter={() => handleScrollableEnter()}\n              onMouseLeave={() => handleScrollableExit()}\n            >\n              {job.location ? job.location : '-'}\n            </TableCell>\n          );\n        case 'assigned_user':\n          return (\n            <TableCell\n              key={job.reference + column.id}\n              sx={{ paddingRight: '8px !important' }}\n              align=\"left\"\n              className=\"assigned-user-cell\"\n              onMouseEnter={() => handleScrollableEnter()}\n              onMouseLeave={() => handleScrollableExit()}\n            >\n              {job?.assigned_user ? job.assigned_user : '-'}\n            </TableCell>\n          );\n        case 'recruitment_ad_user':\n          return userPermissions?.recruitment_team_enabled ? (\n            <TableCell\n              key={job.reference + column.id}\n              sx={{ paddingRight: '8px !important' }}\n              align=\"left\"\n              className=\"rm-user-cell\"\n              onMouseEnter={() => handleScrollableEnter()}\n              onMouseLeave={() => handleScrollableExit()}\n            >\n              {job?.recruitment_ad_user ? job.recruitment_ad_user : '-'}\n            </TableCell>\n          ) : null;\n        case SortableColumnId.NOTES:\n          return (\n            <TableCell\n              key={job.reference + column.id}\n              sx={{ minWidth: '300px', paddingRight: '8px !important' }}\n              align=\"left\"\n              className=\"note-cell\"\n              onMouseEnter={handleScrollableEnter}\n              onMouseLeave={handleScrollableExit}\n              id={`notes-${labelId}`}\n            >\n              {notes.length > 0 ? <NotesWithSubjectLine notes={notes} /> : '-'}\n            </TableCell>\n          );\n        default:\n          return <TableCell></TableCell>;\n      }\n    },\n    [\n      BASE_URL,\n      classes,\n      handleScrollableEnter,\n      handleScrollableExit,\n      handleShowMore,\n      handleStateDropdown,\n      handleStatusDropdown,\n      hovered,\n      noteRefs,\n      showDropdown,\n      showMore,\n      stateError.id,\n      stateError.message,\n      stateIsSending,\n      statusDropdownRef,\n      statusIsSending,\n      tempState,\n      tempStatus,\n      userPermissions?.Jobs\n    ]\n  );\n  return jobs.map((job: IJob, index: number) => {\n    const jobTimeZone = job.time_zone ?? userTimezone ?? timeZoneString;\n    const isItemSelected = isSelected(job.id);\n    const labelId = `enhanced-table-checkbox-${index}`;\n    const formatDate = (date: string | undefined, timeZone: string, jobId: number) =>\n      date &&\n      moment\n        .tz(date, timeZone)\n        .format('DD MMM YYYY,-h:mma z')\n        .split('-')\n        .map((line) => <div key={`${jobId}-${line}`}>{line}</div>);\n\n    const publishedAt = formatDate(job.published_at, jobTimeZone, job.id);\n    const createdAt = formatDate(job.created_at, jobTimeZone, job.id);\n    const expiresAt = formatDate(job.expires_at, jobTimeZone, job.id);\n    const notes = job.job_notes ? job.job_notes : [];\n    const expiryDateColor = (date: string) => {\n      const dayToExpired = (new Date(date).getTime() - Date.now()) / (1000 * 60 * 60 * 24);\n      if (dayToExpired < 0) {\n        return '#E37D7A';\n      } else if (dayToExpired < 1) {\n        return '#E6A052';\n      } else {\n        return '#333333';\n      }\n    };\n    return (\n      <TableRow\n        hover\n        role=\"checkbox\"\n        aria-checked={isItemSelected}\n        tabIndex={-1}\n        key={job.id}\n        selected={isItemSelected}\n        sx={\n          showPinnedBorder && index === 0\n            ? {\n                '& td, th ': {\n                  borderColor: 'rgba(230, 160, 82, 0.5)'\n                }\n              }\n            : {}\n        }\n      >\n        <TableCell\n          padding=\"checkbox\"\n          sx={{\n            position: 'sticky',\n            left: 0,\n            width: '60px !important',\n            maxWidth: '60px',\n            background: 'white',\n            zIndex: '3'\n          }}\n        >\n          <Checkbox\n            className=\"individual-checkbox\"\n            data-testid={`individual-checkbox-${index}-[CurrentJobsTableRow]`}\n            onClick={(event) => handleClick(event, job.id)}\n            sx={{\n              color: '#aaa !important',\n              '&.Mui-checked': {\n                color: '#15C7C0 !important'\n              }\n            }}\n            checked={isItemSelected}\n            inputProps={{\n              'aria-labelledby': labelId\n            }}\n          />\n        </TableCell>\n        <TableCell\n          sx={{\n            position: 'sticky',\n            left: '60px',\n            width: '50px !important',\n            maxWidth: '50px',\n            background: 'white',\n            zIndex: '3'\n          }}\n        >\n          {isPinning === job.id ? (\n            <CircularProgress size={16} sx={{ color: '#E6A052' }} />\n          ) : (\n            <PushPinIcon\n              onClick={(event) => handlePin(event, job.id, job.pinned_by_user)}\n              sx={\n                job.pinned_by_user\n                  ? {\n                      color: '#E6A052',\n                      cursor: 'pointer'\n                    }\n                  : {\n                      color: '#CCCCCC',\n                      cursor: 'pointer'\n                    }\n              }\n            />\n          )}\n        </TableCell>\n        {sortableColumns.map((column) => {\n          if (column.enabled) {\n            return renderTableCell(\n              column,\n              job,\n              publishedAt,\n              createdAt,\n              expiresAt,\n              notes,\n              expiryDateColor,\n              labelId,\n              index\n            );\n          }\n        })}\n        <TableCell\n          align=\"right\"\n          sx={{\n            ...(isDashboard && {\n              minWidth: '140px',\n              right: '-70px !important'\n            }),\n            ...classes.actionsCell,\n            ...(hovered ? classes.cellAnimate : {})\n          }}\n        >\n          <Box\n            sx={{\n              display: 'flex',\n              '& svg': {\n                fontSize: '20px !important'\n              },\n              justifyContent: 'end'\n            }}\n          >\n            {userPermissions?.['Job Options']?.['View Job Notes'] && (\n              <IconButton\n                className=\"add-note-button\"\n                onClick={(e) => handleOpenNote(e, job.id, isPinnedSection)}\n              >\n                <NoteAddIcon sx={classes.iconGray} />\n              </IconButton>\n            )}\n            {(userPermissions?.Jobs?.['Create / Edit Jobs'] ||\n              userPermissions?.Jobs?.['Archive Jobs'] ||\n              userPermissions?.Trash?.['Trash Jobs']) && (\n              <IconButton\n                className=\"job-actions-button\"\n                data-testid={`job-actions-button-${index}-[CurrentJobsTableRow]`}\n                onClick={(e) => {\n                  setActionsAnchorEl(e.currentTarget);\n                  setSelectedJob({ id: job.id, states: null, statuses: null });\n                }}\n              >\n                <MoreVertIcon sx={classes.iconGray} />\n              </IconButton>\n            )}\n          </Box>\n        </TableCell>\n      </TableRow>\n    );\n  });\n}\n","import React from 'react'\nimport Box from '@mui/material/Box'\n\nfunction NoJobs({ searchOrFilterApplied }: { searchOrFilterApplied: boolean }) {\n  return (\n    <Box \n      sx={{\n        paddingTop: '90px',\n        marginBottom: '90px',\n        borderTop: '1px solid #efefef',\n        display: 'flex',\n        flexDirection: 'column',\n        alignItems: 'center',\n        justifyContent: 'center',\n        width: '100%',\n      }}\n    >\n      <svg id=\"Group_382\" data-name=\"Group 382\" xmlns=\"http://www.w3.org/2000/svg\" width=\"108.165\" height=\"114.658\" viewBox=\"0 0 108.165 114.658\">\n        <defs>\n        <clipPath id=\"clip-path\">\n        <rect id=\"Rectangle_714\" data-name=\"Rectangle 714\" width=\"108.165\" height=\"114.658\" fill=\"none\"/>\n        </clipPath>\n        </defs>\n        <g id=\"Group_381\" data-name=\"Group 381\" clipPath=\"url(#clip-path)\">\n          <path id=\"Path_196\" data-name=\"Path 196\" d=\"M134.714,629.344c-1.242-.28-1.7-.609-1.105-1,4.134-2.7,22.743-2.615,31.769-2.612,11.354,0,23.167-.067,33.394.589,4.28.275,13.976.528,15.639,1.44,4.362,2.4-26.574,3.057-31.581,3.089-8.347.055-41.023.086-48.116-1.51\" transform=\"translate(-110.912 -520.443)\" fill=\"#e3e3e3\"/>\n          <path id=\"Path_197\" data-name=\"Path 197\" d=\"M204.486,22.764l0,83.721a3.7,3.7,0,0,1-3.7,3.69l-75.431,0a3.7,3.7,0,0,1-3.7-3.69V93.434l.062-7.191,0-79.5a3.7,3.7,0,0,1,3.7-3.69l59.357,0,19.713,19.7Z\" transform=\"translate(-101.179 -2.535)\" fill=\"#efefef\"/>\n          <path id=\"Path_198\" data-name=\"Path 198\" d=\"M121.65,99.758l.06-7.09,0-78.386a3.6,3.6,0,0,1,3.555-3.638l57,0,.822.844V26.345a3.928,3.928,0,0,0,3.928,3.928h12.646a2.984,2.984,0,0,1,2.983,2.984l0,79.367a3.6,3.6,0,0,1-3.555,3.638l-73.885,0a3.6,3.6,0,0,1-3.555-3.638Z\" transform=\"translate(-101.18 -8.853)\" fill=\"#fff\"/>\n          <path id=\"Path_199\" data-name=\"Path 199\" d=\"M201.824,20.042q0,4.6,0,9.207,0,10.836,0,21.673,0,12.71,0,25.421v20.5q0,2.812,0,5.624c0,.389,0,.778,0,1.167a3.357,3.357,0,0,1-3.147,3.518c-3.416.119-6.858,0-10.275,0H124.728c-.446,0-.892,0-1.338,0a3.544,3.544,0,0,1-3.586-3.476c-.1-3.164,0-6.35,0-9.516,0-3.937.062-7.873.062-11.81v-14.6q0-12.161,0-24.321,0-12.113,0-24.226V4.891c0-.312-.008-.625,0-.937A3.34,3.34,0,0,1,123.1.54c1.454-.037,2.915,0,4.369,0h52.986a12.3,12.3,0,0,0,1.711,0c.285-.042.146.116-.02-.086.116.141.265.264.393.393l15.127,15.115,3.012,3.009.85.849c.126.126.3.415.294.22.008.376.824.219.817-.085-.008-.4-.9-1.008-1.151-1.258L198.32,15.53l-8.894-8.887L183.189.411a.943.943,0,0,0-.719-.384c-.566-.032-1.144,0-1.711,0H136.418c-4.362,0-8.727-.059-13.089,0a4.19,4.19,0,0,0-4.277,3.99c-.006.237,0,.476,0,.713q0,2.557,0,5.114,0,10.229,0,20.458,0,12.907,0,25.814,0,10.48,0,20.961c0,3.32,0,6.638-.031,9.958q-.035,3.993-.032,7.984,0,3.107,0,6.214a12.781,12.781,0,0,0,.177,3.719,4.027,4.027,0,0,0,3.879,2.715c.411.008.822,0,1.233,0h71.5a26.657,26.657,0,0,0,3.169-.031,4.148,4.148,0,0,0,3.694-3.995c.008-.319,0-.638,0-.956q0-7.164,0-14.329,0-12.135,0-24.271,0-12.531,0-25.062,0-8.352,0-16.7V19.956c0-.375-.817-.221-.817.085\" transform=\"translate(-98.926 0)\" fill=\"#cfcfcf\"/>\n          <path id=\"Path_200\" data-name=\"Path 200\" d=\"M496.544,1.693V17.561a3.886,3.886,0,0,0,3.886,3.886H516.3Z\" transform=\"translate(-412.991 -1.408)\" fill=\"#fff\"/>\n          <path id=\"Path_201\" data-name=\"Path 201\" d=\"M494.13.913q0,7.546,0,15.092a4.854,4.854,0,0,0,.789,3.122,4.23,4.23,0,0,0,3.536,1.6c2.658.01,5.316,0,7.973,0h7.6c.082,0,.812-.141.646-.307L497.366,3.113,494.919.665c-.149-.149-.893.15-.765.278L511.459,18.25l2.448,2.448.646-.307H499.666a5.014,5.014,0,0,1-3.034-.636,4.1,4.1,0,0,1-1.69-3.623q0-4,0-8,0-3.716,0-7.431c0-.134-.813-.018-.813.218\" transform=\"translate(-410.983 -0.519)\" fill=\"#cfcfcf\"/>\n          <path id=\"Path_202\" data-name=\"Path 202\" d=\"M279.563,168.983h24.813c.225,0,.711-.081.8-.332s-.078-.357-.33-.357H280.038c-.225,0-.711.081-.8.333s.078.357.33.357\" transform=\"translate(-232.226 -139.975)\" fill=\"#cfcfcf\"/>\n          <path id=\"Path_203\" data-name=\"Path 203\" d=\"M181.925,230.691h54.264c2.484,0,5.027.158,7.507,0,.036,0,.073,0,.109,0,.308,0,.862-.465.315-.465H189.857c-2.484,0-5.027-.158-7.507,0-.036,0-.073,0-.109,0-.308,0-.862.465-.315.465\" transform=\"translate(-151.121 -191.428)\" fill=\"#cfcfcf\"/>\n          <path id=\"Path_204\" data-name=\"Path 204\" d=\"M180.51,255.164h59.8a22.375,22.375,0,0,0,2.462,0,.979.979,0,0,1,.109,0c.458,0,.629-.579.076-.579h-59.8a22.413,22.413,0,0,0-2.462,0,.979.979,0,0,1-.109,0c-.458,0-.629.579-.076.579\" transform=\"translate(-149.848 -211.713)\" fill=\"#cfcfcf\"/>\n          <path id=\"Path_205\" data-name=\"Path 205\" d=\"M180.395,278.441q14.835,0,29.671,0c2.191,0,4.355,0,6.539-.176,1.71-.136,5.275-.265,5.174,2.353-.086,2.239-3.7,2.588-5.33,2.948a19.24,19.24,0,0,0-5.6,1.853,3.492,3.492,0,0,0-1.753,1.872,1.694,1.694,0,0,0,.781,2.035,9.455,9.455,0,0,0,3.338.776,18.529,18.529,0,0,0,3.823.037c.231-.021.877-.4.344-.356a17.65,17.65,0,0,1-3.647-.036c-1.032-.122-3.21-.264-3.753-1.339-1.176-2.332,2.782-3.609,4.3-4.024a55.546,55.546,0,0,0,5.982-1.533c1.245-.5,2.769-1.562,2.228-3.117-.559-1.607-2.408-1.906-3.881-1.9-1.015,0-2.023.12-3.034.2-1.182.088-2.368.061-3.552.06H180.739c-.239,0-.882.356-.344.356\" transform=\"translate(-149.866 -231.08)\" fill=\"#cfcfcf\"/>\n          <path id=\"Path_206\" data-name=\"Path 206\" d=\"M423.136,352.474l-6.861-4.787,1.493,8.38Z\" transform=\"translate(-346.228 -289.182)\" fill=\"#cfcfcf\"/>\n          <path id=\"Path_207\" data-name=\"Path 207\" d=\"M425.146,379.726l30.565,46.348c.272.413.621.662.779.556l4.8-3.21c.158-.106.066-.526-.206-.94l-30.565-46.348Z\" transform=\"translate(-353.607 -312.842)\" fill=\"#efefef\"/>\n          <path id=\"Path_208\" data-name=\"Path 208\" d=\"M417.1,349.19l.644,3.464,2.3-1.607Z\" transform=\"translate(-346.912 -290.433)\" fill=\"#cfcfcf\"/>\n          <path id=\"Path_209\" data-name=\"Path 209\" d=\"M588.022,625.99l5.162-3.427a.089.089,0,0,1,.124.022l3.633,5.549a.09.09,0,0,1-.029.123l-5.162,3.427a.089.089,0,0,1-.124-.022l-3.633-5.549a.09.09,0,0,1,.029-.123\" transform=\"translate(-489.041 -517.792)\" fill=\"#efefef\"/>\n          <path id=\"Path_210\" data-name=\"Path 210\" d=\"M468.874,430.648,442.77,391l-1.38.924,26.1,39.65Z\" transform=\"translate(-367.118 -325.206)\" fill=\"#efefef\"/>\n          <path id=\"Path_211\" data-name=\"Path 211\" d=\"M452.219,398.079l-3.954-6-9.079-13.784-10.029-15.227-6.805-10.332a8,8,0,0,0-.981-1.44,22.313,22.313,0,0,0-2.654-1.834l-3.443-2.379-.637-.44c-.144-.1-.83.007-.787.254l1.323,7.715a5.057,5.057,0,0,0,1.013,1.958l7.993,12.136,11.434,17.359,8.821,13.392c.526.8,1.016,1.645,1.589,2.412.654.877,1.365.267,2.051-.191l3.826-2.556c.444-.3.635-.453.321-1.04-.121-.225-.9.058-.813.218.179.334.236.408.05.634a3.105,3.105,0,0,1-.645.431l-2.005,1.34-1.73,1.156c-.046.031-.31.258-.363.243.641.185.143-.389.12-.456a3.8,3.8,0,0,0-.467-.709l-1.076-1.634-8.47-12.859-11.144-16.919L417.429,357a13.226,13.226,0,0,1-1.346-2.044,3.935,3.935,0,0,1-.131-.759l-.343-2-.8-4.664-.148-.861-.787.254,5.782,4a4.136,4.136,0,0,1,1.506,1.453l6.148,9.333,9.869,14.984,9.369,14.223,3.235,4.912a15.635,15.635,0,0,0,1.553,2.358.734.734,0,0,1,.071.108c.146.221.9-.083.813-.218\" transform=\"translate(-344.209 -288.28)\" fill=\"#cfcfcf\"/>\n          <path id=\"Path_212\" data-name=\"Path 212\" d=\"M423.33,378.65l5.369-3.593c.457-.306-.214-.562-.533-.348L422.8,378.3c-.457.306.214.562.533.349\" transform=\"translate(-351.525 -311.592)\" fill=\"#cfcfcf\"/>\n          <path id=\"Path_213\" data-name=\"Path 213\" d=\"M587.126,625.876l4.861-3.253c.457-.306-.229-.492-.519-.3l-4.861,3.254c-.457.306.229.492.519.3\" transform=\"translate(-487.772 -517.541)\" fill=\"#cfcfcf\"/>\n          <path id=\"Path_214\" data-name=\"Path 214\" d=\"M436.877,395.295l8.871,13.474,14.017,21.29,3.217,4.886c.127.194.873-.127.813-.218l-8.871-13.474-14.017-21.29-3.217-4.886c-.128-.194-.873.127-.813.218\" transform=\"translate(-363.362 -328.547)\" fill=\"#cfcfcf\"/>\n          <path id=\"Path_215\" data-name=\"Path 215\" d=\"M447.234,388.107l8.871,13.474,14.017,21.29,3.217,4.886c.149.226.938-.04.755-.318l-8.871-13.474-14.017-21.29-3.217-4.886c-.149-.226-.938.04-.755.318\" transform=\"translate(-371.956 -322.465)\" fill=\"#cfcfcf\"/>\n          <path id=\"Path_216\" data-name=\"Path 216\" d=\"M.581,634.245a1.191,1.191,0,0,1-.436-1.558c2.177-4.016,11.268-3.738,15.68-3.658,5.549.1,11.328.092,16.288,1.163,2.076.448,6.8.909,7.56,2.292,1.573,2.866-6.109,4.023-7.521,4.281a69.789,69.789,0,0,1-22.984.186c-1.113-.17-6.749-1.107-8.588-2.706\" transform=\"translate(0 -523.153)\" fill=\"#e3e3e3\"/>\n          <path id=\"Path_217\" data-name=\"Path 217\" d=\"M46.663,419.842v-7.071l-35.85,0-.005,38.469h0v.01h0c.044,1.374,8.05,4.071,17.923,4.072s17.879-2.694,17.923-4.067h0v-6.529a12.444,12.444,0,0,0,0-24.881m0,21.235,0-17.589a8.8,8.8,0,0,1,0,17.589\" transform=\"translate(-8.99 -343.31)\" fill=\"#eaeaea\"/>\n          <path id=\"Path_218\" data-name=\"Path 218\" d=\"M45.062,418.787q0-3.536,0-7.071c0-.086-.194-.082-.238-.082l-12.137,0-19.259,0H8.975c-.157,0-.575.086-.575.3q0,6.593,0,13.187,0,10.4,0,20.8c0,1.432,0,3.219,0,4.5,0,.086.194.082.238.082h0L8.4,450.41c.042.447.58.762.92.966a12.714,12.714,0,0,0,2.5,1.078,41.662,41.662,0,0,0,8.827,1.8,50.4,50.4,0,0,0,20.346-1.692,15.055,15.055,0,0,0,2.907-1.187c.4-.227,1.1-.6,1.154-1.129l-.572.254h0c.157,0,.575-.086.575-.3q0-3.264,0-6.529l-.575.3a13.172,13.172,0,0,0,11.771-7.914,12.637,12.637,0,0,0-3.334-14.241,12.794,12.794,0,0,0-8.007-3.106c-.2-.007-.934.363-.515.377a12.343,12.343,0,0,1,8.25,21.2,11.759,11.759,0,0,1-7.827,3.3c-.157.005-.575.083-.575.3v6.529l.575-.3h0c-.112,0-.555.082-.572.254-.041.434-.6.714-.934.9a13.929,13.929,0,0,1-2.59,1.035,42.339,42.339,0,0,1-8.345,1.606A49.6,49.6,0,0,1,13.2,452.339a15.931,15.931,0,0,1-2.842-1.1c-.381-.2-1.106-.546-1.153-1.048-.008-.088-.186-.082-.238-.082h0l.238.082c0-4.027,0-8.54,0-12.719q0-10.467,0-20.933,0-2.414,0-4.829l-.575.3H20.775l19.259,0h4.454l-.238-.082q0,3.536,0,7.071c0,.181.813.05.813-.218\" transform=\"translate(-6.982 -342.365)\" fill=\"#cfcfcf\"/>\n          <path id=\"Path_219\" data-name=\"Path 219\" d=\"M222.266,493.029q0-7.678,0-15.356,0-1.116,0-2.233l-.664.3a8.773,8.773,0,0,1,8.333,8.126,8.508,8.508,0,0,1-7.91,9.083c-.251.012-.876.408-.337.383a9.51,9.51,0,0,0,8.323-5.482,8.957,8.957,0,0,0-2.227-10.231,9.147,9.147,0,0,0-5.668-2.256c-.174-.008-.664.05-.664.3q0,7.678,0,15.356,0,1.116,0,2.233c0,.181.813.05.813-.218\" transform=\"translate(-184.189 -395.372)\" fill=\"#cfcfcf\"/>\n          <path id=\"Path_220\" data-name=\"Path 220\" d=\"M46.689,399.01c0,1.379-8.025,2.493-17.925,2.489s-17.925-1.125-17.925-2.5,8.025-2.493,17.925-2.489,17.925,1.125,17.925,2.5\" transform=\"translate(-9.015 -329.786)\" fill=\"#fff\"/>\n          <path id=\"Path_221\" data-name=\"Path 221\" d=\"M44.3,398.04c-.026.408-.613.58-.925.694a15.052,15.052,0,0,1-2.628.625,67.492,67.492,0,0,1-8.435.795,93.11,93.11,0,0,1-18.888-.761,18.814,18.814,0,0,1-2.773-.616c-.375-.121-1.136-.311-1.328-.714-.409-.857,2.31-1.254,2.747-1.34,5.983-1.185,12.319-1.169,18.389-.983a73.676,73.676,0,0,1,9.774.83,16.7,16.7,0,0,1,2.91.68c.365.131,1.123.357,1.154.84.014.216.831.06.813-.218-.068-1.052-2.635-1.371-3.343-1.513a59.927,59.927,0,0,0-8.861-.941c-3.871-.192-7.755-.2-11.627-.019a62.5,62.5,0,0,0-8.992.917,14.222,14.222,0,0,0-2.57.683c-.4.158-1.047.4-1.22.844-.386.978,1.856,1.413,2.4,1.546a47.5,47.5,0,0,0,8.369,1.064c3.828.238,7.672.281,11.505.156a67.8,67.8,0,0,0,10.414-.959,13.459,13.459,0,0,0,2.809-.763c.386-.166,1.085-.462,1.117-.964.019-.285-.793-.118-.808.118\" transform=\"translate(-7.03 -328.757)\" fill=\"#cfcfcf\"/>\n          <path id=\"Path_224\" data-name=\"Path 224\" d=\"M131.02,301.791a3.235,3.235,0,0,0,1.146-1.139c1.413-2.786-1.813-5.721-3.223-7.74a4.951,4.951,0,0,1,3.227-7.917c-.4.688-.932,1.292-1.35,1.969a3.425,3.425,0,0,0-.605,2.259,4.8,4.8,0,0,0,1.5,2.347,12.332,12.332,0,0,1,1.806,2.511,8.137,8.137,0,0,1,.961,4.36c-.124,1.464-1.5,4.387-3.458,3.35\" transform=\"translate(-106.408 -237.039)\" fill=\"#fff\"/>\n        </g>\n      </svg>\n      <Box\n        id=\"no-jobs-message\"\n        sx={{\n          fontFamily: 'Source Sans Pro',\n          fontSize: '18px',\n          fontWeight: 'bold',\n          color: '#DDDDDD',\n          marginTop: '32px',\n        }}\n      >\n        {searchOrFilterApplied ? 'No jobs match your search or filter criteria' : 'You have no current jobs'}\n      </Box>\n    </Box>\n  )\n}\n\nexport default NoJobs","import React, { useEffect, useState } from 'react';\nimport Popover from '@mui/material/Popover';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport TextField from '@mui/material/TextField';\nimport DoneIcon from '@mui/icons-material/Done';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { INoteProps } from '../types';\nimport Api from '../API';\nimport { classes } from './useStyles';\nimport { emojiInString } from '../../utils/emoji-checker';\nimport { NOTES_ERROR_MESSAGE } from '../../constants';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { Stack } from '@mui/material';\nimport { classes as styles } from '../../Job/Applications/styles';\n\nconst NotesPopover = ({\n  setJobs,\n  anchorEl,\n  handleCloseNote,\n  selectedJobId,\n  setSnackbarState\n}: INoteProps) => {\n  const [editedNote, setEditedNote] = useState('');\n  const [savingNote, setSavingNote] = useState(false);\n  const [noteError, setNoteError] = useState('');\n\n  async function saveNote() {\n    if (emojiInString(editedNote)) {\n      setNoteError(NOTES_ERROR_MESSAGE);\n      return;\n    }\n    try {\n      setSavingNote(true);\n      const { res } = await Api.postJobNote(selectedJobId, {\n        job_note: { body: editedNote }\n      });\n      if (res.body) {\n        setJobs((prevJobs) => {\n          const newJobs = [...prevJobs];\n          const jobIndex = newJobs.findIndex((job) => job.id === selectedJobId);\n          newJobs[jobIndex].job_notes = [\n            { body: res.body, noted_by: res.noted_by },\n            ...newJobs[jobIndex].job_notes\n          ];\n          return newJobs;\n        });\n        setEditedNote('');\n        handleCloseNote();\n      }\n      setNoteError('');\n    } catch (error) {\n      console.error(error);\n      setSnackbarState({\n        message: error.message,\n        state: 'error'\n      });\n    } finally {\n      setSavingNote(false);\n    }\n  }\n\n  const closeNoteHandler = () => {\n    setNoteError('');\n    handleCloseNote();\n  };\n\n  useEffect(() => {\n    if (!anchorEl) return;\n  }, [anchorEl]);\n\n  return (\n    <Popover\n      id={anchorEl ? 'edit-note-popover' : undefined}\n      open={Boolean(anchorEl)}\n      anchorEl={anchorEl}\n      onClose={closeNoteHandler}\n      anchorOrigin={{\n        vertical: 'bottom',\n        horizontal: 'right'\n      }}\n      transformOrigin={{\n        vertical: 'top',\n        horizontal: 'right'\n      }}\n    >\n      <Stack sx={styles.notesContainer} spacing={2}>\n        <TextField\n          id=\"note-input\"\n          sx={classes.noteInput}\n          label=\"Add Note\"\n          multiline\n          fullWidth\n          maxRows={4}\n          variant=\"outlined\"\n          onChange={(e) => setEditedNote(e.target.value)}\n        />\n        {!!noteError && <Box sx={sharedClasses.errorText}>{noteError}</Box>}\n        <Box id=\"notes-button-container\" sx={classes.notesButtonContainer}>\n          <Button sx={classes.notesCancelButton} endIcon={<CloseIcon />} onClick={closeNoteHandler}>\n            Cancel\n          </Button>\n          <Button\n            sx={classes.notesEditSaveButton}\n            endIcon={savingNote ? <CircularProgress size={16} /> : <DoneIcon />}\n            onClick={() => {\n              setNoteError('');\n              saveNote();\n            }}\n            disabled={!editedNote || !!savingNote}\n          >\n            Save\n          </Button>\n        </Box>\n      </Stack>\n    </Popover>\n  );\n};\n\nexport default NotesPopover;\n","import React from \"react\";\nimport Box from '@mui/material/Box';\nimport Skeleton from '@mui/material/Skeleton';\n\nexport default function TableSkeleton() {\n\n  const boxStyle = {width: '100%', padding: '20px 0px', borderTop: '1px solid #eaeaea'};\n\n  return (\n    <Box\n      sx={{\n        display: 'flex',\n        flexDirection: 'column',\n        alignItems: 'center',\n        width: '100%',\n      }}\n    >\n      <Box sx={boxStyle}>\n        <Skeleton animation=\"wave\" width=\"100%\" height=\"40px\" />\n      </Box>\n      <Box sx={boxStyle}>\n        <Skeleton animation=\"wave\" width=\"100%\" height=\"40px\" />\n      </Box>\n      <Box sx={boxStyle}>\n        <Skeleton animation=\"wave\" width=\"100%\" height=\"40px\" />\n      </Box>\n      <Box sx={boxStyle}>\n        <Skeleton animation=\"wave\" width=\"100%\" height=\"40px\" />\n      </Box>\n      <Box sx={boxStyle}>\n        <Skeleton animation=\"wave\" width=\"100%\" height=\"40px\" />\n      </Box>\n      <Box sx={boxStyle}>\n        <Skeleton animation=\"wave\" width=\"100%\" height=\"40px\" />\n      </Box>\n    </Box>\n  )\n}","import React, { useEffect, useState, useCallback } from 'react';\nimport moment from 'moment';\nimport Box from '@mui/material/Box';\nimport Table from '@mui/material/Table';\nimport TableBody from '@mui/material/TableBody';\nimport TableCell from '@mui/material/TableCell';\nimport TableContainer from '@mui/material/TableContainer';\nimport TableHead from '@mui/material/TableHead';\nimport TableRow from '@mui/material/TableRow';\nimport Paper from '@mui/material/Paper';\nimport Skeleton from '@mui/material/Skeleton';\nimport DocTypeIcon from '../../../Components/Utilities/DocTypeIcon';\nimport { IJobAttachment } from '../../../Job/types';\nimport { classes } from './styles';\nimport Api from '../../../Job/API';\n\nexport default function Attachments({\n  apiKey,\n  jobId,\n}: {\n  apiKey: string;\n  jobId: number;\n}) {\n  const [attachments, setAttachments] = useState([]);\n  const [isLoading, setIsLoading] = useState(false);\n\n  const fetchInitialAttachments = useCallback(async () => {\n    setIsLoading(true);\n    try {\n      const response = await Api.getJobAttachments({ 'X-api-authenticate': apiKey }, jobId, {\n        page: 1,\n        limit: 50\n      });\n      setAttachments(response.data.job_attachments);\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsLoading(false);\n    }\n  }, [apiKey, jobId]);\n\n  useEffect(() => {\n    fetchInitialAttachments();\n  }, [fetchInitialAttachments]);\n\n  return (\n    <Box>\n      <TableContainer sx={{ boxShadow: 'none' }} component={Paper}>\n        <Table sx={classes.tableWrapper} aria-label=\"job attachments\">\n          <TableHead>\n            {!isLoading && attachments?.length > 0 &&\n              <TableRow>\n                <TableCell>File</TableCell>\n                <TableCell sx={{paddingLeft: '8px'}}>Public link</TableCell>\n                <TableCell>Attached by</TableCell>\n              </TableRow>\n            } \n          </TableHead>\n          <TableBody>\n            {attachments &&\n              !isLoading &&\n              attachments.map((attachment: IJobAttachment) => (\n                <TableRow key={attachment.id}>\n                  <TableCell>\n                    <Box sx={classes.fileIconContainer}>\n                      <Box sx={{paddingRight: '20px'}}>\n                        <Box sx={classes.fileIcon}>\n                          {DocTypeIcon(attachment.attached_file_name.split('.').pop())}\n                        </Box>\n                      </Box>\n                      <Box>\n                        <Box sx={classes.fileDate}>\n                          {moment(attachment.created_at).format('Do MMMM YYYY[,] h:mma')}\n                        </Box>\n                        <Box sx={classes.fileName}>{attachment.attached_file_name}</Box>\n                      </Box>\n                    </Box>\n                  </TableCell>\n                  <TableCell>\n                    <Box sx={classes.fileLinkContainer}>\n                      <a href={attachment.public_link} target=\"_blank\" rel=\"noopener noreferrer\">\n                        <Box>{attachment.public_link}</Box>\n                      </a>\n                    </Box>\n                  </TableCell>\n                  <TableCell sx={classes.fileAttachedBy}>{attachment.attached_by}</TableCell>\n                </TableRow>\n              ))}\n          </TableBody>\n        </Table>\n        {!isLoading && attachments?.length === 0 && (\n          <Box sx={classes.noAttachments}>No attachments added</Box>\n        )}\n        {isLoading && (\n          <>\n            <Skeleton animation=\"wave\" height={60} />\n            <Skeleton animation=\"wave\" height={60} />\n            <Skeleton animation=\"wave\" height={60} />\n            <Skeleton animation=\"wave\" height={60} />\n          </>\n        )}\n      </TableContainer>\n    </Box>\n  );\n}\n","import React, { Dispatch, SetStateAction, useCallback, useEffect, useRef, useState } from 'react';\nimport {\n  Autocomplete,\n  Box,\n  Button,\n  CircularProgress,\n  InputLabel,\n  Modal,\n  TextField\n} from '@mui/material';\nimport queryString from 'query-string';\nimport Api from '../API';\nimport { Virtualize } from '../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport { DebouncedFormTextField } from '../../Components/CustomUIElements/FormTextField';\nimport FormRadioButtonGroup from '../../Components/CustomUIElements/FormRadioButtonGroup';\nimport FormCheckboxGroup from '../../Components/CustomUIElements/FormCheckboxGroup';\nimport { SingleDateTimePicker } from '../../Components/CustomUIElements/SingleDatePicker';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { IJob } from '../../Job/types';\nimport Attachments from './Attachment/Attachments';\nimport QuestionFieldViewer from '../../Components/Utilities/QuestionFieldViewer';\nimport { createJobDefault, emojiRegex, newJobsConfig, resourceDefault } from '../config';\nimport { classes } from './styles';\nimport EditIcon from '@mui/icons-material/Edit';\nimport DoneIcon from '@mui/icons-material/Done';\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport ConfirmationDialog from '../../Components/Modals/ConfirmationDialog';\nimport AIStudioNewJob, {\n  IGeneratedContent\n} from '../../../AIStudio/NewJobIntegration/AIStudioNewJob';\nimport moment from 'moment';\nimport { QuestionsPreview } from '../../../AIStudio/NewJobIntegration/QuestionsPreview';\nimport DisplayHTMLCollapsible from '../../../AIStudio/SharedComponents/DisplayHTMLCollapsible';\nimport { IFilters, INewJobDefaults, INewJobParam } from '../types';\nimport { StyledSnackbarProps } from '../../Components/CustomUIElements/StyledSnackbar';\n\nexport default function NewJob({\n  apiKey,\n  jobDefaults,\n  setFilters,\n  filters,\n  isDialogOpen,\n  setIsDialogOpen,\n  fromApproval,\n  approvalFormId,\n  aiStudioEnabled,\n  showEntitySection,\n  setSnackbar,\n  userPermissions,\n  userTimezone\n}: {\n  apiKey: string;\n  jobDefaults?: Partial<Record<keyof INewJobDefaults, INewJobParam['value']>>;\n  setFilters?: (filter: IFilters) => void;\n  filters?: IFilters;\n  isDialogOpen: boolean;\n  setIsDialogOpen: Dispatch<SetStateAction<boolean>>;\n  fromApproval?: boolean;\n  approvalFormId?: number;\n  aiStudioEnabled: boolean;\n  showEntitySection: boolean;\n  setSnackbar: StyledSnackbarProps['setSnackbarState'];\n  userPermissions: Record<string, Record<string, boolean>>;\n  userTimezone: string;\n}) {\n  const [isLoading, setIsLoading] = useState(false);\n  const [confirmCancelIsOpen, setConfirmCancelIsOpen] = useState(false);\n  const [confirmCreatedJobOpen, setConfirmCreatedJobOpen] = useState(false);\n  const [confirmFailJobOpen, setConfirmFailJobOpen] = useState(false);\n  const [currentStep, setCurrentStep] = useState(1);\n  const [createType, setCreateType] = useState('Create new');\n  const [resourses, setResourses] = useState(resourceDefault);\n  const [jobOptions, setJobOptions] = useState([]);\n  const [jobDefaultOptions, setJobDefaultOptions] = useState([]);\n  const [prefixReference, setPrefixReference] = useState(null);\n  const [clonedJob, setClonedJob] = useState<IJob | null>(null);\n  const [copiedJob, setCopiedJob] = useState<IJob | null>(null);\n  const [error, setError] = useState(false);\n  const [newJobData, setNewJobsData] = useState(createJobDefault);\n  const [editJobUrl, setEditJobUrl] = useState<string | null>(null);\n  const [generatedContent, setGeneratedContent] = useState<IGeneratedContent>({\n    talentLandingPage: '',\n    screeningQuestions: []\n  });\n  const [tlpPreviewCollapsed, setTlpPreviewCollapsed] = useState(true);\n  const [entities, setEntities] = useState<{ id: number; name: string }[]>([]);\n  const [selectedEntity, setSelectedEntity] = useState<{ id: number; name: string } | null>(null);\n  const [loadingEntities, setLoadingEntities] = useState<boolean>(false);\n\n  useEffect(() => {\n    if (!jobDefaults) return;\n    setNewJobsData((prev) => ({\n      ...prev,\n      ...Object.entries(jobDefaults).reduce((acc, [key, value]) => {\n        acc[key] = {\n          ...prev[key],\n          value\n        };\n        return acc;\n      }, {})\n    }));\n  }, [jobDefaults]);\n\n  const fieldRefs = {\n    reference: useRef<HTMLInputElement>(null),\n    title: useRef<HTMLInputElement>(null),\n    location: useRef<HTMLInputElement>(null),\n    expires_at: useRef<HTMLInputElement>(null),\n    cloneJob: useRef<HTMLInputElement>(null)\n  };\n\n  const getEntities = async () => {\n    setLoadingEntities(true);\n    try {\n      const { res } = await Api.getEntities();\n      setEntities(res.entities);\n      setSelectedEntity(res.current_entity);\n    } catch (error) {\n      setSnackbar({\n        message: `There was an error fetching entities, ${error}`,\n        state: 'error'\n      });\n    } finally {\n      setLoadingEntities(false);\n    }\n  };\n\n  const checkReference = async (isValid: boolean) => {\n    setIsLoading(true);\n    try {\n      const response = await Api.referenceValidation(\n        { 'job[reference]': newJobData.reference.value }\n      );\n      if (response.res.valid) {\n        isValid && setCurrentStep(currentStep + 1);\n      } else {\n        if (response.res.correct_format === false) {\n          newJobData?.reference?.value &&\n            setNewJobsData((prev) => ({\n              ...prev,\n              reference: {\n                ...prev.reference,\n                error: 'Incorrect reference format, prefix letters before digits'\n              }\n            }));\n        } else {\n          newJobData?.reference?.value &&\n            setNewJobsData((prev) => ({\n              ...prev,\n              reference: { ...prev.reference, error: 'Reference already in use' }\n            }));\n        }\n        fieldRefs['reference']?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n      }\n    } catch (error) {\n      console.log(error);\n    } finally {\n      setIsLoading(false);\n    }\n  };\n\n  const cloneJob = async () => {\n    setIsLoading(true);\n    try {\n      const data = await Api.importResources(\n        copiedJob?.id,\n        {\n          job: {\n            reference: newJobData.reference.value,\n            title: newJobData.title.value,\n            expires_at: newJobData.expires_at.value,\n            location: newJobData.location.value,\n            requisition_ids: fromApproval ? [approvalFormId] : undefined\n          }\n        },\n        `?${queryString.stringify(\n          { ...resourses, 'resources[modal]': true },\n          { arrayFormat: 'bracket', encode: false }\n        )}`\n      );\n      setConfirmCreatedJobOpen(true);\n      setEditJobUrl(`${window.location.origin}${data?.res?.job_link}/edit`);\n    } catch (error) {\n      setConfirmFailJobOpen(true);\n      console.log(error);\n    } finally {\n      setIsLoading(false);\n    }\n  };\n\n  const createJob = async () => {\n    setIsLoading(true);\n    const questions =\n      generatedContent.screeningQuestions.length > 0\n        ? generatedContent.screeningQuestions.map((question) => ({\n            ...question,\n            field_type: 'text_area_field'\n          }))\n        : null;\n    try {\n      const data = await Api.createJob(\n        {\n          job: {\n            ...jobDefaults,\n            reference: newJobData.reference.value,\n            title: newJobData.title.value,\n            expires_at: newJobData.expires_at.value,\n            location: newJobData.location.value,\n            ...(generatedContent.talentLandingPage && {\n              description: generatedContent.talentLandingPage\n            }),\n            entity_id: selectedEntity ? selectedEntity.id : undefined,\n            requisition_ids: fromApproval ? [approvalFormId] : undefined\n          },\n          fields: questions\n        }\n      );\n      setConfirmCreatedJobOpen(true);\n      setEditJobUrl(`${window.location.origin}${data?.res?.job_link}/edit`);\n    } catch (error) {\n      setConfirmFailJobOpen(true);\n      console.log(error);\n    } finally {\n      setIsLoading(false);\n    }\n  };\n\n  const getJobs = useCallback(async () => {\n    setIsLoading(true);\n    try {\n      const [clonedOptions, prefix] = await Promise.all([\n        Api.cloneJobsOptions({}),\n        Api.referencePrefix({})\n      ]);\n      setJobDefaultOptions(clonedOptions?.res?.jobs);\n      setPrefixReference(prefix?.res);\n      setNewJobsData((prev) => ({\n        ...prev,\n        reference: {\n          ...prev.reference,\n          value: prefix?.res?.auto_job_reference_prefix || ''\n        }\n      }));\n      setJobOptions(clonedOptions?.res?.jobs.map((a) => `${a.reference} - ${a.title}`));\n    } catch (err) {\n      console.log(err);\n    } finally {\n      setIsLoading(false);\n    }\n  }, []);\n\n  async function getJob(jobId: string) {\n    setIsLoading(true);\n    try {\n      const data = await Api.getJob(jobId);\n      setCopiedJob(data?.res);\n    } catch (err) {\n      console.log(err);\n    } finally {\n      setIsLoading(false);\n    }\n  }\n\n  const handleValidateFields = () => {\n    let isValid = true;\n    let firstError: keyof typeof fieldRefs | undefined = undefined;\n\n    // Validate applicant detial fields\n    Object.entries(newJobData).forEach((field) => {\n      let tempErrorMessage = '';\n      if (field[1].required && !field[1].value) {\n        if (!firstError) {\n          firstError = field[0] as keyof typeof fieldRefs;\n        }\n        isValid = false;\n        tempErrorMessage = 'This field is required';\n      }\n      if (field[0] === 'title' || field[0] === 'location') {\n        if (field[1].value.match(emojiRegex)) {\n          isValid = false;\n          tempErrorMessage = \"This field can't have emojis\";\n        }\n      }\n      if (field[0] === 'expires_at') {\n        if (!moment(newJobData.expires_at.value).isValid()) {\n          isValid = false;\n          tempErrorMessage = 'This field must be a valid date';\n        } else {\n          if (!moment(newJobData.expires_at.value).isAfter(moment())) {\n            isValid = false;\n            tempErrorMessage = 'Date and Time must be today or in the future';\n          }\n        }\n      }\n      setNewJobsData((prev) => ({\n        ...prev,\n        [field[0]]: { ...prev[field[0] as keyof typeof prev], error: tempErrorMessage }\n      }));\n    });\n\n    // Scroll to first invalid field\n    if (firstError) {\n      fieldRefs[firstError]?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n    }\n\n    checkReference(isValid);\n    return isValid;\n  };\n\n  const clearData = () => {\n    setNewJobsData(createJobDefault);\n    setIsDialogOpen(false);\n    setError(false);\n    setCurrentStep(1);\n    setCreateType('Create new');\n    setResourses(resourceDefault);\n    setClonedJob(null);\n    setNewJobsData((prev) => ({\n      ...prev,\n      location: { ...prev.location, value: '' },\n      reference: { ...prev.reference, value: '' },\n      title: { ...prev.title, value: '' },\n      expires_at: { ...prev.expires_at, value: '' }\n    }));\n    setGeneratedContent({\n      talentLandingPage: '',\n      screeningQuestions: []\n    });\n    setSelectedEntity(entities[0]);\n  };\n\n  useEffect(() => {\n    getJobs();\n    getEntities();\n  }, [getJobs]);\n\n  return (\n    <Modal\n      open={isDialogOpen}\n      onClose={() => setConfirmCancelIsOpen(true)}\n      aria-labelledby=\"new-job-modal\"\n    >\n      <Box sx={classes.actionsModal}>\n        {currentStep !== 3 ? (\n          <Box sx={{ width: '25%', padding: '60px 0', borderRight: '#DDDDDD 1px solid' }}>\n            <Box id=\"new-job-modal-title\" sx={classes.modalHeader}>\n              {fromApproval ? 'Create new job from approval' : 'Create new job'}\n            </Box>\n            <Box sx={{ display: 'flex', flexDirection: 'column', marginTop: '10px' }}>\n              <Box sx={{ display: 'flex', padding: '30px 0' }}>\n                <Box>\n                  <Box sx={classes.verticleLineWhite} />\n                  <Box sx={{ display: 'flex' }}>\n                    <Box sx={classes.stepNumberGreen}>1</Box>\n                    <Box sx={{ paddingLeft: '0.5rem' }}>\n                      <Box sx={{ fontWeight: '700', color: '#666666' }}>\n                        New Job{' '}\n                        {currentStep > 1 ? (\n                          <DoneIcon sx={{ fontSize: '18px', color: '#76D18F' }} />\n                        ) : (\n                          <span />\n                        )}\n                      </Box>\n                      {currentStep !== 1 && currentStep > 1 ? (\n                        <Box\n                          sx={classes.editStep}\n                          onClick={() => {\n                            setCurrentStep(1);\n                            setError(false);\n                          }}\n                        >\n                          Edit <EditIcon sx={{ fontSize: '12px', marginBottom: '3px' }} />\n                        </Box>\n                      ) : (\n                        <span />\n                      )}\n                    </Box>\n                  </Box>\n                  <Box sx={classes.verticleLine} />\n                </Box>\n              </Box>\n              <Box sx={{ display: 'flex', padding: '30px 0' }}>\n                <Box>\n                  <Box sx={classes.verticleLine} />\n                  <Box sx={{ display: 'flex', opacity: currentStep > 1 ? 1 : 0.4 }}>\n                    <Box sx={currentStep > 1 ? classes.stepNumberGreen : classes.stepNumberGrey}>\n                      2\n                    </Box>\n                    <Box sx={{ paddingLeft: '0.5rem' }}>\n                      <Box\n                        sx={{ fontWeight: currentStep > 1 ? '700' : 'inherit', color: '#666666' }}\n                      >\n                        Job Details{' '}\n                        {currentStep > 2 ? (\n                          <DoneIcon sx={{ fontSize: '18px', color: '#76D18F' }} />\n                        ) : (\n                          <span />\n                        )}\n                      </Box>\n                      {currentStep !== 2 && currentStep > 1 ? (\n                        <Box sx={classes.editStep} onClick={() => setCurrentStep(2)}>\n                          Edit <EditIcon sx={{ fontSize: '12px', marginBottom: '3px' }} />\n                        </Box>\n                      ) : (\n                        <span />\n                      )}\n                    </Box>\n                  </Box>\n                  <Box sx={classes.verticleLine} />\n                </Box>\n              </Box>\n              <Box sx={{ display: 'flex', padding: '30px 0' }}>\n                <Box>\n                  <Box sx={classes.verticleLine} />\n                  <Box sx={{ display: 'flex', opacity: currentStep > 2 ? 1 : 0.4 }}>\n                    <Box sx={currentStep > 2 ? classes.stepNumberGreen : classes.stepNumberGrey}>\n                      3\n                    </Box>\n                    <Box\n                      sx={{\n                        paddingLeft: '0.5rem',\n                        fontWeight: currentStep > 2 ? '700' : 'inherit',\n                        color: '#666666'\n                      }}\n                    >\n                      Review\n                    </Box>\n                  </Box>\n                  <Box sx={classes.verticleLineWhite} />\n                </Box>\n              </Box>\n            </Box>\n          </Box>\n        ) : (\n          <span />\n        )}\n        <Box\n          sx={{\n            width: currentStep !== 3 ? '75%' : '100%',\n            paddingLeft: currentStep !== 3 ? '3.5rem' : '0',\n            paddingTop: '60px',\n            paddingBottom: '60px'\n          }}\n        >\n          <CloseIcon onClick={() => setConfirmCancelIsOpen(true)} sx={classes.closeIcon} />\n          {currentStep === 1 && (\n            <Box\n              sx={classes.modalContent}\n              id=\"new-job-modal-content\"\n              aria-label=\"New job modal content\"\n            >\n              <Box id=\"new-job-modal-title\" sx={classes.modalHeaderContent}>\n                Would you like to clone from an existing job or create a new one?\n              </Box>\n              <Box role=\"form\" id=\"new-job-form\" aria-label=\"New job form\">\n                <Box sx={classes.fullWidthFieldContainer}>\n                  <Box sx={classes.cloneJobInput}>\n                    <FormRadioButtonGroup\n                      options={[\n                        { label: 'Clone existing job', value: 'Clone existing job' },\n                        { label: 'Create new', value: 'Create new' }\n                      ]}\n                      onChange={(value: string) => setCreateType(value)}\n                      directionRow={true}\n                      color={'#838383'}\n                      defaultValue={createType}\n                      groupLabel={''}\n                    />\n                  </Box>\n                  {createType === 'Clone existing job' ? (\n                    <Box>\n                      <Box sx={{ margin: '2rem 0', position: 'relative' }}>\n                        <Virtualize\n                          value={clonedJob}\n                          passOptions={jobOptions}\n                          setValue={async (event: string, value: string) => {\n                            const index = Number(event);\n                            if (typeof index === 'number') {\n                              const reference = value.split(' -')[0];\n                              const i = jobDefaultOptions.findIndex(\n                                (option) => option?.reference === reference\n                              );\n                              setClonedJob(value);\n                              getJob(jobDefaultOptions[i >= 0 ? i : index]?.id);\n                            }\n                          }}\n                          hasIdAndRef={true}\n                          passedStyles={{ width: '99.5%', ...classes.formAutocomplete }}\n                          errorStyles={{ ...sharedClasses.errorBox, top: '-24px', right: '0px' }}\n                          label=\"Choose job\"\n                        />\n                        {error && <Box sx={classes.errorBox}>This field is required</Box>}\n                      </Box>\n                      <Box sx={classes.fullWidthFieldContainer}>\n                        <FormCheckboxGroup\n                          options={newJobsConfig.resource_field_choices}\n                          directionRow={true}\n                          defaultValues={resourses}\n                          onChange={(value: string) => setResourses(value)}\n                          groupLabel={'Choose resources to import'}\n                          color={'#838383'}\n                        />\n                      </Box>\n                    </Box>\n                  ) : (\n                    <Box />\n                  )}\n                </Box>\n              </Box>\n            </Box>\n          )}\n          {currentStep === 2 && (\n            <Box\n              sx={classes.modalContent}\n              id=\"new-job-modal-content\"\n              aria-label=\"New job modal content\"\n            >\n              <Box id=\"new-job-modal-title\" sx={classes.modalHeaderContent}>\n                Tell us the details of your job\n              </Box>\n              <Box role=\"form\" id=\"new-job-form\" aria-label=\"New job form\">\n                <Box sx={classes.modalFormLine}>\n                  <DebouncedFormTextField\n                    onDebouncedChange={(value: string) =>\n                      setNewJobsData((prev) => ({\n                        ...prev,\n                        reference: { ...prev.reference, value }\n                      }))\n                    }\n                    id=\"reference\"\n                    dataTestId=\"reference\"\n                    label=\"Reference\"\n                    defaultValue={newJobData?.reference?.value}\n                    required={newJobData?.reference?.required}\n                    error={newJobData?.reference?.error}\n                    innerRef={fieldRefs.reference}\n                    styles={{ width: '250px' }}\n                  />\n                  <DebouncedFormTextField\n                    onDebouncedChange={(value: string) =>\n                      setNewJobsData((prev) => ({\n                        ...prev,\n                        title: { ...prev.title, value }\n                      }))\n                    }\n                    id=\"title\"\n                    dataTestId=\"title\"\n                    label=\"Title\"\n                    defaultValue={newJobData?.title?.value}\n                    required={newJobData?.title?.required}\n                    error={newJobData?.title?.error}\n                    innerRef={fieldRefs.title}\n                    styles={{ width: '250px' }}\n                  />\n                </Box>\n                <Box sx={classes.modalFormLine}>\n                  <DebouncedFormTextField\n                    onDebouncedChange={(value: string) =>\n                      setNewJobsData((prev) => ({\n                        ...prev,\n                        location: { ...prev.location, value }\n                      }))\n                    }\n                    id=\"location\"\n                    dataTestId=\"location\"\n                    label=\"City/Town\"\n                    error={newJobData?.location?.error}\n                    defaultValue={newJobData?.location?.value}\n                    required={newJobData?.location?.required}\n                    innerRef={fieldRefs.location}\n                    styles={{ width: '250px' }}\n                  />\n                  {showEntitySection && !clonedJob && (\n                    <Autocomplete\n                      disablePortal\n                      autoHighlight\n                      options={entities}\n                      loading={loadingEntities}\n                      getOptionLabel={(option) => option.name}\n                      noOptionsText=\"No entities\"\n                      value={entities.find((e) => e.id === selectedEntity?.id)}\n                      onChange={(_event, newValue) =>\n                        newValue ? setSelectedEntity(newValue) : setSelectedEntity(entities[0])\n                      }\n                      sx={{ ...sharedClasses.formAutocomplete, width: '250px', marginTop: '24px' }}\n                      ListboxProps={{ style: { fontFamily: 'Source Sans Pro' } }}\n                      renderInput={(params) => (\n                        <TextField\n                          {...params}\n                          sx={{ input: { height: '20px' } }}\n                          label=\"Entity\"\n                          InputLabelProps={{ shrink: true }}\n                          InputProps={{\n                            ...params.InputProps,\n                            endAdornment: (\n                              <React.Fragment>\n                                {loadingEntities ? (\n                                  <CircularProgress color=\"inherit\" size={20} />\n                                ) : null}\n                                {params.InputProps.endAdornment}\n                              </React.Fragment>\n                            )\n                          }}\n                        />\n                      )}\n                    />\n                  )}\n                </Box>\n                <Box\n                  sx={{ ...classes.modalFormLine, columnGap: '25px', position: 'relative' }}\n                  ref={fieldRefs.expires_at}\n                >\n                  <Box id=\"expiry-date\" data-testid=\"expiry-date\">\n                    <SingleDateTimePicker\n                      label={\n                        <InputLabel htmlFor=\"text-input\" sx={sharedClasses.inputLabel}>\n                          Expiry date and time<span>*</span>\n                        </InputLabel>\n                      }\n                      inputStyles={classes.datePicker}\n                      onChange={(value) => {\n                        setNewJobsData((prev: any) => ({\n                          ...prev,\n                          expires_at: {\n                            ...prev.expires_at,\n                            value: moment(value).toISOString(),\n                            error: ''\n                          }\n                        }));\n                      }}\n                      timezone={userTimezone ?? moment.tz.guess()}\n                      value={newJobData.expires_at.value}\n                      disablePast={true}\n                    />\n                  </Box>\n                  {newJobData.expires_at.error && (\n                    <Box sx={{ ...classes.errorBox, bottom: '-35px' }}>\n                      {newJobData.expires_at.error}\n                    </Box>\n                  )}\n                </Box>\n              </Box>\n              {aiStudioEnabled && createType !== 'Clone existing job' && (\n                <AIStudioNewJob\n                  generatedContent={generatedContent}\n                  setGeneratedContent={setGeneratedContent}\n                  prefillData={{\n                    title: newJobData?.title?.value,\n                    country: newJobData?.location?.value\n                  }}\n                />\n              )}\n            </Box>\n          )}\n          {currentStep === 3 && (\n            <Box\n              sx={classes.modalContentStep3}\n              id=\"new-job-modal-content\"\n              aria-label=\"New job modal content\"\n            >\n              <Box\n                id=\"new-job-modal-title\"\n                data-testid=\"new-job-modal-title-step-3\"\n                sx={classes.modalHeaderContent}\n              >\n                Final step! Is this correct?\n              </Box>\n              <Box role=\"form\" id=\"new-job-form\" aria-label=\"New job form\">\n                <Box sx={{ ...classes.modalFormLine, display: 'contents' }}>\n                  <Box sx={classes.reviewSubheaders}>Reference</Box>\n                  <Box sx={classes.reviewContent}>{newJobData.reference.value}</Box>\n                  <Box sx={classes.reviewSubheaders}>Job Title</Box>\n                  <Box sx={classes.reviewContent}>{newJobData.title.value}</Box>\n                  {showEntitySection && !clonedJob && (\n                    <>\n                      <Box sx={classes.reviewSubheaders}>Entity</Box>\n                      <Box sx={classes.reviewContent}>{selectedEntity?.name}</Box>\n                    </>\n                  )}\n                </Box>\n                <Box sx={classes.modalFormLine}>\n                  <Box sx={classes.reviewBoxes}>\n                    <Box>City/town</Box>\n                    <Box sx={{ fontWeight: '800' }}>{newJobData.location.value}</Box>\n                  </Box>\n                  <Box sx={classes.reviewBoxes}>\n                    <Box>Expiry</Box>\n                    <Box sx={{ fontWeight: '800' }}>\n                      {moment(newJobData.expires_at.value)\n                        .tz(userTimezone ?? moment.tz.guess())\n                        .format('D MMM YYYY, hh:mm a')}\n                    </Box>\n                  </Box>\n                </Box>\n                {aiStudioEnabled &&\n                  createType !== 'Clone existing job' &&\n                  generatedContent.talentLandingPage && (\n                    <Box sx={classes.previewContainer}>\n                      <h3>Talent landing page preview</h3>\n                      <DisplayHTMLCollapsible\n                        content={generatedContent.talentLandingPage}\n                        collapsed={tlpPreviewCollapsed}\n                        setCollapsed={setTlpPreviewCollapsed}\n                      />\n                    </Box>\n                  )}\n                {aiStudioEnabled &&\n                  createType !== 'Clone existing job' &&\n                  generatedContent.screeningQuestions.length > 0 && (\n                    <QuestionsPreview\n                      questions={generatedContent.screeningQuestions}\n                      previewOnly={true}\n                    />\n                  )}\n                <Box>\n                  {createType === 'Clone existing job' && copiedJob ? (\n                    <Box>\n                      {resourses['resources[description]'] ? (\n                        <Box sx={{ ...classes.modalFormLine, display: 'contents' }}>\n                          <Box sx={classes.reviewSubheaders}>Description</Box>\n                          {copiedJob?.description ? (\n                            <Box sx={classes.reviewContent}>\n                              <div dangerouslySetInnerHTML={{ __html: copiedJob?.description }} />\n                            </Box>\n                          ) : (\n                            <Box>No Description</Box>\n                          )}\n                        </Box>\n                      ) : (\n                        <Box />\n                      )}\n                      {resourses['resources[questions]'] ? (\n                        <Box\n                          sx={{\n                            ...classes.modalFormLine,\n                            display: 'contents',\n                            marginTop: '1.5rem'\n                          }}\n                        >\n                          <Box sx={{ ...classes.reviewSubheaders, marginBottom: '0.5rem' }}>\n                            Questions\n                          </Box>\n                          {copiedJob?.questions && copiedJob?.questions.length > 0 ? (\n                            <Box>\n                              {copiedJob?.questions &&\n                                copiedJob.questions.map((question) => (\n                                  <Box key={question.id}>\n                                    {question.type === 'AvailabilityField' ||\n                                    question.type === 'CsvDataLookupField' ||\n                                    question.type === 'JobReferenceLookupField' ? (\n                                      <span />\n                                    ) : (\n                                      <Box sx={classes.questionsWrapper}>\n                                        <Box sx={{ marginRight: 'auto', ...classes.questionInput }}>\n                                          <Box sx={classes.questionsTitle}>Title</Box>\n                                          <Box\n                                            sx={{\n                                              ...classes.modalFormLine,\n                                              position: 'relative'\n                                            }}\n                                          >\n                                            <QuestionFieldViewer question={question} />\n                                          </Box>\n                                        </Box>\n                                        <Box sx={{ padding: '0 6px' }}>\n                                          <Box sx={classes.questionsTitle}>Enabled</Box>\n                                          {question.enabled ? (\n                                            <CheckCircleIcon sx={classes.iconGreen} />\n                                          ) : (\n                                            <CancelIcon sx={classes.iconRed} />\n                                          )}\n                                        </Box>\n                                        <Box sx={{ padding: '0 6px' }}>\n                                          <Box sx={classes.questionsTitle}>Required</Box>\n                                          {question.required ? (\n                                            <CheckCircleIcon sx={classes.iconGreen} />\n                                          ) : (\n                                            <CancelIcon sx={classes.iconRed} />\n                                          )}\n                                        </Box>\n                                        <Box sx={{ padding: '0 6px' }}>\n                                          <Box sx={classes.questionsTitle}>Rateable</Box>\n                                          {question.rateable ? (\n                                            <CheckCircleIcon sx={classes.iconGreen} />\n                                          ) : (\n                                            <CancelIcon sx={classes.iconRed} />\n                                          )}\n                                        </Box>\n                                        <Box sx={{ padding: '0 6px' }}>\n                                          <Box sx={classes.questionsTitle}>Confidential</Box>\n                                          {question.confidential ? (\n                                            <CheckCircleIcon sx={classes.iconGreen} />\n                                          ) : (\n                                            <CancelIcon sx={classes.iconRed} />\n                                          )}\n                                        </Box>\n                                        <Box sx={{ paddingLeft: '6px' }}>\n                                          <Box sx={classes.questionsTitle}>Weight</Box>\n                                          <Box sx={classes.weightValue}>{question.weight}</Box>\n                                        </Box>\n                                      </Box>\n                                    )}\n                                  </Box>\n                                ))}\n                            </Box>\n                          ) : (\n                            <Box sx={{ paddingLeft: '4px' }}>No Questions</Box>\n                          )}\n                        </Box>\n                      ) : (\n                        <Box />\n                      )}\n                      {resourses['resources[attachments]'] ? (\n                        <Box\n                          sx={{\n                            ...classes.modalFormLine,\n                            display: 'contents',\n                            marginTop: '1.5rem'\n                          }}\n                        >\n                          <Box sx={classes.reviewSubheaders}>Attachments</Box>\n                          <Attachments\n                            apiKey={apiKey}\n                            jobId={copiedJob?.id}\n                            permissions={{\n                              delete: false\n                            }}\n                          />\n                        </Box>\n                      ) : (\n                        <Box />\n                      )}\n                      {resourses['resources[sources]'] ? (\n                        <Box\n                          sx={{\n                            ...classes.modalFormLine,\n                            display: 'contents',\n                            marginTop: '2rem'\n                          }}\n                        >\n                          <Box sx={classes.reviewSubheaders}>Sources</Box>\n                          <Box\n                            sx={{\n                              ...classes.reviewContent,\n                              display: 'flex',\n                              alignItems: 'center'\n                            }}\n                          >\n                            Imported <CheckCircleIcon sx={classes.iconGreenResources} />\n                          </Box>\n                        </Box>\n                      ) : (\n                        <Box />\n                      )}\n                      {resourses['resources[auto_actions]'] ? (\n                        <Box\n                          sx={{\n                            ...classes.modalFormLine,\n                            display: 'contents',\n                            marginTop: '2rem'\n                          }}\n                        >\n                          <Box sx={classes.reviewSubheaders}>Auto-Actions</Box>\n                          <Box\n                            sx={{\n                              ...classes.reviewContent,\n                              display: 'flex',\n                              alignItems: 'center'\n                            }}\n                          >\n                            Imported <CheckCircleIcon sx={classes.iconGreenResources} />\n                          </Box>\n                        </Box>\n                      ) : (\n                        <Box />\n                      )}\n                      {resourses['resources[options]'] ? (\n                        <Box\n                          sx={{\n                            ...classes.modalFormLine,\n                            display: 'contents',\n                            marginTop: '2rem'\n                          }}\n                        >\n                          <Box sx={classes.reviewSubheaders}>Options</Box>\n                          <Box\n                            sx={{\n                              ...classes.reviewContent,\n                              display: 'flex',\n                              alignItems: 'center'\n                            }}\n                          >\n                            Imported <CheckCircleIcon sx={classes.iconGreenResources} />\n                          </Box>\n                        </Box>\n                      ) : (\n                        <Box />\n                      )}\n                      {resourses['resources[visibility]'] ? (\n                        <Box\n                          sx={{\n                            ...classes.modalFormLine,\n                            display: 'contents',\n                            marginTop: '2rem'\n                          }}\n                        >\n                          <Box sx={classes.reviewSubheaders}>Visibility</Box>\n                          <Box\n                            sx={{\n                              ...classes.reviewContent,\n                              display: 'flex',\n                              alignItems: 'center'\n                            }}\n                          >\n                            Imported <CheckCircleIcon sx={classes.iconGreenResources} />\n                          </Box>\n                        </Box>\n                      ) : (\n                        <Box />\n                      )}\n                    </Box>\n                  ) : (\n                    <span />\n                  )}\n                </Box>\n              </Box>\n            </Box>\n          )}\n          <Box sx={classes.modalFooter}>\n            {currentStep === 3 ? (\n              <Button\n                id=\"edit-new-job-button\"\n                type=\"submit\"\n                sx={classes.modalEditButton}\n                onClick={() => setCurrentStep(currentStep - 1)}\n              >\n                Edit\n              </Button>\n            ) : (\n              <span />\n            )}\n            <Button\n              id={currentStep === 3 ? 'create-new-job-button' : 'next-new-job-button'}\n              data-testid={currentStep === 3 ? 'create-new-job-button' : 'next-new-job-button'}\n              type=\"submit\"\n              sx={classes.modalConfirmationButton}\n              onClick={() => {\n                if (isLoading) return;\n                if (currentStep === 1) {\n                  if (createType === 'Clone existing job') {\n                    if (!clonedJob) {\n                      setError(true);\n                      fieldRefs['cloneJob']?.current?.scrollIntoView({\n                        behavior: 'smooth',\n                        block: 'center'\n                      });\n                    } else {\n                      setNewJobsData((prev) => ({\n                        ...prev,\n                        location: { ...prev.location, value: copiedJob?.location },\n                        title: { ...prev.title, value: copiedJob?.title },\n                        expires_at: { ...prev.expires_at, value: '' }\n                      }));\n                      const jobEntity = entities.find((e) => e.id === copiedJob?.entity_id);\n                      jobEntity ? setSelectedEntity(jobEntity) : setSelectedEntity(entities[0]);\n                      setCurrentStep(currentStep + 1);\n                    }\n                  } else setCurrentStep(currentStep + 1);\n                }\n                currentStep === 2 && handleValidateFields();\n                currentStep === 3 && createType === 'Clone existing job' && cloneJob();\n                currentStep === 3 && createType === 'Create new' && createJob();\n              }}\n            >\n              {currentStep === 3 || currentStep === 1 ? (\n                isLoading ? (\n                  <CircularProgress size={20} color=\"inherit\" />\n                ) : (\n                  'Confirm'\n                )\n              ) : (\n                'Next'\n              )}\n            </Button>\n          </Box>\n          <GenericDialog\n            isDialogOpen={confirmCancelIsOpen}\n            setDialogOpen={setConfirmCancelIsOpen}\n            title=\"Close without submitting?\"\n            description=\"Are you sure you want to cancel your job? You will lose any progress you have made.\"\n            buttonCallback={() => {\n              setConfirmCancelIsOpen(false);\n              clearData();\n            }}\n            callbackLoading={false}\n            buttonText=\"Close without saving\"\n            url=\"\"\n          />\n        </Box>\n        <ConfirmationDialog\n          isDialogOpen={confirmCreatedJobOpen}\n          setDialogOpen={setConfirmCreatedJobOpen}\n          title=\"Complete\"\n          description=\"Your job has now been created.\"\n          moreContent=\"To add more information or edit click below.\"\n          buttonCallback={() => {\n            setConfirmCreatedJobOpen(false);\n            setFilters && setFilters({ ...filters });\n            clearData();\n          }}\n          callbackLoading={false}\n          buttonText=\"Continue editing\"\n          url={editJobUrl ? editJobUrl : ''}\n        />\n        <ConfirmationDialog\n          isDialogOpen={confirmFailJobOpen}\n          setDialogOpen={setConfirmFailJobOpen}\n          title=\"Failed\"\n          description=\"Your job failed to be created.\"\n          moreContent=\"\"\n          buttonCallback={() => {\n            setConfirmFailJobOpen(false);\n            clearData();\n          }}\n          callbackLoading={false}\n          buttonText=\"Confirm\"\n          url={''}\n        />\n      </Box>\n    </Modal>\n  );\n}\n","import React, { useState } from 'react';\nimport { styles } from './styles';\nimport Box from '@mui/material/Box';\nimport FormControl from '@mui/material/FormControl';\nimport OutlinedInput from '@mui/material/OutlinedInput';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport { ISearchProps } from './types';\nimport SearchIcon from '@mui/icons-material/Search';\n\nexport default function Search({ search, setSearch, setPage }: ISearchProps) {\n  const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    setSearch(event.target.value);\n    setPage(1);\n  };\n\n  return (\n    <Box sx={{ width: '100%' }}>\n      <FormControl fullWidth>\n        <OutlinedInput\n          id=\"job-search\"\n          data-testid=\"job-search-[Search]\"\n          sx={styles.searchInput}\n          placeholder={'Search by title or reference'}\n          value={search}\n          onChange={handleChange}\n          startAdornment={\n            <InputAdornment sx={{ padding: '0px 0px 0px 14px' }} position=\"start\">\n              <SearchIcon />\n            </InputAdornment>\n          }\n        />\n      </FormControl>\n    </Box>\n  );\n}\n","import React, { useRef } from 'react';\nimport { Box, Breadcrumbs, Link, Tooltip } from '@mui/material';\nimport NavigateNextIcon from '@mui/icons-material/NavigateNext';\nimport HomeRoundedIcon from '@mui/icons-material/HomeRounded';\nimport { classes } from '../styles';\nimport { styled } from '@mui/system';\nimport { theme } from '../../../../../components/ThemeContext/ThemeObject';\nimport { useIsOverflow } from '../../../hooks';\n\nconst MAX_CHARACTER = 8;\n\nconst StyledBreadcrumbs = styled(Breadcrumbs)`\n  .MuiBreadcrumbs-ol {\n    flex-wrap: nowrap;\n  }\n  .MuiBreadcrumbs-li {\n    display: flex;\n    align-items: center;\n  }\n`;\n\nconst BreadcrumbsContainer = ({ breadcrumbsData }: { breadcrumbsData: string }) => {\n  const containerRef = useRef<HTMLDivElement>(null);\n  const isHorizontalOverflow = useIsOverflow(containerRef);\n\n  const convertBreadcrumbsData = (breadcrumbsData: string) => {\n    if (breadcrumbsData?.length < 1) return [];\n    const nameRegex = /<a[^>]*>(.*?)<\\/a>/;\n    const hrefRegex = /<a[^>]*href=\"([^\"]*)\"[^>]*>/;\n    // if path is /admin then return only dashboard\n    if (window.location.pathname !== '/admin') {\n      const breadcrumbsArray = breadcrumbsData.split('</li>');\n      return breadcrumbsArray\n        .map((breadcrumb) => ({\n          name: breadcrumb.match(nameRegex)?.[1] || '',\n          url: breadcrumb.match(hrefRegex)?.[1] || ''\n        }))\n        .slice(0, -1);\n    } else {\n      return [\n        {\n          name: 'Dashboard',\n          url: '/admin'\n        }\n      ];\n    }\n  };\n\n  const newBreadCrumbData = convertBreadcrumbsData(breadcrumbsData).filter(\n    (item) => item.name !== 'Home'\n  );\n\n  return (\n    <Box sx={classes.breadcrumbContainer} ref={containerRef}>\n      <HomeRoundedIcon onClick={() => window.location.replace('/admin')} sx={classes.homeIcon} />\n      <StyledBreadcrumbs\n        separator={<NavigateNextIcon sx={classes.breadcrumbSeparator} />}\n        aria-label=\"breadcrumb\"\n        sx={classes.breadcrumbs}\n      >\n        <Link underline=\"hover\" color=\"inherit\" href=\"\"></Link>\n        {newBreadCrumbData.map((breadcrumb, idx) =>\n          idx !== 0 && isHorizontalOverflow && breadcrumb.name.length >= MAX_CHARACTER ? (\n            <Tooltip\n              key={breadcrumb.name}\n              placement=\"bottom-start\"\n              componentsProps={{\n                tooltip: {\n                  sx: {\n                    background: '#DEF3F2',\n                    color: theme.palette.primary.main,\n                    fontFamily: 'Source Sans Pro',\n                    fontSize: '14px'\n                  }\n                }\n              }}\n              title={breadcrumb.name}\n            >\n              <Link\n                noWrap\n                underline=\"hover\"\n                key={breadcrumb.name}\n                color=\"inherit\"\n                href={breadcrumb.url}\n              >\n                {breadcrumb.name.slice(0, MAX_CHARACTER) + '…'}\n              </Link>\n            </Tooltip>\n          ) : (\n            <Link\n              noWrap\n              underline=\"hover\"\n              key={breadcrumb.name}\n              color=\"inherit\"\n              href={breadcrumb.url}\n            >\n              {breadcrumb.name}\n            </Link>\n          )\n        )}\n      </StyledBreadcrumbs>\n    </Box>\n  );\n};\n\nexport default BreadcrumbsContainer;\n","import React, { useRef, useState } from 'react';\nimport { Box } from '@mui/material';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport { classes } from '../../styles';\nimport ProfileDropdownPopper from './ProfileDropdownPopper';\nimport { IUserInfo } from '../../Header';\n\nconst ProfileDropdown = ({\n  userInfo,\n  setChangingEntity,\n  widgetsbarExpanded\n}: {\n  userInfo: IUserInfo;\n  setChangingEntity: (changingEntity: boolean) => void;\n  widgetsbarExpanded: boolean;\n}) => {\n  const [menuOpen, setMenuOpen] = useState(false);\n  const avatarAnchorEl = useRef(null);\n\n  const handleAvatarClick = (e: React.MouseEvent<HTMLElement>) => {\n    e.stopPropagation();\n    setMenuOpen((prev) => !prev);\n  };\n\n  return (\n    <>\n      <Box\n        sx={{\n          ...classes.profileDropdownContainer,\n          marginRight: widgetsbarExpanded ? 'none' : 5\n        }}\n        onClick={handleAvatarClick}\n        ref={avatarAnchorEl}\n      >\n        <Box id=\"profile-circle\" sx={classes.profileAvatar}>{userInfo?.firstName[0] + userInfo?.lastName[0]}</Box>\n        <ExpandMoreIcon sx={classes.profileDropdownIcon} />\n      </Box>\n      <ProfileDropdownPopper\n        menuOpen={menuOpen}\n        avatarAnchorEl={avatarAnchorEl.current}\n        setMenuOpen={setMenuOpen}\n        setChangingEntity={setChangingEntity}\n        userInfo={userInfo}\n      />\n    </>\n  );\n};\n\nexport default ProfileDropdown;\n","import React, { useState, useCallback, useEffect } from 'react';\nimport {\n  Box,\n  IconButton,\n  ClickAwayListener,\n  Divider,\n  Fade,\n  Popper,\n  CircularProgress,\n  Tooltip\n} from '@mui/material';\nimport FeaturedPlayListOutlinedIcon from '@mui/icons-material/FeaturedPlayListOutlined';\nimport LiveHelpOutlinedIcon from '@mui/icons-material/LiveHelpOutlined';\nimport SettingsOutlinedIcon from '@mui/icons-material/SettingsOutlined';\nimport LogoutOutlinedIcon from '@mui/icons-material/LogoutOutlined';\nimport VisibilityIcon from '@mui/icons-material/Visibility';\nimport VisibilityOffIcon from '@mui/icons-material/VisibilityOff';\nimport SwitchAccountIcon from '@mui/icons-material/SwitchAccount';\nimport { classes } from '../../styles';\nimport { IUserInfo } from '../../Header';\nimport { handleAPIRequest } from '../../../../Components/Utilities/handleAPIRequest';\nimport { getPermissions } from '../../../../../shared/permissionHelpers';\nimport { formatUserPermissions } from '../../../../Components/Utilities/formatUserPermissions';\nimport Alert from '@mui/material/Alert';\nimport { clearAllPreferenceCache } from '../../../../helpers/uiPreferencesHelpers';\n\nconst ProfileDropdownPopper = ({\n  menuOpen,\n  setMenuOpen,\n  setChangingEntity,\n  avatarAnchorEl,\n  userInfo\n}: {\n  menuOpen: boolean;\n  setMenuOpen: (menuOpen: boolean) => void;\n  setChangingEntity: (changingEntity: boolean) => void;\n  avatarAnchorEl: HTMLElement | null;\n  userInfo: IUserInfo;\n}) => {\n  const [loadingLogout, setLoadingLogout] = useState(false);\n  const [masqueradeIconHovered, setMasqueradeIconHovered] = useState(false);\n  const [userPermissions, setUserPermissions] = useState<Record<string, Record<string, boolean>>>(\n    {}\n    );\n\n  const [alertState, setAlertState] = useState({\n    message: '',\n    state: 'success' as 'success' | 'error' | 'warning'\n  });\n  \n  const sourcePermission = userPermissions['Accounts - User']?.['Edit Source'] ? true : false;\n\n  const profileMenuItems = [\n    sourcePermission && {\n      label: 'Sources',\n      icon: <FeaturedPlayListOutlinedIcon />,\n      path: userInfo.links.sourceURL\n    },\n    {\n      label: 'Support Centre',\n      icon: <LiveHelpOutlinedIcon />,\n      path: 'https://scouttalent.my.site.com/myresourcecentre/s/'\n    },\n    {\n      label: 'Settings',\n      icon: <SettingsOutlinedIcon />,\n      path: '/admin/settings'\n    },\n    {\n      label: 'Log out',\n      icon: !loadingLogout ? <LogoutOutlinedIcon /> : <CircularProgress size={24} />,\n      path: '#'\n    }\n  ];\n\n  const getUserPermissions = useCallback(async () => {\n    try {\n      const data = await getPermissions();\n      setUserPermissions(formatUserPermissions(data));\n    } catch (error) {\n      console.log(error);\n      setAlertState({\n        message: 'There was an error retrieving user permissions',\n        state: 'error'\n      });\n    }\n  }, [setUserPermissions]);\n\n  useEffect(() => {\n    getUserPermissions();\n  }, [getUserPermissions]);\n\n  const logOut = () => {\n    handleAPIRequest({\n      url: '/api/v4/logout',\n      method: 'DELETE',\n      setLoaderState: setLoadingLogout,\n      onSuccess: (data) => {\n        window.location.href = data?.redirect_url;\n        localStorage.removeItem('userPermissions');\n        localStorage.removeItem('userPermissionsExpiry');\n        clearAllPreferenceCache();\n      }\n    });\n  };\n\n  const unmasquerade = () => {\n    window.location.href = userInfo?.links.unmasqueradeURL;\n    localStorage.removeItem('userPermissions');\n    localStorage.removeItem('userPermissionsExpiry');\n    clearAllPreferenceCache();\n  };\n\n  const openChangingEntity = () => {\n    setChangingEntity(true);\n    setMenuOpen(false);\n  };\n\n  const showAvatar = userInfo?.links.unmasqueradeURL ? (\n    <Tooltip title=\"Unmasquerade\" placement=\"top\">\n      <Box\n        sx={{\n          ...classes.profileAvatar,\n          ...classes.avatarSmall,\n          ...classes.masqueradeAvatar\n        }}\n        onClick={unmasquerade}\n        onMouseEnter={() => setMasqueradeIconHovered(true)}\n        onMouseLeave={() => setMasqueradeIconHovered(false)}\n      >\n        {masqueradeIconHovered ? <VisibilityOffIcon /> : <VisibilityIcon />}\n      </Box>\n    </Tooltip>\n  ) : (\n    <Box sx={{ ...classes.profileAvatar, ...classes.avatarSmall }}>\n      {userInfo?.firstName[0] + userInfo?.lastName[0]}\n    </Box>\n  );\n\n  return (\n    <ClickAwayListener onClickAway={() => setMenuOpen(false)}>\n      <Popper\n        open={menuOpen}\n        anchorEl={avatarAnchorEl}\n        placement=\"bottom-end\"\n        transition\n        sx={{ zIndex: 1400 }}\n      >\n        {({ TransitionProps }) => (\n          <Fade {...TransitionProps} timeout={350}>\n            <Box sx={classes.profileDropdownMenuContainer}>\n              <Box sx={classes.profileInformation}>\n                {showAvatar}\n                <Box sx={classes.profileNameAndEntityContainer}>\n                  <Box\n                    sx={classes.profileName}\n                  >{`${userInfo?.firstName} ${userInfo?.lastName}`}</Box>\n                  {userInfo?.entity && (\n                    <a href={userInfo?.entity.url}>\n                      <Box>{userInfo?.entity.name}</Box>\n                    </a>\n                  )}\n                  <Box sx={classes.roleInformationWrapper}>\n                    {userInfo.roleNames && (\n                      <Tooltip title={userInfo.roleNames} placement='bottom'>\n                        <Box sx={classes.roleInformation}>{userInfo.roleNames}</Box>\n                      </Tooltip>\n                    )}\n                    {userInfo?.entity?.multiEntitiesAccess && (\n                      <Tooltip title='Switch entity' placement='bottom'>\n                        <IconButton onClick={openChangingEntity}>\n                          <SwitchAccountIcon />\n                        </IconButton>\n                      </Tooltip>\n                    )}\n                  </Box>\n                </Box>\n              </Box>\n              <Divider variant=\"fullWidth\" />\n              <Box sx={classes.profileDropdownMenuItemsContainer}>\n              {alertState?.state === 'error' && (\n                <Alert severity={alertState.state}>{alertState.message}</Alert>\n              )}\n                {profileMenuItems.filter(item => item).map((item, index) => (\n                  <a href={item.path} key={index} onClick={item.path === '#' ? logOut : undefined}>\n                    <Box sx={classes.profileDropdownMenuItem}>\n                      {item.icon}\n                      {item.label}\n                    </Box>\n                  </a>\n                ))}\n              </Box>\n            </Box>\n          </Fade>\n        )}\n      </Popper>\n    </ClickAwayListener>\n  );\n};\n\nexport default ProfileDropdownPopper;\n","import React, { useState } from 'react';\nimport { Box, OutlinedInput, Dialog, Stack } from '@mui/material';\nimport { Search as SearchIcon, Close as CloseIcon } from '@mui/icons-material';\nimport { classes } from '../styles';\n\nconst Search = () => {\n  const [searchQuery, setSearchQuery] = useState<string>('');\n  const [openSearch, setOpenSearch] = useState<boolean>(false);\n\n  const handleSearch = () => {\n    window.location.href = `/admin/search?utf8=✓&s=${searchQuery}`;\n  };\n\n  return (\n    <Box>\n      <SearchIcon sx={classes.searchIcon} onClick={() => setOpenSearch(true)} />\n      <Dialog\n        open={openSearch}\n        sx={classes.searchDialog}\n        onClose={() => {\n          setOpenSearch(false);\n          setSearchQuery('');\n        }}\n      >\n        <OutlinedInput\n          autoFocus\n          id=\"recruit-search\"\n          sx={classes.searchInput}\n          placeholder={'Search...'}\n          value={searchQuery}\n          onChange={(e) => setSearchQuery(e.target.value)}\n          onKeyDown={(e) => {\n            if (e.key === 'Enter') {\n              handleSearch();\n            }\n          }}\n          endAdornment={\n            <Stack sx={{ flexDirection: 'row', columnGap: 1, alignItems: 'center' }}>\n              {searchQuery && (\n                <CloseIcon onClick={() => setSearchQuery('')} sx={classes.clearSearch} />\n              )}\n              <SearchIcon sx={{ ...classes.searchIcon, fontSize: '32px' }} onClick={handleSearch} />\n            </Stack>\n          }\n        />\n      </Dialog>\n    </Box>\n  );\n};\n\nexport default Search;\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { Box } from '@mui/material';\nimport { Menu as MenuIcon, Close as CloseIcon } from '@mui/icons-material';\nimport { classes } from '../styles';\nimport { widgetsbarWidths } from '../../Widgetsbar/config';\n\nconst ShowRightMenu = ({\n  widgetsbarState,\n  setWidgetsbarState\n}: {\n  widgetsbarState: keyof typeof widgetsbarWidths;\n  setWidgetsbarState: Dispatch<SetStateAction<keyof typeof widgetsbarWidths>>;\n}) => {\n  const handleWidgetsbarStateChange = (state: typeof widgetsbarState) => {\n    localStorage.setItem('widgetsbarState', state);\n    setWidgetsbarState(state);\n  };\n  return (\n    !window.location.href.includes('search/advanced') && (\n      <Box\n        sx={\n          widgetsbarState === 'expanded' ? classes.showButtonContainer : classes.hideButtonContainer\n        }\n        onClick={() => {\n          handleWidgetsbarStateChange(widgetsbarState === 'expanded' ? 'collapsed' : 'expanded');\n          const event = new Event('onWidgetBarChange');\n          window.dispatchEvent(event);\n        }}\n      >\n        {widgetsbarState === 'expanded' ? (\n          <CloseIcon id=\"close-icon-sidebar\" sx={{ fontSize: '26px' }} />\n        ) : (\n          <MenuIcon id=\"sandwich-icon-sidebar\" sx={{ fontSize: '26px' }} />\n        )}\n      </Box>\n    )\n  );\n};\n\nexport default ShowRightMenu;\n","import React, { useState, useCallback, useEffect } from 'react';\nimport { Dialog, Button } from '@mui/material';\nimport { handleAPIRequest } from '../../../Components/Utilities/handleAPIRequest';\nimport Api from '../../../Dashboard/API';\nimport Select from '../../../../inputs/Select';\nimport { IUserInfo } from '../../Header';\nimport { classes } from '../styles';\n\nconst SwitchEntityDialog = ({\n  open,\n  setChangingEntity,\n  userInfo\n}: {\n  open: boolean;\n  setChangingEntity: (changingEntity: boolean) => void;\n  userInfo: IUserInfo;\n}) => {\n  const [userEntities, setUserEntities] = useState([]);\n  const [entityId, setEntityId] = useState(userInfo?.entity?.id);\n  const getUserEntities = useCallback(async () => {\n    try {\n      const { entities } = await Api.getUserEntities();\n      setUserEntities(entities);\n    } catch (error) {\n      setAlertState({\n        message: 'There was an error retrieving user Entities',\n        state: 'error'\n      });\n    }\n  }, [setUserEntities]);\n\n  const submitUserEntityChange = () => {\n    handleAPIRequest({\n      url: '/api/v4/switch_entity',\n      method: 'POST',\n      body: { entity_id: entityId },\n      onSuccess: () => {\n        window.location.reload();\n      }\n    });\n  };\n\n  useEffect(() => {\n    getUserEntities();\n  }, [getUserEntities]);\n\n  return (\n    <Dialog\n      open={open}\n      sx={classes.switchEntityDialog}\n      onClose={() => {\n        setChangingEntity(false);\n      }}\n    >\n      <Select\n        options={userEntities}\n        value={entityId}\n        onChange={(value) => setEntityId(value)}\n        valueField=\"id\"\n        labelField=\"name\"\n      />\n      <Button\n        onClick={submitUserEntityChange}\n        sx={classes.switchEntityButton}\n      >\n        Switch Entity\n      </Button>\n    </Dialog>\n  );\n};\n\nexport default SwitchEntityDialog;\n","import React, { useState, useEffect } from 'react';\nimport { Box } from '@mui/material';\nimport Search from './Components/Search';\nimport { classes } from './styles';\nimport ProfileDropdown from './Components/ProfileDropdown/ProfileDropdown';\nimport BreadcrumbsContainer from './Components/Breadcrumbs';\nimport SwitchEntityDialog from './Components/SwitchEntityDialog';\n\nexport interface IUserInfo {\n  firstName: string;\n  lastName: string;\n  roleNames: string;\n  entity: {\n    id: number;\n    name: string;\n    url: string;\n    multiEntitiesAccess: boolean;\n  };\n  links: {\n    unmasqueradeURL: string;\n    sourceURL: string;\n  };\n}\n\nconst Header = ({\n  userInfo,\n  isUAT,\n  breadcrumbsData\n}: {\n  userInfo: IUserInfo;\n  isUAT: boolean;\n  breadcrumbsData: string;\n}) => {\n  const [widgetsbarExpanded, setWidgetsbarExpanded] = useState<boolean>(\n    localStorage.getItem('widgetsbarState') === 'expanded'\n  );\n  const [changingEntity, setChangingEntity] = useState(false);\n\n  useEffect(() => {\n    const checkLocalStorage = () => {\n      if (localStorage.getItem('widgetsbarState') === 'expanded') {\n        setWidgetsbarExpanded(true);\n      } else {\n        setWidgetsbarExpanded(false);\n      }\n    };\n\n    window.addEventListener('onWidgetBarChange', checkLocalStorage);\n    return () => {\n      window.removeEventListener('onWidgetBarChange', checkLocalStorage);\n    };\n  }, []);\n\n  return (\n    <Box id=\"react-header\">\n      {isUAT && <Box sx={classes.uatBanner} />}\n      <Box sx={{ ...classes.headerContainer, paddingRight: widgetsbarExpanded ? '60px' : '76px' }}>\n        <BreadcrumbsContainer breadcrumbsData={breadcrumbsData} />\n        <Search />\n        {userInfo?.entity?.multiEntitiesAccess && (\n          <SwitchEntityDialog\n            open={changingEntity}\n            setChangingEntity={setChangingEntity}\n            userInfo={userInfo}\n          />\n        )}\n        <ProfileDropdown\n          userInfo={userInfo}\n          widgetsbarExpanded={widgetsbarExpanded}\n          setChangingEntity={setChangingEntity}\n        />\n      </Box>\n    </Box>\n  );\n};\n\nexport default Header;\n","import React from 'react';\n\nconst AppsIcon = () => {\n  return (\n    <svg\n      width=\"17\"\n      height=\"18\"\n      viewBox=\"0 0 17 18\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      style={{ cursor: 'pointer' }}\n      id=\"bento-box-dropdown-button\"\n    >\n      <path\n        d=\"M2.125 18C1.54062 18 1.04036 17.7797 0.624219 17.3391C0.208073 16.8984 0 16.3687 0 15.75C0 15.1313 0.208073 14.6016 0.624219 14.1609C1.04036 13.7203 1.54062 13.5 2.125 13.5C2.70937 13.5 3.20964 13.7203 3.62578 14.1609C4.04193 14.6016 4.25 15.1313 4.25 15.75C4.25 16.3687 4.04193 16.8984 3.62578 17.3391C3.20964 17.7797 2.70937 18 2.125 18ZM8.5 18C7.91563 18 7.41536 17.7797 6.99922 17.3391C6.58307 16.8984 6.375 16.3687 6.375 15.75C6.375 15.1313 6.58307 14.6016 6.99922 14.1609C7.41536 13.7203 7.91563 13.5 8.5 13.5C9.08438 13.5 9.58464 13.7203 10.0008 14.1609C10.4169 14.6016 10.625 15.1313 10.625 15.75C10.625 16.3687 10.4169 16.8984 10.0008 17.3391C9.58464 17.7797 9.08438 18 8.5 18ZM14.875 18C14.2906 18 13.7904 17.7797 13.3742 17.3391C12.9581 16.8984 12.75 16.3687 12.75 15.75C12.75 15.1313 12.9581 14.6016 13.3742 14.1609C13.7904 13.7203 14.2906 13.5 14.875 13.5C15.4594 13.5 15.9596 13.7203 16.3758 14.1609C16.7919 14.6016 17 15.1313 17 15.75C17 16.3687 16.7919 16.8984 16.3758 17.3391C15.9596 17.7797 15.4594 18 14.875 18ZM2.125 11.25C1.54062 11.25 1.04036 11.0297 0.624219 10.5891C0.208073 10.1484 0 9.61875 0 9C0 8.38125 0.208073 7.85156 0.624219 7.41094C1.04036 6.97031 1.54062 6.75 2.125 6.75C2.70937 6.75 3.20964 6.97031 3.62578 7.41094C4.04193 7.85156 4.25 8.38125 4.25 9C4.25 9.61875 4.04193 10.1484 3.62578 10.5891C3.20964 11.0297 2.70937 11.25 2.125 11.25ZM8.5 11.25C7.91563 11.25 7.41536 11.0297 6.99922 10.5891C6.58307 10.1484 6.375 9.61875 6.375 9C6.375 8.38125 6.58307 7.85156 6.99922 7.41094C7.41536 6.97031 7.91563 6.75 8.5 6.75C9.08438 6.75 9.58464 6.97031 10.0008 7.41094C10.4169 7.85156 10.625 8.38125 10.625 9C10.625 9.61875 10.4169 10.1484 10.0008 10.5891C9.58464 11.0297 9.08438 11.25 8.5 11.25ZM14.875 11.25C14.2906 11.25 13.7904 11.0297 13.3742 10.5891C12.9581 10.1484 12.75 9.61875 12.75 9C12.75 8.38125 12.9581 7.85156 13.3742 7.41094C13.7904 6.97031 14.2906 6.75 14.875 6.75C15.4594 6.75 15.9596 6.97031 16.3758 7.41094C16.7919 7.85156 17 8.38125 17 9C17 9.61875 16.7919 10.1484 16.3758 10.5891C15.9596 11.0297 15.4594 11.25 14.875 11.25ZM2.125 4.5C1.54062 4.5 1.04036 4.27969 0.624219 3.83906C0.208073 3.39844 0 2.86875 0 2.25C0 1.63125 0.208073 1.10156 0.624219 0.660938C1.04036 0.220313 1.54062 0 2.125 0C2.70937 0 3.20964 0.220313 3.62578 0.660938C4.04193 1.10156 4.25 1.63125 4.25 2.25C4.25 2.86875 4.04193 3.39844 3.62578 3.83906C3.20964 4.27969 2.70937 4.5 2.125 4.5ZM8.5 4.5C7.91563 4.5 7.41536 4.27969 6.99922 3.83906C6.58307 3.39844 6.375 2.86875 6.375 2.25C6.375 1.63125 6.58307 1.10156 6.99922 0.660938C7.41536 0.220313 7.91563 0 8.5 0C9.08438 0 9.58464 0.220313 10.0008 0.660938C10.4169 1.10156 10.625 1.63125 10.625 2.25C10.625 2.86875 10.4169 3.39844 10.0008 3.83906C9.58464 4.27969 9.08438 4.5 8.5 4.5ZM14.875 4.5C14.2906 4.5 13.7904 4.27969 13.3742 3.83906C12.9581 3.39844 12.75 2.86875 12.75 2.25C12.75 1.63125 12.9581 1.10156 13.3742 0.660938C13.7904 0.220313 14.2906 0 14.875 0C15.4594 0 15.9596 0.220313 16.3758 0.660938C16.7919 1.10156 17 1.63125 17 2.25C17 2.86875 16.7919 3.39844 16.3758 3.83906C15.9596 4.27969 15.4594 4.5 14.875 4.5Z\"\n        fill=\"white\"\n      />\n    </svg>\n  );\n};\n\nexport default AppsIcon;\n","import React, { useState, useMemo } from 'react';\nimport { Box } from '@mui/material';\nimport AppsIcon from '../../Assets/AppsIcon';\nimport { navbarWidths } from '../../config';\nimport { classes } from '../../styles';\nimport AppMenuItems from './AppMenuItems';\n\nconst AppMenu = ({ navbarState }: { navbarState: keyof typeof navbarWidths }) => {\n  const [appMenuAnchorEl, setAppMenuAnchorEl] = useState<null | HTMLElement>(null);\n  const isRecruit = useMemo(\n    () =>\n      !window.location.href.includes('search/advanced') && !window.location.href.includes('engage'),\n    []\n  );\n  const logo = useMemo(() => {\n    if (isRecruit) {\n      return navbarState === 'expanded' ? ':RECRUIT' : ':RE';\n    } else {\n      return navbarState === 'expanded' ? ':ENGAGE' : ':EN';\n    }\n  }, [isRecruit, navbarState]);\n\n  return (\n    <>\n      <Box\n        sx={{\n          ...classes.appMenuContainer,\n          ...(navbarState === 'collapsed' && classes.appMenuContainerCollapsed)\n        }}\n        onClick={(e) => setAppMenuAnchorEl(e.currentTarget)}\n        id={isRecruit ? `logo-name-dropdown-button` : `engage-logo-button`}\n      >\n        <span>{logo}</span>\n        {navbarState === 'expanded' && <AppsIcon />}\n      </Box>\n      {Boolean(appMenuAnchorEl) && (\n        <AppMenuItems\n          appMenuAnchorEl={appMenuAnchorEl}\n          setAppMenuAnchorEl={setAppMenuAnchorEl}\n          navbarState={navbarState}\n          isRecruit={isRecruit}\n        />\n      )}\n    </>\n  );\n};\n\nexport default AppMenu;\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { Box, ClickAwayListener, Fade, Popper } from '@mui/material';\nimport { appMenuItems, navbarWidths } from '../../config';\nimport { classes } from '../../styles';\n\nconst AppMenuItems = ({\n  appMenuAnchorEl,\n  setAppMenuAnchorEl,\n  navbarState,\n  isRecruit\n}: {\n  appMenuAnchorEl: HTMLElement | null;\n  setAppMenuAnchorEl: Dispatch<SetStateAction<HTMLElement | null>>;\n  navbarState: keyof typeof navbarWidths;\n  isRecruit: boolean;\n}) => {\n  return (\n    <ClickAwayListener onClickAway={() => setAppMenuAnchorEl(null)}>\n      <Popper\n        open={Boolean(appMenuAnchorEl)}\n        anchorEl={appMenuAnchorEl}\n        placement={navbarState === 'expanded' ? 'bottom' : 'right-start'}\n        transition\n        sx={{ zIndex: 1245 }}\n      >\n        {({ TransitionProps }) => (\n          <Fade {...TransitionProps} timeout={350}>\n            <Box\n              sx={{\n                ...classes.appMenuItemsContainer,\n                ...(navbarState === 'collapsed' && classes.appMenuItemsContainerCollapsed)\n              }}\n            >\n              {appMenuItems(isRecruit).map(\n                (item) =>\n                  item && (\n                    <a href={item.link} key={item.title} target={item.target}>\n                      {item.title}\n                    </a>\n                  )\n              )}\n            </Box>\n          </Fade>\n        )}\n      </Popper>\n    </ClickAwayListener>\n  );\n};\n\nexport default AppMenuItems;\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { Box, IconButton } from '@mui/material';\nimport ArrowBackIosIcon from '@mui/icons-material/ArrowBackIos';\nimport ArrowForwardIosIcon from '@mui/icons-material/ArrowForwardIos';\nimport { navbarWidths } from '../config';\nimport { classes } from '../styles';\n\nconst ExpandCollapseButton = ({\n  navbarState,\n  setNavbarState,\n  setChildState\n}: {\n  navbarState: keyof typeof navbarWidths;\n  setNavbarState: Dispatch<SetStateAction<keyof typeof navbarWidths>>;\n  setChildState: Dispatch<SetStateAction<[number, null | HTMLElement]>>;\n}) => {\n  const handleNavbarStateChange = (state: typeof navbarState) => {\n    if (state === 'expanded') {\n      setChildState([-1, null]);\n    }\n    localStorage.setItem('navbarState', state);\n    setNavbarState(state);\n  };\n  return (\n    <Box\n      sx={{\n        ...classes.expandCollapseButtonContainer,\n        left: `${navbarWidths[navbarState] - 15}px`\n      }}\n    >\n      {navbarState === 'expanded' ? (\n        <IconButton\n          onClick={() => handleNavbarStateChange('collapsed')}\n          sx={classes.expandCollapseButton}\n        >\n          <ArrowBackIosIcon sx={{ marginLeft: '5px' }} />\n        </IconButton>\n      ) : (\n        <IconButton\n          onClick={() => handleNavbarStateChange('expanded')}\n          sx={classes.expandCollapseButton}\n        >\n          <ArrowForwardIosIcon />\n        </IconButton>\n      )}\n    </Box>\n  );\n};\n\nexport default ExpandCollapseButton;\n","import React from 'react';\nimport { Box, Popper, ClickAwayListener, Fade } from '@mui/material';\nimport { classes } from '../../styles';\nimport { TMenuItems } from '../../config';\n\nconst CollapsedNavigationChildren = ({\n  menuItems,\n  activeChild,\n  childState,\n  handleChildPopperState\n}: {\n  menuItems: TMenuItems;\n  activeChild: string;\n  childState: [number, null | HTMLElement];\n  handleChildPopperState: (index: number, anchorEl: HTMLElement | null) => void;\n}) => {\n  if (childState[0] === -1) return null;\n  return (\n    <ClickAwayListener onClickAway={() => handleChildPopperState(-1, null)}>\n      <Popper\n        open={childState[0] !== -1}\n        anchorEl={childState[1]}\n        placement=\"right-start\"\n        transition\n        sx={{ zIndex: 1400 }}\n      >\n        {({ TransitionProps }) => (\n          <Fade {...TransitionProps} timeout={350}>\n            <Box sx={classes.collapsedNavigationChildContainer}>\n              {menuItems[childState[0]]?.submenu?.map((subItem) => {\n                return (\n                  <a href={subItem.url} key={subItem.title}>\n                    <Box sx={{ ...(activeChild === subItem.title && { fontWeight: 700 }) }}>\n                      {subItem.title}\n                    </Box>\n                  </a>\n                );\n              })}\n            </Box>\n          </Fade>\n        )}\n      </Popper>\n    </ClickAwayListener>\n  );\n};\n\nexport default CollapsedNavigationChildren;\n","import React from 'react';\nimport { Box, Collapse } from '@mui/material';\nimport { classes } from '../../styles';\nimport { TMenuItem } from '../../config';\n\nconst NavigationChildren = ({\n  item,\n  expandedParents,\n  activeItem\n}: {\n  item: TMenuItem;\n  expandedParents: string[];\n  activeItem: {\n    parent: string;\n    child: string;\n  };\n}) => {\n  if (!(item.submenu && item.submenu.length > 0)) {\n    return null;\n  }\n  return (\n    <Collapse in={expandedParents.includes(item.title)}>\n      <Box sx={classes.menuItemChildrenContainer}>\n        {item?.submenu.map((subItem) => {\n          return (\n            <a href={subItem.url} key={subItem.title} id={`${subItem?.id ? subItem?.id : ''}`}>\n              <Box\n                sx={{\n                  ...classes.menuItemChild,\n                  ...(activeItem.child === subItem.title && classes.activeItem)\n                }}\n              >\n                <span>{subItem.title}</span>\n              </Box>\n            </a>\n          );\n        })}\n      </Box>\n    </Collapse>\n  );\n};\n\nexport default NavigationChildren;\n","import React, { useEffect, useState, useCallback, Dispatch, SetStateAction, useMemo } from 'react';\nimport { Box } from '@mui/material';\nimport HomeOutlinedIcon from '@mui/icons-material/HomeOutlined';\nimport { defaultMenuItems, navbarWidths } from '../../config';\nimport { classes } from '../../styles';\nimport NavigationParent from './NavigationParent';\nimport NavigationChildren from './NavigationChildren';\nimport CollapsedNavigationChildren from './CollapsedNavigationChildren';\nimport { formatUserPermissionsAsArray } from '../../../../Components/Utilities/formatUserPermissions';\nimport { IPermissions } from '../../../../Job/types';\n\nconst IS_ENGAGE_URL =\n  window.location.pathname.includes('/admin/search/advanced') ||\n  window.location.pathname.includes('/admin/engage');\n\nconst NavigationItems = ({\n  navbarState,\n  childState,\n  setChildState,\n  userPermissions,\n  isAdminUser,\n  aiStudioEnabled,\n  newEngageEnabled\n}: {\n  navbarState: keyof typeof navbarWidths;\n  childState: [number, null | HTMLElement];\n  setChildState: Dispatch<SetStateAction<[number, null | HTMLElement]>>;\n  userPermissions: { roles: IPermissions[] };\n  isAdminUser: boolean;\n  aiStudioEnabled: boolean;\n  newEngageEnabled: boolean;\n}) => {\n  const [expandedParents, setExpandedParents] = useState<string[]>(\n    localStorage.getItem('expandedParents')\n      ? JSON.parse(localStorage.getItem('expandedParents') as string)\n      : []\n  );\n  const [activeItem, setActiveItem] = useState({\n    parent: '',\n    child: ''\n  });\n\n  const filterMenuItems = useCallback(\n    (userPermissions: string[]) => {\n      let filteredMenuItems = defaultMenuItems(newEngageEnabled, IS_ENGAGE_URL);\n      if (!isAdminUser && !IS_ENGAGE_URL) {\n        filteredMenuItems = filteredMenuItems.filter((item) => item.title !== 'Tools');\n      }\n      filteredMenuItems = filteredMenuItems.map((item) => {\n        if (item.submenu && item.submenu.length > 0) {\n          item.submenu = item.submenu.filter((subItem) => {\n            if (!subItem.permissions) return true;\n            return subItem.permissions.some((permission) => userPermissions.includes(permission));\n          });\n        }\n        return item;\n      });\n      filteredMenuItems = filteredMenuItems.filter(\n        (item) => item.submenu && item.submenu.length > 0\n      );\n      return filteredMenuItems;\n    },\n    [isAdminUser, newEngageEnabled]\n  );\n  const menuItems = useMemo(\n    () => filterMenuItems(formatUserPermissionsAsArray(userPermissions)),\n    [filterMenuItems, userPermissions]\n  );\n\n  const discoverActiveItem = useCallback(() => {\n    const isActive = (regex: RegExp) =>\n      regex.test(window.location.pathname + window.location.search);\n    if (isActive(/admin\\.?$|\\/admin\\?/)) {\n      setActiveItem({\n        parent: 'dashboard',\n        child: 'none'\n      });\n    }\n    defaultMenuItems(newEngageEnabled, IS_ENGAGE_URL).forEach((item) => {\n      if (item.submenu && item.submenu.length > 0) {\n        item.submenu.forEach((subItem) => {\n          if (isActive(new RegExp(subItem.active))) {\n            setActiveItem({\n              parent: item.title,\n              child: subItem.title\n            });\n            setExpandedParents((prev) =>\n              prev.includes(item.title) ? prev : [...prev, item.title]\n            );\n          }\n        });\n      }\n    });\n  }, [newEngageEnabled]);\n\n  useEffect(() => {\n    discoverActiveItem();\n  }, [discoverActiveItem]);\n\n  const handleChildPopperState = (index: number, anchorEl: HTMLElement | null) => {\n    if (childState[0] === index) {\n      setChildState([-1, null]);\n    } else {\n      setChildState([index, anchorEl]);\n    }\n  };\n\n  return (\n    <>\n      <Box\n        sx={{\n          ...classes.navigationItemsContainer,\n          ...(navbarState === 'collapsed' && classes.navigationItemsContainerCollapsed),\n          ...(aiStudioEnabled && { marginBottom: '100px' })\n        }}\n      >\n        {!IS_ENGAGE_URL && (\n          <a href={activeItem.parent === 'dashboard' ? '#' : '/admin'}>\n            <Box\n              sx={{\n                ...classes.menuItemParent,\n                ...(activeItem.parent === 'dashboard' && classes.activeParent),\n                ...(navbarState === 'collapsed' && classes.menuItemParentCollapsed)\n              }}\n            >\n              <HomeOutlinedIcon />\n              <span>Dashboard</span>\n            </Box>\n          </a>\n        )}\n        {menuItems &&\n          menuItems.map((item, index) => (\n            <Box key={item.title}>\n              <NavigationParent\n                item={item}\n                expandedParents={expandedParents}\n                setExpandedParents={setExpandedParents}\n                navbarState={navbarState}\n                activeParent={activeItem.parent}\n                onCollapsedClick={(currentTarget) => handleChildPopperState(index, currentTarget)}\n              />\n              {navbarState === 'expanded' && (\n                <NavigationChildren\n                  item={item}\n                  expandedParents={expandedParents}\n                  activeItem={activeItem}\n                />\n              )}\n            </Box>\n          ))}\n      </Box>\n      {menuItems && navbarState === 'collapsed' && (\n        <CollapsedNavigationChildren\n          menuItems={menuItems}\n          activeChild={activeItem.child}\n          childState={childState}\n          handleChildPopperState={handleChildPopperState}\n        />\n      )}\n    </>\n  );\n};\n\nexport default NavigationItems;\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { Box } from '@mui/material';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight';\nimport PersonSearchOutlinedIcon from '@mui/icons-material/PersonSearchOutlined';\nimport AdminPanelSettingsOutlinedIcon from '@mui/icons-material/AdminPanelSettingsOutlined';\nimport BuildOutlinedIcon from '@mui/icons-material/BuildOutlined';\nimport { classes } from '../../styles';\nimport { TMenuItem, navbarWidths } from '../../config';\nimport HomeOutlinedIcon from '@mui/icons-material/HomeOutlined';\n\nconst NavigationParent = ({\n  item,\n  expandedParents,\n  setExpandedParents,\n  navbarState,\n  activeParent,\n  onCollapsedClick\n}: {\n  item: TMenuItem;\n  expandedParents: string[];\n  setExpandedParents: Dispatch<SetStateAction<string[]>>;\n  navbarState: keyof typeof navbarWidths;\n  activeParent: string;\n  onCollapsedClick: (currentTarget: HTMLElement) => void;\n}) => {\n  const highlightActiveParent = (title: string) =>\n    navbarState === 'collapsed' ? activeParent === title : expandedParents.includes(title);\n\n  const displayExpandCollapseIcon = (item: TMenuItem) =>\n    item.submenu && item.submenu.length > 0 && navbarState === 'expanded';\n\n  const renderIcon = (icon: string) => {\n    switch (icon) {\n      case 'people_search':\n        return <PersonSearchOutlinedIcon />;\n      case 'shield':\n        return <AdminPanelSettingsOutlinedIcon />;\n      case 'spanner':\n        return <BuildOutlinedIcon sx={{ fontSize: '21px !important' }} />;\n      case 'home':\n        return <HomeOutlinedIcon />;\n      default:\n        return null;\n    }\n  };\n\n  const handleParentClick = (title: string, e: React.MouseEvent<HTMLElement, MouseEvent>) => {\n    if (navbarState === 'collapsed') {\n      e.stopPropagation();\n      onCollapsedClick(e.currentTarget);\n      return;\n    }\n    if (expandedParents.includes(title)) {\n      const tempExpandedParents = expandedParents.filter((item) => item !== title);\n      setExpandedParents(tempExpandedParents);\n      localStorage.setItem('expandedParents', JSON.stringify(tempExpandedParents));\n    } else {\n      const tempExpandedParents = [...expandedParents, title];\n      setExpandedParents(tempExpandedParents);\n      localStorage.setItem('expandedParents', JSON.stringify(tempExpandedParents));\n    }\n  };\n  return (\n    <Box\n      key={item.title}\n      sx={{\n        ...classes.menuItemParent,\n        ...(highlightActiveParent(item.title) && classes.activeParent),\n        ...(navbarState === 'collapsed' && classes.menuItemParentCollapsed)\n      }}\n      onClick={(e) => handleParentClick(item.title, e)}\n      id={`${item?.id ? item?.id : ''}`}\n    >\n      {renderIcon(item.icon)}\n      <span>{item.title}</span>\n      {displayExpandCollapseIcon(item) && (\n        <Box sx={classes.menuItemExpandCollapseIcon}>\n          {expandedParents.includes(item.title) ? (\n            <KeyboardArrowDownIcon />\n          ) : (\n            <KeyboardArrowRightIcon />\n          )}\n        </Box>\n      )}\n    </Box>\n  );\n};\n\nexport default NavigationParent;\n","import React, { useState, useEffect } from 'react';\nimport { Box } from '@mui/material';\nimport { navbarWidths } from './config';\nimport { classes } from './styles';\nimport AppMenu from './Components/AppMenu/AppMenu';\nimport NavigationItems from './Components/NavigationItems/NavigationItems';\nimport ExpandCollapseButton from './Components/ExpandCollapseButton';\nimport AIStudioModal from '../../../AIStudio/AIStudioModal/AIStudioModal';\n\nconst Navbar = ({\n  userPermissions,\n  isAdminUser,\n  aiStudioSettings,\n  newEngageEnabled\n}: {\n  userPermissions: string;\n  isAdminUser: boolean;\n  aiStudioSettings: {\n    aiStudioEnabled: boolean;\n    aiSummariesEnabled: boolean;\n    showPreview: boolean;\n    aiStudioFrenchEnabled: boolean;\n  };\n  newEngageEnabled: boolean;\n}) => {\n  const [navbarState, setNavbarState] = useState<keyof typeof navbarWidths>(\n    (localStorage.getItem('navbarState') as keyof typeof navbarWidths) || 'expanded'\n  );\n  const [childState, setChildState] = useState<[number, null | HTMLElement]>([-1, null]);\n\n  useEffect(() => {\n    const handleResize = () => {\n      if (window.innerWidth < 866) {\n        setNavbarState('collapsed');\n        localStorage.setItem('navbarState', 'collapsed');\n      } else {\n        setNavbarState('expanded');\n        localStorage.setItem('navbarState', 'expanded');\n        setChildState([-1, null]);\n      }\n    };\n\n    !localStorage.getItem('navbarState') && handleResize();\n\n    window.addEventListener('resize', handleResize);\n\n    return () => window.removeEventListener('resize', handleResize);\n  }, []);\n\n  return (\n    <Box id=\"react-navbar\">\n      <ExpandCollapseButton\n        navbarState={navbarState}\n        setNavbarState={setNavbarState}\n        setChildState={setChildState}\n      />\n      <Box sx={{ ...classes.navbarContainer, width: `${navbarWidths[navbarState]}px` }}>\n        <AppMenu navbarState={navbarState} />\n        <NavigationItems\n          userPermissions={JSON.parse(userPermissions)}\n          navbarState={navbarState}\n          childState={childState}\n          setChildState={setChildState}\n          isAdminUser={isAdminUser}\n          aiStudioEnabled={aiStudioSettings.aiStudioEnabled}\n          newEngageEnabled={newEngageEnabled}\n        />\n        <AIStudioModal\n          aiStudioEnabled={aiStudioSettings.aiStudioEnabled}\n          aiSummariesEnabled={aiStudioSettings.aiSummariesEnabled}\n          aiStudioFrenchEnabled={aiStudioSettings.aiStudioFrenchEnabled}\n          showPreview={aiStudioSettings.showPreview}\n          navbarState={navbarState}\n        />\n      </Box>\n    </Box>\n  );\n};\n\nexport default Navbar;\n","import { Box, Accordion, AccordionSummary, AccordionDetails, Typography } from '@mui/material';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport React, { RefObject, UIEvent } from 'react';\nimport Api from '../../../Dashboard/API';\nimport ActivityFeedItem from './ActivityFeedItem';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\nimport dayjs from 'dayjs';\nimport isToday from 'dayjs/plugin/isToday';\nimport { useInfiniteQuery } from '@tanstack/react-query';\nimport LoadingButton from '../../../Components/Buttons/LoadingButton';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\n\ndayjs.extend(isToday);\n\ninterface IProps {\n  parentRef: RefObject<HTMLDivElement>;\n}\n\nfunction ActivityFeed({ parentRef }: IProps) {\n  let isExecuted = false;\n  const {\n    isInitialLoading,\n    data,\n    fetchNextPage,\n    isFetchingNextPage,\n    hasNextPage,\n    status,\n    refetch\n  } = useInfiniteQuery({\n    queryKey: ['getActivityFeed'],\n    queryFn: ({ queryKey, pageParam = null }) => {\n      const data = Api.getActivityFeed({ page: pageParam });\n      return data;\n    },\n    getNextPageParam: (lastPage) => {\n      const lastDate = lastPage[lastPage?.length - 1];\n      const lastActivity = lastDate.activities[lastDate.activities?.length - 1];\n      return lastActivity.id || undefined;\n    },\n    onError: (error) => {\n      console.error(error);\n    },\n    onSuccess: () => {\n      scrollToBottom();\n    },\n    staleTime: Infinity,\n    refetchOnWindowFocus: false,\n    refetchOnMount: false,\n    enabled: false\n  });\n\n  const handleScroll = (event: UIEvent<HTMLElement>) => {\n    if (!event) return;\n    const { scrollTop, scrollHeight, clientHeight } = event.currentTarget;\n    if (scrollTop + clientHeight >= scrollHeight - 50) {\n      if (!isFetchingNextPage && hasNextPage) {\n        fetchNextPage();\n      }\n    }\n  };\n\n  const scrollToBottom = () => {\n    window.requestAnimationFrame(() => {\n      if (!parentRef.current) return;\n      parentRef.current.scrollTo({ top: parentRef.current.scrollHeight, behavior: 'smooth' });\n    });\n  };\n\n  const handleOnTransitionEnd = () => {\n    if (!isExecuted) {\n      scrollToBottom();\n      isExecuted = true;\n    }\n  };\n\n  return (\n    <Box sx={{ width: '260px' }}>\n      <Accordion sx={styles.accordian} onTransitionEnd={handleOnTransitionEnd}>\n        <AccordionSummary\n          expandIcon={<ExpandMoreIcon />}\n          sx={styles.accordionButton}\n          id=\"activity-feed-accordion\"\n        >\n          <Typography\n            sx={{\n              fontFamily: 'Source Sans Pro',\n              fontSize: '18px',\n              fontWeight: '700',\n              color: '#666666'\n            }}\n          >\n            Activity Feed\n          </Typography>\n        </AccordionSummary>\n        <AccordionDetails sx={styles.activitiesContainer} onScroll={handleScroll}>\n          {!data && (\n            <LoadingButton\n              sx={{\n                ...sharedClasses.genericButton,\n                fontSize: '14px',\n                minWidth: '110px'\n              }}\n              task={refetch}\n              id=\"load-feed-button\"\n            >\n              Load Feed\n            </LoadingButton>\n          )}\n          {!isInitialLoading &&\n            data?.pages.map((page) =>\n              page.map(({ date, activities }, i) => (\n                <Box key={date}>\n                  <Box\n                    sx={{ ...styles.date, marginTop: `${i === 0 ? 'inherit' : theme.spacing(2)}` }}\n                  >\n                    {dayjs(date).isToday() ? 'Today' : dayjs(date).format('D MMM YYYY')}\n                  </Box>\n                  {activities.map((item, index) => (\n                    <ActivityFeedItem\n                      key={item.id}\n                      activity={item}\n                      isLast={index === activities.length - 1}\n                    />\n                  ))}\n                </Box>\n              ))\n            )}\n        </AccordionDetails>\n      </Accordion>\n    </Box>\n  );\n}\n\nconst styles = {\n  date: {\n    textTransform: 'uppercase',\n    color: '#333',\n    marginBottom: theme.spacing(2),\n    fontWeight: '600'\n  },\n  accordian: {\n    boxShadow: '0px 4px 20px 3px #305A6F14',\n    borderRadius: '6px !important',\n    '& .MuiAccordionSummary-root.Mui-expanded': {\n      minHeight: '40px !important'\n    }\n  },\n  accordionButton: {\n    padding: '0 !important',\n    width: '100%',\n    minHeight: '40px',\n    '& .MuiAccordionSummary-content': {\n      margin: '20px !important'\n    },\n    '& .MuiAccordionSummary-expandIconWrapper': {\n      marginRight: '10px !important'\n    }\n  },\n  activitiesContainer: {\n    maxHeight: '400px',\n    overflow: 'auto',\n    flexDirection: 'column',\n    justifyContent: 'center',\n    display: 'grid'\n  }\n};\n\nexport default ActivityFeed;\n","import React from 'react';\nimport { IActivity } from '../../../Dashboard/types';\nimport { Box } from '@mui/material';\nimport dayjs from 'dayjs';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\nimport EventCircle from '../../../Dashboard/assets/EventCircle';\nimport dompurify from 'dompurify';\nimport { connectingLine } from '../../../shared/styleClasses';\n\nfunction ActivityFeedItem({ activity, isLast }: { activity: IActivity; isLast: boolean }) {\n  return (\n    <Box\n      display=\"flex\"\n      flexDirection=\"column\"\n      justifyContent=\"space-between\"\n      alignItems=\"flex-start\"\n    >\n      <Box\n        display=\"flex\"\n        width=\"100%\"\n        justifyContent=\"space-between\"\n        alignItems=\"flex-start\"\n        gap=\"24px\"\n      >\n        <Box display=\"flex\" height=\"100%\">\n          <Box sx={{ ...styles.lineContainer, ...(!isLast && { ...styles.connectingLine }) }}>\n            <EventCircle />\n          </Box>\n          <Box sx={styles.infoContainer}>\n            <Box>{dayjs(activity.timestamp).format('hh:mma')}</Box>\n            <Box>{activity.actor}</Box>\n            <Box dangerouslySetInnerHTML={{ __html: dompurify.sanitize(activity.activity_html) }} />\n          </Box>\n        </Box>\n      </Box>\n    </Box>\n  );\n}\n\nconst styles = {\n  lineContainer: {\n    marginRight: theme.spacing(2),\n    position: 'relative',\n    '& svg': {\n      width: '30px',\n      height: '30px'\n    }\n  },\n  connectingLine,\n  infoContainer: {\n    '& > div:nth-child(1)': {\n      color: '#666',\n      fontWeight: '700',\n      fontSize: '13px',\n      textTransform: 'uppercase'\n    },\n    '& > div:nth-child(2) a': {\n      color: '#333',\n      fontWeight: '700',\n      fontSize: '18px'\n    },\n    '& > div:nth-child(3)': {\n      color: '#666',\n      fontSize: '14px'\n    }\n  }\n};\n\nexport default ActivityFeedItem;\n","import { Box } from '@mui/material';\nimport React, { useState, useEffect } from 'react';\nimport Api from '../../../Dashboard/API';\nimport { IRecentlyViewed } from '../../../Dashboard/types';\nimport { classes } from '../styles';\nimport RecentlyViewedItem from './RecentlyViewedItem';\n\nfunction RecentlyViewed() {\n  const [recentlyViewedList, setRecentlyViewedList] = useState<IRecentlyViewed[]>([]);\n\n  async function getRecentlyViewed() {\n    try {\n      const response = await Api.getRecentlyViewed();\n      setRecentlyViewedList(response);\n    } catch (error) {\n      console.log(error);\n    }\n  }\n\n  useEffect(() => {\n    getRecentlyViewed();\n  }, []);\n\n  return (\n    <Box sx={classes.recentlyViewedContainer}>\n      <Box sx={classes.title}>Recently Viewed</Box>\n      {recentlyViewedList.map((item) => (\n        <RecentlyViewedItem key={item.id} view={item} />\n      ))}\n    </Box>\n  );\n}\n\nexport default RecentlyViewed;\n","import React from 'react';\nimport { IRecentlyViewed } from '../../../Dashboard/types';\nimport { Box, IconButton, Link, Button } from '@mui/material';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\nimport WorkIcon from '@mui/icons-material/Work';\nimport AccountTreeIcon from '@mui/icons-material/AccountTree';\nimport ContactPageIcon from '@mui/icons-material/ContactPage';\nimport PersonIcon from '@mui/icons-material/Person';\nimport HowToRegIcon from '@mui/icons-material/HowToReg';\nimport EventNoteIcon from '@mui/icons-material/EventNote';\nimport ContactsIcon from '@mui/icons-material/Contacts';\n\nfunction RecentlyViewedItem({ view }: { view: IRecentlyViewed }) {\n  const renderColor = (icon: string) => {\n    switch (icon) {\n      case 'builder':\n      case 'jobs':\n        return '#FFA085 !important';\n      case 'applications':\n      case 'search_index':\n      case 'new_applications':\n        return '#F478FF !important';\n      case 'entities':\n        return '#B080FF !important';\n      case 'users':\n        return '#85F0A7 !important';\n      case 'events':\n        return '#FFC700 !important';\n      case 'forms':\n      case 'requisitions':\n      case 'requisition_forms':\n      case 'approvals':\n        return '#91CAFF !important';\n      case 'candidates':\n        return '#F78CA6 !important';\n      default:\n        return null;\n    }\n  };\n\n  const renderIcon = (icon: string) => {\n    switch (icon) {\n      case 'builder':\n      case 'jobs':\n        return <WorkIcon sx={{ fontSize: '13px !important', color: '#FFFFFF' }} />;\n      case 'applications':\n      case 'search_index':\n      case 'new_applications':\n        return <ContactPageIcon sx={{ fontSize: '13px !important', color: '#FFFFFF' }} />;\n      case 'entities':\n        return <AccountTreeIcon sx={{ fontSize: '13px !important', color: '#FFFFFF' }} />;\n      case 'users':\n        return <PersonIcon sx={{ fontSize: '13px !important', color: '#FFFFFF' }} />;\n      case 'events':\n        return <EventNoteIcon sx={{ fontSize: '13px !important', color: '#FFFFFF' }} />;\n      case 'forms':\n      case 'requisitions':\n      case 'requisition_forms':\n      case 'approvals':\n        return <HowToRegIcon sx={{ fontSize: '13px !important', color: '#FFFFFF' }} />;\n      case 'candidates':\n        return <ContactsIcon sx={{ fontSize: '13px !important', color: '#FFFFFF' }} />;\n      default:\n        return null;\n    }\n  };\n\n  return (\n    <Box sx={{ display: 'flex', alignItems: 'flex-start', padding: '0px 14px' }}>\n      <IconButton\n        sx={{\n          fontSize: '15px !important',\n          padding: '5px !important',\n          backgroundColor: renderColor(view.controller),\n          borderRadius: '50% !important',\n          '&:hover': { backgroundColor: renderColor(view.controller), cursor: 'default' }\n        }}\n      >\n        {renderIcon(view.controller)}\n      </IconButton>\n      <Link href={view.request_url} underline=\"none\" sx={styles.infoContainer}>\n        {view.caption}\n      </Link>\n    </Box>\n  );\n}\n\nconst styles = {\n  infoContainer: {\n    marginLeft: theme.spacing(2),\n    color: '#666666 !important',\n    fontWeight: '400 !important',\n    fontSize: '13px !important'\n  }\n};\n\nexport default RecentlyViewedItem;\n","import React, { useState, useEffect, useRef, useReducer } from 'react';\nimport { Box, Stack } from '@mui/material';\nimport { widgetsContainerPadding, widgetsbarWidths } from './config';\nimport { classes } from './styles';\nimport ShowRightMenu from '../Header/Components/ShowRightMenu';\nimport ActivityFeed from './ActivityFeed/ActivityFeed';\nimport dayjs, { Dayjs } from 'dayjs';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\nimport { StaticDatePicker } from '@mui/x-date-pickers/StaticDatePicker';\nimport IconButton from '@mui/material/IconButton';\nimport AddCircleIcon from '@mui/icons-material/AddCircle';\nimport Popover from '@mui/material/Popover';\nimport RecentlyViewed from './RecentlyViewed/RecentlyViewed';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport { InitialScoutCalendarState, ScoutCalendarReducer } from '../../../ScoutCalendar/reducer';\nimport EventCreated from '../../../ScoutCalendar/EventCreated';\nimport CreateEvent from '../../../ScoutCalendar/CreateEvent/CreateEvent';\nimport { EventActionType, ScoutCalendarAction } from '../../../ScoutCalendar/types';\nimport { useEvents } from '../../hooks';\n\nconst BASE_URL = window.location.origin;\nconst queryClient = new QueryClient();\nconst ENGAGE_URL = window.location.pathname.includes('/admin/search/advanced');\n\nconst Widgetsbar = ({\n  userPermissions,\n  calendlyEnabled,\n  apiKey,\n  userTimezone\n}: {\n  userPermissions: string;\n  calendlyEnabled: boolean;\n  apiKey: string;\n  userTimezone: string;\n}) => {\n  const scrollRef = useRef<HTMLDivElement>(null);\n  const [widgetsbarState, setWidgetsbarState] = useState<keyof typeof widgetsbarWidths>(\n    (localStorage.getItem('widgetsbarState') as keyof typeof widgetsbarWidths) || 'expanded'\n  );\n  const [selectedDate, setSelectedDate] = useState<Dayjs | null>(dayjs());\n  const [month, setMonth] = useState(dayjs().format('MMM'));\n  const [actionsAnchorEl, setActionsAnchorEl] = useState(null);\n\n  const [ScoutCalendarState, dispatch] = useReducer(\n    ScoutCalendarReducer,\n    InitialScoutCalendarState\n  );\n  const { weekStart, showCreateEventModal, createMultipleEvents } = ScoutCalendarState;\n  const [eventCreated, setEventCreated] = useState<boolean>(false);\n\n  const { data: events } = useEvents({\n    weekStart,\n    onError: (error: string) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: `There was an error getting events, ${error}`, state: 'error' }\n      }),\n    apiKey\n  });\n\n  const handleDateClick = (date: Dayjs | null) => {\n    if (calendlyEnabled) {\n      return;\n    }\n    window.location.href = `${BASE_URL}/admin/calendar/show/${date?.format('YYYY-MM-DD')}`;\n  };\n\n  const handleAddEvent = (type: EventActionType) => {\n    if (calendlyEnabled) {\n      window.location.href = `${BASE_URL}/admin/calendly`;\n      return;\n    }\n    const actions: Record<EventActionType, ScoutCalendarAction> = {\n      single: { type: 'SET_SHOW_CREATE_EVENT_MODAL', payload: true },\n      multiple: { type: 'CREATE_MULTIPLE_EVENTS', payload: true }\n    };\n\n    dispatch(actions[type]);\n  };\n\n  useEffect(() => {\n    const calendarRegex = /\\/admin\\/calendar\\/show\\/.*/;\n    if (calendarRegex.test(window.location.pathname)) {\n      const url = window.location.pathname.split('/');\n      const date = dayjs(url[url.length - 1]);\n      setSelectedDate(date);\n      setMonth(date.format('MMM'));\n    }\n\n    const handleResize = () => {\n      if (window.innerWidth < 866) {\n        setWidgetsbarState('collapsed');\n        localStorage.setItem('widgetsbarState', 'collapsed');\n        const event = new Event('onWidgetBarChange');\n        window.dispatchEvent(event);\n      }\n    };\n\n    !localStorage.getItem('widgetsbarState') && handleResize();\n\n    window.addEventListener('resize', handleResize);\n\n    return () => window.removeEventListener('resize', handleResize);\n  }, []);\n\n  useEffect(() => {\n    dispatch({ type: 'SET_APIKEY', payload: apiKey });\n  }, [apiKey]);\n\n  return (\n    <QueryClientProvider client={queryClient}>\n      <>\n        <Stack\n          id=\"react-widgetsbar\"\n          ref={scrollRef}\n          spacing={3}\n          alignItems=\"center\"\n          paddingInline={widgetsContainerPadding[widgetsbarState]}\n          sx={{\n            ...classes.widgetsbarContainer,\n            width: `${widgetsbarWidths[widgetsbarState]}px`,\n            '&::-webkit-scrollbar': {\n              display: 'none'\n            },\n            display: ENGAGE_URL ? 'none' : 'flex'\n          }}\n        >\n          <Box\n            sx={{\n              ...classes.hideButtonContainer,\n              padding: widgetsbarState === 'collapsed' ? '0 !important' : '0 12px 30px'\n            }}\n          >\n            <ShowRightMenu\n              widgetsbarState={widgetsbarState}\n              setWidgetsbarState={setWidgetsbarState}\n            />\n          </Box>\n          {widgetsbarState === 'expanded' && (\n            <>\n              <Box sx={classes.datePicker}>\n                <Stack alignItems=\"center\" sx={classes.addButton}>\n                  <IconButton\n                    aria-label=\"Add new action button\"\n                    onClick={(e) => {\n                      setActionsAnchorEl(e.currentTarget);\n                    }}\n                    sx={{ padding: 0 }}\n                    disableRipple\n                  >\n                    <AddCircleIcon sx={{ color: '#666666', fontSize: '20px !important' }} />\n                  </IconButton>\n                </Stack>\n                <LocalizationProvider dateAdapter={AdapterDayjs}>\n                  <StaticDatePicker\n                    displayStaticWrapperAs=\"desktop\"\n                    value={selectedDate}\n                    onChange={(newValue) => {\n                      setSelectedDate(newValue);\n                      handleDateClick(newValue);\n                    }}\n                    onMonthChange={(month) => setMonth(month.format('MMM'))}\n                    slotProps={{\n                      layout: { sx: { minWidth: '260px', height: '300px' } },\n                      day: { sx: { width: '30px' } },\n                      calendarHeader: {\n                        ref(instance) {\n                          if (!instance) return;\n                          const year = selectedDate?.format('YYYY');\n                          instance.childNodes[0].textContent = `${month} ${year}`;\n                        }\n                      }\n                    }}\n                  />\n                </LocalizationProvider>\n              </Box>\n              <Popover\n                id={actionsAnchorEl ? 'actions-menu-popover' : undefined}\n                sx={classes.actionsMenu}\n                open={Boolean(actionsAnchorEl)}\n                anchorEl={actionsAnchorEl}\n                onClose={() => {\n                  setActionsAnchorEl(null);\n                }}\n                anchorOrigin={{\n                  vertical: 'bottom',\n                  horizontal: 'right'\n                }}\n                transformOrigin={{\n                  vertical: 'top',\n                  horizontal: 'right'\n                }}\n              >\n                <span\n                  onClick={() => {\n                    setActionsAnchorEl(null);\n                    handleAddEvent('single');\n                  }}\n                  className=\"add-event-button\"\n                >\n                  Add event\n                </span>\n                <span\n                  onClick={() => {\n                    setActionsAnchorEl(null);\n                    handleAddEvent('multiple');\n                  }}\n                  className=\"add-multiple-event-button\"\n                >\n                  Add multiple events\n                </span>\n              </Popover>\n            </>\n          )}\n          {widgetsbarState === 'expanded' && <RecentlyViewed />}\n          {userPermissions.includes('View activity feed') && widgetsbarState === 'expanded' && (\n            <ActivityFeed parentRef={scrollRef} />\n          )}\n        </Stack>\n\n        {(showCreateEventModal || createMultipleEvents) && events && (\n          <CreateEvent\n            events={events}\n            ScoutCalendarState={ScoutCalendarState}\n            dispatch={dispatch}\n            setEventCreated={setEventCreated}\n            userTimezone={userTimezone}\n          />\n        )}\n        <EventCreated\n          open={eventCreated}\n          onClose={() => {\n            setEventCreated(false);\n            dispatch({ type: 'RESET_STATE' });\n          }}\n          ScoutCalendarState={ScoutCalendarState}\n          userTimezone={userTimezone}\n        />\n      </>\n    </QueryClientProvider>\n  );\n};\n\nexport default Widgetsbar;\n","import React from 'react';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport Widgetsbar from './Widgetsbar';\n\nconst queryClient = new QueryClient({\n  defaultOptions: {\n    queries: {\n      refetchOnWindowFocus: false\n    }\n  }\n});\n\nexport interface WidgetsbarWrapperProps {\n  userPermissions: string;\n  calendlyEnabled: boolean;\n  apiKey: string;\n  userTimezone: string;\n}\n\nexport default function WidgetsbarWrapper({\n  userPermissions,\n  calendlyEnabled,\n  apiKey,\n  userTimezone\n}: WidgetsbarWrapperProps) {\n  return (\n    <QueryClientProvider client={queryClient}>\n      <Widgetsbar\n        apiKey={apiKey}\n        userPermissions={userPermissions}\n        calendlyEnabled={calendlyEnabled}\n        userTimezone={userTimezone}\n      />\n    </QueryClientProvider>\n  );\n}\n","import React from 'react';\nimport SmartFormFields from './SmartFormFields';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\n\nconst queryClient = new QueryClient({\n  defaultOptions: {\n    queries: {\n      refetchOnWindowFocus: false\n    }\n  }\n});\n\nexport default function EditFormPage({\n  formId,\n  userPermissions: userPermissions\n}: {\n  formId: number;\n  userPermissions: Record<string, Record<string, boolean>>;\n}) {\n  const allRoles = userPermissions.roles.reduce(\n    (acc, role) => {\n      acc['paid_user'] = role.paid_role;\n      role.feature_groups.forEach((group) => {\n        acc[group.name] = acc[group.name] || {};\n        group.permissions.forEach((permission) => (acc[group.name][permission] = true));\n      });\n      return acc;\n    },\n    {} as Record<string, Record<string, boolean> | string | boolean>\n  );\n\n  allRoles['user_type'] = userPermissions.roles[0]?.user_type;\n\n  return (\n    <QueryClientProvider client={queryClient}>\n      <SmartFormFields formId={formId} userPermissions={allRoles} />\n    </QueryClientProvider>\n  );\n}\n","import React, { Dispatch } from 'react';\nimport { Box, CircularProgress, Modal, Button } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { Virtualize } from '../../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport Api from '../../API';\nimport { useQuery, useQueryClient, useMutation } from '@tanstack/react-query';\nimport { SmartFormFieldsState, SmartFormFieldsAction } from '../../reducer';\n\nexport default function AddSystemField({\n  formId,\n  SmartFormFieldsState,\n  dispatch\n}: {\n  formId: number;\n  SmartFormFieldsState: SmartFormFieldsState;\n  dispatch: Dispatch<SmartFormFieldsAction>;\n}) {\n  const queryClient = useQueryClient();\n\n  const handleClose = () => {\n    dispatch({ type: 'SET_SELECTED_SYSTEM_FIELD', payload: null });\n    dispatch({ type: 'SET_SYSTEM_FIELD_ERROR', payload: '' });\n    dispatch({\n      type: 'SET_MODALS_OPEN',\n      payload: { ...SmartFormFieldsState.modalsOpen, addSystemField: false }\n    });\n  };\n\n  const { data: systemFields, isLoading: loadingSystemFields } = useQuery({\n    queryKey: ['system fields'],\n    queryFn: async () => {\n      const { res } = await Api.getSystemFields();\n      return res.system_fields.map(\n        (field: { id: number; title: string }) => `${field.id} - ${field.title}`\n      );\n    },\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `Failed to fetch system fields, ${error}`,\n          state: 'error'\n        }\n      })\n  });\n\n  const handleSubmit = async () => {\n    if (!SmartFormFieldsState.selectedSystemField) {\n      dispatch({ type: 'SET_SYSTEM_FIELD_ERROR', payload: 'This field is required' });\n      return;\n    }\n    AddSystemField.mutate(SmartFormFieldsState.selectedSystemField);\n  };\n\n  const AddSystemField = useMutation({\n    mutationFn: (selectedField: string) =>\n      Api.addSystemField(formId, Number(selectedField.split('-')[0])),\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There has been an error creating the system field question, ${error}`,\n          state: 'error'\n        }\n      }),\n    onSuccess: () => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: 'Field has been added',\n          state: 'success'\n        }\n      });\n      queryClient.invalidateQueries(['questions'], { exact: true });\n      handleClose();\n    }\n  });\n\n  return (\n    <Modal\n      open={SmartFormFieldsState.modalsOpen.addSystemField}\n      onClose={handleClose}\n      aria-labelledby=\"add-system-field-modal\"\n    >\n      <Box sx={classes.actionsModalReducedPadding}>\n        <CloseIcon onClick={handleClose} sx={classes.closeIcon} />\n        <Box id=\"add-system-title\" sx={classes.actionModalHeader}>\n          Add system field\n        </Box>\n        <Box\n          sx={classes.modalContent}\n          id=\"add-system-modal-content\"\n          aria-label=\"Add System Field Modal Content\"\n        >\n          <Box role=\"form\" id=\"add-system-form\" aria-label=\"Add System Field form\">\n            <Box sx={{ ...classes.actionModalFormLine, marginTop: '20px' }}>\n              <Virtualize\n                value={SmartFormFieldsState.selectedSystemField}\n                passOptions={systemFields}\n                setValue={(value: string) => {\n                  dispatch({ type: 'SET_SELECTED_SYSTEM_FIELD', payload: value });\n                  dispatch({ type: 'SET_SYSTEM_FIELD_ERROR', payload: '' });\n                }}\n                passedStyles={{\n                  ...sharedClasses.formAutocomplete,\n                  width: '700px',\n                  marginTop: '20px'\n                }}\n                label=\"Select a system field\"\n                loading={loadingSystemFields}\n                loadingText=\"Loading system fields...\"\n              />\n\n              {SmartFormFieldsState.systemFieldError && (\n                <Box sx={{ ...classes.formError, top: '63px' }}>\n                  {SmartFormFieldsState.systemFieldError}\n                </Box>\n              )}\n            </Box>\n          </Box>\n        </Box>\n        <Box sx={classes.modalFooterSmallerSection}>\n          <Button id=\"close-add-system-button\" sx={classes.modalCancelButton} onClick={handleClose}>\n            Cancel\n          </Button>\n          <Button\n            id=\"submit-add-system-button\"\n            type=\"submit\"\n            sx={{ ...classes.modalCreateButton, width: '91px', height: '41px' }}\n            onClick={handleSubmit}\n          >\n            {AddSystemField.isLoading ? <CircularProgress size={20} color=\"inherit\" /> : 'Confirm'}\n          </Button>\n        </Box>\n      </Box>\n    </Modal>\n  );\n}\n","import React, { Dispatch, useState } from 'react';\nimport { Box, CircularProgress, Modal, Button } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { Virtualize } from '../../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport SelectField from '../../../Components/CustomUIElements/SelectField';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport Api from '../../API';\nimport { useQuery, useQueryClient, useMutation } from '@tanstack/react-query';\nimport { SmartFormFieldsState, SmartFormFieldsAction } from '../../reducer';\n\nconst sourceTypes = ['Smart Form', 'Approval Template', 'Job'];\n\nexport default function ImportFields({\n  formId,\n  SmartFormFieldsState,\n  dispatch\n}: {\n  formId: number;\n  SmartFormFieldsState: SmartFormFieldsState;\n  dispatch: Dispatch<SmartFormFieldsAction>;\n}) {\n  const [sourceType, setSourceType] = useState<string>('Smart Form');\n  const queryClient = useQueryClient();\n\n  const handleClose = () => {\n    dispatch({ type: 'SET_SELECTED_SOURCE_ID', payload: null });\n    dispatch({ type: 'SET_SYSTEM_FIELD_ERROR', payload: '' });\n    dispatch({\n      type: 'SET_MODALS_OPEN',\n      payload: { ...SmartFormFieldsState.modalsOpen, importFields: false }\n    });\n  };\n\n  const { data: sources, isLoading: loadingSources } = useQuery({\n    queryKey: ['sources', sourceType],\n    queryFn: async () => {\n      let res = null;\n      switch (sourceType) {\n        case 'Smart Form':\n          res = await Api.getSmartForms({ limit: 100 });\n          return res.res.smart_forms.map(\n            (form: { id: number; title: string }) => `${form.id} - ${form.title}`\n          );\n        case 'Approval Template':\n          res = await Api.getRequisitionForms({ limit: 100 });\n          return res.res.requisition_forms.map(\n            (form: { id: number; name: string }) => `${form.id} - ${form.name}`\n          );\n        case 'Job':\n          res = await Api.getJobs({ limit: 100 });\n          return res.res.jobs.map(\n            (job: { reference: number; title: string }) => `${job.reference} - ${job.title}`\n          );\n      }\n    },\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `Failed to fetch sources, ${error}`,\n          state: 'error'\n        }\n      })\n  });\n\n  const handleSubmit = async () => {\n    if (!SmartFormFieldsState.selectedSourceId) {\n      dispatch({ type: 'SET_SYSTEM_FIELD_ERROR', payload: 'This field is required' });\n      return;\n    }\n    ImportFields.mutate(SmartFormFieldsState.selectedSourceId);\n  };\n\n  const ImportFields = useMutation({\n    mutationFn: (selectedSourceId: string) =>\n      Api.importFields(formId, sourceType, selectedSourceId.split('-')[0].trim()),\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There has been an error importing the fields, ${error}`,\n          state: 'error'\n        }\n      }),\n    onSuccess: () => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: 'Fields have been imported',\n          state: 'success'\n        }\n      });\n      queryClient.invalidateQueries(['questions'], { exact: true });\n      handleClose();\n    }\n  });\n\n  return (\n    <Modal\n      open={SmartFormFieldsState.modalsOpen.importFields}\n      onClose={handleClose}\n      aria-labelledby=\"add-from-form-field-modal\"\n    >\n      <Box sx={classes.actionsModalReducedPadding}>\n        <CloseIcon onClick={handleClose} sx={classes.closeIcon} />\n        <Box id=\"import-fields-title\" sx={classes.actionModalHeader}>\n          Import Fields\n        </Box>\n        <Box\n          sx={classes.modalContent}\n          id=\"add-from-form-modal-content\"\n          aria-label=\"Add Fields From Form Modal Content\"\n        >\n          <Box role=\"form\" id=\"import-fields-form\" aria-label=\"Import fields from source\">\n            <Box sx={{ ...classes.actionModalFormLine, marginTop: '20px' }}>\n              <SelectField\n                id=\"source-type-select\"\n                label=\"Delay\"\n                options={sourceTypes}\n                value={sourceType}\n                onChange={setSourceType}\n                styles={{ width: '290px' }}\n              />\n            </Box>\n            <Box sx={{ ...classes.actionModalFormLine, marginTop: '20px' }}>\n              <Virtualize\n                value={SmartFormFieldsState.selectedSourceId}\n                passOptions={sources || []}\n                setValue={(value: string) => {\n                  dispatch({ type: 'SET_SELECTED_SOURCE_ID', payload: value });\n                  dispatch({ type: 'SET_SYSTEM_FIELD_ERROR', payload: '' });\n                }}\n                passedStyles={{\n                  ...sharedClasses.formAutocomplete,\n                  width: '700px',\n                  marginTop: '20px'\n                }}\n                label={`Select a ${sourceType}`}\n                loading={loadingSources}\n                loadingText=\"Loading sources...\"\n              />\n\n              {SmartFormFieldsState.systemFieldError && (\n                <Box sx={{ ...classes.formError, top: '63px' }}>\n                  {SmartFormFieldsState.systemFieldError}\n                </Box>\n              )}\n            </Box>\n          </Box>\n        </Box>\n        <Box sx={classes.modalFooterSmallerSection}>\n          <Button\n            id=\"close-add-from-form-button\"\n            sx={classes.modalCancelButton}\n            onClick={handleClose}\n          >\n            Cancel\n          </Button>\n          <Button\n            id=\"submit-add-from-form-button\"\n            type=\"submit\"\n            sx={{ ...classes.modalCreateButton, width: '91px', height: '41px' }}\n            onClick={handleSubmit}\n          >\n            {ImportFields.isLoading ? <CircularProgress size={20} color=\"inherit\" /> : 'Confirm'}\n          </Button>\n        </Box>\n      </Box>\n    </Modal>\n  );\n}\n","import React, { useState, useEffect, useRef, Dispatch, useCallback } from 'react';\nimport { Box, Modal, Button, Switch, CircularProgress, FormControlLabel } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { Virtualize } from '../../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport {\n  MultilineFormTextField,\n  FormTextField\n} from '../../../Components/CustomUIElements/FormTextField';\nimport FormSelectField from '../../../Components/CustomUIElements/FormSelectField';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport Api from '../../API';\nimport {\n  DndContext,\n  closestCenter,\n  KeyboardSensor,\n  PointerSensor,\n  useSensor,\n  useSensors\n} from '@dnd-kit/core';\nimport {\n  SortableContext,\n  sortableKeyboardCoordinates,\n  verticalListSortingStrategy\n} from '@dnd-kit/sortable';\nimport SortableChoice from '../../../EditJob/Questions/Modals/SortableChoice';\n// import { IUserPermissions } from '../../../Components/sharedTypes';\nimport { useQueryClient, useMutation } from '@tanstack/react-query';\nimport { useFieldChoiceList } from '../../../hooks/useFieldChoiceList';\nimport { SmartFormFieldsState, SmartFormFieldsAction } from '../../reducer';\nimport { IError } from '../../types';\n\nconst fieldTypeOptions = [\n  'Availability',\n  'Date',\n  'Text',\n  'Textarea',\n  'Radio Button',\n  'Select',\n  'Rank',\n  'Checkbox'\n];\n\nconst fieldTypeValues = {\n  Select: 'select_field',\n  Date: 'date_field',\n  Text: 'text_field',\n  'Radio Button': 'radio_button_field',\n  Rank: 'rank_field',\n  Availability: 'availability_field',\n  Checkbox: 'check_box_field',\n  Textarea: 'text_area_field'\n};\n\nconst DateOptions = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n\nexport default function NewField({\n  formId,\n  SmartFormFieldsState,\n  dispatch,\n  userPermissions\n}: {\n  formId: number;\n  SmartFormFieldsState: SmartFormFieldsState;\n  dispatch: Dispatch<SmartFormFieldsAction>;\n  userPermissions: Record<string, Record<string, boolean>>;\n}) {\n  const [fieldType, setFieldType] = useState('');\n  const [label, setLabel] = useState('');\n  const [enabledSwitch, setEnabledSwitch] = useState(true);\n  const [requiredSwitch, setRequiredSwitch] = useState(false);\n  const [rateableSwitch, setRateableSwitch] = useState(false);\n  const [confidentialSwitch, setConfidentialSwitch] = useState(false);\n  const [weekDuration, setWeekDuration] = useState('Weekly');\n  const [weekStartDay, setWeekStartDay] = useState<string>('Sunday');\n  const [headingOne, setHeadingOne] = useState('');\n  const [headingTwo, setHeadingTwo] = useState('');\n  const [allowBreak, setAllowBreak] = useState('No');\n  const [errorLabel, setErrorLabel] = useState('');\n  const [errorField, setErrorField] = useState('');\n  const [errorChoices, setErrorChoices] = useState('');\n  const {\n    choiceList,\n    setChoiceList,\n    addChoice,\n    removeChoice,\n    clearChoices,\n    updateChoice,\n    switchChoices\n  } = useFieldChoiceList();\n\n  const labelRef = useRef<HTMLInputElement>(null);\n  const fieldTypeRef = useRef<HTMLInputElement>(null);\n  const choicesRef = useRef<HTMLInputElement>(null);\n  const queryClient = useQueryClient();\n\n  const sensors = useSensors(\n    useSensor(PointerSensor),\n    useSensor(KeyboardSensor, {\n      coordinateGetter: sortableKeyboardCoordinates\n    })\n  );\n\n  function handleDragEnd(event) {\n    const { active, over } = event;\n    switchChoices(active.id, over.id);\n  }\n\n  const getKeyByValue = (object, value) => {\n    return Object.keys(object).find((key) => object[key] === value);\n  };\n\n  const setDefaultValue = useCallback(async () => {\n    if (SmartFormFieldsState.editingQuestion) {\n      setFieldType(getKeyByValue(fieldTypeValues, SmartFormFieldsState.editingQuestion.field_type));\n      setLabel(SmartFormFieldsState.editingQuestion.title);\n      setEnabledSwitch(SmartFormFieldsState.editingQuestion.enabled);\n      setRequiredSwitch(SmartFormFieldsState.editingQuestion.required);\n      setRateableSwitch(SmartFormFieldsState.editingQuestion.rateable);\n      setConfidentialSwitch(SmartFormFieldsState.editingQuestion.confidential);\n      setChoiceList(SmartFormFieldsState.editingQuestion.field_choices);\n      if (SmartFormFieldsState.editingQuestion.availability_config) {\n        const duration = SmartFormFieldsState.editingQuestion.availability_config.week_duration;\n        setWeekDuration(duration.charAt(0).toUpperCase() + duration.slice(1));\n        setWeekStartDay(\n          DateOptions[SmartFormFieldsState.editingQuestion.availability_config.week_start_day]\n        );\n        setHeadingOne(SmartFormFieldsState.editingQuestion.availability_config.heading_1);\n        setHeadingTwo(SmartFormFieldsState.editingQuestion.availability_config.heading_2);\n        setAllowBreak(\n          SmartFormFieldsState.editingQuestion.availability_config.allow_break === true\n            ? 'Yes'\n            : 'No'\n        );\n      }\n    }\n  }, [SmartFormFieldsState.editingQuestion]);\n\n  const handleClose = () => {\n    dispatch({\n      type: 'SET_EDITING_QUESTION',\n      payload: null\n    });\n    dispatch({\n      type: 'SET_MODALS_OPEN',\n      payload: { ...SmartFormFieldsState.modalsOpen, newField: false }\n    });\n    clearData();\n  };\n\n  const handleSubmit = () => {\n    if (!fieldType || !label) {\n      if (!fieldType) {\n        fieldTypeRef?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n        setErrorField('This field is required');\n      } else {\n        labelRef?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n        setErrorLabel('This field is required');\n      }\n      return;\n    }\n\n    let fieldObject = {\n      title: label,\n      enabled: enabledSwitch,\n      required: requiredSwitch,\n      rateable: rateableSwitch,\n      confidential: confidentialSwitch,\n      field_type: fieldTypeValues[fieldType]\n    };\n\n    if (['Select', 'Rank', 'Checkbox', 'Radio Button'].includes(fieldType)) {\n      choiceList.map((choice, index) => {\n        if (!choice?.name) {\n          choicesRef?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n          setErrorChoices('All field choices must each have a value');\n          return;\n        }\n        choice.position = index;\n        if (choice.id.toString().length == 13) {\n          choice.id = '';\n        }\n      });\n\n      const jsonString = JSON.stringify(Object.assign({}, choiceList));\n      const attributes = JSON.parse(jsonString);\n      fieldObject['field_choices_attributes'] = attributes;\n    } else if (['Availability'].includes(fieldType)) {\n      fieldObject['availability_config_attributes'] = {\n        week_duration: weekDuration.toLowerCase(),\n        week_start_day: DateOptions.indexOf(weekStartDay),\n        heading_1: headingOne,\n        heading_2: headingTwo,\n        allow_break: allowBreak === 'Yes'\n      };\n    }\n\n    CreateEditField.mutate(fieldObject);\n  };\n\n  const CreateEditField = useMutation({\n    mutationFn: (fieldObject) => {\n      if (SmartFormFieldsState.editingQuestion) {\n        dispatch({\n          type: 'SET_ACTION_STATES',\n          payload: {\n            ...SmartFormFieldsState.actionStates,\n            [SmartFormFieldsState.editingQuestion.id]: {\n              enabled: enabledSwitch,\n              required: requiredSwitch,\n              rateable: rateableSwitch,\n              confidential: confidentialSwitch\n            }\n          }\n        });\n        return Api.putQuestion(SmartFormFieldsState.editingQuestion.id, formId, {\n          field: fieldObject\n        });\n      } else {\n        return Api.newField(formId, {\n          field: fieldObject\n        });\n      }\n    },\n    onError: (error: IError) => {\n      dispatch({\n        type: 'SET_ACTION_STATES',\n        payload: { ...SmartFormFieldsState.actionStates }\n      });\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There has been an error ${\n            SmartFormFieldsState.editingQuestion ? 'editing' : 'creating'\n          } the question, ${error.errors.join('. ')}`,\n          state: 'error'\n        }\n      });\n    },\n    onSuccess: () => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `Field has been ${SmartFormFieldsState.editingQuestion ? 'updated' : 'created'}`,\n          state: 'success'\n        }\n      });\n      queryClient.invalidateQueries(['questions'], { exact: true });\n      handleClose();\n    }\n  });\n\n  const handleChoiceInput = (e, index: number) => {\n    const { value } = e.target;\n    updateChoice(value, index);\n  };\n\n  const clearData = () => {\n    setFieldType('');\n    setLabel('');\n    setEnabledSwitch(true);\n    setRequiredSwitch(false);\n    setRateableSwitch(false);\n    setConfidentialSwitch(false);\n    clearChoices();\n    setWeekDuration('Weekly');\n    setWeekStartDay('Sunday');\n    setHeadingOne('');\n    setHeadingTwo('');\n    setAllowBreak('No');\n    setErrorLabel('');\n    setErrorField('');\n    setErrorChoices('');\n  };\n\n  useEffect(() => {\n    setDefaultValue();\n  }, [setDefaultValue, SmartFormFieldsState.editingQuestion]);\n\n  return (\n    <Modal\n      open={SmartFormFieldsState.modalsOpen.newField}\n      onClose={() => handleClose()}\n      aria-labelledby=\"new-field-modal\"\n    >\n      <Box sx={classes.actionsModalReducedPadding}>\n        <Box sx={classes.modalWrapper}>\n          <CloseIcon onClick={() => handleClose()} sx={classes.closeIcon} />\n          <Box id=\"new-field-title\" sx={classes.actionModalHeader}>\n            New field\n          </Box>\n          <Box\n            sx={classes.modalContent}\n            id=\"new-field-modal-content\"\n            aria-label=\"New Field Modal Content\"\n          >\n            <Box role=\"form\" id=\"new-field-form\" aria-label=\"New Field form\">\n              <Box sx={{ ...classes.actionModalFormLine, marginTop: '20px' }} ref={fieldTypeRef}>\n                <Virtualize\n                  value={fieldType}\n                  passOptions={fieldTypeOptions}\n                  setValue={(value: string) => {\n                    setFieldType(value);\n                    setErrorField('');\n                  }}\n                  passedStyles={{\n                    ...sharedClasses.formAutocomplete,\n                    width: '300px',\n                    marginTop: '20px'\n                  }}\n                  label=\"Field type\"\n                />\n                {errorField && <Box sx={{ ...classes.formError, top: '63px' }}>{errorField}</Box>}\n              </Box>\n            </Box>\n            <Box sx={{ marginLeft: '15px' }}>\n              <Box sx={classes.modalFormLine}>\n                <MultilineFormTextField\n                  value={label}\n                  onChange={(e) => {\n                    setErrorLabel('');\n                    setLabel(e.target.value);\n                  }}\n                  styles={{ width: '600px', marginTop: '20px' }}\n                  rows={6}\n                  innerRef={labelRef}\n                  error={errorLabel}\n                  label={'Field label'}\n                />\n              </Box>\n            </Box>\n            <Box sx={classes.checkboxContainer} id=\"enabled-filter\">\n              <FormControlLabel\n                sx={\n                  !enabledSwitch\n                    ? { ...classes.switchLabels, ...classes.labelActive }\n                    : classes.switchLabels\n                }\n                control={\n                  <Switch\n                    sx={enabledSwitch ? classes.switchActive : classes.switch}\n                    checked={enabledSwitch}\n                    onChange={() => setEnabledSwitch(!enabledSwitch)}\n                  />\n                }\n                label=\"Enabled\"\n                labelPlacement=\"end\"\n              />\n              <FormControlLabel\n                sx={\n                  !requiredSwitch\n                    ? { ...classes.switchLabels, ...classes.labelActive }\n                    : classes.switchLabels\n                }\n                control={\n                  <Switch\n                    sx={requiredSwitch ? classes.switchActive : classes.switch}\n                    checked={requiredSwitch}\n                    onChange={() => setRequiredSwitch(!requiredSwitch)}\n                  />\n                }\n                label=\"Required\"\n                labelPlacement=\"end\"\n              />\n              <FormControlLabel\n                sx={\n                  !rateableSwitch\n                    ? { ...classes.switchLabels, ...classes.labelActive }\n                    : classes.switchLabels\n                }\n                control={\n                  <Switch\n                    sx={rateableSwitch ? classes.switchActive : classes.switch}\n                    checked={rateableSwitch}\n                    onChange={() => setRateableSwitch(!rateableSwitch)}\n                  />\n                }\n                label=\"Rateable\"\n                labelPlacement=\"end\"\n              />\n              <FormControlLabel\n                sx={\n                  !confidentialSwitch\n                    ? { ...classes.switchLabels, ...classes.labelActive }\n                    : classes.switchLabels\n                }\n                control={\n                  <Switch\n                    sx={confidentialSwitch ? classes.switchActive : classes.switch}\n                    checked={confidentialSwitch}\n                    onChange={() => setConfidentialSwitch(!confidentialSwitch)}\n                  />\n                }\n                label=\"confidential\"\n                labelPlacement=\"end\"\n              />\n            </Box>\n            {['Select', 'Rank', 'Checkbox', 'Radio Button'].includes(fieldType) && (\n              <Box sx={classes.addChoiceContainer} ref={choicesRef}>\n                <Box sx={classes.addChoiceHead}>\n                  <Box id=\"add-choice-title\" sx={classes.addChoiceLabel}>\n                    Choices\n                  </Box>\n                  <Button\n                    id=\"add-choice-button\"\n                    sx={classes.modalAddChoiceButton}\n                    onClick={addChoice}\n                  >\n                    Add choice\n                  </Button>\n                </Box>\n                <DndContext\n                  sensors={sensors}\n                  collisionDetection={closestCenter}\n                  onDragEnd={handleDragEnd}\n                >\n                  <SortableContext items={choiceList} strategy={verticalListSortingStrategy}>\n                    {choiceList.map(\n                      (choice, index) =>\n                        !(choice?._destroy === 1) && (\n                          <SortableChoice\n                            key={choice.id}\n                            id={choice.id}\n                            choice={choice}\n                            index={index}\n                            handleChoiceInput={handleChoiceInput}\n                            onRemoveChoice={removeChoice}\n                          />\n                        )\n                    )}\n                  </SortableContext>\n                </DndContext>\n                {errorChoices && <Box sx={{ ...classes.inlineError }}>{errorChoices}</Box>}\n              </Box>\n            )}\n            {['Availability'].includes(fieldType) && (\n              <Box sx={classes.availabilityContainer}>\n                <Box id=\"availability-config-title\" sx={classes.addChoiceLabel}>\n                  Availability Config\n                </Box>\n                <Box sx={classes.config}>\n                  <FormSelectField\n                    options={['Weekly', 'Fortnightly']}\n                    defaultValue={weekDuration}\n                    value={weekDuration}\n                    onChange={(value) => setWeekDuration(value)}\n                    label={'How long is your work period?'}\n                    styles={{ width: '290px', marginBottom: '15px' }}\n                    required={true}\n                  />\n                  <FormSelectField\n                    options={DateOptions}\n                    defaultValue={weekStartDay}\n                    value={weekStartDay}\n                    onChange={(value) => {\n                      setWeekStartDay(value);\n                    }}\n                    label={'When does the work period start?'}\n                    styles={{ width: '290px', marginBottom: '15px' }}\n                  />\n                  <FormTextField\n                    label=\"Heading 1\"\n                    value={headingOne}\n                    onChange={(e) => setHeadingOne(e.target.value)}\n                    required={false}\n                    styles={{ width: '290px', marginBottom: '15px' }}\n                  />\n                  <FormTextField\n                    label=\"Heading 2\"\n                    value={headingTwo}\n                    onChange={(e) => setHeadingTwo(e.target.value)}\n                    required={false}\n                    styles={{ width: '290px', marginBottom: '15px' }}\n                  />\n                  <FormSelectField\n                    options={['Yes', 'No']}\n                    defaultValue={allowBreak}\n                    value={allowBreak}\n                    onChange={(value) => setAllowBreak(value)}\n                    label={'Allow break?'}\n                    styles={{ width: '290px', marginBottom: '15px' }}\n                  />\n                </Box>\n              </Box>\n            )}\n            <Box sx={classes.modalFooter}>\n              <Button\n                id=\"close-new-field-button\"\n                sx={classes.modalCancelButton}\n                onClick={() => handleClose()}\n              >\n                Cancel\n              </Button>\n              <Button\n                id=\"submit-new-field-button\"\n                type=\"submit\"\n                sx={{ ...classes.modalCreateButton, width: '91px', height: '41px' }}\n                onClick={handleSubmit}\n              >\n                {CreateEditField.isLoading ? (\n                  <CircularProgress size={20} color=\"inherit\" />\n                ) : (\n                  'Confirm'\n                )}\n              </Button>\n            </Box>\n          </Box>\n        </Box>\n      </Box>\n    </Modal>\n  );\n}\n","import React, { Dispatch, useState } from 'react';\nimport { Box, Button, Stack, Skeleton } from '@mui/material';\nimport { LiveHelp as LiveHelpIcon, Info as InfoIcon } from '@mui/icons-material';\nimport NewSystemFieldSVG from '../../EditJob/Questions/NewSystemFieldSVG';\nimport NoQuestionSVG from '../../EditJob/Questions/NoQuestionSVG';\nimport NewField from './Modals/NewField';\nimport AddSystemField from './Modals/AddSystemField';\nimport ImportFields from './Modals/ImportFields';\nimport { IApplicantQuestion } from '../../Components/Utilities/QuestionFieldViewer';\nimport { classes } from './styles';\nimport {\n  DndContext,\n  closestCenter,\n  KeyboardSensor,\n  useSensor,\n  useSensors,\n  DragEndEvent\n} from '@dnd-kit/core';\nimport {\n  arrayMove,\n  SortableContext,\n  sortableKeyboardCoordinates,\n  verticalListSortingStrategy\n} from '@dnd-kit/sortable';\n\nimport SortableItem from './SortableItem';\nimport { QuestionCardSensor } from '../../EditJob/Questions/QuestionCardSensor';\nimport Api from '../API';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { SmartFormFieldsState, SmartFormFieldsAction } from '../reducer';\nimport { IError, IForm, ModalType } from '../types';\nimport SmartFormModal from '../SmartFormModal';\nimport { OptionToggleGroup } from '../../Components/OptionToggleGroup';\n\nconst toggleButtonOptions = [\n  { value: 'enabledQuestions', label: 'Enabled questions' },\n  { value: 'disabledQuestions', label: 'Disabled questions' }\n];\n\nexport default function Questions({\n  formData,\n  fetchedFormData,\n  SmartFormFieldsState,\n  dispatch,\n  refetchFormData,\n  formId,\n  userPermissions\n}: {\n  formData: IForm;\n  fetchedFormData: boolean;\n  SmartFormFieldsState: SmartFormFieldsState;\n  dispatch: Dispatch<SmartFormFieldsAction>;\n  refetchFormData: () => void;\n  formId: number;\n  userPermissions: Record<string, Record<string, boolean>>;\n}) {\n  const [selected, setSelected] = useState<string>('enabledQuestions');\n  const queryClient = useQueryClient();\n  const sensors = useSensors(\n    useSensor(QuestionCardSensor),\n    useSensor(KeyboardSensor, {\n      coordinateGetter: sortableKeyboardCoordinates\n    })\n  );\n\n  function handleDragEnd(event: DragEndEvent) {\n    const { active, over } = event;\n    if (!questions || !over) return;\n    if (active.id !== over.id) {\n      const originalQuestions = [...questions];\n      const oldIndex = questions.map((question) => question.id).indexOf(Number(active.id));\n      const newIndex = questions.map((question) => question.id).indexOf(Number(over.id));\n      const newArray = arrayMove(questions, oldIndex, newIndex);\n      queryClient.setQueryData(['questions'], newArray);\n      updateQuestions.mutate(newArray, {\n        onError: () => queryClient.setQueryData(['questions'], originalQuestions)\n      });\n    }\n  }\n\n  const updateQuestions = useMutation({\n    mutationFn: (questions: IApplicantQuestion[]) => {\n      const fieldObject: Record<string, { position: number }> = {};\n      questions.map(\n        (question, index) =>\n          (fieldObject[question.id] = {\n            position: index\n          })\n      );\n      return Api.updateQuestions(formId, {\n        fields: fieldObject\n      });\n    },\n    onError: (error: IError) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error saving your changes, ${error.errors.join('. ')}`,\n          state: 'error'\n        }\n      });\n    },\n    onSuccess: () => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: 'Questions have been updated',\n          state: 'success'\n        }\n      });\n    }\n  });\n\n  const { data: questions, isLoading: loadingQuestions } = useQuery({\n    queryKey: ['questions'],\n    queryFn: async () => {\n      const { res } = await Api.getQuestions({\n        entity_id: formData?.entity_id,\n        form_id: formData?.id\n      });\n\n      return res.fields;\n    },\n    onError: (error: IError) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `Failed to fetch questions, ${error.errors.join('. ')}`,\n          state: 'error'\n        }\n      });\n    },\n    onSuccess: (questions: IApplicantQuestion[]) => {\n      const questionsActionStates: {\n        [key: number]: {\n          enabled: boolean;\n          required: boolean;\n          rateable: boolean;\n          confidential: boolean;\n        };\n      } = {};\n      questions.map((question) => {\n        questionsActionStates[question.id] = {\n          enabled: question.enabled,\n          required: question.required,\n          rateable: question.rateable,\n          confidential: question.confidential\n        };\n      });\n      dispatch({ type: 'SET_ACTION_STATES', payload: questionsActionStates });\n    },\n    enabled: fetchedFormData\n  });\n\n  return (\n    <Box sx={classes.questionsPageContainer}>\n      <Box sx={classes.noticeContainer}>\n        <InfoIcon sx={classes.infoIcon} />\n        <Box sx={{ marginLeft: 1 }}>\n          <b>All changes will be automatically saved and applied immediately. </b>\n          All fields that have been answered by a user are not able to be deleted. To remove a\n          field, you will need to disable it and create a new field.\n        </Box>\n      </Box>\n\n      <OptionToggleGroup\n        options={toggleButtonOptions}\n        selected={selected}\n        setSelected={setSelected}\n      />\n\n      <Box sx={classes.actionsContianer}>\n        {loadingQuestions ? (\n          <Skeleton animation=\"wave\" sx={{ marginBottom: '20px' }} width={200} height={56} />\n        ) : (\n          <Stack sx={{ flexDirection: 'row', gap: '22px' }}>\n            {selected === 'enabledQuestions' && (\n              <>\n                <Button\n                  id=\"smart-form-new-field-button\"\n                  variant=\"outlined\"\n                  startIcon={<LiveHelpIcon />}\n                  sx={classes.actionButton}\n                  onClick={() => {\n                    dispatch({\n                      type: 'SET_MODALS_OPEN',\n                      payload: { ...SmartFormFieldsState.modalsOpen, newField: true }\n                    });\n                  }}\n                >\n                  New field\n                </Button>\n                <Button\n                  id=\"smart-form-add-system-field-button\"\n                  variant=\"outlined\"\n                  startIcon={<NewSystemFieldSVG />}\n                  sx={classes.actionButton}\n                  onClick={() => {\n                    dispatch({\n                      type: 'SET_MODALS_OPEN',\n                      payload: { ...SmartFormFieldsState.modalsOpen, addSystemField: true }\n                    });\n                  }}\n                >\n                  Add system field\n                </Button>\n                <Button\n                  id=\"smart-form-add-fields-from-form-button\"\n                  variant=\"outlined\"\n                  startIcon={<NewSystemFieldSVG />}\n                  sx={classes.actionButton}\n                  onClick={() => {\n                    dispatch({\n                      type: 'SET_MODALS_OPEN',\n                      payload: { ...SmartFormFieldsState.modalsOpen, importFields: true }\n                    });\n                  }}\n                >\n                  Import fields\n                </Button>\n              </>\n            )}\n          </Stack>\n        )}\n        <>\n          {loadingQuestions ? (\n            <Skeleton animation=\"wave\" sx={{ marginBottom: '20px' }} width={200} height={56} />\n          ) : (\n            <Stack>\n              <Button\n                id=\"smart-form-settings-button\"\n                sx={classes.settingButton}\n                onClick={() => {\n                  dispatch({\n                    type: 'SET_MODALS_OPEN',\n                    payload: { ...SmartFormFieldsState.modalsOpen, smartFormSettings: true }\n                  });\n                }}\n              >\n                Settings\n              </Button>\n            </Stack>\n          )}\n        </>\n      </Box>\n      {questions && questions.length > 0 && (\n        <Box sx={{ overflow: 'auto' }}>\n          <Box sx={classes.questionsContainer}>\n            <Box sx={classes.questionsHeader}>Questions</Box>\n            <DndContext\n              sensors={sensors}\n              collisionDetection={closestCenter}\n              onDragEnd={handleDragEnd}\n            >\n              <SortableContext items={questions} strategy={verticalListSortingStrategy}>\n                {questions\n                  .filter((el) => (selected === 'enabledQuestions') === el.enabled)\n                  .map(\n                    (question) =>\n                      Object.keys(SmartFormFieldsState.actionStates).length > 0 && (\n                        <SortableItem\n                          question={question}\n                          key={question.id}\n                          formId={formData?.id}\n                          SmartFormFieldsState={SmartFormFieldsState}\n                          dispatch={dispatch}\n                          userPermissions={userPermissions}\n                        />\n                      )\n                  )}\n              </SortableContext>\n            </DndContext>\n          </Box>\n        </Box>\n      )}\n      {!loadingQuestions && questions?.length === 0 && (\n        <Box sx={{ ...classes.noQuestionsContainer, margin: '150px 0px' }}>\n          <NoQuestionSVG />\n          <Box sx={classes.noQuestionsText}>\n            Your smart form is empty. Please add a\n            <br />\n            question from the options above.\n          </Box>\n        </Box>\n      )}\n      {fetchedFormData && (\n        <>\n          <NewField\n            formId={formData?.id}\n            SmartFormFieldsState={SmartFormFieldsState}\n            dispatch={dispatch}\n            userPermissions={userPermissions}\n          />\n          <AddSystemField\n            formId={formData?.id}\n            SmartFormFieldsState={SmartFormFieldsState}\n            dispatch={dispatch}\n          />\n          <ImportFields\n            formId={formData?.id}\n            SmartFormFieldsState={SmartFormFieldsState}\n            dispatch={dispatch}\n          />\n          <SmartFormModal\n            dispatch={dispatch}\n            form={formData}\n            entityId={formData.entity_id}\n            smartFormState={SmartFormFieldsState}\n            refetchForms={refetchFormData}\n            modalType={ModalType.UPDATE}\n          />\n        </>\n      )}\n    </Box>\n  );\n}\n","import React, { useState, Dispatch } from 'react';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { Box, Stack, Switch, IconButton } from '@mui/material';\nimport { CSS } from '@dnd-kit/utilities';\nimport { classes } from './styles';\nimport QuestionFieldViewer from '../../Components/Utilities/QuestionFieldViewer';\nimport {\n  DragIndicator as DragIndicatorIcon,\n  ExpandMore as ExpandMoreIcon,\n  ExpandLess as ExpandLessIcon,\n  Edit as EditIcon,\n  ContentCopy as ContentCopyIcon,\n  Delete as DeleteIcon\n} from '@mui/icons-material';\nimport Api from '../API';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport { IApplicantQuestion } from '../../Components/Utilities/QuestionFieldViewer';\nimport AvailabilityPreview from '../../ApprovalForms/Questions/Modals/AvailabilityPreview';\nimport { useQueryClient, useMutation, UseMutationResult } from '@tanstack/react-query';\nimport { SmartFormFieldsState, SmartFormFieldsAction } from '../reducer';\nimport { IError } from '../types';\nimport AvailabilityFieldQuestion from '../../Components/CustomUIElements/AvailabilityFieldQuestion';\n\ninterface IDialogProps {\n  title: string;\n  description: string;\n  buttonText: string;\n  callback: UseMutationResult<any, IError, void, unknown>;\n}\n\nexport default function SortableItem({\n  question,\n  formId,\n  SmartFormFieldsState,\n  dispatch,\n  userPermissions\n}: {\n  question: IApplicantQuestion;\n  formId: number;\n  SmartFormFieldsState: SmartFormFieldsState;\n  dispatch: Dispatch<SmartFormFieldsAction>;\n  userPermissions: Record<string, Record<string, boolean>>;\n}) {\n  const [showPreview, setShowPreview] = useState<boolean>(false);\n  const [dialogProps, setDialogProps] = useState<IDialogProps | null>(null);\n\n  const queryClient = useQueryClient();\n  const actionStates = SmartFormFieldsState.actionStates;\n\n  const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({\n    id: question.id\n  });\n\n  const style = {\n    transform: CSS.Translate.toString(transform),\n    transition,\n    filter: isDragging ? 'brightness(75%)' : 'brightness(100%)',\n    zIndex: isDragging ? 10 : 1\n  };\n\n  const deleteQuestion = useMutation({\n    mutationFn: () => Api.deleteQuestion(question.id, formId),\n    onError: (error: IError) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: error.errors.join('. '),\n          state: 'error'\n        }\n      });\n      setDialogProps(null);\n    },\n    onSuccess: () => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: 'The field has been deleted',\n          state: 'success'\n        }\n      });\n      setDialogProps(null);\n      queryClient.invalidateQueries(['questions'], { exact: true });\n    }\n  });\n\n  const cloneQuestion = useMutation({\n    mutationFn: () => Api.cloneQuestion(question.id, formId),\n    onError: (error: IError) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: error.errors.join('. '),\n          state: 'error'\n        }\n      });\n      setDialogProps(null);\n    },\n    onSuccess: () => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: 'The field has been cloned',\n          state: 'success'\n        }\n      });\n      setDialogProps(null);\n      queryClient.invalidateQueries(['questions'], { exact: true });\n    }\n  });\n\n  const updateActions = useMutation({\n    mutationFn: (fieldObject: Record<string, boolean>) =>\n      Api.putQuestion(question.id, formId, {\n        field: fieldObject\n      }),\n    onError: (error: IError) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: error.errors.join('. '),\n          state: 'error'\n        }\n      });\n    },\n    onSuccess: () => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: 'The change has been saved',\n          state: 'success'\n        }\n      });\n      queryClient.invalidateQueries(['questions'], { exact: true });\n    }\n  });\n\n  const handleUpdateActions = async (action: keyof typeof question) => {\n    dispatch({\n      type: 'SET_ACTION_STATES',\n      payload: {\n        ...actionStates,\n        [question.id]: {\n          ...actionStates[question.id],\n          [action]: !actionStates[question.id][action]\n        }\n      }\n    });\n    updateActions.mutate(\n      { [action]: !question[action] },\n      {\n        onError: () =>\n          dispatch({\n            type: 'SET_ACTION_STATES',\n            payload: {\n              ...actionStates,\n              [question.id]: {\n                ...actionStates[question.id],\n                [action]: actionStates[question.id][action]\n              }\n            }\n          })\n      }\n    );\n  };\n\n  const handleEditQuestion = (question: IApplicantQuestion) => {\n    dispatch({\n      type: 'SET_EDITING_QUESTION',\n      payload: question\n    });\n    dispatch({\n      type: 'SET_MODALS_OPEN',\n      payload: { ...SmartFormFieldsState.modalsOpen, newField: true }\n    });\n  };\n\n  const handleDeleteQuestion = () => {\n    setDialogProps({\n      title: 'Permanently delete question?',\n      description: 'Are you sure you want to delete this question? This action cannot be undone.',\n      buttonText: 'Delete',\n      callback: deleteQuestion\n    });\n  };\n\n  const handleCloneQuestion = () => {\n    setDialogProps({\n      title: 'Clone question',\n      description: `Are you sure you want to clone this question?`,\n      buttonText: 'Clone',\n      callback: cloneQuestion\n    });\n  };\n\n  return (\n    <Box ref={setNodeRef} style={style}>\n      <Box key={question.id}>\n        {question.type === 'JobReferenceLookupField' ? (\n          <span />\n        ) : (\n          <Box sx={classes.questionsWrapper}>\n            <Box sx={{ display: 'flex' }}>\n              <DragIndicatorIcon\n                sx={{ cursor: isDragging ? 'grabbing' : 'pointer', ...classes.dragHandle }}\n                {...listeners}\n                {...attributes}\n              />\n              <Box sx={{ marginRight: 'auto', ...classes.questionInput }}>\n                <Box sx={{ height: '6px' }}></Box>\n                <Box sx={{ ...classes.modalFormLine, position: 'relative' }}>\n                  <QuestionFieldViewer question={question} draggable={true} />\n                </Box>\n              </Box>\n              <Box\n                sx={{\n                  ...classes.sortableItemSwitchContainer,\n                  fontWeight: SmartFormFieldsState.actionStates[question.id]?.enabled ? 'bold' : ''\n                }}\n              >\n                <Box sx={{ marginTop: '12px' }}>\n                  <Switch\n                    sx={\n                      SmartFormFieldsState.actionStates[question.id].enabled\n                        ? classes.switchActive\n                        : classes.switch\n                    }\n                    checked={SmartFormFieldsState.actionStates[question.id].enabled}\n                    onChange={() => handleUpdateActions('enabled')}\n                  />\n                  <Stack sx={{ marginTop: 1, fontSize: '12px' }}>Enabled</Stack>\n                </Box>\n              </Box>\n              <Box\n                sx={{\n                  ...classes.sortableItemSwitchContainer,\n                  fontWeight: SmartFormFieldsState.actionStates[question.id].required ? 'bold' : ''\n                }}\n              >\n                <Box sx={{ marginTop: '12px' }}>\n                  <Switch\n                    sx={\n                      SmartFormFieldsState.actionStates[question.id].required\n                        ? classes.switchActive\n                        : classes.switch\n                    }\n                    checked={SmartFormFieldsState.actionStates[question.id].required}\n                    onChange={() => handleUpdateActions('required')}\n                    disabled={!question.editable}\n                  />\n                  <Stack sx={{ marginTop: 1, fontSize: '12px' }}>Required</Stack>\n                </Box>\n              </Box>\n              <Box\n                sx={{\n                  ...classes.sortableItemSwitchContainer,\n                  fontWeight: SmartFormFieldsState.actionStates[question.id].rateable ? 'bold' : ''\n                }}\n              >\n                <Box sx={{ marginTop: '12px' }}>\n                  <Switch\n                    sx={\n                      SmartFormFieldsState.actionStates[question.id].rateable\n                        ? classes.switchActive\n                        : classes.switch\n                    }\n                    checked={SmartFormFieldsState.actionStates[question.id].rateable}\n                    onChange={() => handleUpdateActions('rateable')}\n                    disabled={!question.editable}\n                  />\n                  <Stack sx={{ marginTop: 1, fontSize: '12px' }}>Rateable</Stack>\n                </Box>\n              </Box>\n              <Box\n                sx={{\n                  ...classes.sortableItemSwitchContainer,\n                  fontWeight: SmartFormFieldsState.actionStates[question.id].confidential\n                    ? 'bold'\n                    : ''\n                }}\n              >\n                <Box sx={{ marginTop: '12px' }}>\n                  <Switch\n                    sx={\n                      SmartFormFieldsState.actionStates[question.id].confidential\n                        ? classes.switchActive\n                        : classes.switch\n                    }\n                    checked={SmartFormFieldsState.actionStates[question.id].confidential}\n                    onChange={() => handleUpdateActions('confidential')}\n                    disabled={!question.editable}\n                  />\n                  <Stack sx={{ marginTop: 1, fontSize: '12px' }}>Confidential</Stack>\n                </Box>\n              </Box>\n              <Box sx={{ padding: '0 6px', minWidth: '120px' }}>\n                <Box\n                  sx={{\n                    display: 'flex',\n                    justifyContent: 'flex-end',\n                    alignItems: 'flex-start',\n                    marginTop: '-8px'\n                  }}\n                >\n                  {question.editable && !question.answered && (\n                    <IconButton\n                      id={`${question.title}-edit-button`}\n                      onClick={() => handleEditQuestion(question)}\n                    >\n                      <EditIcon sx={{ fontSize: 16 }} />\n                    </IconButton>\n                  )}\n                  {question.editable && (\n                    <IconButton id={`${question.title}-clone-button`} onClick={handleCloneQuestion}>\n                      <ContentCopyIcon sx={{ fontSize: 16 }} />\n                    </IconButton>\n                  )}\n                  {question.deletable && (\n                    <IconButton\n                      id={`${question.title}-delete-button`}\n                      onClick={handleDeleteQuestion}\n                    >\n                      <DeleteIcon sx={{ color: '#E37D7A', fontSize: 16 }} />\n                    </IconButton>\n                  )}\n                </Box>\n              </Box>\n            </Box>\n            {question.type === 'AvailabilityField' && (\n              <AvailabilityFieldQuestion question={question} />\n            )}\n            {SmartFormFieldsState.actionStates[question.id].confidential && (\n              <Box sx={{ padding: '0 6px', color: '#838383', fontSize: '12px' }}>\n                <span style={{ fontWeight: 'bold' }}>Confidential Setting Enabled:</span> For DE&I\n                compliance, only authorised users (HR Admins), can view responses. Hiring Managers\n                will not have access.\n              </Box>\n            )}\n          </Box>\n        )}\n      </Box>\n      {dialogProps && (\n        <GenericDialog\n          url={''}\n          title={dialogProps.title}\n          description={dialogProps.description}\n          buttonText={dialogProps.buttonText}\n          buttonCallback={() => dialogProps.callback.mutate()}\n          callbackLoading={deleteQuestion.isLoading || cloneQuestion.isLoading}\n          isDialogOpen={Boolean(dialogProps)}\n          setDialogOpen={() => setDialogProps(null)}\n          dialogId={question.id}\n        />\n      )}\n    </Box>\n  );\n}\n","import React, { Dispatch, SetStateAction, useState } from 'react';\nimport { Box, Button, Stack, TextField } from '@mui/material';\nimport Api from '../../ApprovalForms/API';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\n\nexport default function ListItem({\n  manager,\n  setManager,\n  setOpenManager\n}: {\n  manager?: { id: number; name: string; email: string } | null;\n  setManager: Dispatch<SetStateAction<{ id: number; name: string; email: string } | null>>;\n  setOpenManager: Dispatch<SetStateAction<boolean>>;\n}) {\n  const queryClient = useQueryClient();\n  const [editName, setEditName] = useState<boolean>(false);\n  const [editEmail, setEditEmail] = useState<boolean>(false);\n  const [name, setName] = useState<string>(manager?.name || '');\n  const [email, setEmail] = useState<string>(manager?.email || '');\n  const approvalManagerId = manager?.id;\n\n  const {\n    status: createStatus,\n    error: createError,\n    mutate: addManager\n  } = useMutation({\n    mutationFn: () =>\n      Api.createApprovalManager(\n        { requisition_manager: { name: name, email: email } }\n      ),\n    onSuccess: () => {\n      queryClient.invalidateQueries(['managers'], { exact: true });\n      setOpenManager(false);\n      setManager(null);\n    }\n  });\n\n  const {\n    status: editStatus,\n    error: editError,\n    mutate: editManager\n  } = useMutation({\n    mutationFn: () =>\n      Api.updateApprovalManager(\n        { requisition_manager: { name: name, email: email } },\n        approvalManagerId\n      ),\n    onSuccess: (e) => {\n      queryClient.invalidateQueries(['managers'], { exact: true });\n      setOpenManager(false);\n      setManager(null);\n    }\n  });\n\n  return (\n    <Box>\n      <Button\n        onClick={() => {\n          setOpenManager(false);\n          setManager(null);\n        }}\n      >\n        Back to list\n      </Button>\n      {manager && <Stack>id: {manager.id}</Stack>}\n      <Stack flexDirection=\"row\" sx={{ padding: '16px 0px' }}>\n        <TextField\n          value={name}\n          disabled={manager ? !editName : false}\n          label=\"Name\"\n          onChange={(e) => setName(e.target.value)}\n        />\n        {manager && <Button onClick={() => setEditName(!editName)}>Edit Name</Button>}\n      </Stack>\n      <Stack flexDirection=\"row\" sx={{ padding: '16px 0px' }}>\n        <TextField\n          value={email}\n          disabled={manager ? !editEmail : false}\n          label=\"Email\"\n          onChange={(e) => setEmail(e.target.value)}\n        />\n        {manager && <Button onClick={() => setEditEmail(!editEmail)}>Edit Email</Button>}\n      </Stack>\n      <Button onClick={() => (manager ? editManager() : addManager())}>\n        {manager ? 'Save' : 'Add'}\n      </Button>\n    </Box>\n  );\n}\n","import React, { useState } from 'react';\nimport { Box, Button, Stack, Typography } from '@mui/material';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../ApprovalForms/API';\nimport ListItem from './ListItem';\n\nexport default function SampleList({ apiKey }: { apiKey: string }) {\n  const [openManager, setOpenManager] = useState<boolean>(false);\n  const [manager, setManager] = useState<{ id: number; name: string; email: string } | null>(null);\n  const queryClient = useQueryClient();\n\n  const managers = useQuery({\n    queryKey: ['managers'], // this key has to be unique to each query for caching purposes\n    queryFn: () => Api.getApprovalManagers({ override_limit: true, limit: 100 })\n    // cacheTime: 10 * 60 * 1000    <--- set cache time for 10 minutes, otherwise, by default it's 5 minutes\n  });\n\n  // You can call the properties inside the managers directly such as managers.isLoading, managers.error, managers.data\n  // or you can deconstruct it and give it a name like below\n\n  const {\n    status: deleteStatus, // can be used to display loading state\n    error: deleteError, // can be used to display snackbar and error message\n    mutate: deleteManager\n  } = useMutation({\n    mutationFn: (id: number) => Api.deleteApprovalManager(id),\n    onSuccess: () => {\n      // can be used for chaining. think of it as similar to '.then'\n      queryClient.invalidateQueries(['managers'], { exact: true }); // remove cached data and initiate refetch for the managers query\n    }\n  });\n\n  // when to use useQuery and useMutation?\n  //\n  // UseQuery is used to query async data, useMutation is used to mutate it.\n  // useQuery is declarative, useMutation is imperative.\n  // meaning useQuery runs when component is in focus, or is mounted;\n  // whereas useMutation has to be 'invoked'.\n  // or in CRUD:\n  //\n  // Read: useQuery\n  // Create/Update/Delete: useMutation\n\n  if (managers.error) return <Stack>render snackbar error message</Stack>;\n\n  return (\n    <Box>\n      <Stack sx={{ paddingBottom: 2 }}>\n        <Typography variant=\"h3\">Smart Forms New UI Page</Typography>\n      </Stack>\n      <Box>\n        {openManager ? (\n          <ListItem manager={manager} setOpenManager={setOpenManager} setManager={setManager} />\n        ) : (\n          <>\n            {managers.isLoading ? (\n              <Stack>Loading...</Stack>\n            ) : (\n              <Stack>\n                {managers.data.res.requisition_managers.map((e) => (\n                  <Stack\n                    key={e.id}\n                    sx={{ padding: 1, width: '250px' }}\n                    flexDirection=\"row\"\n                    justifyContent=\"space-between\"\n                  >\n                    <Typography\n                      onClick={() => {\n                        setManager(e);\n                        setOpenManager(true);\n                      }}\n                      sx={{ '&:hover': { cursor: 'pointer' } }}\n                    >\n                      {e.name}\n                    </Typography>\n                    <Button color=\"error\" onClick={() => deleteManager(e.id)}>\n                      Delete\n                    </Button>\n                  </Stack>\n                ))}\n              </Stack>\n            )}\n            <Button variant=\"outlined\" onClick={() => setOpenManager(true)}>\n              Add Manager\n            </Button>\n          </>\n        )}\n      </Box>\n    </Box>\n  );\n}\n","import React, { useState } from 'react';\nimport { Box, FormControl, OutlinedInput, InputAdornment } from '@mui/material';\nimport { Search as SearchIcon } from '@mui/icons-material';\nimport { styles } from './styles';\nimport { useDebouncedCallback } from 'use-debounce';\n\nexport default function Search({\n  idLabel,\n  placeholder,\n  setSearch\n}: {\n  idLabel: string;\n  placeholder: string;\n  setSearch: (query: string) => void;\n}) {\n  const [tempSearch, setTempSearch] = useState('');\n  const debouncedAPICall = useDebouncedCallback((searchQuery) => {\n    setSearch(searchQuery);\n  }, 600);\n\n  const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    setTempSearch(event.target.value);\n    debouncedAPICall(event.target.value);\n  };\n\n  return (\n    <Box sx={{ width: '100%' }}>\n      <FormControl fullWidth>\n        <OutlinedInput\n          id={`${idLabel}-search`}\n          sx={styles.searchInput}\n          placeholder={placeholder}\n          value={tempSearch}\n          onChange={handleChange}\n          startAdornment={\n            <InputAdornment sx={{ padding: '0px 0px 0px 14px' }} position=\"start\">\n              <SearchIcon />\n            </InputAdornment>\n          }\n        />\n      </FormControl>\n    </Box>\n  );\n}\n","import React, { useEffect, useState, useRef, useReducer } from 'react';\nimport { Box, Typography, Tabs, Tab, Stack, IconButton, Skeleton } from '@mui/material';\nimport { ArrowCircleLeft as ArrowCircleLeftIcon } from '@mui/icons-material';\nimport { styles } from './styles';\nimport { IError } from './types';\nimport Questions from './Questions/Questions';\nimport { useQuery } from '@tanstack/react-query';\nimport { InitialSmartFormFieldsState, SmartFormFieldsReducer } from './reducer';\nimport StyledSnackbar from '../Components/CustomUIElements/StyledSnackbar';\nimport Api from './API';\n\nexport default function SmartFormFields({\n  formId,\n  userPermissions\n}: {\n  formId: number;\n  userPermissions: Record<string, Record<string, boolean>>;\n}) {\n  const [indicatorWidth, setIndicatorWidth] = useState(0);\n  const [SmartFormFieldsState, dispatch] = useReducer(\n    SmartFormFieldsReducer,\n    InitialSmartFormFieldsState\n  );\n\n  const headerRefs = useRef<HTMLDivElement>(null);\n\n  const {\n    data: formData,\n    isLoading: loadingFormData,\n    refetch: refetchFormData,\n    isFetched: fetchedFormData\n  } = useQuery({\n    queryKey: ['formData'],\n    queryFn: async () => {\n      const { res } = await Api.getSmartForm(formId);\n      return res;\n    },\n    onError: (error: IError) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting form data, ${error.errors.join('. ')}`,\n          state: 'error'\n        }\n      })\n  });\n\n  useEffect(() => {\n    headerRefs.current && setIndicatorWidth(headerRefs?.current.clientWidth - 32);\n  }, []);\n\n  return (\n    <Box sx={styles.smartFormsPageContainer}>\n      <Box sx={styles.smartFormsPageHeader}>\n        {loadingFormData ? (\n          <Skeleton animation=\"wave\" sx={{ marginBottom: '20px' }} width={200} height={56} />\n        ) : (\n          <Typography variant=\"h1\">{formData?.name}</Typography>\n        )}\n      </Box>\n      <Box sx={styles.tabsContainer}>\n        <Tabs\n          value={0}\n          aria-label=\"Smart Forms\"\n          sx={{\n            ...styles.tabs,\n            '& .MuiTabs-indicator': { ...styles.tabIndicator, maxWidth: indicatorWidth + 'px' }\n          }}\n        >\n          <Tab ref={headerRefs} label=\"Add/Edit Fields\" disableRipple />\n        </Tabs>\n      </Box>\n      <Box sx={styles.backToApprovalFormsButton}>\n        <Stack\n          id=\"smart-form-fields-back-button\"\n          flexDirection=\"row\"\n          alignItems=\"center\"\n          onClick={() => {\n            window.location.href = '/admin/forms';\n          }}\n        >\n          <IconButton sx={styles.iconGrey}>\n            <ArrowCircleLeftIcon />\n          </IconButton>\n          <Box>Back to smart forms</Box>\n        </Stack>\n      </Box>\n      <Box>\n        <Questions\n          formData={formData}\n          fetchedFormData={fetchedFormData}\n          SmartFormFieldsState={SmartFormFieldsState}\n          dispatch={dispatch}\n          refetchFormData={refetchFormData}\n          formId={formId}\n          userPermissions={userPermissions}\n        />\n      </Box>\n      <StyledSnackbar\n        message={SmartFormFieldsState.snackbar.message}\n        state={SmartFormFieldsState.snackbar.state}\n        setSnackbarState={() =>\n          dispatch({ type: 'SET_SNACKBAR', payload: { message: '', state: 'success' } })\n        }\n      />\n    </Box>\n  );\n}\n","import React, { Dispatch, FC, useMemo, useState } from 'react';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { sharedClasses } from '../Components/CustomUIElements/sharedClasses';\nimport { classes } from '../ApprovalForms/NewApprovalPublicLink/styles';\nimport { DebouncedFormTextField } from '../Components/CustomUIElements/FormTextField';\nimport {\n  Box,\n  FormControlLabel,\n  Switch,\n  Modal,\n  Button,\n  CircularProgress,\n  TextField,\n  Autocomplete\n} from '@mui/material';\nimport { classes as switchStyles } from '../Jobs/Dropdowns/useStyles';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport {\n  SmartFormFieldsAction,\n  SmartFormFieldsState,\n  SmartFormsAction,\n  SmartFormsState\n} from './reducer';\nimport { styles } from './styles';\nimport { IEntity, IForm, ModalType } from './types';\nimport Api from './API';\n\ninterface SmartFormModal {\n  dispatch: Dispatch<SmartFormsAction> | Dispatch<SmartFormFieldsAction>;\n  limit?: number;\n  form?: IForm;\n  entityId: number;\n  smartFormState: SmartFormsState | SmartFormFieldsState;\n  refetchForms: () => void;\n  modalType: ModalType;\n}\n\nconst SmartFormModal: FC<SmartFormModal> = ({\n  dispatch,\n  limit,\n  form,\n  entityId,\n  smartFormState,\n  refetchForms,\n  modalType\n}) => {\n  const [enabled, setEnabled] = useState<boolean>(\n    form?.enabled || smartFormState.selectedForm?.enabled || modalType === ModalType.CREATE\n  );\n  const [name, setName] = useState<string>(form?.name || smartFormState.selectedForm?.title || '');\n  const [selectedEntity, setSelectedEntity] = useState<number>(() =>\n    modalType === ModalType.CLONE ? smartFormState.selectedForm?.entity_id : entityId\n  );\n  const [selectedForm, setSelectedForm] = useState<number | null>(null);\n\n  const modalState = useMemo(() => {\n    const closeModal = () => {\n      dispatch({\n        type: 'SET_MODAL_OPEN',\n        payload: null\n      });\n      dispatch({ type: 'SET_SELECTED_FORM', payload: null });\n    };\n\n    switch (modalType) {\n      case ModalType.UPDATE:\n        return {\n          heading: 'Settings',\n          actionButtonLabel: 'Confirm',\n          showModal: (smartFormState as SmartFormFieldsState).modalsOpen?.smartFormSettings,\n          handleClose: () =>\n            dispatch({\n              type: 'SET_MODALS_OPEN',\n              payload: { ...smartFormState.modalsOpen, smartFormSettings: false }\n            })\n        };\n      case ModalType.CREATE:\n        return {\n          heading: 'New smart form',\n          actionButtonLabel: 'Create',\n          showModal: (smartFormState as SmartFormsState).showSmartFormModal === ModalType.CREATE,\n          handleClose: closeModal\n        };\n      case ModalType.CLONE:\n        return {\n          heading: 'Clone smart form',\n          actionButtonLabel: 'Clone',\n          showModal: (smartFormState as SmartFormsState).showSmartFormModal === ModalType.CLONE,\n          handleClose: closeModal\n        };\n      case ModalType.CLONE_WITHOUT_FORM:\n        return {\n          heading: 'Clone smart form',\n          actionButtonLabel: 'Clone',\n          showModal:\n            (smartFormState as SmartFormsState).showSmartFormModal === ModalType.CLONE_WITHOUT_FORM,\n          handleClose: closeModal\n        };\n    }\n  }, [modalType, smartFormState, dispatch]);\n\n  const { actionButtonLabel, handleClose, heading, showModal } = modalState;\n\n  const { data: entities, isFetching: fetchingEntities } = useQuery({\n    queryKey: ['entities'],\n    queryFn: async () => {\n      const { res } = await Api.getTargetEntities();\n      return res.entities;\n    },\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error loading entities, ${error}`,\n          state: 'error'\n        }\n      }),\n    initialData: []\n  });\n\n  const { data: forms, isFetching: fetchingForms } = useQuery({\n    queryKey: ['all forms'],\n    queryFn: async () => {\n      const { res } = await Api.getSmartForms({ limit: limit, override_limit: true });\n      return res.smart_forms;\n    },\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error loading smart forms, ${error}`,\n          state: 'error'\n        }\n      }),\n    initialData: []\n  });\n\n  const { mutate: createUpdateSmartForm, isLoading: isCreating } = useMutation({\n    mutationFn: async (): Promise<void> => {\n      const body = {\n        name: name,\n        entity_id: selectedEntity,\n        enabled: enabled\n      };\n\n      if (modalType === ModalType.CLONE || modalType === ModalType.CLONE_WITHOUT_FORM) {\n        return await Api.cloneForm(form?.id || smartFormState?.selectedForm?.id || selectedForm, {\n          form: body\n        });\n      }\n\n      if (!form) {\n        return await Api.postSmartForm({ form: body });\n      }\n\n      if (modalType === ModalType.UPDATE) {\n        await Api.updateSmartForm(form.id, { form: body });\n      }\n    },\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error ${modalType.substring(\n            0,\n            modalType.length - 1\n          )}ing the smart form, ${error}`,\n          state: 'error'\n        }\n      }),\n    onSuccess: (data) => {\n      if (modalType !== 'update') {\n        window.location.href = data.res.redirect_url;\n      }\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `Smart form was successfully ${\n            modalType === ModalType.CLONE_WITHOUT_FORM ? 'clone' : modalType\n          }d`,\n          state: 'success'\n        }\n      });\n      refetchForms();\n    },\n    onSettled: async () => form && handleClose()\n  });\n\n  return (\n    <>\n      {showModal && (\n        <Modal open={showModal} onClose={handleClose} aria-labelledby=\"smart-form-modal\">\n          <Box\n            sx={{\n              ...classes.actionsModal,\n              maxHeight: modalType === ModalType.CLONE_WITHOUT_FORM ? '555px' : '425px',\n              width: '697px'\n            }}\n          >\n            <Box sx={{ padding: '12px 0px 30px 0px' }}>\n              <Box id=\"smart-form-modal-title\" sx={classes.modalHeader}>\n                {heading}\n              </Box>\n            </Box>\n            <Box sx={{ marginTop: '1.75rem' }}>\n              <Box sx={{ ...classes.modalFormLine }}>\n                {modalType === ModalType.CLONE_WITHOUT_FORM && (\n                  <Autocomplete\n                    filterSelectedOptions\n                    disablePortal\n                    autoHighlight\n                    includeInputInList\n                    options={forms}\n                    getOptionLabel={(option) => {\n                      if (typeof option === 'string') {\n                        return option;\n                      }\n                      return option.name ?? '';\n                    }}\n                    renderOption={(props, option, index) => {\n                      const key = `listItem-${index}-${option.id}`;\n                      return (\n                        <li {...props} key={key}>\n                          {option?.name}\n                        </li>\n                      );\n                    }}\n                    loading={fetchingForms}\n                    loadingText={fetchingForms ? 'Loading forms...' : 'No Smart Forms'}\n                    value={forms.find((form: IForm) => form.id === selectedForm) || null}\n                    onChange={(_event, newValue) => {\n                      if (newValue) {\n                        setSelectedForm(newValue.id);\n                        setName(newValue.name);\n                      } else {\n                        setSelectedForm(0);\n                      }\n                    }}\n                    sx={{ ...sharedClasses.formAutocomplete, width: '100%', marginBottom: '30px' }}\n                    ListboxProps={{\n                      style: {\n                        fontFamily: 'Source Sans Pro, sans-serif',\n                        color: '#333333',\n                        maxHeight: '200px'\n                      }\n                    }}\n                    renderInput={(params) => (\n                      <TextField\n                        {...params}\n                        label=\"Select a smart form\"\n                        InputLabelProps={{ shrink: true }}\n                        InputProps={{\n                          ...params.InputProps,\n                          endAdornment: (\n                            <React.Fragment>\n                              {fetchingForms ? (\n                                <CircularProgress color=\"inherit\" size={20} />\n                              ) : null}\n                              {params.InputProps.endAdornment}\n                            </React.Fragment>\n                          )\n                        }}\n                      />\n                    )}\n                  />\n                )}\n                <Autocomplete\n                  filterSelectedOptions\n                  disablePortal\n                  autoHighlight\n                  includeInputInList\n                  options={entities}\n                  getOptionLabel={(option) => {\n                    if (typeof option === 'string') {\n                      return option;\n                    }\n                    return option.name ?? '';\n                  }}\n                  renderOption={(props, option, index) => {\n                    const key = `listItem-${index}-${option.id}`;\n                    return (\n                      <li {...props} key={key}>\n                        {option?.name}\n                      </li>\n                    );\n                  }}\n                  loading={fetchingEntities}\n                  loadingText={fetchingEntities ? 'Loading entities...' : 'No Entities'}\n                  value={entities.find((entity: IEntity) => entity.id === selectedEntity) || null}\n                  onChange={(_event, newValue) => {\n                    if (newValue) {\n                      setSelectedEntity(newValue.id);\n                    } else {\n                      setSelectedEntity(0);\n                    }\n                  }}\n                  sx={{ ...sharedClasses.formAutocomplete, width: '100%' }}\n                  ListboxProps={{\n                    style: {\n                      fontFamily: 'Source Sans Pro, sans-serif',\n                      color: '#333333',\n                      maxHeight: '200px'\n                    }\n                  }}\n                  renderInput={(params) => (\n                    <TextField\n                      {...params}\n                      label={\n                        modalType === ModalType.CLONE_WITHOUT_FORM ? 'Entity' : 'Select an entity'\n                      }\n                      InputLabelProps={{ shrink: true }}\n                      InputProps={{\n                        ...params.InputProps,\n                        endAdornment: (\n                          <React.Fragment>\n                            {fetchingEntities ? (\n                              <CircularProgress color=\"inherit\" size={20} />\n                            ) : null}\n                            {params.InputProps.endAdornment}\n                          </React.Fragment>\n                        )\n                      }}\n                    />\n                  )}\n                />\n              </Box>\n              <Box\n                sx={{\n                  ...classes.modalFormLine,\n                  marginBottom: '40px !important'\n                }}\n              >\n                <DebouncedFormTextField\n                  onDebouncedChange={(value: string) => {\n                    setName(value);\n                  }}\n                  fullWidth\n                  label=\"Name\"\n                  defaultValue={name}\n                  required\n                  styles={styles.textField}\n                />\n              </Box>\n\n              <FormControlLabel\n                sx={{\n                  ...styles.defaultSwitch,\n                  '& .MuiFormControlLabel-label': enabled\n                    ? styles.defaultSwitch['& .MuiFormControlLabel-label']\n                    : {\n                        ...styles.defaultSwitch['& .MuiFormControlLabel-label'],\n                        ...switchStyles.labelActive['& .MuiFormControlLabel-label']\n                      }\n                }}\n                control={\n                  <Switch\n                    sx={enabled ? switchStyles.switchActive : switchStyles.switch}\n                    checked={enabled}\n                    onChange={() => setEnabled(!enabled)}\n                  />\n                }\n                label=\"Enabled\"\n                labelPlacement=\"end\"\n              />\n            </Box>\n            <CloseIcon\n              id=\"smart-form-modal-close-button\"\n              onClick={handleClose}\n              sx={classes.closeIcon}\n            />\n            <Box sx={classes.modalActions}>\n              <Button\n                id=\"smart-form-modal-cancel-button\"\n                disableElevation\n                sx={{ ...classes.buttonRedLight }}\n                variant=\"text\"\n                onClick={handleClose}\n              >\n                Cancel\n              </Button>\n              <Button\n                type=\"submit\"\n                sx={{ ...classes.modalEditButton, minWidth: 90 }}\n                disabled={!name.length || !selectedEntity || isCreating}\n                onClick={() => createUpdateSmartForm()}\n              >\n                {isCreating ? <CircularProgress size={20} color=\"inherit\" /> : actionButtonLabel}\n              </Button>\n            </Box>\n          </Box>\n        </Modal>\n      )}\n    </>\n  );\n};\n\nexport default SmartFormModal;\n","import React, { useRef, useState, useEffect, useReducer } from 'react';\nimport { Box, Button, IconButton, Skeleton, Stack, Tab, Tabs, Typography } from '@mui/material';\nimport { ArrowCircleLeft as ArrowCircleLeftIcon } from '@mui/icons-material';\nimport { styles } from './styles';\nimport { classes } from '../SmartForms/Questions/styles';\nimport Api from './API';\nimport { useQuery } from '@tanstack/react-query';\nimport StyledSnackbar from '../Components/CustomUIElements/StyledSnackbar';\nimport { InitialSmartFormsState, SmartFormsReducer } from './reducer';\nimport QuestionFieldGenerator from '../Components/Utilities/QuestionFieldGenerator';\nimport { IError } from './types';\n\nexport default function SmartFormPreview({ formId }: { formId: number }) {\n  const [indicatorWidth, setIndicatorWidth] = useState(0);\n  const [SmartFormsState, dispatch] = useReducer(SmartFormsReducer, InitialSmartFormsState);\n  const headerRef = useRef<HTMLDivElement>(null);\n\n  const { data: smartForm, isLoading: loadingSmartForm } = useQuery({\n    queryKey: ['smartForm'],\n    queryFn: async () => {\n      const { res } = await Api.getSmartForm(formId);\n      return res;\n    },\n    onError: (error: IError) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error fetching smart form data, ${error.errors.join('. ')}`,\n          state: 'error'\n        }\n      })\n  });\n\n  const navigateToEditSmartform = () => {\n    window.location.href = `/admin/forms/${formId}/fields`;\n  };\n\n  useEffect(() => {\n    if (!headerRef.current) return;\n    setIndicatorWidth(headerRef.current.clientWidth);\n  }, []);\n\n  return (\n    <Box sx={styles.smartFormsPageContainer}>\n      {loadingSmartForm ? (\n        <Skeleton animation=\"wave\" sx={{ marginBottom: '20px' }} width={200} height={56} />\n      ) : (\n        <Box sx={{ ...styles.smartFormsPageHeader, marginBottom: 3 }}>\n          <Typography variant=\"h1\">{smartForm.name}</Typography>\n        </Box>\n      )}\n      <Box sx={{ ...styles.tabsContainer, padding: '0px 16px' }}>\n        <Tabs\n          value={0}\n          variant=\"scrollable\"\n          scrollButtons={false}\n          aria-label=\"Approvals\"\n          sx={{\n            ...styles.tabs,\n            '& .MuiTabs-indicator': { backgroundColor: '#5BC4BF', maxWidth: indicatorWidth + 'px' }\n          }}\n        >\n          <Tab ref={headerRef} label=\"Smart form preview\" sx={{ padding: 0 }} disableRipple />\n        </Tabs>\n      </Box>\n      <Box sx={{ ...styles.backToApprovalFormsButton, padding: '0px 16px' }}>\n        <Stack flexDirection=\"row\" alignItems=\"center\" justifyContent=\"space-between\" width=\"100%\">\n          <Stack\n            id=\"smart-form-preview-back-button\"\n            flexDirection=\"row\"\n            alignItems=\"center\"\n            onClick={() => {\n              window.location.href = '/admin/forms';\n            }}\n          >\n            <IconButton sx={{ ...styles.iconGrey, paddingLeft: 0 }}>\n              <ArrowCircleLeftIcon />\n            </IconButton>\n            <Box>Back to smart forms</Box>\n          </Stack>\n          <Stack>\n            <Button\n              id=\"edit-smart-form\"\n              sx={classes.settingButton}\n              onClick={navigateToEditSmartform}\n            >\n              Edit form\n            </Button>\n          </Stack>\n        </Stack>\n      </Box>\n      {loadingSmartForm ? (\n        <Skeleton animation=\"wave\" sx={{ marginBottom: '20px' }} width={200} height={56} />\n      ) : (\n        <>\n          {smartForm.fields\n            .filter((question) => question.enabled)\n            .map((question) => (\n              <Box sx={{ padding: '12px 16px' }} key={question.id}>\n                <QuestionFieldGenerator disabled question={question} />\n              </Box>\n            ))}\n        </>\n      )}\n      <StyledSnackbar\n        message={SmartFormsState.snackbar.message}\n        state={SmartFormsState.snackbar.state}\n        setSnackbarState={() => {\n          dispatch({ type: 'SET_SNACKBAR', payload: { message: '', state: 'success' } });\n        }}\n      />\n    </Box>\n  );\n}\n","import React from 'react';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport SmartFormPreview from './SmartFormPreview';\n\nconst queryClient = new QueryClient({\n  defaultOptions: {\n    queries: {\n      refetchOnWindowFocus: false\n    }\n  }\n});\n\nexport default function SmartFormPreviewPage({ formId }: { formId: number }) {\n  return (\n    <QueryClientProvider client={queryClient}>\n      <SmartFormPreview formId={formId} />\n    </QueryClientProvider>\n  );\n}\n","import React, { useReducer, Fragment, useState } from 'react';\nimport { Box, Typography, Divider, Popover } from '@mui/material';\nimport { styles } from './styles';\nimport { useQuery, useMutation } from '@tanstack/react-query';\nimport SmartFormsTable from './SmartFormsTable';\nimport StyledSnackbar from '../Components/CustomUIElements/StyledSnackbar';\nimport Api from './API';\nimport { InitialSmartFormsState, SmartFormsReducer, SmartFormsState } from './reducer';\nimport Search from './Search';\nimport SmartFormModal from './SmartFormModal';\nimport { ModalType } from './types';\nimport CreateButton from '../Components/Buttons/CreateButton';\nimport { clearPreferenceCache } from '../helpers/uiPreferencesHelpers';\n\nexport default function SmartForms({ entityId }: { entityId: number }) {\n  const [SmartFormsState, dispatch] = useReducer(SmartFormsReducer, InitialSmartFormsState);\n  const [actionsAnchorEl, setActionsAnchorEl] = useState<HTMLDivElement | null>(null);\n  const modalType = (SmartFormsState as SmartFormsState).showSmartFormModal;\n\n  const { isFetched: fetchedPreferences } = useQuery({\n    queryKey: ['preferences'],\n    queryFn: () => Api.getPreferences(),\n    onSuccess: (pref) => {\n      dispatch({ type: 'SET_ROWS_PER_PAGE', payload: pref.res.ui_preferences[0]?.row_count || 10 });\n      dispatch({\n        type: 'SET_SORT_BY',\n        payload: pref.res.ui_preferences[0]?.sorting?.sortBy || 'name'\n      });\n      dispatch({\n        type: 'SET_SORT_ORDER',\n        payload: pref.res.ui_preferences[0]?.sorting?.sortOrder?.toLowerCase() || 'asc'\n      });\n    },\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting user preference data, ${error}`,\n          state: 'error'\n        }\n      })\n  });\n\n  const { data: density } = useQuery({\n    queryKey: ['density'],\n    queryFn: () => Api.getDensityPreferences(),\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting table density preference, ${error}`,\n          state: 'error'\n        }\n      })\n  });\n\n  const {\n    data: forms,\n    isLoading: loadingForms,\n    refetch: refetchForms\n  } = useQuery({\n    queryKey: [\n      'forms',\n      {\n        page: SmartFormsState.currentPage,\n        limit: SmartFormsState.rowsPerPage,\n        sort: SmartFormsState.sortBy,\n        sort_order: SmartFormsState.sortOrder,\n        search: SmartFormsState.search\n      }\n    ],\n    queryFn: () =>\n      Api.getSmartForms({\n        page: SmartFormsState.currentPage,\n        limit: SmartFormsState.rowsPerPage,\n        sort: SmartFormsState.sortBy,\n        sort_order: SmartFormsState.sortOrder,\n        'q[search]': SmartFormsState.search\n      }),\n    onSuccess: () => {\n      handleUserPreferenceChange.mutate();\n      clearPreferenceCache('smart_forms');\n    },\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error loading smart forms, ${error}`,\n          state: 'error'\n        }\n      }),\n    enabled: fetchedPreferences\n  });\n\n  const handleUserPreferenceChange = useMutation({\n    mutationFn: () =>\n      Api.postUserPreferences({\n        ui_preference: {\n          row_count: SmartFormsState.rowsPerPage,\n          sorting: { sortBy: SmartFormsState.sortBy, sortOrder: SmartFormsState.sortOrder },\n          source: `smart_forms`\n        }\n      }),\n\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error updating user preferences, ${error}`,\n          state: 'error'\n        }\n      })\n  });\n\n  return (\n    <Fragment>\n      <Box sx={styles.smartFormsPageContainer}>\n        <Box sx={{ ...styles.smartFormsPageHeader, paddingLeft: 2, paddingRight: 1 }}>\n          <Typography variant=\"h1\">Smart Forms</Typography>\n          <CreateButton\n            id=\"smart-form-open-modal-button\"\n            ariaLabel=\"Add new smart form\"\n            onClick={(e) => {\n              setActionsAnchorEl(e.currentTarget);\n            }}\n            isOpen={Boolean(actionsAnchorEl)}\n          />\n          <Popover\n            id={actionsAnchorEl ? 'actions-menu-popover' : undefined}\n            sx={styles.actionsMenu}\n            open={Boolean(actionsAnchorEl)}\n            anchorEl={actionsAnchorEl}\n            onClose={() => {\n              setActionsAnchorEl(null);\n            }}\n            anchorOrigin={{\n              vertical: 'bottom',\n              horizontal: 'right'\n            }}\n            transformOrigin={{\n              vertical: 'top',\n              horizontal: 'right'\n            }}\n          >\n            <span\n              onClick={() => {\n                setActionsAnchorEl(null);\n                dispatch({\n                  type: 'SET_MODAL_OPEN',\n                  payload: ModalType.CREATE\n                });\n              }}\n              className=\"create-smart-form-action-button\"\n            >\n              Create Smart Form\n            </span>\n            <span\n              onClick={() => {\n                setActionsAnchorEl(null);\n                dispatch({\n                  type: 'SET_MODAL_OPEN',\n                  payload: ModalType.CLONE_WITHOUT_FORM\n                });\n              }}\n              className=\"clone-smart-form-action-button\"\n            >\n              Clone Smart Form\n            </span>\n          </Popover>\n        </Box>\n        <Divider sx={{ margin: '32px 16px' }} />\n        <Box sx={{ padding: 2 }}>\n          <Search\n            idLabel=\"smart-forms\"\n            placeholder=\"Search by title\"\n            setSearch={(title) => dispatch({ type: 'SET_SEARCH', payload: title })}\n          />\n        </Box>\n        <SmartFormsTable\n          forms={forms?.res.smart_forms}\n          loadingForms={loadingForms}\n          density={density?.res.ui_preferences[0]?.columns?.density || 'Default'}\n          totalPages={forms?.resHead['x-total-pages']}\n          totalForms={forms?.resHead['x-total-count']}\n          SmartFormsState={SmartFormsState}\n          dispatch={dispatch}\n          refetchForms={refetchForms}\n        />\n      </Box>\n      <StyledSnackbar\n        message={SmartFormsState?.snackbar?.message}\n        state={SmartFormsState?.snackbar?.state}\n        setSnackbarState={() => {\n          dispatch({ type: 'SET_SNACKBAR', payload: { message: '', state: 'success' } });\n        }}\n      />\n      {modalType && (\n        <SmartFormModal\n          dispatch={dispatch}\n          limit={forms?.resHead['x-total-count']}\n          entityId={entityId}\n          smartFormState={SmartFormsState}\n          refetchForms={refetchForms}\n          modalType={modalType}\n        />\n      )}\n    </Fragment>\n  );\n}\n","import React, { useState } from 'react';\nimport {\n  Box,\n  FormControl,\n  IconButton,\n  Select,\n  Skeleton,\n  MenuItem,\n  Pagination,\n  TableContainer,\n  Table,\n  TableBody,\n  TableHead,\n  TableRow,\n  TableCell,\n  TableSortLabel,\n  Tooltip,\n  tooltipClasses,\n  TooltipProps,\n  styled,\n  Stack,\n  Popover\n} from '@mui/material';\nimport {\n  Delete as DeleteIcon,\n  Edit as EditIcon,\n  CheckCircle as CheckCircleIcon,\n  Cancel as CancelIcon,\n  FileCopy as FileCopyIcon\n} from '@mui/icons-material';\nimport { ISmartFormsTableProps, IError, ModalType, ISmartForm } from './types';\nimport { SmartFormsTableHeaders } from './config';\nimport { classes } from '../Job/Applications/styles';\nimport GenericDialog from '../Components/Modals/GenericDialog';\nimport { useMutation } from '@tanstack/react-query';\nimport Api from './API';\nimport moment from 'moment-timezone';\n\nconst tablePadding = (density: string) => {\n  if (density === 'Default') {\n    return '22px';\n  } else if (density === 'Compact') {\n    return '15px';\n  } else {\n    return '8px';\n  }\n};\n\nconst DeleteTooltip = styled(({ className, ...props }: TooltipProps) => (\n  <Tooltip {...props} classes={{ popper: className }} />\n))({ [`& .${tooltipClasses.tooltip}`]: { maxWidth: '200px', lineHeight: '1.75em' } });\n\nexport default function SmartFormsTable({\n  forms,\n  loadingForms,\n  density,\n  totalPages,\n  totalForms,\n  SmartFormsState,\n  dispatch,\n  refetchForms\n}: ISmartFormsTableProps) {\n  const { sortBy, sortOrder, rowsPerPage, currentPage, isDialogOpen, deleteSmartForm } =\n    SmartFormsState;\n  const timeZoneString = Intl.DateTimeFormat().resolvedOptions().timeZone;\n  const [enabledAnchorEl, setEnabledAnchorEl] = useState<HTMLDivElement | null>(null);\n  const [selectedForm, setSelectedForm] = useState<ISmartForm | null>(null);\n\n  const handleSortChange = (\n    event: React.MouseEvent<HTMLSpanElement, MouseEvent>,\n    columnValue: string\n  ) => {\n    const isAsc = sortBy === columnValue && sortOrder === 'asc';\n    const newSortOrder = isAsc ? 'desc' : 'asc';\n    dispatch({ type: 'SET_SORT_ORDER', payload: newSortOrder });\n    dispatch({ type: 'SET_SORT_BY', payload: columnValue });\n  };\n\n  const handlePageChange = (event: React.ChangeEvent<unknown>, newPage: number) => {\n    if (newPage === currentPage) return;\n    dispatch({ type: 'SET_CURRENT_PAGE', payload: newPage });\n    sessionStorage.setItem(`smartFormsTablePage`, newPage.toString());\n  };\n\n  const deleteForm = useMutation({\n    mutationFn: async (formId: number) => {\n      const { res } = await Api.deleteSmartForm(formId);\n      return res;\n    },\n    onError: (error: IError) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `Failed to delete smart form, ${error.errors.join('. ')}`,\n          state: 'error'\n        }\n      }),\n    onSuccess: (res) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: res.success, state: 'success' }\n      });\n      refetchForms();\n    },\n    onSettled: () => {\n      dispatch({ type: 'SET_IS_DIALOG_OPEN', payload: false });\n    }\n  });\n\n  const { mutate: updateSmartForm } = useMutation({\n    mutationFn: async (): Promise<void> => {\n      const body = {\n        name: selectedForm?.title,\n        entity_id: selectedForm?.entity_id,\n        enabled: !selectedForm?.enabled\n      };\n\n      await Api.updateSmartForm(selectedForm?.id, { form: body });\n    },\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error updating the smart form, ${error}`,\n          state: 'error'\n        }\n      }),\n    onSuccess: (data) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `Smart form was successfully updated`,\n          state: 'success'\n        }\n      });\n      refetchForms();\n    },\n    onSettled: async () => selectedForm\n  });\n\n  const handleEnabledDropdown = (event: React.MouseEvent<HTMLElement>, form: ISmartForm) => {\n    setEnabledAnchorEl(event.currentTarget);\n    setSelectedForm(form);\n  };\n\n  const handleEnabledDropdownClose = () => {\n    setEnabledAnchorEl(null);\n    setTimeout(() => {\n      // timeout is used to account for the dropdown close animation time\n      setSelectedForm(null);\n    }, 300);\n  };\n\n  const handleEnabledChange = () => {\n    updateSmartForm();\n    handleEnabledDropdownClose();\n  };\n\n  return (\n    <Box sx={{ padding: 2 }}>\n      <Box sx={{ position: 'relative' }}>\n        <TableContainer sx={{ boxShadow: 'none', scrollBehavior: 'smooth' }}>\n          <Table\n            sx={{\n              ...classes.tableWrapper,\n              minWidth: 'unset',\n              'th, td, tr, thead': { padding: `${tablePadding(density)} 10px` }\n            }}\n            aria-label=\"smart forms\"\n          >\n            <TableHead>\n              <TableRow>\n                {SmartFormsTableHeaders.map((header) => (\n                  <TableCell key={header.name}>\n                    <TableSortLabel\n                      active={sortBy === header.name}\n                      direction={sortBy === header.name ? (sortOrder as 'asc' | 'desc') : 'asc'}\n                      onClick={(event) => handleSortChange(event, header.name)}\n                      sx={header.sortable ? classes.sortable : null}\n                      disabled={!header.sortable}\n                      id={`${header.name}-sort-label-smart-forms`}\n                    >\n                      {header.label}\n                    </TableSortLabel>\n                  </TableCell>\n                ))}\n                <TableCell />\n              </TableRow>\n            </TableHead>\n            <TableBody>\n              {forms &&\n                !loadingForms &&\n                forms.map((form) => {\n                  const updatedAt = form.updated_at\n                    ? moment\n                        .tz(form.updated_at, timeZoneString)\n                        .format('DD MMM YYYY,-h:mma z')\n                        .split('-')\n                        .map((line) => <div key={`${form.id}-${line}`}>{line}</div>)\n                    : '-';\n                  const createdAt = form.created_at\n                    ? moment\n                        .tz(form.created_at, timeZoneString)\n                        .format('DD MMM YYYY,-h:mma z')\n                        .split('-')\n                        .map((line) => <div key={`${form.id}-${line}`}>{line}</div>)\n                    : '-';\n                  return (\n                    <TableRow key={form.id}>\n                      <TableCell sx={{ minWidth: '200px' }}>\n                        <Box\n                          sx={{\n                            '& a': {\n                              color: '#666666',\n                              fontWeight: 'bold',\n                              '&:hover': {\n                                textDecoration: 'none'\n                              }\n                            }\n                          }}\n                        >\n                          <a href={`/admin/forms/${form.id}`} className=\"smart-form-title-link\">\n                            {form.title || '-'}\n                          </a>\n                        </Box>\n                      </TableCell>\n                      <TableCell sx={{ cursor: 'pointer' }}>\n                        <Stack id=\"enabled-dropdown\" sx={{ marginLeft: 2 }}>\n                          {form.enabled ? (\n                            <CheckCircleIcon\n                              sx={{ color: '#8CCF95' }}\n                              onClick={(event) => handleEnabledDropdown(event, form)}\n                            />\n                          ) : (\n                            <CancelIcon\n                              sx={{ color: '#E37D7A' }}\n                              onClick={(event) => handleEnabledDropdown(event, form)}\n                            />\n                          )}\n                        </Stack>\n                      </TableCell>\n                      <TableCell sx={{ minWidth: '150px' }}>{updatedAt}</TableCell>\n                      <TableCell sx={{ minWidth: '150px' }}>{createdAt}</TableCell>\n                      <TableCell sx={{ minWidth: '150px' }}>{form.created_by || '-'}</TableCell>\n                      <TableCell>\n                        <Box sx={{ ...classes.actionItems, columnGap: '4px' }}>\n                          <IconButton\n                            className=\"smart-form-edit-button\"\n                            onClick={() => {\n                              window.location.href = `/admin/forms/${form.id}/fields`;\n                            }}\n                          >\n                            <EditIcon sx={{ fontSize: '18px' }} />\n                          </IconButton>\n                          <IconButton\n                            className=\"smart-form-clone-button\"\n                            onClick={() => {\n                              dispatch({ type: 'SET_SELECTED_FORM', payload: form });\n                              dispatch({\n                                type: 'SET_MODAL_OPEN',\n                                payload: ModalType.CLONE\n                              });\n                            }}\n                          >\n                            <FileCopyIcon sx={{ fontSize: '18px' }} />\n                          </IconButton>\n                          <DeleteTooltip\n                            title={\n                              !form.deletable\n                                ? 'This smart form is attached to a candidate/s and cannot be trashed.'\n                                : ''\n                            }\n                            placement=\"top\"\n                            arrow\n                          >\n                            <Stack>\n                              <IconButton\n                                className=\"smart-form-delete-button\"\n                                sx={{ color: '#E37D7A' }}\n                                onClick={() => {\n                                  dispatch({ type: 'SET_IS_DIALOG_OPEN', payload: true });\n                                  dispatch({ type: 'SET_DELETE_SMART_FORM', payload: form.id });\n                                }}\n                                disabled={!form.deletable}\n                              >\n                                <DeleteIcon sx={{ fontSize: '18px' }} />\n                              </IconButton>\n                            </Stack>\n                          </DeleteTooltip>\n                        </Box>\n                      </TableCell>\n                    </TableRow>\n                  );\n                })}\n            </TableBody>\n          </Table>\n          {!loadingForms && forms?.length === 0 && (\n            <Box sx={classes.noApplications}>No Smart Forms found</Box>\n          )}\n          {loadingForms && (\n            <>\n              {[...Array(10)].map((_, index) => (\n                <Box key={index} sx={classes.skeletonContainer}>\n                  <Skeleton animation=\"wave\" height={60} />\n                </Box>\n              ))}\n            </>\n          )}\n        </TableContainer>\n        <Popover\n          id={enabledAnchorEl ? 'enabled-selection' : undefined}\n          sx={classes.enabledDropdown}\n          open={Boolean(enabledAnchorEl)}\n          anchorEl={enabledAnchorEl}\n          onClose={handleEnabledDropdownClose}\n          anchorOrigin={{\n            vertical: 'bottom',\n            horizontal: 'center'\n          }}\n          transformOrigin={{\n            vertical: 'top',\n            horizontal: 'center'\n          }}\n        >\n          <span key={`${selectedForm?.id}-enabled`} onClick={handleEnabledChange}>\n            {selectedForm?.enabled ? (\n              <CancelIcon sx={{ color: '#E37D7A' }} />\n            ) : (\n              <CheckCircleIcon sx={{ color: '#8CCF95' }} />\n            )}\n          </span>\n        </Popover>\n      </Box>\n      {!loadingForms && (\n        <Box sx={classes.paginationParent}>\n          <Box sx={classes.rowSelectContainer}>\n            <span>Rows per page: </span>\n            <FormControl>\n              <Select\n                id=\"rows-per-page\"\n                sx={classes.rowSelect}\n                value={rowsPerPage}\n                onChange={(e) =>\n                  dispatch({ type: 'SET_ROWS_PER_PAGE', payload: Number(e.target.value) })\n                }\n                displayEmpty\n                MenuProps={{ sx: classes.paginationMenuItems }}\n              >\n                <MenuItem id=\"first-rpp-item\" value={10}>\n                  10\n                </MenuItem>\n                <MenuItem id=\"second-rpp-item\" value={20}>\n                  20\n                </MenuItem>\n                <MenuItem value={30}>30</MenuItem>\n                <MenuItem value={40}>40</MenuItem>\n                <MenuItem value={50}>50</MenuItem>\n              </Select>\n            </FormControl>\n          </Box>\n          <Box sx={classes.paginationContainer}>\n            <Pagination\n              id=\"pagination-menu\"\n              count={Number(totalPages)}\n              page={currentPage}\n              siblingCount={0}\n              onChange={handlePageChange}\n              sx={classes.pagination}\n            />\n            <span id=\"total-forms\">{totalForms} Total</span>\n          </Box>\n        </Box>\n      )}\n      <GenericDialog\n        isDialogOpen={isDialogOpen}\n        setDialogOpen={(value: boolean) => dispatch({ type: 'SET_IS_DIALOG_OPEN', payload: value })}\n        title={`Are you sure you want to trash this form?`}\n        description=\"\"\n        buttonCallback={() => deleteForm.mutate(deleteSmartForm)}\n        callbackLoading={deleteForm.isLoading}\n        buttonText=\"Trash\"\n        url=\"\"\n      />\n    </Box>\n  );\n}\n","import React from 'react';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport SampleList from './Sample/SampleList';\nimport SmartForms from './SmartForms';\nimport { ReactQueryDevtools } from '@tanstack/react-query-devtools';\n\nconst queryClient = new QueryClient({\n  defaultOptions: {\n    queries: {\n      refetchOnWindowFocus: false\n    }\n  }\n});\n\nexport default function SmartFormsPage({ entityId }: { entityId: number }) {\n  return (\n    <QueryClientProvider client={queryClient}>\n      <SmartForms entityId={entityId} />\n      {/* <SampleList apiKey={apiKey} /> */}\n      <ReactQueryDevtools />\n    </QueryClientProvider>\n  );\n}\n","import { RefObject } from 'react';\n\ntype ScrollOptions = {\n  behavior?: 'auto' | 'smooth' | 'instant';\n  block?: 'start' | 'center' | 'end' | 'nearest';\n};\n\nexport const scrollToElement = <T extends HTMLElement>(\n  elementRef: RefObject<T> | T | null,\n  options: ScrollOptions = {}\n): void => {\n  const { behavior = 'smooth', block = 'center' } = options;\n  const element = elementRef && 'current' in elementRef ? elementRef.current : elementRef;\n\n  if (!element) return;\n\n  window.requestAnimationFrame(() => {\n    element.scrollIntoView({ behavior, block });\n  });\n};\n","import React, { Dispatch, SetStateAction, useState } from 'react';\nimport { FirstStep, ReviewStep, SecondStep } from './EventProgress';\nimport { Avatar, Box, Button, CircularProgress, Dialog, Divider, Stack } from '@mui/material';\nimport {\n  Check as CheckIcon,\n  Close as CloseIcon,\n  NavigateBefore,\n  NavigateNext\n} from '@mui/icons-material';\nimport Api from '../API';\nimport { withFormValidation } from 'react-form-context-validation';\nimport { classes } from './styles';\nimport { IEvent, ScoutCalendarAction, ScoutCalendarState } from '../types';\nimport { sharedClasses } from '../../NewUI/Components/CustomUIElements/sharedClasses';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { InitialScoutCalendarState } from '../reducer';\nimport dayjs from 'dayjs';\nimport { IError } from '../../NewUI/SmartForms/types';\nimport GenericDialog from '../../NewUI/Components/Modals/GenericDialog';\nimport { useDispatch } from '../../NewUI/hooks/useDispatch';\nimport formatToUserTimeZone, { userTimeZone } from '../../NewUI/utils/formatToUserTimeZone';\n\nconst URL_PARAMS = new URL(window.location.href);\n\ninterface Props {\n  events: IEvent[];\n  ScoutCalendarState: ScoutCalendarState;\n  dispatch: Dispatch<ScoutCalendarAction>;\n  setEventCreated?: Dispatch<SetStateAction<boolean>>;\n  // setSnackbar indicates that the modal is called from dashboard\n  setSnackbar?: Dispatch<\n    SetStateAction<{ message: string; state: 'success' | 'warning' | 'error' }>\n  >;\n}\n\nfunction CreateEvent({\n  events,\n  ScoutCalendarState,\n  dispatch,\n  setEventCreated,\n  setSnackbar\n}: Props) {\n  const [exitDialogOpen, setExitDialogOpen] = useState<boolean>(false);\n  const { showCreateEventModal, createEventObject, createMultipleEvents, weekStart } =\n    ScoutCalendarState;\n  const { step, eventId } = createEventObject;\n  const queryClient = useQueryClient();\n  const { displayError } = useDispatch(dispatch);\n\n  const { data: options, isLoading: loadingOptions } = useQuery({\n    queryKey: ['event options'],\n    queryFn: () => Api.getEventOptions().then(({ res }) => res),\n    onError: (error) => {\n      const snackbarPayload: { message: string; state: 'error' } = {\n        message: `There was an error getting event type options, ${error}`,\n        state: 'error'\n      };\n      setSnackbar ? setSnackbar(snackbarPayload) : displayError(snackbarPayload.message);\n    },\n    onSuccess: (options) =>\n      !eventId &&\n      dispatch({\n        type: 'SET_CREATE_EVENT_OBJECT',\n        payload: {\n          ...createEventObject,\n          eventType: options.event_types[0],\n          duration: String(options.event_types[0].duration),\n          maxCandidates: String(options.event_types[0].max_candidates)\n        }\n      })\n  });\n\n  const { data: recruiterOptions, isLoading: loadingRecruiterOptions } = useQuery({\n    queryKey: ['recruiter options'],\n    queryFn: () => Api.getEventRecruiters().then(({ res }) => res),\n    onError: (error) => {\n      const snackbarPayload: { message: string; state: 'error' } = {\n        message: `There was an error getting event recruiter options, ${error}`,\n        state: 'error'\n      };\n      setSnackbar ? setSnackbar(snackbarPayload) : displayError(snackbarPayload.message);\n    },\n    onSuccess: (recruiterOptions) =>\n      !eventId &&\n      dispatch({\n        type: 'SET_CREATE_EVENT_OBJECT',\n        payload: { ...createEventObject, recruiters: [recruiterOptions.users[0]] }\n      })\n  });\n\n  const validateInput = () => {\n    const errors = { ...InitialScoutCalendarState.errorsMessage };\n    if (step === 1) {\n      if (!createEventObject.eventType) {\n        errors.eventType = 'Event Type is a mandatory field';\n      }\n      if (Number(createEventObject.duration) < 1) {\n        errors.duration = 'Duration can not be zero';\n      }\n      if (Number(createEventObject.maxCandidates) < createEventObject.candidates.length) {\n        errors.maxCandidates =\n          'The number of candidates currently booked to this event exceeds max capacity';\n      }\n      if (Number(createEventObject.maxCandidates) < 1) {\n        errors.maxCandidates = 'Minimum 1 candidate per session';\n      }\n      if (Number(createEventObject.sessions) < 1) {\n        errors.sessions = 'Minimum 1 session per day';\n      }\n      if (!createEventObject.recruiters.length) {\n        errors.recruiters = 'You need at least 1 recruiter';\n      }\n      if (dayjs(createEventObject.eventDate).isBefore(Date.now())) {\n        errors.time = 'Time must be in the future';\n      }\n      if (!createEventObject.dates.length) {\n        errors.dates = 'Please select at least 1 date';\n      }\n    } else {\n      if (!createEventObject.eventName) {\n        errors.eventName = 'Event name is a mandatory field';\n      }\n    }\n    dispatch({ type: 'SET_ERROR_MESSAGE', payload: errors });\n    return Object.values(errors).every((item) => !item);\n  };\n\n  const nextStep = () => {\n    if (validateInput()) {\n      dispatch({\n        type: 'SET_CREATE_EVENT_OBJECT',\n        payload: { ...createEventObject, step: step + 1 }\n      });\n    }\n  };\n\n  const onClose = () => {\n    dispatch({ type: 'RESET_STATE' });\n    dispatch({ type: 'SET_SHOW_CREATE_EVENT_MODAL', payload: false });\n    URL_PARAMS.search = '';\n    window.history.pushState(null, '', URL_PARAMS.href);\n  };\n\n  const createEventParams = {\n    begins_at: dayjs(createEventObject.eventDate).tz(userTimeZone).toISOString(),\n    ends_at: dayjs(createEventObject.eventDate)\n      .tz(userTimeZone)\n      .add(Number(createEventObject.duration), 'm')\n      .toISOString(),\n    subject: createEventObject.eventName,\n    note: createEventObject.eventDescription,\n    event_type_id: createEventObject.eventType?.id,\n    break_length: eventId ? undefined : Number(createEventObject.breaks),\n    duration: Number(createEventObject.duration),\n    max_candidates: Number(createEventObject.maxCandidates),\n    dates: eventId\n      ? undefined\n      : createEventObject.dates.map((d) => dayjs(d).tz(userTimeZone).toISOString()),\n    user_ids: createEventObject.recruiters.map((r) => r.id),\n    number_of_sessions: eventId ? undefined : Number(createEventObject.sessions)\n  };\n\n  const { mutate: createEvents, isLoading: creatingEvents } = useMutation({\n    mutationFn: async () => {\n      const { res } = await Api.createEventsBatches(createEventParams);\n      return res;\n    },\n    onError: (error: IError) => {\n      const emojiError = error.errors.includes('Incorrect string value');\n      displayError(\n        `There was an error creating the event. ${\n          emojiError ? 'Event name and description can not have emojis.' : error.errors\n        }`\n      );\n    },\n    onSuccess: (res) => {\n      queryClient.setQueryData(\n        ['events', weekStart],\n        [\n          ...events,\n          ...res.events.map((e: IEvent) => ({\n            ...e,\n            start: new Date(e.begins_at),\n            end: new Date(e.ends_at)\n          }))\n        ]\n      );\n      dispatch({ type: 'SET_SHOW_CREATE_EVENT_MODAL', payload: false });\n      queryClient.invalidateQueries(['getEvents'], { exact: true });\n      setEventCreated && setEventCreated(true);\n    }\n  });\n\n  const { mutate: editEvent, isLoading: editingEvent } = useMutation({\n    mutationFn: async () => {\n      const { res } = await Api.updateEvent(eventId, createEventParams);\n      return res;\n    },\n    onError: (error: IError) => {\n      const emojiError = error.errors.includes('Incorrect string value');\n      const snackbarPayload: { message: string; state: 'error' } = {\n        message: `There was an error editing the event. ${\n          emojiError ? 'Event name and description can not have emojis.' : error.errors\n        }`,\n        state: 'error'\n      };\n      setSnackbar ? setSnackbar(snackbarPayload) : displayError(snackbarPayload.message);\n    },\n    onSuccess: (res) => {\n      const newList = [...events];\n      const index = newList.findIndex((e) => e.id === eventId);\n      newList[index] = { ...res, start: new Date(res.begins_at), end: new Date(res.ends_at) };\n      setSnackbar\n        ? queryClient.setQueryData(['getEvents'], { pages: [{ data: { events: newList } }] })\n        : queryClient.setQueryData(['events', weekStart], newList);\n      const snackbarPayload: { message: string; state: 'success' } = {\n        message: `Event has been updated`,\n        state: 'success'\n      };\n      setSnackbar\n        ? setSnackbar(snackbarPayload)\n        : dispatch({ type: 'SET_SNACKBAR', payload: snackbarPayload });\n      onClose();\n    }\n  });\n\n  const buttonOnClickAction = () => {\n    if (step < 3) {\n      return nextStep();\n    }\n    return eventId ? editEvent() : createEvents();\n  };\n\n  const buttonName = () => {\n    if (step < 3) {\n      return 'Next';\n    }\n    return eventId ? 'Save Event' : 'Create Event';\n  };\n\n  const createEventModalTitle = `Create ${createMultipleEvents ? 'multiple events' : 'an event'}`;\n\n  const ExitDialogDescription = () => (\n    <Stack>\n      <Stack>{`Are you sure you want to ${\n        eventId ? 'discard your changes' : 'cancel your event'\n      }?`}</Stack>\n      <Stack>You will lose any progress you have made.</Stack>\n    </Stack>\n  );\n\n  return (\n    <Dialog\n      open={showCreateEventModal || createMultipleEvents}\n      onClose={() => setExitDialogOpen(true)}\n      sx={classes.modalWrapper}\n    >\n      <Stack sx={{ flexDirection: 'row' }}>\n        <Stack sx={{ padding: 5, minWidth: '260px' }}>\n          <Stack sx={classes.modalTitle}>{eventId ? 'Edit event' : createEventModalTitle}</Stack>\n          <Stack\n            sx={{\n              flexDirection: 'row',\n              fontFamily: 'Source Sans Pro',\n              color: '#666666',\n              paddingLeft: 1,\n              columnGap: 1,\n              alignItems: 'center',\n              fontWeight: step === 1 ? 'bold' : 'inherit',\n              width: 'fit-content',\n              cursor: step !== 1 ? 'pointer' : 'unset'\n            }}\n            onClick={() =>\n              step !== 1 &&\n              dispatch({\n                type: 'SET_CREATE_EVENT_OBJECT',\n                payload: { ...createEventObject, step: 1 }\n              })\n            }\n          >\n            <Avatar\n              sx={{\n                fontFamily: 'inherit',\n                fontWeight: 'bold',\n                color: step >= 1 ? 'white' : 'inherit',\n                background: step >= 1 ? '#5BC4C0' : '#D6DEE2',\n                width: 32,\n                height: 32\n              }}\n            >\n              1\n            </Avatar>\n            Event Time\n            {step > 1 && <CheckIcon sx={{ color: '#76D18F' }} />}\n          </Stack>\n          <Stack sx={{ flexDirection: 'row', height: '64px', paddingLeft: '23px' }}>\n            <Divider orientation=\"vertical\" sx={{ borderColor: '#D6DEE2', borderWidth: '1px' }} />\n          </Stack>\n          <Stack\n            sx={{\n              flexDirection: 'row',\n              fontFamily: 'Source Sans Pro',\n              color: '#666666',\n              paddingLeft: 1,\n              columnGap: 1,\n              alignItems: 'center',\n              fontWeight: step === 2 ? 'bold' : 'inherit',\n              width: 'fit-content',\n              cursor: step !== 2 ? 'pointer' : 'unset'\n            }}\n            onClick={() =>\n              step !== 2 &&\n              validateInput() &&\n              dispatch({\n                type: 'SET_CREATE_EVENT_OBJECT',\n                payload: { ...createEventObject, step: 2 }\n              })\n            }\n          >\n            <Avatar\n              sx={{\n                fontFamily: 'inherit',\n                fontWeight: 'bold',\n                color: step >= 2 ? 'white' : 'inherit',\n                background: step >= 2 ? '#5BC4C0' : '#D6DEE2',\n                width: 32,\n                height: 32\n              }}\n            >\n              2\n            </Avatar>\n            Event Details\n            {step > 2 && <CheckIcon sx={{ color: '#76D18F' }} />}\n          </Stack>\n          <Stack sx={{ flexDirection: 'row', height: '64px', paddingLeft: '23px' }}>\n            <Divider orientation=\"vertical\" sx={{ borderColor: '#D6DEE2', borderWidth: '1px' }} />\n          </Stack>\n          <Stack\n            sx={{\n              flexDirection: 'row',\n              fontFamily: 'Source Sans Pro',\n              color: '#666666',\n              paddingLeft: 1,\n              columnGap: 1,\n              alignItems: 'center',\n              fontWeight: step === 3 ? 'bold' : 'inherit',\n              width: 'fit-content',\n              cursor: step === 1 && !createEventObject.eventName ? 'unset' : 'pointer'\n            }}\n            onClick={() =>\n              ((step === 1 && createEventObject.eventName) || (step === 2 && validateInput())) &&\n              dispatch({\n                type: 'SET_CREATE_EVENT_OBJECT',\n                payload: { ...createEventObject, step: 3 }\n              })\n            }\n          >\n            <Avatar\n              sx={{\n                fontFamily: 'inherit',\n                fontWeight: 'bold',\n                color: step === 3 ? 'white' : 'inherit',\n                background: step === 3 ? '#5BC4C0' : '#D6DEE2',\n                width: 32,\n                height: 32\n              }}\n            >\n              3\n            </Avatar>\n            Review\n          </Stack>\n        </Stack>\n        <Divider orientation=\"vertical\" flexItem />\n        <Box sx={{ padding: 3, minWidth: '800px', width: '800px' }}>\n          <Stack sx={{ alignItems: 'end' }}>\n            <CloseIcon\n              id={`close-${eventId ? 'edit' : 'create'}-event-modal-button`}\n              onClick={() => setExitDialogOpen(true)}\n              style={{ color: '#DDDDDD', cursor: 'pointer' }}\n            />\n          </Stack>\n          <Box sx={{ padding: 2 }}>\n            {step === 1 && (\n              <FirstStep\n                eventTypes={options?.event_types}\n                loadingOptions={loadingOptions}\n                recruiterOptions={recruiterOptions?.users}\n                loadingRecruiterOptions={loadingRecruiterOptions}\n                ScoutCalendarState={ScoutCalendarState}\n                dispatch={dispatch}\n                userTimezone={userTimeZone}\n              />\n            )}\n            {step === 2 && (\n              <SecondStep ScoutCalendarState={ScoutCalendarState} dispatch={dispatch} />\n            )}\n            {step === 3 && (\n              <ReviewStep userTimezone={userTimeZone} {...{ ScoutCalendarState, dispatch }} />\n            )}\n          </Box>\n          <Stack\n            sx={{ flexDirection: 'row', justifyContent: 'flex-end', columnGap: 2, padding: 2 }}\n          >\n            {step > 1 && (\n              <Button\n                id={`back-to-step-${step === 3 ? 'two' : 'one'}-${eventId ? 'edit' : 'create'}-event-button`}\n                onClick={() =>\n                  dispatch({\n                    type: 'SET_CREATE_EVENT_OBJECT',\n                    payload: { ...createEventObject, step: step - 1 }\n                  })\n                }\n                sx={{ ...sharedClasses.genericButtonSecondary, minWidth: 'unset', padding: 1 }}\n              >\n                <NavigateBefore />\n              </Button>\n            )}\n            <Button\n              variant=\"contained\"\n              id={\n                step === 3\n                  ? `${eventId ? 'save' : 'create'}-event-button`\n                  : `next-to-step-${step === 2 ? 'three' : 'two'}-${eventId ? 'edit' : 'create'}-event-button`\n              }\n              onClick={buttonOnClickAction}\n              sx={{\n                ...sharedClasses.genericButton,\n                padding: step === 3 ? '8px 16px' : '8px 12px 8px 20px'\n              }}\n            >\n              {buttonName()}\n              {creatingEvents || editingEvent ? (\n                <CircularProgress size={16} sx={{ color: '#FFFFFF', marginLeft: 1 }} />\n              ) : (\n                step !== 3 && <NavigateNext />\n              )}\n            </Button>\n          </Stack>\n        </Box>\n      </Stack>\n      <GenericDialog\n        isDialogOpen={exitDialogOpen}\n        setDialogOpen={setExitDialogOpen}\n        title={`Close without submitting?`}\n        description={ExitDialogDescription()}\n        buttonCallback={onClose}\n        callbackLoading={false}\n        buttonText=\"Yes, close\"\n        secondaryButtonText=\"Back to editing\"\n        url=\"\"\n      />\n    </Dialog>\n  );\n}\n\nexport default withFormValidation(CreateEvent);\n","import React, { useState } from 'react';\nimport { Popover, Stack } from '@mui/material';\nimport { classes } from './styles';\nimport formatToUserTimeZone from '../../../NewUI/utils/formatToUserTimeZone';\n\nexport default function DateDisplay({ dates }: { dates: Date[] }) {\n  const [datesAnchorEl, setDatesAnchorEl] = useState<HTMLDivElement | null>(null);\n  return (\n    <Stack flexDirection=\"row\">\n      {formatToUserTimeZone(dates[0], 'shortWithDayOfWeek')}\n      {dates.length > 1 && (\n        <Stack\n          sx={classes.multipleDatesIndicator}\n          onClick={(e) => setDatesAnchorEl(e.currentTarget)}\n        >{`+${dates.length - 1}`}</Stack>\n      )}\n      <Popover\n        open={Boolean(datesAnchorEl)}\n        anchorEl={datesAnchorEl}\n        onClose={() => setDatesAnchorEl(null)}\n        anchorOrigin={{\n          vertical: 'bottom',\n          horizontal: 'left'\n        }}\n        transformOrigin={{\n          vertical: 'top',\n          horizontal: 'left'\n        }}\n        sx={{ '& .MuiPaper-root': { marginTop: 1 } }}\n      >\n        <Stack sx={{ padding: '8px 16px', rowGap: '4px' }}>\n          {dates.slice(1).map((d, i) => (\n            <Stack key={i} sx={{ fontSize: '14px' }}>\n              {formatToUserTimeZone(d, 'shortWithDayOfWeek')}\n            </Stack>\n          ))}\n        </Stack>\n      </Popover>\n    </Stack>\n  );\n}\n","import React, { Dispatch } from 'react';\nimport { Autocomplete, Box, CircularProgress, Stack, TextField, Typography } from '@mui/material';\nimport { classes } from './styles';\nimport { sharedClasses } from '../../../NewUI/Components/CustomUIElements/sharedClasses';\nimport { FormNumberField } from '../../../NewUI/Components/CustomUIElements/FormTextField';\nimport {\n  ControlledTimePicker,\n  SingleDatePicker\n} from '../../../NewUI/Components/CustomUIElements/SingleDatePicker';\nimport { IEventType, ScoutCalendarAction, ScoutCalendarState } from '../../types';\nimport MultipleDatesPicker from '../../../NewUI/Components/CustomUIElements/MultipleDatesPicker';\nimport dayjs, { Dayjs } from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\nimport timezone from 'dayjs/plugin/timezone';\nimport advanced from 'dayjs/plugin/advancedFormat';\nimport { theme } from '../../../../components/ThemeContext/ThemeObject';\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\ndayjs.extend(advanced);\n\nexport default function FirstStep({\n  eventTypes,\n  loadingOptions,\n  recruiterOptions,\n  loadingRecruiterOptions,\n  ScoutCalendarState,\n  dispatch,\n  userTimezone\n}: {\n  eventTypes?: IEventType[];\n  loadingOptions: boolean;\n  recruiterOptions?: { id: number; name: string; checked: boolean }[];\n  loadingRecruiterOptions: boolean;\n  ScoutCalendarState: ScoutCalendarState;\n  dispatch: Dispatch<ScoutCalendarAction>;\n  userTimezone: string;\n}) {\n  const { createEventObject, errorsMessage, createMultipleEvents } = ScoutCalendarState;\n  const { eventDate } = createEventObject;\n  const handleTimeChange = (time: Dayjs | null) => {\n    if (!time) return;\n    if (!time.isValid()) {\n      dispatch({\n        type: 'SET_ERROR_MESSAGE',\n        payload: { ...errorsMessage, time: 'Please input a valid time' }\n      });\n    } else {\n      dispatch({\n        type: 'SET_ERROR_MESSAGE',\n        payload: { ...errorsMessage, time: '' }\n      });\n      const hourAndMinute = time.format('H:mm').split(':');\n      const newDateAndTime = dayjs\n        .tz(createEventObject.eventDate, userTimezone)\n        .hour(Number(hourAndMinute[0]))\n        .minute(Number(hourAndMinute[1]))\n        .second(0)\n        .toDate();\n      const newDates = [...createEventObject.dates];\n      newDates[0] = newDateAndTime;\n      dispatch({\n        type: 'SET_CREATE_EVENT_OBJECT',\n        payload: {\n          ...createEventObject,\n          eventDate: newDateAndTime,\n          dates: createMultipleEvents ? createEventObject.dates : newDates\n        }\n      });\n    }\n  };\n\n  return (\n    <Box>\n      <Box sx={classes.progressHeader}>Interview date and attendees</Box>\n      <Stack\n        sx={{\n          height: '415px',\n          overflow: 'auto',\n          '&::-webkit-scrollbar': {\n            display: 'none'\n          },\n          rowGap: 3\n        }}\n      >\n        {createEventObject.eventId ? (\n          <Stack sx={{ paddingLeft: 0.5, rowGap: 1 }}>\n            <Stack sx={{ color: '#939393', flexDirection: 'row', columnGap: '2px' }}>\n              Event type <Stack sx={{ color: theme.palette.error.main }}>*</Stack>\n            </Stack>\n            <Stack>{createEventObject.eventType?.name}</Stack>\n          </Stack>\n        ) : (\n          <Autocomplete\n            disablePortal\n            autoHighlight\n            includeInputInList\n            options={eventTypes || []}\n            groupBy={(option) => option.entity_name}\n            loading={loadingOptions}\n            getOptionLabel={(option) => option.name}\n            noOptionsText=\"No event types\"\n            value={createEventObject.eventType}\n            isOptionEqualToValue={(option, value) => option.id === value.id}\n            onChange={(_event, newValue) =>\n              dispatch({\n                type: 'SET_CREATE_EVENT_OBJECT',\n                payload: {\n                  ...createEventObject,\n                  eventType: newValue,\n                  duration: newValue ? String(newValue.duration) : '15',\n                  maxCandidates: newValue ? String(newValue.max_candidates) : '1'\n                }\n              })\n            }\n            sx={{ ...sharedClasses.formAutocomplete, width: '100%', marginTop: 3 }}\n            ListboxProps={{ style: classes.autocompleteListboxStyle }}\n            renderInput={(params) => (\n              <TextField\n                {...params}\n                sx={classes.autocompleteTextfield}\n                label=\"Choose Event Type\"\n                InputLabelProps={{ shrink: true }}\n                required\n                InputProps={{\n                  ...params.InputProps,\n                  endAdornment: (\n                    <React.Fragment>\n                      {loadingOptions ? <CircularProgress color=\"inherit\" size={20} /> : null}\n                      {params.InputProps.endAdornment}\n                    </React.Fragment>\n                  )\n                }}\n                helperText={errorsMessage.eventType}\n              />\n            )}\n          />\n        )}\n        <Stack sx={{ flexDirection: 'row', columnGap: 3, margin: '3px' }}>\n          <Box sx={{ width: '100%' }}>\n            {createMultipleEvents ? (\n              <MultipleDatesPicker\n                values={createEventObject.dates}\n                label={'Dates'}\n                required\n                minDate={dayjs()}\n                onAccept={(dates) => {\n                  const selectedTime = dayjs(eventDate).format('H:mm').split(':');\n                  dispatch({\n                    type: 'SET_CREATE_EVENT_OBJECT',\n                    payload: {\n                      ...createEventObject,\n                      dates: dates,\n                      eventDate: dayjs(dates[0])\n                        .hour(Number(selectedTime[0]))\n                        .minute(Number(selectedTime[1]))\n                        .second(0)\n                        .toDate()\n                    }\n                  });\n                }}\n                error={errorsMessage.dates}\n              />\n            ) : (\n              <>\n                <SingleDatePicker\n                  value={createEventObject.eventDate}\n                  label={'Date'}\n                  inputStyles={classes.datePicker}\n                  disablePast\n                  onChange={(value) => {\n                    if (!value?.isValid()) {\n                      dispatch({\n                        type: 'SET_ERROR_MESSAGE',\n                        payload: { ...errorsMessage, date: 'Please input a valid date' }\n                      });\n                    } else {\n                      dispatch({\n                        type: 'SET_ERROR_MESSAGE',\n                        payload: { ...errorsMessage, date: '' }\n                      });\n                      value?.isValid() &&\n                        dispatch({\n                          type: 'SET_CREATE_EVENT_OBJECT',\n                          payload: {\n                            ...createEventObject,\n                            eventDate: dayjs(value.toDate()).second(0).toDate(),\n                            dates: [dayjs(value.toDate()).second(0).toDate()]\n                          }\n                        });\n                    }\n                  }}\n                  showTodayButton\n                  error={errorsMessage.date}\n                />\n              </>\n            )}\n          </Box>\n          <Box sx={{ width: '100%' }}>\n            <ControlledTimePicker\n              onChange={handleTimeChange}\n              value={dayjs.tz(createEventObject.eventDate, userTimezone)}\n              label=\"Time\"\n              minutesInterval={1}\n            />\n            {!!errorsMessage.time && (\n              <Typography variant=\"caption\" sx={classes.errorMessage}>\n                {errorsMessage.time}\n              </Typography>\n            )}\n          </Box>\n          <FormNumberField\n            label={'Duration'}\n            value={createEventObject.duration}\n            onChange={(e) =>\n              dispatch({\n                type: 'SET_CREATE_EVENT_OBJECT',\n                payload: { ...createEventObject, duration: e.target.value }\n              })\n            }\n            unit=\"minutes\"\n            fullWidth\n            error={errorsMessage.duration}\n          />\n        </Stack>\n        <Stack\n          sx={{\n            flexDirection: 'row',\n            columnGap: 3,\n            margin: '3px'\n          }}\n        >\n          <FormNumberField\n            label={'Max. candidates per session'}\n            value={createEventObject.maxCandidates}\n            onChange={(e) =>\n              dispatch({\n                type: 'SET_CREATE_EVENT_OBJECT',\n                payload: { ...createEventObject, maxCandidates: e.target.value }\n              })\n            }\n            styles={{ width: createMultipleEvents ? undefined : '31%' }}\n            fullWidth\n            required\n            error={errorsMessage.maxCandidates}\n          />\n          {createMultipleEvents && (\n            <>\n              <FormNumberField\n                label={'Sessions (in the day)'}\n                value={createEventObject.sessions}\n                onChange={(e) =>\n                  dispatch({\n                    type: 'SET_CREATE_EVENT_OBJECT',\n                    payload: { ...createEventObject, sessions: e.target.value }\n                  })\n                }\n                fullWidth\n                required\n                error={errorsMessage.sessions}\n              />\n              <FormNumberField\n                label={'Break (in between sessions)'}\n                value={createEventObject.breaks}\n                onChange={(e) =>\n                  dispatch({\n                    type: 'SET_CREATE_EVENT_OBJECT',\n                    payload: { ...createEventObject, breaks: e.target.value }\n                  })\n                }\n                unit=\"minutes\"\n                fullWidth\n                required\n              />\n            </>\n          )}\n        </Stack>\n        <Box>\n          <Autocomplete\n            multiple\n            options={recruiterOptions || []}\n            getOptionLabel={(option) => option.name}\n            isOptionEqualToValue={(option, value) => option.id === value.id}\n            value={createEventObject.recruiters}\n            loading={loadingRecruiterOptions}\n            onChange={(_e, newValue) =>\n              dispatch({\n                type: 'SET_CREATE_EVENT_OBJECT',\n                payload: { ...createEventObject, recruiters: newValue }\n              })\n            }\n            sx={{ ...sharedClasses.formAutocomplete, width: '100%', marginTop: 3 }}\n            ListboxProps={{ style: classes.autocompleteListboxStyle }}\n            renderInput={(params) => (\n              <TextField\n                {...params}\n                label=\"Add recruiters\"\n                sx={classes.autocompleteTextfield}\n                InputLabelProps={{ shrink: true }}\n                placeholder={createEventObject.recruiters.length ? '' : 'Search Users'}\n                InputProps={{\n                  ...params.InputProps,\n                  endAdornment: (\n                    <React.Fragment>\n                      {loadingRecruiterOptions ? (\n                        <CircularProgress color=\"inherit\" size={20} />\n                      ) : null}\n                      {params.InputProps.endAdornment}\n                    </React.Fragment>\n                  )\n                }}\n                helperText={errorsMessage.recruiters}\n              />\n            )}\n          />\n        </Box>\n      </Stack>\n    </Box>\n  );\n}\n","import React, { PropsWithChildren, ReactNode, useState } from 'react';\nimport {\n  AvatarGroup,\n  Avatar,\n  Popover,\n  Stack,\n  Badge,\n  Typography,\n  SxProps,\n  Tooltip\n} from '@mui/material';\nimport { classes } from './styles';\nimport { AcceptedIcon, DeclinedIcon } from '../../../../components/NewUI/Components/Icons';\nimport { IAttendee } from '../../types';\nimport { theme } from '../../../ThemeContext/ThemeObject';\n\nconst MAX_VISIBLE_AVATARS = 4;\n\ntype AvatarProps = Pick<IAttendee, 'id' | 'name' | 'state'>;\n\nconst getInitial = (name: string) => {\n  if (name.toLowerCase() === 'me') return name;\n  return name\n    .trim()\n    .split(' ')\n    .map((x) => x[0])\n    .reduce((acc, curr) => acc + curr)\n    .slice(0, 2);\n};\n\nconst statusIconMap: Record<string, JSX.Element> = {\n  accepted: <AcceptedIcon />,\n  declined: <DeclinedIcon />\n};\n\nconst getIcon = (state?: string): JSX.Element | null => {\n  if (!state) return null;\n  return statusIconMap[state] || null;\n};\n\nconst CustomBadge = ({\n  badgeContent,\n  sx,\n  children\n}: PropsWithChildren<{\n  badgeContent: ReactNode;\n  sx: SxProps;\n}>) => (\n  <Badge\n    overlap=\"circular\"\n    anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n    badgeContent={badgeContent}\n    sx={sx}\n  >\n    {children}\n  </Badge>\n);\n\nconst renderAvatar = (user: { id: number; name: string; state?: string }) => {\n  return (\n    <CustomBadge\n      badgeContent={getIcon(user.state)}\n      sx={{ '& .MuiBadge-badge': { bottom: '7% !important' } }}\n    >\n      <Tooltip key={user.id} title={user.name} placement=\"top\" arrow>\n        <Avatar sx={{ ...classes.avatar }}>{getInitial(user.name).toUpperCase()}</Avatar>\n      </Tooltip>\n    </CustomBadge>\n  );\n};\nexport default function GroupedAvatars({ users }: { users: AvatarProps[] }) {\n  const [avatarAnchorEl, setAvatarAnchorEl] = useState<HTMLDivElement | null>(null);\n\n  return (\n    <>\n      <AvatarGroup sx={{ justifyContent: 'start', marginLeft: '8px' }}>\n        {users.length <= MAX_VISIBLE_AVATARS ? (\n          users.slice(0, MAX_VISIBLE_AVATARS).map((r) => renderAvatar(r))\n        ) : (\n          <Stack flexDirection=\"row-reverse\">\n            <Avatar\n              sx={{\n                ...classes.avatar,\n                background: theme.palette.common.white,\n                border: '2px solid #084D6D !important',\n                cursor: 'pointer'\n              }}\n              onClick={(e) => setAvatarAnchorEl(e.currentTarget)}\n            >{`+${users.length - 3}`}</Avatar>\n            {users\n              .slice(0, 3)\n              .reverse()\n              .map((r) => renderAvatar(r))}\n          </Stack>\n        )}\n      </AvatarGroup>\n      <Popover\n        open={Boolean(avatarAnchorEl)}\n        anchorEl={avatarAnchorEl}\n        onClose={() => setAvatarAnchorEl(null)}\n        anchorOrigin={{\n          vertical: 'bottom',\n          horizontal: 'left'\n        }}\n        transformOrigin={{\n          vertical: 'top',\n          horizontal: 'left'\n        }}\n        sx={{ '& .MuiPaper-root': { marginTop: 1 } }}\n      >\n        <Stack sx={{ padding: '8px 16px', rowGap: '4px' }}>\n          {users.slice(3).map((r) => (\n            <Stack key={r.id} sx={{ flexDirection: 'row', columnGap: 2, alignItems: 'center' }}>\n              <Typography>{r.name}</Typography>\n              {r.state && r.state !== 'invited' && (\n                <CustomBadge\n                  badgeContent={getIcon(r.state)}\n                  sx={{ '& .MuiBadge-badge': { bottom: '-2px !important' } }}\n                />\n              )}\n            </Stack>\n          ))}\n        </Stack>\n      </Popover>\n    </>\n  );\n}\n","import React, { Dispatch, useMemo } from 'react';\nimport { Box, Divider, IconButton, Stack } from '@mui/material';\nimport { Edit as EditIcon, ChevronRight as ChevronRightIcon } from '@mui/icons-material';\nimport { ScoutCalendarState, ScoutCalendarAction } from '../../types';\nimport { classes } from './styles';\nimport GroupedAvatars from './GroupedAvatars';\nimport DateDisplay from './DateDisplay';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport { CandidateGroupedAvatars } from '../../helper';\nimport formatToUserTimeZone from '../../../NewUI/utils/formatToUserTimeZone';\n\nexport default function ReviewStep({\n  ScoutCalendarState,\n  dispatch,\n  setTab\n}: {\n  ScoutCalendarState: ScoutCalendarState;\n  dispatch: Dispatch<ScoutCalendarAction>;\n  setTab?: (tab: number) => void;\n}) {\n  const { createEventObject, createMultipleEvents, permissions, showViewEventModal } =\n    ScoutCalendarState;\n  const { recruiters, dates, owner, candidates } = createEventObject;\n  const hasDescription = Boolean(createEventObject.eventDescription);\n  const descriptionText = hasDescription ? createEventObject.eventDescription : '-';\n\n  const memorisedDescriptionText = useMemo(\n    () => (\n      <>\n        <Stack sx={{ color: '#939393' }}>Description</Stack>\n        <Stack>{descriptionText}</Stack>\n      </>\n    ),\n    [descriptionText]\n  );\n\n  return (\n    <Box flexGrow={1}>\n      {!showViewEventModal && <Box sx={classes.progressHeader}>Final step! is this correct?</Box>}\n      <Stack\n        sx={{\n          height: '415px',\n          rowGap: '20px',\n          overflow: 'auto',\n          '&::-webkit-scrollbar': {\n            display: 'none'\n          }\n        }}\n      >\n        <Stack>\n          <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between', color: '#939393' }}>\n            Event type\n            {permissions?.['Events']?.['Create / Edit Events'] && (\n              <EditIcon\n                id=\"edit-step-one-button\"\n                sx={classes.editIcon}\n                onClick={() => {\n                  if (createEventObject.eventId) {\n                    dispatch({ type: 'SET_SHOW_VIEW_EVENT_MODAL', payload: false });\n                    dispatch({ type: 'SET_SHOW_CREATE_EVENT_MODAL', payload: true });\n                  }\n                  dispatch({\n                    type: 'SET_CREATE_EVENT_OBJECT',\n                    payload: { ...createEventObject, step: 1 }\n                  });\n                }}\n              />\n            )}\n          </Stack>\n          <Stack>{createEventObject.eventType?.name}</Stack>\n        </Stack>\n        <Stack sx={{ flexDirection: 'row' }}>\n          <Stack sx={{ width: '100%' }}>\n            <Stack sx={{ color: '#939393' }}>Date</Stack>\n            <DateDisplay {...{ dates }} />\n          </Stack>\n          <Stack sx={{ width: '100%' }}>\n            <Stack sx={{ color: '#939393' }}>Time</Stack>\n            <Stack>{formatToUserTimeZone(createEventObject.eventDate, 'onlyTime')}</Stack>\n          </Stack>\n          <Stack sx={{ width: '100%' }}>\n            <Stack sx={{ color: '#939393' }}>Duration</Stack>\n            <Stack>{createEventObject.duration} minutes</Stack>\n          </Stack>\n        </Stack>\n        {!owner && (\n          <Stack sx={{ flexDirection: 'row' }}>\n            <Stack sx={{ width: '100%' }}>\n              <Stack sx={{ color: '#939393' }}>{`Max. candidates (per session)`}</Stack>\n              <Stack>{createEventObject.maxCandidates}</Stack>\n            </Stack>\n            {createMultipleEvents && (\n              <>\n                <Stack sx={{ width: '100%' }}>\n                  <Stack sx={{ color: '#939393' }}>{`Sessions (in the day)`}</Stack>\n                  <Stack>{createEventObject.sessions}</Stack>\n                </Stack>\n                <Stack sx={{ width: '100%' }}>\n                  <Stack sx={{ color: '#939393' }}>{`Break (in between sessions)`}</Stack>\n                  <Stack>{createEventObject.breaks} minutes</Stack>\n                </Stack>\n              </>\n            )}\n          </Stack>\n        )}\n        <Stack sx={{ flexDirection: 'row' }}>\n          {owner && (\n            <Stack sx={{ width: '33%' }} gap={0.5}>\n              <Stack sx={{ color: '#939393' }}>Created by</Stack>\n              <GroupedAvatars users={[{ id: 0, name: owner }]} />\n            </Stack>\n          )}\n          <Stack sx={{ width: '33%' }} gap={0.5}>\n            <Stack sx={{ color: '#939393' }}>Recruiters</Stack>\n            <GroupedAvatars\n              users={recruiters.map((r) => ({ id: r.id, name: r.name, state: r.state }))}\n            />\n          </Stack>\n          {showViewEventModal && (\n            <Stack sx={{ width: '33%' }} gap={0.5}>\n              <Stack sx={{ color: '#939393' }}>\n                Candidates ({candidates.length}/{createEventObject.maxCandidates} booked)\n              </Stack>\n              <Stack direction={'row'} gap={0.5}>\n                {candidates.length ? (\n                  <>\n                    <CandidateGroupedAvatars candidates={candidates} />\n                    <IconButton\n                      onClick={() => setTab?.(2)}\n                      sx={{ color: theme.palette.common.darkGrey, width: 'min-content' }}\n                      size=\"small\"\n                      id={'candidates-button-details-tab'}\n                    >\n                      <ChevronRightIcon />\n                    </IconButton>\n                  </>\n                ) : (\n                  <Stack sx={classes.noCandidatesAssigned}>No Candidates Assigned</Stack>\n                )}\n              </Stack>\n            </Stack>\n          )}\n        </Stack>\n        <Divider />\n        <Stack>\n          <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between', color: '#939393' }}>\n            Event name\n            {permissions?.['Events']?.['Create / Edit Events'] && (\n              <EditIcon\n                id=\"edit-step-two-button\"\n                sx={classes.editIcon}\n                onClick={() => {\n                  if (createEventObject.eventId) {\n                    dispatch({ type: 'SET_SHOW_VIEW_EVENT_MODAL', payload: false });\n                    dispatch({ type: 'SET_SHOW_CREATE_EVENT_MODAL', payload: true });\n                  }\n                  dispatch({\n                    type: 'SET_CREATE_EVENT_OBJECT',\n                    payload: { ...createEventObject, step: 2 }\n                  });\n                }}\n              />\n            )}\n          </Stack>\n          <Stack sx={{ wordWrap: 'break-word' }}>{createEventObject.eventName}</Stack>\n        </Stack>\n        <Stack sx={{ overflowWrap: 'anywhere' }}>\n          {showViewEventModal && hasDescription ? memorisedDescriptionText : null}\n          {!showViewEventModal && memorisedDescriptionText}\n        </Stack>\n      </Stack>\n    </Box>\n  );\n}\n","import React, { Dispatch } from 'react';\nimport { Box, Stack } from '@mui/material';\nimport { classes } from './styles';\nimport {\n  FormTextField,\n  MultilineFormTextField\n} from '../../../NewUI/Components/CustomUIElements/FormTextField';\nimport { ScoutCalendarAction, ScoutCalendarState } from '../../types';\n\nexport default function SecondStep({\n  ScoutCalendarState,\n  dispatch\n}: {\n  ScoutCalendarState: ScoutCalendarState;\n  dispatch: Dispatch<ScoutCalendarAction>;\n}) {\n  const { createEventObject, errorsMessage } = ScoutCalendarState;\n\n  return (\n    <Box>\n      <Box sx={classes.progressHeader}>Event Details</Box>\n      <Stack sx={{ height: '415px', rowGap: 3 }}>\n        <FormTextField\n          label=\"Event name\"\n          value={createEventObject.eventName}\n          onChange={(e) =>\n            dispatch({\n              type: 'SET_CREATE_EVENT_OBJECT',\n              payload: { ...createEventObject, eventName: e.target.value }\n            })\n          }\n          fullWidth\n          required\n          error={errorsMessage.eventName}\n          maxLength={255}\n        />\n        <Box>\n          <MultilineFormTextField\n            label=\"Description\"\n            value={createEventObject.eventDescription}\n            onChange={(e) =>\n              dispatch({\n                type: 'SET_CREATE_EVENT_OBJECT',\n                payload: { ...createEventObject, eventDescription: e.target.value }\n              })\n            }\n            fullWidth\n            rows={6}\n            placeholder=\"Write your additional notes or comments\"\n            maxLength={255}\n          />\n          <Stack sx={{ paddingRight: 1, flexDirection: 'row-reverse', color: '#838383' }}>\n            {createEventObject.eventDescription.length}/255\n          </Stack>\n        </Box>\n      </Stack>\n    </Box>\n  );\n}\n","import React from 'react';\nimport { Button, Dialog, Stack, Typography } from '@mui/material';\nimport {\n  CheckCircle as CheckCircleIcon,\n  AccessTimeRounded as AccessTimeRoundedIcon,\n  EventRounded as EventRoundedIcon\n} from '@mui/icons-material';\nimport { classes } from './styles';\nimport { sharedClasses } from '../NewUI/Components/CustomUIElements/sharedClasses';\nimport DateDisplay from './CreateEvent/EventProgress/DateDisplay';\nimport dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\nimport timezone from 'dayjs/plugin/timezone';\nimport advanced from 'dayjs/plugin/advancedFormat';\nimport { ScoutCalendarState } from './types';\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\ndayjs.extend(advanced);\n\nexport default function EventCreated({\n  open,\n  onClose,\n  ScoutCalendarState,\n  userTimezone\n}: {\n  open: boolean;\n  onClose: () => void;\n  ScoutCalendarState: ScoutCalendarState;\n  userTimezone: string;\n}) {\n  const { createEventObject } = ScoutCalendarState;\n  const sessions = Array.from({ length: Number(createEventObject.sessions) }, (_, i) =>\n    dayjs\n      .tz(createEventObject.eventDate, userTimezone)\n      .add(i * (Number(createEventObject.duration) + Number(createEventObject.breaks)), 'm')\n      .toDate()\n  );\n  return (\n    <Dialog open={open} onClose={onClose}>\n      <Stack sx={classes.eventCreatedModalContainer}>\n        <CheckCircleIcon sx={{ color: '#5BC4BF', fontSize: '4rem', marginTop: 4 }} />\n        <Typography sx={classes.eventCreatedModalTitle}>Event Created</Typography>\n        <Stack sx={{ alignItems: 'center', rowGap: 1, color: '#333333' }}>\n          <Typography sx={{ fontWeight: 'bold', wordBreak: 'break-word' }}>\n            {createEventObject.eventName}\n          </Typography>\n          <Stack sx={{ flexDirection: 'row' }} gap={1}>\n            <EventRoundedIcon\n              sx={{ color: '#666', width: '16px', marginRight: '1', columnGap: 'unset' }}\n            />\n            <DateDisplay dates={createEventObject.dates} />\n          </Stack>\n          <Stack sx={{ flexDirection: 'row' }} gap={1}>\n            <AccessTimeRoundedIcon sx={{ color: '#666', width: '16px' }} />\n            <Stack sx={classes.eventSessionsContainer}>\n              {sessions.map((session, index) => (\n                <Typography sx={{ textDecoration: 'underline' }} key={index}>\n                  {dayjs.tz(session, userTimezone).format('h:mm a')} -{' '}\n                  {dayjs\n                    .tz(session, userTimezone)\n                    .add(Number(createEventObject.duration), 'm')\n                    .format('h:mm a')}\n                </Typography>\n              ))}\n            </Stack>\n          </Stack>\n        </Stack>\n        <Button\n          variant=\"contained\"\n          sx={{ ...sharedClasses.genericButton, margin: '16px 0px' }}\n          onClick={onClose}\n        >\n          Exit\n        </Button>\n      </Stack>\n    </Dialog>\n  );\n}\n","import React, { Dispatch, useState } from 'react';\nimport { Stack, Avatar, Divider } from '@mui/material';\nimport { Edit as EditIcon, Circle as CircleIcon, Delete as DeleteIcon } from '@mui/icons-material';\nimport { classes } from './styles';\nimport { IEvent, ScoutCalendarAction, ScoutCalendarState } from './types';\nimport GroupedAvatars from './CreateEvent/EventProgress/GroupedAvatars';\nimport GenericDialog from '../NewUI/Components/Modals/GenericDialog';\nimport { CandidateGroupedAvatars, getAttendees, useDeleteEvent } from './helper';\nimport { NoEventsSVG } from '../NewUI/Components/Icons';\nimport { EmptyState } from '../NewUI/Components/CustomUIElements/EmptyState';\nimport formatToUserTimeZone from '../NewUI/utils/formatToUserTimeZone';\n\nexport default function ListView({\n  events,\n  handleSelectEvent,\n  ScoutCalendarState,\n  dispatch\n}: {\n  events: IEvent[];\n  handleSelectEvent: (event: IEvent, withoutModal?: boolean) => void;\n  ScoutCalendarState: ScoutCalendarState;\n  dispatch: Dispatch<ScoutCalendarAction>;\n}) {\n  const [openConfirmationDialog, setOpenConfirmationDialog] = useState<boolean>(false);\n  const { createEventObject } = ScoutCalendarState;\n\n  const onClose = () => {\n    dispatch({ type: 'RESET_STATE' });\n    setOpenConfirmationDialog(false);\n  };\n\n  const { deleteEvent, deletingEvent } = useDeleteEvent({\n    events,\n    ScoutCalendarState,\n    dispatch,\n    onClose\n  });\n\n  if (!events.length) {\n    return <EmptyState svgIcon={<NoEventsSVG />} label=\"No events\" />;\n  }\n\n  return (\n    <Stack sx={{ paddingTop: 2, rowGap: 4 }}>\n      {events.map((event, index) => {\n        const recruiters = event.attendees.filter((a) => a.type === 'User');\n        const candidates = event.attendees.filter((a) => a.type === 'Candidate');\n        const nextEventIsOnSameDate =\n          index + 1 !== events.length &&\n          formatToUserTimeZone(event.start, 'short') ===\n            formatToUserTimeZone(events[index + 1].start, 'short');\n        const previousEventIsOnDifferentDate =\n          index === 0 ||\n          formatToUserTimeZone(event.start, 'short') !==\n            formatToUserTimeZone(events[index - 1].start, 'short');\n\n        return (\n          <Stack key={event.id}>\n            {previousEventIsOnDifferentDate && (\n              <Stack sx={{ color: '#333333', paddingBottom: 3, fontWeight: 600, fontSize: '16px' }}>\n                {formatToUserTimeZone(event.start, 'shortWithDayOfWeek')}\n              </Stack>\n            )}\n            <Stack flexDirection=\"row\" columnGap={2}>\n              <Stack>\n                <Avatar sx={{ background: '#EDF2F5', width: 32, height: 32 }}>\n                  <CircleIcon sx={classes.listViewCircleIcon} />\n                </Avatar>\n                {nextEventIsOnSameDate && (\n                  <Divider\n                    orientation=\"vertical\"\n                    sx={{ width: '48%', borderRight: '2px solid #E3E3E3' }}\n                  />\n                )}\n              </Stack>\n              <Stack sx={{ rowGap: 1, flexGrow: 1, paddingTop: 0.5 }}>\n                <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between' }}>\n                  <Stack\n                    id=\"event-time-link\"\n                    sx={classes.listViewEventTime}\n                    onClick={() => handleSelectEvent(event)}\n                  >\n                    {formatToUserTimeZone(event.start, 'onlyTime')} -{' '}\n                    {formatToUserTimeZone(event.end, 'onlyTime')}\n                  </Stack>\n\n                  <Stack sx={{ flexDirection: 'row', columnGap: 1 }}>\n                    <EditIcon\n                      id=\"edit-event-list-view-button\"\n                      fontSize=\"small\"\n                      onClick={() => handleSelectEvent(event)}\n                      sx={{ color: '#666666', cursor: 'pointer' }}\n                    />\n                    <DeleteIcon\n                      id=\"delete-event-list-button\"\n                      fontSize=\"small\"\n                      sx={{ color: '#E37D7A', cursor: 'pointer' }}\n                      onClick={() => {\n                        handleSelectEvent(event, true);\n                        setOpenConfirmationDialog(true);\n                      }}\n                    />\n                  </Stack>\n                </Stack>\n                <Stack flexDirection=\"row\">\n                  <Stack\n                    id=\"event-name-link\"\n                    sx={classes.listViewEventTitle}\n                    onClick={() => handleSelectEvent(event)}\n                  >\n                    {event.subject}\n                  </Stack>\n                </Stack>\n                <Stack sx={{ flexDirection: 'row', columnGap: 2 }}>\n                  <Stack sx={classes.listViewInfoTag}>\n                    <Stack sx={{ fontWeight: 'bold' }}>Created: </Stack>\n                    <Stack sx={{ fontWeight: 600 }}>{formatToUserTimeZone(event.created_at)}</Stack>\n                  </Stack>\n                  <Stack sx={classes.listViewInfoTag}>\n                    <Stack sx={{ fontWeight: 'bold' }}>Duration: </Stack>\n                    <Stack sx={{ fontWeight: 600 }}>{event.duration}</Stack>\n                  </Stack>\n                </Stack>\n                <Stack sx={{ flexDirection: 'row', padding: '16px 0px' }}>\n                  <Stack sx={{ width: '25%' }}>\n                    <Stack sx={classes.listViewSectionTitle}>Recruiters</Stack>\n                    <GroupedAvatars users={getAttendees(recruiters)} />\n                  </Stack>\n                  <Stack>\n                    <Stack sx={classes.listViewSectionTitle}>\n                      Candidates ({candidates.length}/{event.max_candidates} booked)\n                    </Stack>\n                    {candidates.length ? (\n                      <CandidateGroupedAvatars candidates={candidates} />\n                    ) : (\n                      <Stack sx={classes.listViewNoCandidatesAssigned}>\n                        No Candidates Assigned\n                      </Stack>\n                    )}\n                  </Stack>\n                </Stack>\n                {event.note && (\n                  <Stack sx={{ overflowWrap: 'anywhere' }}>\n                    <Stack sx={classes.listViewSectionTitle}>Description</Stack>\n                    {event.note}\n                  </Stack>\n                )}\n              </Stack>\n            </Stack>\n          </Stack>\n        );\n      })}\n      <GenericDialog\n        isDialogOpen={openConfirmationDialog}\n        setDialogOpen={setOpenConfirmationDialog}\n        title=\"Delete this event?\"\n        description={`Are you sure you want to delete the event \"${createEventObject.eventName}\"?`}\n        buttonCallback={() => deleteEvent()}\n        callbackLoading={deletingEvent}\n        buttonText=\"Delete\"\n        url=\"\"\n        primaryButtonId=\"confirm-delete-event-list-view-button\"\n        secondaryButtonId=\"cancel-delete-event-list-view-button\"\n      />\n    </Stack>\n  );\n}\n","import React, { useEffect, useReducer, useRef, useState } from 'react';\nimport { Calendar, momentLocalizer, Views } from 'react-big-calendar';\nimport StyledSnackbar from '../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport {\n  Box,\n  Button,\n  CircularProgress,\n  Link,\n  Popover,\n  Stack,\n  Tooltip,\n  Typography\n} from '@mui/material';\nimport {\n  CalendarMonth as CalendarMonthIcon,\n  ChevronLeftRounded as ChevronLeftRoundedIcon,\n  ChevronRightRounded as ChevronRightRoundedIcon,\n  Close as CloseIcon,\n  Download as DownloadIcon,\n  Sort as SortIcon,\n  ViewList as ViewListIcon,\n  Info as InfoIcon\n} from '@mui/icons-material';\nimport { withScoutTheme } from '../ThemeContext/ThemeContext';\nimport CreateEvent from './CreateEvent/CreateEvent';\nimport Settings from './Settings';\nimport { sharedClasses } from '../NewUI/Components/CustomUIElements/sharedClasses';\nimport { InitialScoutCalendarState, ScoutCalendarReducer } from './reducer';\nimport { classes } from './styles';\nimport { IEvent } from './types';\nimport { DateCalendar, LocalizationProvider } from '@mui/x-date-pickers';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport ViewEvent from './ViewEvent';\nimport { useQuery } from '@tanstack/react-query';\nimport CreateButton from '../NewUI/Components/Buttons/CreateButton';\nimport ListView from './ListView';\nimport { formatUserPermissions } from '../NewUI/Components/Utilities/formatUserPermissions';\nimport { getPermissions } from '../shared/permissionHelpers';\nimport EventCreated from './EventCreated';\nimport { getPlatform } from '../NewUI/utils/device-detect';\nimport { IScoutCalendarProps } from './index';\nimport { useEvents } from '../NewUI/hooks';\nimport dayjs, { Dayjs } from 'dayjs';\nimport isoWeek from 'dayjs/plugin/isoWeek';\nimport moment from 'moment-timezone';\n\nimport { userTimeZone } from '../NewUI/utils/formatToUserTimeZone';\n\nmoment.tz.setDefault(userTimeZone);\ndayjs.extend(isoWeek);\nconst localizer = momentLocalizer(moment);\n\nconst URL_PARAMS = new URL(window.location.href);\n\nfunction ScoutCalendar({ currentUser, token, newApplicationEnabled }: IScoutCalendarProps) {\n  const { isMobile } = getPlatform();\n  const [ScoutCalendarState, dispatch] = useReducer(\n    ScoutCalendarReducer,\n    InitialScoutCalendarState\n  );\n  const { weekStart, createEventObject, permissions } = ScoutCalendarState;\n  const root = useRef(null);\n  const [viewDate, setViewDate] = useState<Date>(new Date());\n  const [showList, setShowList] = useState(false);\n  const [actionsAnchorEl, setActionsAnchorEl] = useState<HTMLDivElement | null>(null);\n  const [calendarAnchorEl, setCalendarAnchorEl] = useState<HTMLDivElement | null>(null);\n  const [eventCreated, setEventCreated] = useState<boolean>(false);\n  const [calendarView, setCalendarView] = useState<boolean>(!isMobile);\n  const { data: events, isLoading: loadingEvents } = useEvents({\n    weekStart: weekStart,\n    onError: (message: string) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: `There was an error getting events, ${message}`, state: 'error' }\n      })\n  });\n\n  function initialData() {\n    const URL = window.location.pathname.split('/');\n    URL[URL.length - 2] === 'show' && setViewDate(dayjs(URL[URL.length - 1]).toDate());\n    URL[URL.length - 1] === 'show' && handleSelectSlot();\n    URL_PARAMS.search === '?new' && handleSelectSlot();\n    if (URL_PARAMS.search === '?new_multiple') {\n      handleSelectSlot();\n      dispatch({ type: 'CREATE_MULTIPLE_EVENTS', payload: true });\n    }\n  }\n\n  useEffect(() => {\n    initialData();\n\n    return () => {\n      moment.tz.setDefault();\n    };\n  }, []);\n\n  useQuery({\n    queryKey: ['permissions'],\n    queryFn: async () => {\n      const res = await getPermissions();\n      dispatch({ type: 'SET_PERMISSIONS', payload: formatUserPermissions(res) });\n      return res;\n    },\n    onError: (error) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting events, ${error}`,\n          state: 'error'\n        }\n      });\n    }\n  });\n\n  useEffect(() => getWeekStart(), [viewDate]);\n\n  function getWeekStart() {\n    const today = dayjs(viewDate).isoWeekday();\n    const startDay =\n      today === 0 ? dayjs(viewDate).toDate() : dayjs(viewDate).startOf('week').toDate();\n    dispatch({ type: 'SET_WEEK_START', payload: startDay });\n  }\n\n  const getMonthsName = () => {\n    if (dayjs(weekStart).format('MMMM') !== dayjs(weekStart).add(6, 'd').format('MMMM')) {\n      return `${dayjs(weekStart).format('MMM')} - ${dayjs(weekStart)\n        .add(6, 'd')\n        .format('MMM')} ${dayjs(weekStart).add(6, 'd').format('YYYY')}`;\n    } else {\n      return dayjs(weekStart).format('MMMM YYYY');\n    }\n  };\n\n  function handleSelectEvent(event: IEvent, withoutModal?: boolean) {\n    dispatch({\n      type: 'SET_CREATE_EVENT_OBJECT',\n      payload: {\n        ...createEventObject,\n        eventName: event.subject,\n        eventDescription: event.note || '',\n        maxCandidates: String(event.max_candidates),\n        recruiters: event.attendees\n          .filter((a) => a.type === 'User')\n          .map((a) => ({\n            id: a.id,\n            name: a.name,\n            checked: false,\n            attendeeId: a.attendee_id,\n            state: a.state\n          })),\n        eventType: event.event_type,\n        duration: String(event.duration_in_minutes),\n        eventDate: new Date(event.begins_at),\n        eventId: event.id,\n        candidates: event.attendees.filter((a) => a.type === 'Candidate'),\n        dates: [new Date(event.begins_at)],\n        owner: event.owner\n      }\n    });\n    !withoutModal && dispatch({ type: 'SET_SHOW_VIEW_EVENT_MODAL', payload: true });\n  }\n\n  function handleSelectSlot(slot?: { slots: Date[] }) {\n    slot\n      ? dispatch({\n          type: 'SET_CREATE_EVENT_OBJECT',\n          payload: { ...createEventObject, eventDate: slot.slots[0], dates: [slot.slots[0]] }\n        })\n      : dispatch({\n          type: 'SET_CREATE_EVENT_OBJECT',\n          payload: { ...createEventObject, eventDate: new Date() }\n        });\n    dispatch({ type: 'SET_SHOW_CREATE_EVENT_MODAL', payload: true });\n  }\n\n  function CustomEvent({ event }: { event: IEvent }) {\n    const eventLength = dayjs(event.end).diff(dayjs(event.start), 'minute');\n    const sessionLength = event.duration_in_minutes;\n\n    if (!eventLength) return <span />;\n\n    const attendees = event.attendees.filter((attendee) => attendee.type !== 'User');\n\n    return (\n      <Box\n        className={`\n          event-container\n          ${eventLength <= 10 ? 'small-event' : ''}\n          ${sessionLength <= 20 ? 'small-session' : ''}\n          ${'blue'}\n        `}\n      >\n        <Box className=\"event-bg\">\n          <Box className={`event-details ${eventLength <= 30 ? 'truncate' : ''}`}>\n            <Box\n              className=\"event-title\"\n              sx={{ fontSize: '11px', fontWeight: 'bold', color: '#333333' }}\n            >\n              {event.subject}\n            </Box>\n          </Box>\n          <Box className=\"session-container\">\n            <Box\n              key={event.id}\n              className={`session-inner ${!(sessionLength < 10) ? 'hoverable' : ''}`}\n              style={{\n                height: `${(event.duration_in_minutes / eventLength) * 100}%`\n              }}\n            >\n              <Box\n                id=\"event-card\"\n                className=\"session-length\"\n                onClick={() => handleSelectEvent(event)}\n              >\n                <Box\n                  className={`session-element ${\n                    attendees.filter((attendee) => attendee.state === 'accepted').length >=\n                    event.max_candidates\n                      ? 'booked'\n                      : ''\n                  }`}\n                >\n                  <span\n                    className=\"session-candidate\"\n                    style={{ fontSize: eventLength <= 10 ? '11px' : '12px' }}\n                  >\n                    {attendees.length > 0\n                      ? attendees.length === 1\n                        ? `${attendees[0].name}`\n                        : `${attendees.length} candidates`\n                      : 'No bookings'}\n                  </span>\n                  {sessionLength >= 20 && (\n                    <span className=\"session-time\">{dayjs(event.begins_at).format('HH:mma')}</span>\n                  )}\n                </Box>\n              </Box>\n            </Box>\n          </Box>\n        </Box>\n      </Box>\n    );\n  }\n\n  const handleCreateEvent = (multiple: boolean) => {\n    multiple && dispatch({ type: 'CREATE_MULTIPLE_EVENTS', payload: true });\n    setActionsAnchorEl(null);\n    handleSelectSlot();\n    URL_PARAMS.search = multiple ? '?new_multiple' : '?new';\n    window.history.pushState(null, '', URL_PARAMS.href);\n  };\n\n  return (\n    <Box sx={{ position: 'relative' }}>\n      <Box ref={root} className=\"chronos-calendar\">\n        <Box sx={sharedClasses.pageHeader}>\n          <Typography variant=\"h1\">Events</Typography>\n          {(permissions?.['Events']?.['Create / Edit Events'] ||\n            permissions?.['Events']?.['Create Multiple Events']) && (\n            <CreateButton\n              id=\"create-event-main-button\"\n              ariaLabel=\"Add new events\"\n              onClick={(e) => {\n                setActionsAnchorEl(e.currentTarget);\n              }}\n              isOpen={Boolean(actionsAnchorEl)}\n            />\n          )}\n          <Popover\n            open={Boolean(actionsAnchorEl)}\n            anchorEl={actionsAnchorEl}\n            onClose={() => {\n              setActionsAnchorEl(null);\n            }}\n            anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n            transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n            sx={{ '& .MuiPaper-root': { marginTop: '12px', borderRadius: '6px' } }}\n          >\n            <Stack sx={classes.addNewEventsPopover}>\n              {permissions?.['Events']?.['Create / Edit Events'] && (\n                <Stack onClick={() => handleCreateEvent(false)} id=\"create-an-event-button\">\n                  Create An Event\n                </Stack>\n              )}\n              {permissions?.['Events']?.['Create Multiple Events'] && (\n                <Stack onClick={() => handleCreateEvent(true)} id=\"create-multiple-events-button\">\n                  Create Multiple Events\n                </Stack>\n              )}\n            </Stack>\n          </Popover>\n        </Box>\n        <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>\n          <Stack sx={{ width: '150px', flexDirection: 'row' }}>\n            <Button\n              id=\"today-button\"\n              sx={sharedClasses.genericButtonSecondary}\n              onClick={() => setViewDate(new Date())}\n            >\n              Today\n            </Button>\n          </Stack>\n          <Stack>\n            <Box\n              id=\"select-month\"\n              sx={classes.calendarHeader}\n              onClick={(e) => {\n                setCalendarAnchorEl(e.currentTarget);\n              }}\n            >\n              {getMonthsName()}\n            </Box>\n            <Popover\n              open={Boolean(calendarAnchorEl)}\n              anchorEl={calendarAnchorEl}\n              onClose={() => {\n                setCalendarAnchorEl(null);\n              }}\n              anchorOrigin={{ vertical: 'bottom', horizontal: 'center' }}\n              transformOrigin={{ vertical: 'top', horizontal: 'center' }}\n              sx={{ '& .MuiPaper-root': { marginTop: 1 } }}\n            >\n              <Stack sx={{ padding: 1 }}>\n                <CloseIcon\n                  sx={sharedClasses.closeIcon}\n                  onClick={() => {\n                    setCalendarAnchorEl(null);\n                  }}\n                />\n                <LocalizationProvider dateAdapter={AdapterDayjs}>\n                  <DateCalendar\n                    views={['month', 'year']}\n                    openTo=\"month\"\n                    sx={classes.dateCalendar}\n                    onChange={(val: Dayjs | null) => val && setViewDate(val.toDate())}\n                  />\n                </LocalizationProvider>\n              </Stack>\n            </Popover>\n          </Stack>\n          <Stack sx={classes.viewAndSettingsContainer}>\n            {!isMobile && (\n              <Tooltip placement=\"top\" title={calendarView ? 'List view' : 'Calendar view'} arrow>\n                <Button\n                  variant=\"outlined\"\n                  id=\"calendar-list-view-button\"\n                  sx={classes.viewAndSettingsButton}\n                  onClick={() => setCalendarView(!calendarView)}\n                >\n                  {calendarView ? (\n                    <ViewListIcon sx={{ color: '#084D6D' }} fontSize=\"small\" />\n                  ) : (\n                    <CalendarMonthIcon sx={{ color: '#084D6D' }} fontSize=\"small\" />\n                  )}\n                </Button>\n              </Tooltip>\n            )}\n            <Tooltip placement=\"top\" title=\"Download iCal\" arrow>\n              <Button\n                variant=\"outlined\"\n                id=\"download-ical-button\"\n                sx={classes.viewAndSettingsButton}\n                onClick={() => window.open(`${window.location.origin}/ical.ics?token=${token}`)}\n              >\n                <DownloadIcon sx={{ color: '#084D6D' }} fontSize=\"small\" />\n              </Button>\n            </Tooltip>\n            <Tooltip placement=\"top\" title=\"Filter events\" arrow>\n              <Button\n                variant=\"outlined\"\n                id=\"filter-events-button\"\n                sx={classes.viewAndSettingsButton}\n                onClick={() => setShowList(!showList)}\n              >\n                <SortIcon sx={{ color: '#084D6D' }} fontSize=\"small\" />\n              </Button>\n            </Tooltip>\n          </Stack>\n        </Stack>\n        <Stack sx={classes.weekPeriodContainer}>\n          <ChevronLeftRoundedIcon\n            id=\"previous-week-button\"\n            sx={classes.calendarArrows}\n            onClick={() => setViewDate(dayjs(viewDate).subtract(1, 'w').toDate())}\n          />\n          <Box sx={{ fontSize: '14px' }}>\n            {dayjs(weekStart).format('DD MMMM')} - {dayjs(weekStart).add(6, 'd').format('DD MMMM')}\n          </Box>\n          <ChevronRightRoundedIcon\n            id=\"next-week-button\"\n            sx={classes.calendarArrows}\n            onClick={() => setViewDate(dayjs(viewDate).add(1, 'w').toDate())}\n          />\n        </Stack>\n        <Stack sx={classes.timezoneInfo}>\n          <InfoIcon fontSize=\"small\" />\n          Your Calendar displays in{' '}\n          <b>\n            GMT ({dayjs().tz(userTimeZone).format('Z')}) {userTimeZone}\n          </b>{' '}\n          time.\n          <Link href={`${window.location.origin}/admin/settings`} target=\"_blank\" underline=\"hover\">\n            Edit time zone\n          </Link>\n        </Stack>\n        {loadingEvents || !events ? (\n          <Stack sx={{ paddingTop: 20, alignItems: 'center' }}>\n            <CircularProgress size={45} sx={{ color: '#004E70' }} />\n          </Stack>\n        ) : (\n          <>\n            {calendarView ? (\n              <Calendar\n                events={events}\n                date={viewDate}\n                localizer={localizer}\n                scrollToTime={moment().subtract(90, 'm').toDate()}\n                defaultView={Views.WEEK}\n                step={30}\n                timeslots={1}\n                selectable={true}\n                onSelectSlot={(e) =>\n                  permissions?.['Events']?.['Create / Edit Events'] && handleSelectSlot(e)\n                }\n                onSelecting={() => false}\n                onNavigate={() => false}\n                components={{\n                  event: CustomEvent\n                }}\n                formats={{\n                  dayFormat: 'dddd DD/MM'\n                }}\n                dayPropGetter={(date) => {\n                  const day = moment(date).day();\n                  if (day === 0 || day === 6)\n                    return { className: 'weekend', style: { backgroundColor: '#F2F2F2' } };\n                  return {};\n                }}\n              />\n            ) : (\n              <ListView\n                events={events}\n                handleSelectEvent={handleSelectEvent}\n                ScoutCalendarState={ScoutCalendarState}\n                dispatch={dispatch}\n              />\n            )}\n          </>\n        )}\n      </Box>\n      {showList && events && (\n        <Settings\n          showList={showList}\n          setShowList={setShowList}\n          events={events}\n          handleSelectEvent={handleSelectEvent}\n        />\n      )}\n      {ScoutCalendarState.showCreateEventModal && events && (\n        <CreateEvent\n          events={events}\n          ScoutCalendarState={ScoutCalendarState}\n          dispatch={dispatch}\n          setEventCreated={setEventCreated}\n        />\n      )}\n      {ScoutCalendarState.showViewEventModal && events && (\n        <ViewEvent\n          events={events}\n          ScoutCalendarState={ScoutCalendarState}\n          dispatch={dispatch}\n          currentUserId={currentUser.id}\n          userTimezone={userTimeZone}\n          newApplicationEnabled={newApplicationEnabled}\n        />\n      )}\n      <EventCreated\n        open={eventCreated}\n        onClose={() => {\n          setEventCreated(false);\n          dispatch({ type: 'RESET_STATE' });\n          URL_PARAMS.search = '';\n          window.history.pushState(null, '', URL_PARAMS.href);\n        }}\n        ScoutCalendarState={ScoutCalendarState}\n        userTimezone={userTimeZone}\n      />\n      <StyledSnackbar\n        message={ScoutCalendarState.snackbar.message}\n        state={ScoutCalendarState.snackbar.state}\n        setSnackbarState={() =>\n          dispatch({ type: 'SET_SNACKBAR', payload: { message: '', state: 'success' } })\n        }\n      />\n    </Box>\n  );\n}\n\nexport default withScoutTheme(ScoutCalendar);\n","import React, { Dispatch, useState, useEffect, SetStateAction, useCallback } from 'react';\nimport moment from 'moment';\nimport { Box, Drawer, Autocomplete, TextField } from '@mui/material';\nimport CalendarTodayIcon from '@mui/icons-material/CalendarToday';\nimport QueryBuilderIcon from '@mui/icons-material/QueryBuilder';\nimport { DebouncedFormTextField } from '../NewUI/Components/CustomUIElements/FormTextField';\nimport { classes } from './styles';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { IEvent } from './types';\nimport { sharedClasses } from '../NewUI/Components/CustomUIElements/sharedClasses';\n\ninterface Props {\n  events: IEvent[];\n  showList: boolean;\n  setShowList: Dispatch<SetStateAction<boolean>>;\n  handleSelectEvent: (event: IEvent) => void;\n}\n\nfunction Settings({ events, showList, setShowList, handleSelectEvent }: Props) {\n  const [searchTerm, setSearchTerm] = useState<string>('');\n  const [filter, setFilter] = useState<string | null>(null);\n  const [filteredEvents, setFilteredEvents] = useState<IEvent[]>([]);\n\n  const filterEvents = useCallback(\n    (events: IEvent[]) => {\n      if (filter)\n        events = events?.filter((slot) =>\n          filter === 'Upcoming events'\n            ? moment(slot.begins_at).isAfter(new Date())\n            : moment(slot.begins_at).isBefore(new Date())\n        );\n      events = events?.filter((event) =>\n        event.subject.toLowerCase().includes(searchTerm.toLowerCase())\n      );\n      return events;\n    },\n    [searchTerm, filter]\n  );\n\n  useEffect(() => {\n    setFilteredEvents(filterEvents(events));\n  }, [events, filterEvents]);\n\n  return (\n    <Box sx={{ display: 'flex' }}>\n      <Drawer\n        anchor=\"left\"\n        variant=\"persistent\"\n        open={showList}\n        onClose={() => {\n          setShowList(false);\n          setSearchTerm('');\n        }}\n        PaperProps={{ style: { position: 'absolute', minWidth: 500, maxWidth: 500, zIndex: 11 } }}\n        ModalProps={{\n          style: { position: 'absolute' }\n        }}\n      >\n        <Box sx={{ padding: '30px 30px 0 30px' }}>\n          <Box sx={{ display: 'grid' }}>\n            <CloseIcon onClick={() => setShowList(false)} sx={classes.closeIcon} />\n            <DebouncedFormTextField\n              onDebouncedChange={(e: string) => setSearchTerm(e)}\n              id=\"searchEvents\"\n              label=\"Search events\"\n              defaultValue={searchTerm}\n              required={false}\n            />\n          </Box>\n          <Box sx={{ paddingTop: 5, marginRight: 0.5 }}>\n            <Autocomplete\n              disablePortal\n              id=\"select-event-filters\"\n              value={filter}\n              options={['Upcoming events', 'Past events']}\n              getOptionLabel={(option) => option}\n              onChange={(_event, newValue) => setFilter(newValue)}\n              sx={sharedClasses.formAutocomplete}\n              renderInput={(params) => (\n                <TextField\n                  {...params}\n                  label=\"Event Filters\"\n                  InputLabelProps={{ shrink: true }}\n                  placeholder=\"No filter\"\n                />\n              )}\n              renderOption={(props, option) => (\n                <Box\n                  component=\"li\"\n                  id={`${option.toLowerCase().replace(' ', '-')}-filter-option`}\n                  {...props}\n                >\n                  {option}\n                </Box>\n              )}\n            />\n          </Box>\n        </Box>\n        {filteredEvents?.map((event) => (\n          <Box\n            key={event.id}\n            id=\"select-event-from-filter\"\n            sx={classes.itemContainer}\n            onClick={() => {\n              setShowList(false);\n              handleSelectEvent(event);\n            }}\n          >\n            <h3>{event.subject}</h3>\n            <Box sx={classes.itemDetails}>\n              <CalendarTodayIcon fontSize=\"small\" color=\"inherit\" />\n              <span>\n                {moment(event.begins_at).format('llll')} to {moment(event.ends_at).format('LT')}\n              </span>\n            </Box>\n            <Box sx={classes.itemDetails}>\n              <QueryBuilderIcon fontSize=\"small\" color=\"inherit\" />\n              <span>{event.event_type.duration} minutes</span>\n            </Box>\n          </Box>\n        ))}\n      </Drawer>\n    </Box>\n  );\n}\n\nexport default Settings;\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { Collapse, Button, Stack } from '@mui/material';\nimport {\n  Email as EmailIcon,\n  Smartphone as SmartphoneIcon,\n  Rule as RuleIcon,\n  Delete as DeleteIcon\n} from '@mui/icons-material';\nimport { sharedClasses } from '../../NewUI/Components/CustomUIElements/sharedClasses';\nimport { IUserPermissions } from '../../NewUI/Components/sharedTypes';\n\nexport default function ActionButtons({\n  selectedCandidates,\n  permissions,\n  setAction,\n  openDialog\n}: {\n  selectedCandidates: number[];\n  permissions: IUserPermissions | null;\n  setAction: Dispatch<SetStateAction<string>>;\n  openDialog: (action: string) => void;\n}) {\n  return (\n    <Collapse in={selectedCandidates.length > 0}>\n      <Stack sx={{ flexDirection: 'row', columnGap: 2, paddingTop: 0.5 }}>\n        {permissions?.['Events']?.['Send emails in bulk on events'] && (\n          <Button\n            id=\"email-candidates-from-event-button\"\n            startIcon={<EmailIcon />}\n            sx={{ ...sharedClasses.genericButtonSecondary, padding: '6px 16px' }}\n            onClick={() => setAction('Email')}\n          >\n            Email\n          </Button>\n        )}\n        {permissions?.['Events']?.['Send SMS in bulk on events'] && (\n          <Button\n            id=\"sms-candidates-from-event-button\"\n            startIcon={<SmartphoneIcon />}\n            sx={{ ...sharedClasses.genericButtonSecondary, padding: '6px 16px' }}\n            onClick={() => setAction('SMS')}\n          >\n            SMS\n          </Button>\n        )}\n        {permissions?.['Events']?.['Change candidates status in bulk on events'] && (\n          <Button\n            id=\"change-candidates-status-from-event-button\"\n            startIcon={<RuleIcon />}\n            sx={{ ...sharedClasses.genericButtonSecondary, padding: '6px 16px' }}\n            onClick={() => setAction('Change status')}\n          >\n            Change Status\n          </Button>\n        )}\n        <Button\n          id=\"remove-candidates-from-event-button\"\n          startIcon={<DeleteIcon />}\n          sx={{ ...sharedClasses.genericRedButton, '&:focus': { outline: 'none' } }}\n          onClick={() => openDialog('Remove')}\n        >\n          Remove\n        </Button>\n      </Stack>\n    </Collapse>\n  );\n}\n","import React, { Dispatch, SetStateAction, useState } from 'react';\nimport StyledModal from '../../NewUI/Components/GenericModal/StyledModal';\nimport {\n  Autocomplete,\n  Box,\n  Button,\n  Checkbox,\n  CircularProgress,\n  Collapse,\n  FormControlLabel,\n  InputAdornment,\n  OutlinedInput,\n  Stack,\n  TextField\n} from '@mui/material';\nimport { Search as SearchIcon } from '@mui/icons-material';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport { IAttendee, ScoutCalendarAction, ScoutCalendarState } from '../types';\nimport { sharedClasses } from '../../NewUI/Components/CustomUIElements/sharedClasses';\nimport ModalFooterButtons from '../../NewUI/Components/GenericModal/ModalFooterButtons';\nimport SelectField from '../../NewUI/Components/CustomUIElements/SelectField';\nimport { FormTextField } from '../../NewUI/Components/CustomUIElements/FormTextField';\nimport { DELAY_OPTIONS } from '../../NewUI/constants';\nimport HtmlEditor from '../../NewUI/Components/Utilities/HtmlEditor';\nimport AttachmentSelectorAndPreview from '../../NewUI/Components/CustomUIElements/AttachmentSelectorAndPreview';\nimport { FileWithPath } from 'react-dropzone';\nimport { classes } from './styles';\nimport { classes as emailStyle } from '../../NewUI/Job/Applications/styles';\nimport VirtualizeGrouped, {\n  formatOptions\n} from '../../NewUI/Components/CustomUIElements/VirtualizedGroupedAutocomplete';\nimport { stringToSeconds } from '../../NewUI/Components/Utilities/stringToSeconds';\nimport { serialize } from 'object-to-formdata';\nimport { MultilineFormTextField } from '../../NewUI/Components/CustomUIElements/FormTextField';\nimport { ISmsTemplate } from '../../NewUI/Job/Applications/Modals/SMSCandidates';\nimport { IApplicationStatus } from '../../NewUI/Job/types';\nimport SelectedCandidatesTable from './SelectedCandidatesTable';\nimport API from '../API';\n\nexport default function ActionModal({\n  ScoutCalendarState,\n  dispatch,\n  action,\n  handleClose,\n  selectedCandidates,\n  setSelectedCandidates\n}: {\n  ScoutCalendarState: ScoutCalendarState;\n  dispatch: Dispatch<ScoutCalendarAction>;\n  action: string;\n  handleClose: () => void;\n  selectedCandidates: IAttendee[];\n  setSelectedCandidates: Dispatch<SetStateAction<number[]>>;\n}) {\n  const [excludeApplicants, setExcludeApplicants] = useState<boolean>(false);\n  const [delay, setDelay] = useState<string>('None');\n  const [subject, setSubject] = useState<string>('');\n  const [body, setBody] = useState<string>('');\n  const [placeholders, setPlaceholders] = useState<string>('');\n  const [attachments, setAttachments] = useState<FileWithPath[]>([]);\n  const [templateAttachments, setTemplateAttachments] = useState([]);\n  const [selectedTemplate, setSelectedTemplate] = useState<string | null>(null);\n  const [searchTerm, setSearchTerm] = useState<string>('');\n  const [smsTemplate, setSmsTemplate] = useState<ISmsTemplate | null>(null);\n  const [smsMessage, setSmsMessage] = useState<string>('');\n  const [smsTemplateName, setSmsTemplateName] = useState<string>('');\n  const [smsTemplateError, setSmsTemplateError] = useState<string>('');\n  const [selectedStatus, setSelectedStatus] = useState<IApplicationStatus | null>(null);\n\n  const { createEventObject } = ScoutCalendarState;\n  const queryClient = useQueryClient();\n\n  const { data: emailTemplates, isLoading: loadingEmailTemplates } = useQuery({\n    queryKey: ['email templates'],\n    queryFn: async () => {\n      const {\n        res: { email_templates, placeholders }\n      } = await Api.getEmailTemplates();\n      placeholders && setPlaceholders(placeholders);\n      return formatOptions(email_templates);\n    },\n    onError: (error) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting email templates, ${error}`,\n          state: 'error'\n        }\n      });\n    },\n    enabled: action === 'Email'\n  });\n\n  useQuery({\n    queryKey: [selectedTemplate],\n    queryFn: async () => {\n      if (!selectedTemplate) return;\n      const { res } = await Api.getEmailTemplate(Number(selectedTemplate.split(' -')[0]));\n      return res;\n    },\n    onSuccess: (emailTemplate) => {\n      setSubject(emailTemplate.subject);\n      setBody(emailTemplate.body);\n      setTemplateAttachments(emailTemplate.email_attachments);\n    },\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting template data, ${error}`,\n          state: 'error'\n        }\n      }),\n    enabled: !!selectedTemplate\n  });\n\n  const { mutate: sendEmails, isLoading: sendingEmails } = useMutation({\n    mutationFn: async () => {\n      const data = {\n        email_batch: {\n          applications_ids: selectedCandidates.map((c) => c.application_id),\n          email_template_id: Number(selectedTemplate?.split(' -')[0]),\n          subject,\n          body,\n          delay: stringToSeconds(delay),\n          only_new: excludeApplicants,\n          ...(attachments.length > 0 && { new_email_attachments: attachments })\n        }\n      };\n      const { res } = await API.sendEmailBatchesToCandidates(createEventObject.eventId, data);\n      return res;\n    },\n    onSuccess: () => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `Candidates emailed successfully`,\n          state: 'success'\n        }\n      });\n      handleClose();\n    },\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error in sending email to the candidates', ${error}`,\n          state: 'error'\n        }\n      })\n  });\n\n  const { data: smsTemplates, isFetching: fetchingSmsTemplates } = useQuery({\n    queryKey: ['sms templates'],\n    queryFn: async () => {\n      const {\n        res: { sms_templates }\n      } = await Api.getSmsTemplates();\n      return sms_templates as ISmsTemplate[];\n    },\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: `${error}`, state: 'error' }\n      }),\n    initialData: [],\n    enabled: action === 'SMS'\n  });\n\n  const { mutate: saveTemplate, isLoading: savingTemplate } = useMutation({\n    mutationFn: async () => {\n      const { res } = await Api.saveSmsTemplate(smsTemplateName, smsMessage);\n      return res;\n    },\n    onError: (error) =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: `${error}`, state: 'error' }\n      }),\n    onSuccess: (res) => {\n      queryClient.setQueryData(['sms templates'], [...smsTemplates, res]);\n      setSmsTemplate(res);\n      setSmsTemplateName('');\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: 'Template saved',\n          state: 'success'\n        }\n      });\n    }\n  });\n\n  const handleSaveTemplate = () => {\n    if (smsTemplates?.find((template) => template.title === smsTemplateName)) {\n      setSmsTemplateError('Template name already exists');\n      return;\n    }\n    saveTemplate();\n  };\n\n  const { mutate: sendSms, isLoading: sendingSms } = useMutation({\n    mutationFn: async () => {\n      const { res } = await Api.smsCandidates(\n        createEventObject.eventId,\n        selectedCandidates.map((c) => c.application_id),\n        smsMessage\n      );\n      if (res.success !== 0) {\n        dispatch({\n          type: 'SET_SNACKBAR',\n          payload: {\n            message: 'Candidates SMS message sent successfully',\n            state: 'success'\n          }\n        });\n        handleClose();\n      } else {\n        dispatch({\n          type: 'SET_SNACKBAR',\n          payload: {\n            message: 'There was an error in sending SMS to the candidates',\n            state: 'error'\n          }\n        });\n      }\n      return res;\n    }\n  });\n\n  const { data: statuses, isLoading: loadingStatuses } = useQuery({\n    queryKey: ['application statuses'],\n    queryFn: async () => {\n      const {\n        res: { event_application_statuses }\n      } = await Api.getEventApplicationStatuses(createEventObject.eventId);\n      return event_application_statuses;\n    },\n    onError: (error) => {\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: `There was an error getting application statuses, ${error}`,\n          state: 'error'\n        }\n      });\n    },\n    enabled: action === 'Change status'\n  });\n\n  const { mutate: changeStatus, isLoading: changingStatus } = useMutation({\n    mutationFn: async () => {\n      if (!selectedStatus) return;\n      const { res } = await Api.changeApplicationStatuses(\n        createEventObject.eventId,\n        selectedStatus.id,\n        selectedCandidates.map((c) => c.application_id)\n      );\n      return res;\n    },\n    onError: () =>\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: {\n          message: 'There was an error in changing status of the candidates',\n          state: 'error'\n        }\n      }),\n    onSuccess: (res) => {\n      if (!res) return;\n      dispatch({\n        type: 'SET_SNACKBAR',\n        payload: { message: res.success, state: 'success' }\n      });\n      handleClose();\n    }\n  });\n\n  const validateInputs = () => {\n    if (action === 'Email') {\n      return selectedTemplate && subject.trim() && body.trim();\n    } else if (action === 'SMS') {\n      return smsMessage.trim();\n    } else {\n      return selectedStatus;\n    }\n  };\n\n  const buttonCallback = () => {\n    if (validateInputs()) {\n      if (action === 'Email') {\n        return sendEmails;\n      } else if (action === 'SMS') {\n        return sendSms;\n      } else {\n        return changeStatus;\n      }\n    }\n  };\n\n  const candidates = selectedStatus\n    ? selectedCandidates.map((s) => ({ ...s, status_details: selectedStatus }))\n    : selectedCandidates;\n\n  return (\n    <StyledModal\n      isOpen={!!action}\n      label={`${action} event modal`}\n      handleClose={handleClose}\n      styleOverrides={{\n        maxHeight: '700px',\n        width: '800px',\n        padding: '40px'\n      }}\n    >\n      <Stack sx={{ width: '100%', height: '100%', rowGap: 2 }}>\n        <Stack sx={{ fontWeight: 'bold', color: '#084D6D', fontSize: '25px' }}>\n          {action} {action !== 'Change status' && 'candidates'}\n        </Stack>\n        <Stack sx={classes.actionModalContent}>\n          {action === 'Email' && (\n            <>\n              <VirtualizeGrouped\n                value={selectedTemplate}\n                options={emailTemplates || []}\n                onChange={(value) => {\n                  !value && setBody('');\n                  setSelectedTemplate(value);\n                }}\n                styles={{\n                  ...sharedClasses.formAutocomplete,\n                  width: '600px',\n                  marginTop: '20px'\n                }}\n                label=\"Template\"\n                loading={loadingEmailTemplates}\n                loadingText=\"Loading template list...\"\n                required\n              />\n              <FormControlLabel\n                control={\n                  <Checkbox\n                    sx={sharedClasses.formCheckbox}\n                    checked={excludeApplicants}\n                    onClick={() => setExcludeApplicants(!excludeApplicants)}\n                    disableRipple\n                  />\n                }\n                label=\"Exclude applicants who have received this email template\"\n                sx={sharedClasses.checkboxLabel}\n              />\n              <Stack sx={{ color: '#666666', fontWeight: 'bold' }}>Email details</Stack>\n              <SelectField\n                label=\"Delay\"\n                options={DELAY_OPTIONS}\n                value={delay}\n                onChange={setDelay}\n                styles={{ width: '40%' }}\n              />\n              <FormTextField\n                label=\"Subject\"\n                value={subject}\n                styles={{ width: '40%', input: { margin: '3px !important' } }}\n                onChange={(e) => setSubject(e.target.value)}\n                required\n              />\n              <Stack sx={{ paddingBottom: 2 }}>\n                <Stack sx={emailStyle.formLabel}>Body</Stack>\n                <HtmlEditor body={body} onChange={setBody} />\n                <Stack sx={emailStyle.placeholderText}>\n                  Available placeholders are: {placeholders}\n                </Stack>\n              </Stack>\n              <AttachmentSelectorAndPreview\n                attachments={attachments}\n                setAttachments={setAttachments}\n                templateAttachments={templateAttachments}\n                styleOverrides={{ margin: 'unset' }}\n              />\n            </>\n          )}\n          {action === 'SMS' && (\n            <>\n              <Stack sx={{ color: '#939393', fontWeight: 'bold', paddingBottom: 3 }}>Message</Stack>\n              <Autocomplete\n                disablePortal\n                id=\"add-to-event-sms-template-select\"\n                options={smsTemplates}\n                getOptionLabel={(option) => option.title}\n                value={smsTemplate}\n                sx={{ ...sharedClasses.formAutocomplete, width: '100%' }}\n                loading={fetchingSmsTemplates}\n                loadingText=\"Loading SMS templates...\"\n                ListboxProps={{ style: emailStyle.addToEventListboxProps }}\n                renderInput={(params) => (\n                  <TextField\n                    {...params}\n                    label=\"Choose SMS template\"\n                    InputLabelProps={{ shrink: true }}\n                    sx={{\n                      '& .MuiInputBase-root': { margin: 'unset', marginTop: 1 }\n                    }}\n                  />\n                )}\n                onChange={(event, value) => {\n                  if (value) {\n                    setSmsMessage(value.body);\n                  } else {\n                    setSmsMessage('');\n                  }\n                  setSmsTemplate(value);\n                }}\n              />\n              <Stack>\n                <MultilineFormTextField\n                  label=\"Content\"\n                  value={smsMessage}\n                  onChange={(e) => setSmsMessage(e.target.value)}\n                  maxLength={160}\n                  required\n                />\n                <Stack sx={emailStyle.addToEventCharacterCount}>{smsMessage.length} / 160</Stack>\n                <Collapse in={!!smsMessage.trim() && smsMessage !== smsTemplate?.body}>\n                  <Stack\n                    sx={{\n                      flexDirection: 'row',\n                      alignItems: 'baseline',\n                      columnGap: 5\n                    }}\n                  >\n                    <FormTextField\n                      id=\"new-sms-template-title\"\n                      label=\"Template title\"\n                      value={smsTemplateName}\n                      styles={classes.actionModalTemplateTitle}\n                      onChange={(e) => {\n                        setSmsTemplateName(e.target.value);\n                        if (smsTemplateError) setSmsTemplateError('');\n                      }}\n                    />\n                    <Box sx={{ transform: 'translateY(-1.5px)' }}>\n                      <Button\n                        id=\"save-sms-template\"\n                        type=\"submit\"\n                        sx={emailStyle.saveSMSTemplateButton}\n                        onClick={handleSaveTemplate}\n                      >\n                        {savingTemplate ? (\n                          <CircularProgress size={20} color=\"inherit\" />\n                        ) : (\n                          'Save template'\n                        )}\n                      </Button>\n                    </Box>\n                    {smsTemplateError && (\n                      <Box sx={emailStyle.saveSMSTemplateError}>{smsTemplateError}</Box>\n                    )}\n                  </Stack>\n                </Collapse>\n              </Stack>\n            </>\n          )}\n          {action === 'Change status' && (\n            <Autocomplete\n              options={statuses || []}\n              getOptionLabel={(option: IApplicationStatus) => option.name}\n              onChange={(e, value) => setSelectedStatus(value)}\n              loading={loadingStatuses}\n              value={selectedStatus}\n              sx={{\n                ...sharedClasses.formAutocomplete,\n                width: '44%',\n                paddingTop: 3\n              }}\n              ListboxProps={{ style: emailStyle.addToEventListboxProps }}\n              renderInput={(params) => (\n                <TextField\n                  {...params}\n                  label=\"Change to status\"\n                  InputLabelProps={{ shrink: true }}\n                />\n              )}\n            />\n          )}\n          <Stack sx={{ color: '#666666', fontWeight: 'bold' }}>Candidates</Stack>\n          <OutlinedInput\n            sx={emailStyle.candidateSearch}\n            placeholder={'Search candidates'}\n            value={searchTerm}\n            onChange={(e) => setSearchTerm(e.target.value)}\n            startAdornment={\n              <InputAdornment sx={{ padding: '0px 0px 0px 10px' }} position=\"start\">\n                <SearchIcon />\n              </InputAdornment>\n            }\n          />\n          <Box\n            sx={{\n              ...emailStyle.selectedApplicantsTableHeader,\n              margin: 'unset'\n            }}\n          >\n            {selectedCandidates.length} candidates selected\n          </Box>\n          <SelectedCandidatesTable\n            candidates={candidates}\n            selectedCandidates={selectedCandidates}\n            setSelectedCandidates={setSelectedCandidates}\n            searchTerm={searchTerm}\n            action={action}\n          />\n        </Stack>\n        <ModalFooterButtons\n          primaryButtonText={action === 'Change status' ? 'Confirm' : 'Send'}\n          primaryButtonCallback={buttonCallback()}\n          primaryButtonMinWidth={action === 'Change status' ? '95px' : '75px'}\n          primaryButtonDisabled={!validateInputs()}\n          secondaryButtonText=\"Cancel\"\n          secondaryButtonCallback={handleClose}\n          isLoading={sendingEmails || sendingSms || changingStatus}\n          primaryButtonID={`${\n            action === 'Change status'\n              ? `confirm-${action.toLowerCase().replace(' ', '-')}`\n              : `send-${action.toLowerCase()}`\n          }-from-event-button`}\n          secondaryButtonID={`cancel-${action.toLowerCase().replace(' ', '-')}-from-event-button`}\n        />\n      </Stack>\n    </StyledModal>\n  );\n}\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { Box, IconButton, Table, TableHead, TableRow, TableCell, TableBody } from '@mui/material';\nimport { Clear as ClearIcon } from '@mui/icons-material';\nimport { classes } from '../../NewUI/Job/Applications/styles';\nimport { getRatingColor } from '../../NewUI/Job/Applications/SelectedApplicants';\nimport { theme } from '../../ThemeContext/ThemeObject';\nimport { IAttendee } from '../types';\n\nexport default function SelectedCandidatesTable({\n  candidates,\n  selectedCandidates,\n  setSelectedCandidates,\n  searchTerm,\n  action\n}: {\n  candidates: IAttendee[];\n  selectedCandidates: IAttendee[];\n  setSelectedCandidates: Dispatch<SetStateAction<number[]>>;\n  searchTerm: string;\n  action: string;\n}) {\n  return (\n    <Table sx={classes.selectedApplicantsTable} aria-label=\"selected applicants\">\n      <TableHead>\n        <TableRow>\n          <TableCell>Name</TableCell>\n          {action !== 'SMS' && <TableCell>Email</TableCell>}\n          {action !== 'Email' && <TableCell>Phone</TableCell>}\n          <TableCell>Status</TableCell>\n          <TableCell>Rating</TableCell>\n          <TableCell></TableCell>\n        </TableRow>\n      </TableHead>\n      <TableBody>\n        {candidates\n          .filter((candidate) => candidate.name.toLowerCase().includes(searchTerm))\n          .map((candidate) => (\n            <TableRow key={candidate.attendee_id}>\n              <TableCell\n                onClick={() =>\n                  candidate.application_url && window.open(candidate.application_url, '_blank')\n                }\n                sx={{\n                  cursor: 'pointer',\n                  '&:hover': {\n                    textDecoration: 'underline'\n                  }\n                }}\n              >\n                {candidate.name}\n              </TableCell>\n              {action !== 'SMS' && <TableCell>{candidate.email}</TableCell>}\n              {action !== 'Email' && <TableCell>{candidate.phone}</TableCell>}\n              <TableCell sx={classes.applicationStatus}>\n                <Box\n                  sx={{\n                    ...classes.statusDropdownSelected,\n                    ...classes.statusClampSelected\n                  }}\n                >\n                  <Box\n                    sx={{\n                      ...classes.statusColour,\n                      backgroundColor: candidate.status_details?.colour || '#AAAAAA'\n                    }}\n                  ></Box>\n                  {candidate.status_details?.name || 'New'}\n                </Box>\n              </TableCell>\n              <TableCell\n                sx={{\n                  color: '#000000',\n                  fontWeight: '600'\n                }}\n              >\n                <Box\n                  sx={{\n                    ...classes.rating,\n                    backgroundColor: getRatingColor(\n                      candidate.application_rating === null\n                        ? 101\n                        : Number(candidate.application_rating)\n                    )\n                  }}\n                >\n                  {candidate.application_rating\n                    ? Math.ceil(Number(candidate.application_rating)) + '%'\n                    : '-'}\n                </Box>\n              </TableCell>\n              <TableCell sx={{ display: 'flex', justifyContent: 'end' }}>\n                <IconButton\n                  onClick={() =>\n                    setSelectedCandidates(\n                      selectedCandidates\n                        .filter((s) => s.id !== candidate.id)\n                        .map((c) => c.attendee_id)\n                    )\n                  }\n                >\n                  <ClearIcon sx={{ color: theme.palette.error.main }} />\n                </IconButton>\n              </TableCell>\n            </TableRow>\n          ))}\n      </TableBody>\n    </Table>\n  );\n}\n","import React, { Dispatch, SetStateAction, useState } from 'react';\nimport {\n  Box,\n  Button,\n  ButtonGroup,\n  Checkbox,\n  Dialog,\n  Divider,\n  IconButton,\n  Link,\n  Stack\n} from '@mui/material';\nimport {\n  Close as CloseIcon,\n  ContactPage as ContactPageIcon,\n  Delete as DeleteIcon\n} from '@mui/icons-material';\nimport { classes } from './styles';\nimport { IEvent, ScoutCalendarAction, ScoutCalendarState } from '../types';\nimport { ReviewStep } from '../CreateEvent/EventProgress';\nimport GenericDialog from '../../NewUI/Components/Modals/GenericDialog';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport API from '../API';\nimport ActionModal from './ActionModal';\nimport ActionButtons from './ActionButtons';\nimport { useDeleteEvent } from '../helper';\n\ninterface Props {\n  events: IEvent[];\n  ScoutCalendarState: ScoutCalendarState;\n  dispatch: Dispatch<ScoutCalendarAction>;\n  // setSnackbar indicates that the modal is called from dashboard\n  setSnackbar?: Dispatch<\n    SetStateAction<{ message: string; state: 'success' | 'warning' | 'error' }>\n  >;\n  currentUserId: number;\n  newApplicationEnabled: boolean;\n}\n\nfunction ViewEvent({\n  events,\n  ScoutCalendarState,\n  dispatch,\n  setSnackbar,\n  currentUserId,\n  newApplicationEnabled\n}: Props) {\n  const [tab, setTab] = useState<number>(1);\n  const [openConfirmationDialog, setOpenConfirmationDialog] = useState<boolean>(false);\n  const [selectedCandidates, setSelectedCandidates] = useState<number[]>([]);\n  const [confirmAction, setConfirmAction] = useState<string>('');\n  const [action, setAction] = useState<string>('');\n  const { createEventObject, showViewEventModal, weekStart, permissions } = ScoutCalendarState;\n  const { eventId, candidates, recruiters } = createEventObject;\n  const queryClient = useQueryClient();\n  const currentUserIsARecruiter = recruiters.find((r) => r.id === currentUserId);\n\n  const onClose = () => {\n    dispatch({ type: 'RESET_STATE' });\n    dispatch({ type: 'SET_SHOW_VIEW_EVENT_MODAL', payload: false });\n  };\n\n  const { deleteEvent, deletingEvent } = useDeleteEvent({\n    events,\n    setSnackbar,\n    ScoutCalendarState,\n    dispatch,\n    onClose\n  });\n\n  const { mutate: removeCandidates, isLoading: removingCandidates } = useMutation({\n    mutationFn: async () => API.removeAttendees(eventId, selectedCandidates).then(({ res }) => res),\n    onError: (error) => {\n      const snackbarPayload: { message: string; state: 'error' } = {\n        message: `There was an error clearing the session, ${error}`,\n        state: 'error'\n      };\n      setSnackbar\n        ? setSnackbar(snackbarPayload)\n        : dispatch({ type: 'SET_SNACKBAR', payload: snackbarPayload });\n    },\n    onSuccess: () => {\n      const snackbarPayload: { message: string; state: 'success' } = {\n        message: `${candidates.find((c) => c.attendee_id === selectedCandidates[0])?.name}${\n          selectedCandidates.length > 1 ? ` and ${selectedCandidates.length - 1} others` : ''\n        } has been successfully removed and notified`,\n        state: 'success'\n      };\n      setSnackbar\n        ? setSnackbar(snackbarPayload)\n        : dispatch({ type: 'SET_SNACKBAR', payload: snackbarPayload });\n      const updatedCandidates = candidates.filter(\n        (c) => !selectedCandidates.includes(c.attendee_id)\n      );\n      dispatch({\n        type: 'SET_CREATE_EVENT_OBJECT',\n        payload: { ...createEventObject, candidates: updatedCandidates }\n      });\n      setOpenConfirmationDialog(false);\n      setSelectedCandidates([]);\n      setSnackbar\n        ? queryClient.invalidateQueries(['getEvents'], { exact: true })\n        : queryClient.invalidateQueries(['events', ScoutCalendarState.weekStart], { exact: true });\n      //refreshes the events list on the application page events table on the tasks and events tab\n      queryClient.invalidateQueries(['application events'], { exact: true });\n    }\n  });\n\n  const { mutate: updateInvitation, isLoading: updatingInvitation } = useMutation({\n    mutationFn: async () =>\n      currentUserIsARecruiter?.attendeeId &&\n      (\n        await API.updateAttendeeInvitation(\n          eventId,\n          currentUserIsARecruiter.attendeeId,\n          confirmAction === 'Accept' ? 'accepted' : 'declined'\n        )\n      ).res,\n    onError: (error: { errors: string }) => {\n      const snackbarPayload: { message: string; state: 'error' } = {\n        message: `There was an error ${\n          confirmAction === 'Accept' ? 'accepting' : 'declining'\n        } the event, ${error.errors}`,\n        state: 'error'\n      };\n      setSnackbar\n        ? setSnackbar(snackbarPayload)\n        : dispatch({ type: 'SET_SNACKBAR', payload: snackbarPayload });\n    },\n    onSuccess: (res: IEvent) => {\n      // updating the recruiters accepted/declined state inside the modal\n      const updatedRecruiters = [...recruiters];\n      const attendeeIndex = updatedRecruiters.findIndex(\n        (r) => r.attendeeId === currentUserIsARecruiter?.attendeeId\n      );\n      updatedRecruiters[attendeeIndex].state = confirmAction === 'Accept' ? 'accepted' : 'declined';\n      dispatch({\n        type: 'SET_CREATE_EVENT_OBJECT',\n        payload: { ...createEventObject, recruiters: updatedRecruiters }\n      });\n\n      // updating the events list with the new data from accepting/declining the invite\n      const updatedEvents = [...events];\n      const index = updatedEvents.findIndex((e) => e.id === eventId);\n      updatedEvents[index] = {\n        ...res,\n        start: new Date(res.begins_at),\n        end: new Date(res.ends_at)\n      };\n      setSnackbar\n        ? queryClient.setQueryData(['getEvents'], {\n            pages: [{ data: { events: updatedEvents } }]\n          })\n        : queryClient.setQueryData(['events', weekStart], updatedEvents);\n\n      // show success snackbar from dashboard or events page\n      const snackbarPayload: { message: string; state: 'success' } = {\n        message: `Event successfully ${confirmAction === 'Accept' ? 'accepted' : 'declined'}`,\n        state: 'success'\n      };\n      setSnackbar\n        ? setSnackbar(snackbarPayload)\n        : dispatch({ type: 'SET_SNACKBAR', payload: snackbarPayload });\n    },\n    onSettled: () => setOpenConfirmationDialog(false)\n  });\n\n  const dialogTitle = () => {\n    switch (confirmAction) {\n      case 'Delete':\n        return `Delete this event?`;\n      case 'Remove':\n        return `Remove ${\n          selectedCandidates.length < 2 ? 'this' : 'these'\n        } candidate${selectedCandidates.length < 2 ? '' : 's'}`;\n      default:\n        return `${confirmAction} this invitation?`;\n    }\n  };\n\n  const deleteAndRemoveDialogDescription = (\n    <Stack sx={{ rowGap: 3 }}>\n      <Stack sx={{ fontSize: '18px', fontWeight: '600' }}>\n        {`The following applicant${\n          (confirmAction === 'Delete' && candidates.length > 1) ||\n          (confirmAction === 'Remove' && selectedCandidates.length > 1)\n            ? 's'\n            : ''\n        } will be notified ${\n          confirmAction === 'Delete'\n            ? 'of the event cancellations.'\n            : 'regarding their removal from the event.'\n        }`}\n      </Stack>\n      <Stack sx={{ fontSize: '18px', color: '#333333', fontWeight: '400' }}>\n        {confirmAction === 'Delete'\n          ? candidates.map((c) => c.name).join(', ')\n          : selectedCandidates\n              .map((s) => candidates.find((c) => c.attendee_id === s))\n              .map((f) => f?.name)\n              .join(', ')}\n      </Stack>\n    </Stack>\n  );\n\n  const dialogDescription = () => {\n    if (\n      confirmAction === 'Delete' &&\n      (createEventObject.eventDate < new Date() || !createEventObject.candidates.length) // Message for deleting past event or event that does not have any candidates booked in\n    ) {\n      return 'Are you sure you want to delete this event?';\n    }\n    if (confirmAction === 'Delete' || confirmAction === 'Remove') {\n      return deleteAndRemoveDialogDescription;\n    }\n    return (\n      <Stack sx={{ rowGap: 0.5 }}>\n        <Stack>\n          By {confirmAction === 'Accept' ? 'accepting' : 'declining'} this invitation, the event\n        </Stack>\n        <Stack>creator will be notified regarding your status</Stack>\n      </Stack>\n    );\n  };\n\n  const dialogCallback = () => {\n    switch (confirmAction) {\n      case 'Delete':\n        return deleteEvent();\n      case 'Remove':\n        return removeCandidates();\n      default:\n        return updateInvitation();\n    }\n  };\n  const dialogLoading = () => {\n    switch (confirmAction) {\n      case 'Delete':\n        return deletingEvent;\n      case 'Remove':\n        return removingCandidates;\n      default:\n        return updatingInvitation;\n    }\n  };\n\n  const openDialog = (action: string) => {\n    setConfirmAction(action);\n    setOpenConfirmationDialog(true);\n  };\n\n  return (\n    <Dialog maxWidth={false} onClose={onClose} open={showViewEventModal} sx={classes.dialog}>\n      <Stack\n        sx={{\n          ...classes.modalContainer,\n          width: 'auto',\n          height:\n            permissions?.['Events']?.['Create / Edit Events'] &&\n            currentUserIsARecruiter &&\n            tab === 1\n              ? '615px'\n              : '698px'\n        }}\n      >\n        <Box sx={{ ...classes.modalTitle, ...classes.longEventTitle }}>\n          {createEventObject.eventName}\n        </Box>\n        <Stack sx={classes.modalDeleteAndCloseContainer}>\n          <DeleteIcon\n            id=\"delete-individual-event-button\"\n            sx={{ cursor: 'pointer', color: '#E37D7A' }}\n            onClick={() => openDialog('Delete')}\n          />\n          <Divider orientation=\"vertical\" flexItem />\n          <CloseIcon\n            id=\"close-event-modal-button\"\n            onClick={onClose}\n            sx={{ cursor: 'pointer', color: '#DDDDDD' }}\n          />\n        </Stack>\n        <Stack sx={classes.tabsContainer}>\n          <Stack\n            id=\"event-details-tab\"\n            sx={{ ...classes.tab, ...(tab === 1 ? classes.selectedTab : []) }}\n            onClick={() => setTab(1)}\n          >\n            Details\n          </Stack>\n          <Stack\n            id=\"event-candidates-tab\"\n            sx={{ ...classes.tab, ...(tab === 2 ? classes.selectedTab : []) }}\n            onClick={() => setTab(2)}\n          >\n            Candidates\n          </Stack>\n        </Stack>\n        {tab === 1 ? (\n          <>\n            <ReviewStep\n              ScoutCalendarState={ScoutCalendarState}\n              dispatch={dispatch}\n              setTab={setTab}\n            />\n          </>\n        ) : (\n          <Stack>\n            <ActionButtons\n              selectedCandidates={selectedCandidates}\n              permissions={permissions}\n              setAction={setAction}\n              openDialog={openDialog}\n            />\n            <Stack\n              sx={{\n                rowGap: 3,\n                flexGrow: 1,\n                paddingTop: selectedCandidates.length > 0 ? 3 : 0\n              }}\n            >\n              <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between' }}>\n                <Stack sx={{ flexDirection: 'row', columnGap: 2 }}>\n                  <Checkbox\n                    id=\"select-all-candidates-check-box\"\n                    sx={{\n                      ...classes.checkbox,\n                      '&.MuiCheckbox-indeterminate': {\n                        color: 'rgb(170, 170, 170)'\n                      }\n                    }}\n                    checked={\n                      candidates.length > 0 &&\n                      candidates.every((c) => selectedCandidates.includes(c.attendee_id))\n                    }\n                    indeterminate={\n                      candidates.some((c) => selectedCandidates.includes(c.attendee_id)) &&\n                      selectedCandidates.length !== candidates.length\n                    }\n                    onClick={() => {\n                      if (candidates.every((c) => selectedCandidates.includes(c.attendee_id))) {\n                        setSelectedCandidates([]);\n                      } else {\n                        setSelectedCandidates(candidates.map((c) => c.attendee_id));\n                      }\n                    }}\n                  />\n                  <Stack sx={{ color: '#666666', fontWeight: 'bold' }}>\n                    {createEventObject.eventDate.toLocaleDateString('en-GB', {\n                      weekday: 'long',\n                      year: 'numeric',\n                      month: 'long',\n                      day: 'numeric'\n                    })}\n                  </Stack>\n                </Stack>\n                <Stack>\n                  {candidates.length}/{createEventObject.maxCandidates} candidates booked\n                </Stack>\n              </Stack>\n              <Stack\n                sx={{\n                  ...classes.candidatesListContainer,\n                  height: selectedCandidates.length ? '400px' : '425px'\n                }}\n              >\n                {candidates.length ? (\n                  <>\n                    {candidates.map((c) => {\n                      const applicationUrl =\n                        c.application_url && newApplicationEnabled && !c.application_url.includes(\"/new_applications/\")\n                          ? c.application_url.replace('/applications/', '/new_applications/')\n                          : c.application_url;\n                      return (\n                        <Stack key={c.attendee_id} sx={{ flexDirection: 'row', columnGap: 2 }}>\n                          <Checkbox\n                            id=\"select-specific-candidate-check-box\"\n                            disableRipple\n                            sx={classes.checkbox}\n                            checked={selectedCandidates.includes(c.attendee_id)}\n                            onClick={() => {\n                              if (selectedCandidates.includes(c.attendee_id)) {\n                                setSelectedCandidates(\n                                  selectedCandidates.filter((f) => f != c.attendee_id)\n                                );\n                              } else {\n                                setSelectedCandidates([...selectedCandidates, c.attendee_id]);\n                              }\n                            }}\n                          />\n                          <Stack\n                            sx={{\n                              ...classes.candidateList,\n                              ...(selectedCandidates.includes(c.attendee_id) && {\n                                borderColor: '#5BC4BF'\n                              })\n                            }}\n                          >\n                            <Stack flexDirection=\"row\">\n                              <Link\n                                id=\"individual-applications-link\"\n                                href={applicationUrl || '#'}\n                                sx={classes.link}\n                                target=\"_blank\"\n                                underline=\"hover\"\n                              >\n                                #{c.application_id} - {c.name}\n                              </Link>\n                            </Stack>\n                            <Stack flexDirection=\"row\">\n                              <Stack\n                                id=\"individual-job-link\"\n                                onClick={() =>\n                                  c.job_id &&\n                                  window.open(\n                                    `${window.location.origin}/admin/jobs/${c.job_id}`,\n                                    '_blank'\n                                  )\n                                }\n                                sx={{\n                                  ...classes.listViewInfoTag,\n                                  padding: '0px 10px',\n                                  cursor: 'pointer'\n                                }}\n                              >\n                                <Stack sx={{ fontWeight: 'bold' }}>Job:</Stack>\n                                <Stack>\n                                  {c.job_reference} - {c.job_title}\n                                </Stack>\n                              </Stack>\n                            </Stack>\n                          </Stack>\n                        </Stack>\n                      );\n                    })}\n                  </>\n                ) : (\n                  <Stack sx={classes.noCandidatesContainer}>\n                    <ContactPageIcon sx={{ fontSize: '150px' }} />\n                    <Stack sx={{ fontWeight: 'bold', fontSize: '20px' }}>\n                      No candidates are booked\n                    </Stack>\n                  </Stack>\n                )}\n              </Stack>\n            </Stack>\n          </Stack>\n        )}\n      </Stack>\n      {permissions?.['Events']?.['Create / Edit Events'] &&\n        currentUserIsARecruiter &&\n        tab === 1 && (\n          <Stack sx={classes.acceptingInviteContainer}>\n            <Stack sx={{ fontSize: '18px', fontWeight: 'bold', color: '#666666' }}>\n              Are you attending?\n            </Stack>\n            <ButtonGroup sx={classes.acceptingInviteButtonGroup} variant=\"text\">\n              <Button\n                id=\"accept-event-option\"\n                onClick={() => currentUserIsARecruiter.state !== 'accepted' && openDialog('Accept')}\n                sx={{\n                  background: currentUserIsARecruiter.state === 'accepted' ? '#DEF3F2' : 'inherit'\n                }}\n              >\n                Accept\n              </Button>\n              <Button\n                id=\"decline-event-option\"\n                onClick={() =>\n                  currentUserIsARecruiter.state !== 'declined' && openDialog('Decline')\n                }\n                sx={{\n                  background: currentUserIsARecruiter.state === 'declined' ? '#DEF3F2' : 'inherit'\n                }}\n              >\n                Decline\n              </Button>\n            </ButtonGroup>\n          </Stack>\n        )}\n      {tab === 2 && selectedCandidates.length > 0 && (\n        <Stack sx={classes.selectedCandidatesIndicatorContainer}>\n          <Stack>\n            {selectedCandidates.length === candidates.length && 'All'} {selectedCandidates.length}{' '}\n            candidate{selectedCandidates.length > 1 ? 's are' : ' is'} selected\n          </Stack>\n          <IconButton\n            id=\"clear-selected-candidates-button\"\n            sx={classes.clearSelectionButton}\n            onClick={() => setSelectedCandidates([])}\n          >\n            Clear selection\n          </IconButton>\n        </Stack>\n      )}\n      <GenericDialog\n        isDialogOpen={openConfirmationDialog}\n        setDialogOpen={setOpenConfirmationDialog}\n        title={dialogTitle()}\n        description={dialogDescription()}\n        buttonCallback={dialogCallback}\n        callbackLoading={dialogLoading()}\n        buttonText={confirmAction}\n        url=\"\"\n        primaryButtonId={\n          confirmAction === 'Delete' || confirmAction === 'Remove'\n            ? `confirm-${\n                confirmAction === 'Delete' ? 'delete' : 'remove-candidate-from'\n              }-event-button`\n            : undefined\n        }\n        secondaryButtonId={\n          confirmAction === 'Delete' || confirmAction === 'Remove'\n            ? `cancel-${\n                confirmAction === 'Delete' ? 'delete' : 'remove-candidate-from'\n              }-event-button`\n            : undefined\n        }\n        alternateColor={confirmAction === 'Accept' ? true : false}\n      />\n      {action && (\n        <ActionModal\n          ScoutCalendarState={ScoutCalendarState}\n          dispatch={dispatch}\n          action={action}\n          handleClose={() => setAction('')}\n          selectedCandidates={candidates.filter((c) => selectedCandidates.includes(c.attendee_id))}\n          setSelectedCandidates={setSelectedCandidates}\n        />\n      )}\n    </Dialog>\n  );\n}\n\nexport default ViewEvent;\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport API from './API';\nimport { IAttendee, ScoutCalendarAction, ScoutCalendarState } from './types';\nimport { IEvent } from './types';\nimport GroupedAvatars from './CreateEvent/EventProgress/GroupedAvatars';\n\nexport function useDeleteEvent({\n  events,\n  setSnackbar,\n  ScoutCalendarState,\n  dispatch,\n  onClose\n}: {\n  events: IEvent[];\n  setSnackbar?: Dispatch<\n    SetStateAction<{ message: string; state: 'success' | 'warning' | 'error' }>\n  >;\n  ScoutCalendarState: ScoutCalendarState;\n  dispatch: Dispatch<ScoutCalendarAction>;\n  onClose: () => void;\n}) {\n  const queryClient = useQueryClient();\n  const { createEventObject } = ScoutCalendarState;\n  const { candidates, eventId } = createEventObject;\n\n  const { mutate: deleteEvent, isLoading: deletingEvent } = useMutation({\n    mutationFn: async () => await API.deleteEvent(eventId),\n    onError: (error: { errors: string }) => {\n      const snackbarPayload: { message: string; state: 'error' } = {\n        message: `There was an error deleting the event, ${error.errors}`,\n        state: 'error'\n      };\n      setSnackbar\n        ? setSnackbar(snackbarPayload)\n        : dispatch({ type: 'SET_SNACKBAR', payload: snackbarPayload });\n    },\n    onSuccess: () => {\n      const snackbarPayload: { message: string; state: 'success' } = {\n        message: `Event has been successfully deleted.${\n          candidates.length > 0\n            ? ` ${candidates[0].name}${\n                candidates.length > 1 ? ` and ${candidates.length - 1} others` : ''\n              } has been successfully removed and notified`\n            : ''\n        }`,\n        state: 'success'\n      };\n      setSnackbar\n        ? setSnackbar(snackbarPayload)\n        : dispatch({ type: 'SET_SNACKBAR', payload: snackbarPayload });\n      const updatedList = events.filter((e) => e.id !== eventId);\n      setSnackbar\n        ? queryClient.setQueryData(['getEvents'], { pages: [{ data: { events: updatedList } }] })\n        : queryClient.setQueryData(['events', ScoutCalendarState.weekStart], updatedList);\n      //refreshes the events list on the application page events table on the tasks and events tab\n      queryClient.invalidateQueries(['application events'], { exact: true });\n      onClose();\n    }\n  });\n\n  return { deleteEvent, deletingEvent };\n}\n\nexport const getAttendees = (attendees: IAttendee[]) =>\n  attendees.map((r) => ({ id: r.id, name: r.name, state: r.state }));\n\nexport function CandidateGroupedAvatars({ candidates }: { candidates: IAttendee[] }) {\n  return (\n    <GroupedAvatars users={getAttendees(candidates).map((c) => ({ ...c, state: undefined }))} />\n  );\n}\n","import React from 'react';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport ScoutCalendar from './ScoutCalendar';\n\nconst queryClient = new QueryClient({\n  defaultOptions: {\n    queries: {\n      refetchOnWindowFocus: false\n    }\n  }\n});\n\nexport interface IScoutCalendarProps {\n  currentUser: { id: number; time_zone: string | null };\n  token: string;\n  newApplicationEnabled: boolean;\n}\n\nexport default function ScoutCalendarPage({\n  currentUser,\n  token,\n  newApplicationEnabled\n}: IScoutCalendarProps) {\n  return (\n    <QueryClientProvider client={queryClient}>\n      <ScoutCalendar {...{ currentUser, token, newApplicationEnabled }} />\n    </QueryClientProvider>\n  );\n}\n","import React, { useEffect, useState } from \"react\"\nimport { createConsumer } from \"@rails/actioncable\"\nimport StyledSnackbar from \"./NewUI/Components/CustomUIElements/StyledSnackbar\"\n\nfunction TestActionCable() {\n  const [message, setMessage] = useState<string>(\"\")\n  const [snackbar, setSnackbar] = useState<{\n    message: string;\n    state: 'success' | 'warning' | 'error';\n  }>({});\n\n  useEffect(() => {\n    const consumer = createConsumer(\n      document.querySelector('meta[name=\"action-cable-url\"]').content\n    )\n    consumer.subscriptions.create(\n      { channel: \"MessageChannel\" },\n      {\n        connected: () => setMessage(\"Connected\"),\n        received: data => {\n          setMessage(data.message)\n          if (data.state === \"success\" && setSnackbar) {\n            setSnackbar && setSnackbar(data)\n          }\n        },\n      }\n    )\n    return () => {\n      consumer.disconnect()\n    }\n  }, [])\n\n  return (\n    <>\n      <h1>{message}</h1>\n      {snackbar.message && <StyledSnackbar\n        message={snackbar.message}\n        state={snackbar.state}\n        setSnackbarState={setSnackbar}\n      />}\n    </>\n  )\n}\n\nexport default TestActionCable\n","import React, { ReactNode } from 'react';\nimport PropTypes from 'prop-types';\nimport { ThemeProvider, useTheme } from '@material-ui/core/styles'\nimport { createTheme } from '@mui/material/styles';\nimport { theme as baseThemeObject } from './ThemeObject'\n\ninterface ThemeContextProps {\n  children: ReactNode;\n}\n\nexport default function ThemeContext ({ children }: ThemeContextProps) {\n  const baseTheme = useTheme();\n\n  const theme = createTheme({\n    ...baseThemeObject.palette,\n    ...baseThemeObject.props,\n    ...baseThemeObject.overrides,\n    typography: {\n      ...baseThemeObject.typography,\n      button: {\n        textTransform: 'none',\n        fontWeight: baseTheme.typography.fontWeightBold,\n      }\n    },\n    zIndex: {\n      modal: baseTheme.zIndex.modal + 10000,\n      tooltip: baseTheme.zIndex.tooltip + 10000,\n    }\n  });\n\n  return (\n    <ThemeProvider theme={theme}>\n      {children}\n    </ThemeProvider>\n  )\n}\n\nThemeContext.propTypes = {\n  children: PropTypes.node\n}\n\ninterface WithScoutThemeProps {\n  [key: string]: any;\n}\n\nexport function withScoutTheme<T extends WithScoutThemeProps>(Component: React.ComponentType<T>) {\n  return function WrapperComponent(props: T) {\n    return (\n      <ThemeContext>\n        <Component {...props} />\n      </ThemeContext>\n    );\n  };\n}\n","import React, { useEffect, useState } from 'react';\nimport { useWebSockets } from './NewUI/Components/Utilities/useWebSockets';\nimport StyledSnackbar, { ISnackbarInput } from './NewUI/Components/CustomUIElements/StyledSnackbar';\n\nconst WorkatoNotification = () => {\n  const { subscribeToChannel, unsubscribeFromChannel } = useWebSockets(\n    'WorkatoChannel',\n    (data: any, UID?: number) => {\n      console.log('data.message:', data);\n      setSnackbar({ message: data.message, state: data.state });\n    }\n  );\n  const [snackbar, setSnackbar] = useState<ISnackbarInput>({\n    message: '',\n    state: 'success'\n  });\n  useEffect(() => {\n    subscribeToChannel();\n  }, []);\n\n  return (\n    <StyledSnackbar\n      message={snackbar.message}\n      state={snackbar.state}\n      setSnackbarState={setSnackbar}\n    />\n  );\n};\n\nexport default WorkatoNotification;\n","import React, { useState } from 'react';\nimport {\n  Box,\n  Button,\n  DialogTitle,\n  FormControlLabel,\n  Stack,\n  TextareaAutosize,\n  Typography,\n  FormControl,\n  Dialog,\n  FormLabel,\n  RadioGroup,\n  Radio\n} from '@mui/material';\nimport FlagIcon from '@mui/icons-material/Flag';\nimport { DialogProps } from './types';\n\nconst XrefDialogue = (props: DialogProps) => {\n  const { open, handleClose } = props;\n  const [resolution, setResolution] = useState('0');\n  const [comments, setComments] = useState('');\n  const { referee, reference_id } = props;\n\n  const sendInfo = () => {\n    fetch(props.resolution_endpoint, {\n      headers: {\n        'Content-Type': 'application/json'\n      },\n      method: 'POST',\n      body: JSON.stringify({ resolution, reference_id, referee, note: comments })\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        props.setSnackbarState({\n          message: 'Successfully Updated Unusual Activity',\n          state: 'success'\n        });\n      })\n      .catch((error) => {\n        props.setSnackbarState({ message: 'Failed To Update Unusual Activity', state: 'error' });\n      });\n    handleClose();\n  };\n\n  const handleRadioChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    setResolution(event.target.value);\n  };\n\n  const handleCommentsChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n    setComments(event.target.value);\n  };\n\n  const renderFindings = (index: number, key: string, value: string | boolean) => {\n    if (value) {\n      return (\n        <Stack key={index} flexDirection=\"row\" columnGap=\"16px\">\n          <FlagIcon />\n          <Typography variant=\"body2\">{findingDescriptions(key)}</Typography>\n        </Stack>\n      );\n    }\n  };\n\n  const findingDescriptions = (key: string) => {\n    switch (key) {\n      case 'flag_ip_address':\n        return 'Suspicious IP Address Detected: As an example, from same IP Address from the candidate';\n      case 'flag_email_address':\n        return 'Suspicious Email Address Detected: As an example, from a personal email address';\n      case 'flag_browser':\n        return 'Suspicious Browser Detected: As an example, from a browser that is not Chrome, Firefox, or Safari';\n    }\n  };\n  return (\n    <Dialog open={open} onClose={handleClose}>\n      <Box\n        sx={{\n          width: '400px',\n          padding: 2,\n          display: 'flex',\n          alignItems: 'center',\n          flexDirection: 'column'\n        }}\n      >\n        <DialogTitle>Unusual Activity</DialogTitle>\n        <Box sx={{ margin: 1, width: '100%' }}>\n          <Typography sx={{ textTransform: 'capitalize' }}>Status: {props.ua?.status}</Typography>\n          {props.ua?.findings &&\n            Object.entries(props.ua.findings).map(([key, value], index) =>\n              renderFindings(index, key, value)\n            )}\n        </Box>\n        <FormControl sx={{ width: '100%' }}>\n          <FormLabel>Verify This Activity</FormLabel>\n          <RadioGroup defaultValue=\"0\" name=\"radio-buttons-group\" onChange={handleRadioChange}>\n            <FormControlLabel value=\"0\" control={<Radio />} label=\"Valid\" />\n            <FormControlLabel value=\"1\" control={<Radio />} label=\"Suspicious\" />\n          </RadioGroup>\n          <TextareaAutosize\n            aria-label=\"minimum height\"\n            minRows={3}\n            style={{ width: '100%' }}\n            placeholder=\"Comments\"\n            onChange={handleCommentsChange}\n          />\n\n          <Stack sx={{ columnGap: 1, width: '100%', paddingTop: 1, flexDirection: 'row' }}>\n            <Button color=\"primary\" onClick={sendInfo} variant=\"outlined\">\n              Submit\n            </Button>\n            <Button color=\"error\" onClick={handleClose} variant=\"outlined\">\n              Cancel\n            </Button>\n          </Stack>\n        </FormControl>\n      </Box>\n    </Dialog>\n  );\n};\n\nexport default XrefDialogue;\n","import React, { useState } from 'react';\nimport { Button } from '@mui/material';\nimport StyledSnackbar from '../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport XrefDialogue from './XrefDialogue';\nimport { ButtonProps } from './types';\n\nconst XrefDialogueButton = (props: ButtonProps) => {\n  const [open, setOpen] = useState(false);\n  const [snackbarState, setSnackbarState] = useState<{\n    message: string;\n    state: 'success' | 'warning' | 'error';\n  }>({\n    state: 'success',\n    message: ''\n  });\n\n  return (\n    <>\n      <Button onClick={() => setOpen(true)}>Unusual Activity</Button>\n      <XrefDialogue\n        open={open}\n        handleClose={() => setOpen(false)}\n        setSnackbarState={setSnackbarState}\n        {...props}\n      />\n      <StyledSnackbar\n        state={snackbarState.state}\n        setSnackbarState={setSnackbarState}\n        message={snackbarState.message}\n      />\n    </>\n  );\n};\n\nexport default XrefDialogueButton;\n","import XrefDialogueButton from './XrefDialogueButton';\n\nexport default XrefDialogueButton;\n","import axios from 'axios';\n\nexport default class ServiceApi {\n  static get(id, callback) {\n    return axios.get(\n      `/admin/integration_menu_items/${id}.json`,\n      {\n        headers: {\n          'Content-Type': 'application/json',\n          'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content'),\n        },\n      },\n    ).then(response => callback(response.data));\n  }\n\n  static getPage(path, callback) {\n    return axios.get(\n      path, {\n        headers: {\n          'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content'),\n        },\n      },\n    ).then(response => callback(response));\n  }\n\n  static sendNotification(id, pack, callback) {\n    return axios.post(\n      `/admin/integration_menu_items/${id}/notify_shortlisting`,\n      { price_pack: pack },\n      {\n        'Content-Type': 'application/json',\n        headers: { 'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content') },\n      },\n    ).then(response => callback(response.data));\n  }\n}\n\n","import React from 'react'\nimport { Link } from 'react-router-dom';\n\nexport default class AdminIntegrationsIndex extends React.Component {\n    renderIntegrations(integrations) {\n        return (\n            <div className=\"row row-cols-2 row-cols-sm-4\">\n                {\n                    integrations.map(function (integration) {\n                        const icon2x = integration.icons[0];\n                        const icon3x = integration.icons[1];\n                        return (\n                            <div className=\"col mb-4\" key={integration.id}>\n                                <div className=\"card text-center h-100\">\n                                    <div className=\"card-image d-flex justify-content-center align-items-center border-bottom\">\n                                        {integration.icons.length > 0 ?\n                                            <img\n                                                src={icon2x}\n                                                srcSet={`${icon2x} 2x, ${icon3x} 3x`}\n                                                title={integration.title}\n                                                alt={integration.title}\n                                            />\n                                            : integration.title\n                                        }\n                                    </div>\n                                    <div className=\"card-body\">\n                                        <div className=\"card-title mb-0\">{integration.title} </div>\n                                    </div>\n                                </div>\n                            </div>\n                        )\n                    })\n                }\n            </div>\n        );\n    }\n\n    render() {\n        const { integrations } = this.props;\n\n        return (\n            <div className=\"layer-content\" >\n                <div className=\"layer-container\">\n                    <div className=\"integrations-index\">\n                        <div className=\"layer-tabs\">\n                            <ul className=\"nav nav-tabs\">\n                                <li className=\"nav-item\">\n                                    <Link to=\"/admin\" className=\"nav-link\">\n                                        <i className=\"material-icons\">chevron_left</i>\n                                    </Link>\n                                </li>\n                                <li className=\"nav-item\">\n                                    <Link to=\"/integrations\" className=\"nav-link active\">\n                                        All Integrations\n                                    </Link>\n                                </li>\n                            </ul>\n                        </div>\n                        {this.renderIntegrations(integrations)}\n                    </div>\n                </div>\n            </div>\n        );\n    }\n}\n","import React from 'react';\nimport renderHTML from 'react-render-html';\nimport { createBrowserHistory } from 'history';\nimport { Link } from \"react-router-dom\";\nimport ServiceApi from '../api.jsx';\n\nconst history = createBrowserHistory();\nconst flashDuration = 10000;\nconst flashMessage = \"Thank you! Your request has been forwarded to our team and they will get back to you shortly. If you haven't heard anything in 24 hours, please contact 07 3330 2595\";\n\nexport default class AdminIntegrationsInfoShow extends React.Component {\n  constructor(props) {\n    super(props);\n    this.state = { tabs: [], packs: [] };\n  }\n\n  componentDidMount () {\n    this.unlisten = history.listen(this.getInfo);\n    this.getInfo(window.location);\n  }\n\n  componentWillUnmount() {\n    this.unlisten();\n  }\n\n  getInfo = (location) => {\n    const id = location.hash.split('/').pop();\n\n    if (location.hash !== `#/integrations/info/${id}`) {\n      return;\n    }\n\n    ServiceApi.get(id, (response) => {\n      const tabs = response.info_tabs;\n      this.setState({\n        tabs,\n        title: response.title,\n        logo: response.logo,\n        packs: response.packs,\n        ctaLabel: response.cta_label,\n        targetUrl: response.target_url,\n        showButton: response.show_button,\n      })\n    });\n  }\n\n  tabs = () => {\n    const result = this.state.tabs.map(function (tab, idx) {\n      const tabClass = ['nav-link'];\n      let tabSelected = 'false';\n      if (idx === 0) {\n        tabClass.push('active');\n        tabSelected = 'true';\n      }\n      return <a className={tabClass.join(' ')} id={`#tab-id-${tab.id}`} data-toggle=\"pill\" href={`#tab-content-${tab.id}`} role=\"tab\" aria-controls={`#tab-content-${tab.id}`} aria-selected={tabSelected} key={tab.id}>\n        {tab.title}\n      </a>;\n    });\n    return result;\n  }\n\n  tabPanes = () => {\n    const result = this.state.tabs.map(function (tab, idx) {\n      const tabPaneClass = ['tab-pane', 'fade'];\n      if (idx === 0) {\n        tabPaneClass.push('show');\n        tabPaneClass.push('active');\n      }\n\n      return (\n        <div className={tabPaneClass.join(' ')} id={`tab-content-${tab.id}`} role=\"tabpanel\" aria-labelledby={`tab-id-${tab.id}`} key={tab.id}>\n           {renderHTML(tab.body)}\n        </div>\n      );\n    });\n    return result;\n  }\n\n  sendNotification = () => {\n    const id = location.hash.split('/').pop();\n    const { currentPack } = this.state;\n\n    this.setState({ sending: true });\n    ServiceApi.sendNotification(id, currentPack, () => {\n      this.setState({ sending: false, sent: true }, () => {\n        window.setTimeout(() => {\n          this.setState({ sent: false })\n        }, flashDuration);\n      });\n    });\n  }\n\n  handlePackChange = ({ target }) => {\n    this.setState({ currentPack: target.value });\n  }\n\n  priceList() {\n    const result = this.state.packs.map(function (price, idx) {\n      return <option value={price} key={idx}>{price}</option>\n    });\n    return result;\n  }\n\n  render() {\n    const { title, logo, packs, ctaLabel, targetUrl, sending, sent, showButton } = this.state;\n    const { enableButtons } = this.props;\n    const priceList = this.priceList();\n\n    return (\n      <div className=\"layer-content\">\n        <div className=\"layer-container\">\n\n          <div className=\"layer-tabs\">\n            <ul className=\"nav nav-tabs\">\n              <li className=\"nav-item\">\n                <Link to=\"/admin\" className=\"nav-link\">\n                  <i className=\"material-icons\">chevron_left</i>\n                </Link>\n              </li>\n              <li className=\"nav-item\">\n                <Link to=\"/integrations\" className=\"nav-link active\">\n                  All Integrations\n                </Link>\n              </li>\n            </ul>\n          </div>\n          <div className=\"card border-0\">\n            <div className=\"card-body\">\n              <div className=\"row\">\n                <div className=\"offset-sm-4 col-sm-8\">\n                  <div className=\"card-image\"><img src={logo} /></div>\n                  <div className=\"card-title\">{title}</div>\n                </div>\n                <div className=\"col-sm-4\">\n                  <div className=\"nav flex-column nav-pills\" role=\"tablist\" aria-orientation=\"vertical\">\n                    {this.tabs()}\n                  </div>\n                </div>\n                <div className=\"col-sm-8\">\n                  <div className=\"d-flex justify-content-end border-top border-bottom mb-2 pt-1 pb-1\">\n                    <div className={`${showButton ? 'mr-2' : 'w-100'} ${priceList.length === 0 ? 'd-none' : ''}`}>\n                      <select className=\"form-control\" name=\"\" id=\"\" onChange={this.handlePackChange}>\n                        {priceList}\n                      </select>\n                    </div>\n                    {\n                      showButton && (\n                        <div className=\"mr-0\">\n                          {\n                            targetUrl && targetUrl.length > 0 ?\n                              <a href={targetUrl} target=\"_blank\" className={`btn filled-blue${enableButtons ? '' : ' disabled'}`} >{ctaLabel}</a> :\n                              <button className=\"btn filled-blue\" disabled={!enableButtons || sending || sent} onClick={this.sendNotification}>\n                                {ctaLabel}\n                              </button>\n                          }\n                        </div>\n                      )\n                    }\n                  </div>\n                  {\n                    !showButton && (\n                      <div className=\"text-center mb-4\">\n                        <strong>Contact your Account Executive</strong>\n                      </div>\n                    )\n                  }\n                  <div className=\"tab-content\">\n                    {sent && <div className='flash-msg'>{flashMessage}</div>}\n                    {this.tabPanes()}\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    );\n  }\n}\n","import React from 'react'\n\nexport default class AdminIntegrationsNew extends React.Component {\n    render() {\n        return (\n            <div className=\"layer-content\">\n                <div className=\"integrations-new\">\n                    <div className=\"title\">New Integration Setup</div>\n                    <form className=\"integration\">\n                        <div className=\"field\">\n                            <label htmlFor=\"token\" className=\"field\">Indeed integration token</label>\n                            <input type=\"text\" className=\"field\" name=\"token\"/>\n                        </div>\n                        <div className=\"field\">\n                            <label htmlFor=\"secret\" className=\"field\">Indeed integration secret key</label>\n                            <input type=\"text\" className=\"field\" name=\"secret\"/>\n                        </div>\n                        \n                        <div className=\"field\">\n                            <label htmlFor=\"name\" className=\"field\">Indeed company name</label>\n                            <input type=\"text\" className=\"field\" name=\"name\"/>\n                        </div>\n                        <div className=\"actions\">\n                            <input className=\"action update\" type=\"button\" value=\"Create\" />\n                            <a className=\"action cancel\" href=\"#\">Cancel</a>\n                        </div>\n                    </form>\n                </div>\n            </div>\n        );\n    }\n} ","import React from 'react'\nimport { createBrowserHistory } from 'history';\nimport { Link } from 'react-router-dom';\nimport renderHTML from 'react-render-html';\nimport axios from 'axios';\nimport ServiceApi from './api.jsx'\n\nconst history = createBrowserHistory();\n\nexport default class AdminIntegrationsShow extends React.Component {\n  constructor (props) {\n    super(props);\n  }\n\n  componentDidMount () {\n    this.unlisten = history.listen(this.getInfo);\n    this.getInfo(window.location);\n  }\n\n  componentWillUnmount() {\n    this.unlisten();\n  }\n\n  getInfo = (location) => {\n    const id = location.hash.split('/').pop();\n\n    if (location.hash !== `#/integrations/${id}`) {\n      return;\n    }\n\n    ServiceApi.get(id, (response) => {\n      ServiceApi.getPage(response.integration_edit_path, (pageResponse) => {\n        document.querySelector('.edit-integration-modal').innerHTML = pageResponse.data\n      })\n    });\n  }\n  \n  render() {\n    return (\n      <div className=\"layer-content\">\n        <div className=\"layer-container\">\n          <div className=\"layer-tabs\">\n            <ul className=\"nav nav-tabs\">\n              <li className=\"nav-item\">\n                <Link to=\"/admin\" className=\"nav-link\">\n                    <i className=\"material-icons\">chevron_left</i>\n                </Link>\n              </li>\n              <li className=\"nav-item\">\n                <Link to=\"/integrations\" className=\"nav-link active\">\n                    All Integrations\n                </Link>\n              </li>\n            </ul>\n          </div>\n          <div className=\"card text-center\">\n            <div className=\"edit-integration-modal p-3\" />\n          </div>\n        </div>\n      </div>\n    );\n  }\n} \n","import React from 'react';\nimport { HashRouter as Router, Switch, Route, Link } from 'react-router-dom';\nimport AdminSubmenu from './submenu';\nimport AdminServicesIndex from './services';\nimport AdminIntegrationsIndex from './integrations';\nimport AdminIntegrationsNew from './integrations/new';\nimport AdminIntegrationsShow from './integrations/show';\nimport AdminIntegrationsInfoShow from './integrations/info/show';\nimport AdminServiceShow from './services/show';\nimport AdminSubserviceShow from './services/subservices/show';\n\nexport default class AdminMenu extends React.Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      detailSidebar: false,\n      showAllIntegrations: false,\n      mobileExpanded: false\n    };\n  }\n\n  toggleDetailSidebar = () => {\n    this.setState({ detailSidebar: !this.state.detailSidebar });\n  };\n\n  toggleIntegrationsList = () => {\n    this.setState({ showAllIntegrations: !this.state.showAllIntegrations });\n  };\n\n  toggleMobileNav = (bool) => {\n    bool\n      ? $('body').removeClass('navigation-collapsed')\n      : $('body').addClass('navigation-collapsed');\n    this.setState({ mobileExpanded: !bool });\n  };\n\n  renderHub() {\n    const { apps } = this.props.menu;\n\n    return (\n      <div className=\"section app-hub-section\">\n        <div className=\"toolbar d-flex align-items-center\">\n          <div className=\"title\">Apps</div>\n        </div>\n\n        <div className=\"app-hub-items d-flex justify-content-center text-center\">\n          {apps.map(function (app, idx) {\n            return (\n              <div className={`item ${app.active ? 'active' : ''}`} key={idx}>\n                <a href={app.url}>\n                  <div className={`app-hub-logo ${app.icon}`} title={app.title} />\n                  <div className=\"app-name\">{app.title}</div>\n                </a>\n              </div>\n            );\n          })}\n\n          {/* { apps.length < 3 && (\n            <div className=\"item more\">\n              <span className=\"icon\" />\n              <a href=\"#\">Go to App Hub</a>\n            </div>\n          )} */}\n        </div>\n      </div>\n    );\n  }\n\n  renderServices() {\n    const { services } = this.props.menu;\n\n    return (\n      <div className=\"section services-section\">\n        <div className=\"toolbar d-flex align-items-center\">\n          <div className=\"title\">Services</div>\n          <div className=\"more ml-auto\">\n            <Link to=\"/services\" className=\"btn btn-link link-green\">\n              All Services &gt;\n            </Link>\n          </div>\n        </div>\n        <ul className=\"nav flex-column services-list\">\n          {services.map(function (service) {\n            const { id, icon, title, url } = service;\n            return (\n              <li className=\"nav-item\" key={id}>\n                <Link to={`/services/${id}`} className=\"nav-link text-decoration-none\">\n                  <div className=\"d-flex align-items-center justify-content-between\">\n                    <div className=\"d-flex service-icon justify-content-center\">\n                      <img src={icon} title={title} alt={title} />\n                    </div>\n                    <div className=\"ml-2\">{title}</div>\n                    <div className=\"icon arrow-right ml-auto\" />\n                  </div>\n                </Link>\n              </li>\n            );\n          })}\n        </ul>\n      </div>\n    );\n  }\n\n  renderIntegrations(showAll) {\n    const { integrations } = this.props.menu;\n    const limit = showAll ? integrations.length : 5;\n\n    return (\n      <div className=\"section integrations-section\">\n        <div className=\"toolbar d-flex align-items-center\">\n          <div className=\"title\">Integrations</div>\n          <div className=\"more ml-auto\">\n            <Link to=\"/integrations\" className=\"btn btn-link link-green\">\n              All Integrations &gt;\n            </Link>\n          </div>\n        </div>\n        <ul className=\"nav flex-column integrations-list\">\n          {integrations.map(function (integration, idx) {\n            if (idx >= limit) {\n              return null;\n            }\n\n            const { id, icons, title, configured, info_only } = integration;\n            const icon2x = icons[0];\n            const icon3x = icons[1];\n\n            return (\n              <li className=\"nav-item\" key={id}>\n                <span className=\"nav-link text-decoration-none\">\n                  <div className=\"d-flex align-items-center justify-content-between\">\n                    <div className=\"integration-logo\">\n                      {icon2x ? (\n                        <img\n                          src={icon2x}\n                          srcSet={`${icon2x} 2x, ${icon3x} 3x`}\n                          title={title}\n                          alt={title}\n                        />\n                      ) : (\n                        title\n                      )}\n                    </div>\n                    <div className=\"d-flex\">\n                      {configured && !info_only && (\n                        <Link to={`/integrations/${id}`} className=\"btn btn-sm filled-green mr-1\">\n                          Update\n                        </Link>\n                      )}\n\n                      {!configured && !info_only && (\n                        <Link to={`/integrations/${id}`} className=\"btn btn-sm outline-green mr-1\">\n                          <span className=\"icon\" /> Set it up now\n                        </Link>\n                      )}\n                      <Link to={`/integrations/info/${id}`} className=\"btn btn-sm filled-green\">\n                        Learn more\n                      </Link>\n                    </div>\n                  </div>\n                </span>\n              </li>\n            );\n          })}\n        </ul>\n        <div className=\"d-flex\">\n          <button\n            className=\"btn btn-link link-green ml-auto text-decoration-none\"\n            onClick={this.toggleIntegrationsList}\n          >\n            Show {showAll ? 'Less' : 'More'}\n          </button>\n        </div>\n      </div>\n    );\n  }\n\n  renderComingSoon() {\n    return (\n      <div className=\"text-center border-top\">\n        <h1>Coming Soon</h1>\n        <p className=\"font-weight-bold mb-4\">\n          Manage your recruitment services and enable integrations all in one place.\n        </p>\n        <a\n          href=\"https://scouttalenthq.com/new-user-interface-for-scout-talent-software-users/#app-menu\"\n          target=\"_blank\"\n        >\n          <button type=\"button\" className=\"btn filled-blue\">\n            Learn More\n          </button>\n        </a>\n      </div>\n    );\n  }\n\n  render() {\n    const { menu, applicationName, brandImageUrl, showServicesAndIntegrations, enableButtons } =\n      this.props;\n    const { integrations, services } = menu;\n    const { detailSidebar } = this.state;\n\n    return (\n      <div>\n        <div className=\"logo-wrapper\">\n          <Router>\n            <Link to=\"/\">\n              <i className=\"material-icons\" onClick={this.toggleDetailSidebar}>\n                apps\n              </i>\n            </Link>\n          </Router>\n          <h2 className=\"new-logo\">{applicationName}</h2>\n        </div>\n        <ul className=\"nav flex-column\" id=\"main-menu\" role=\"navigation\">\n          <li className=\"nav-item d-lg-none\" id=\"navigation-expanded-button\">\n            <a\n              href=\"#\"\n              className=\"nav-link\"\n              onClick={() => this.toggleMobileNav(this.state.mobileExpanded)}\n            >\n              <div className=\"d-flex flex-row\">\n                <i className=\"icon material-icons\">chevron_right</i>\n                <span>Hide Nav</span>\n                <i className=\"chevron material-icons ml-auto\">chevron_left</i>\n              </div>\n            </a>\n          </li>\n\n          {menu.items.map((item, idx) => (\n            <AdminSubmenu key={idx} item={item} active={item.active} />\n          ))}\n\n          <div\n            id=\"navigation-expander\"\n            onClick={() => this.toggleMobileNav(this.state.mobileExpanded)}\n          ></div>\n        </ul>\n        {detailSidebar && (\n          <Router>\n            <div>\n              <div className=\"detail-sidebar\">\n                <div className=\"menu-header\">\n                  <Link to=\"/\">\n                    <i className=\"material-icons\" onClick={this.toggleDetailSidebar}>\n                      apps\n                    </i>\n                  </Link>\n                </div>\n                <div className=\"detail-sidebar-content\">\n                  {this.renderHub()}\n                  {showServicesAndIntegrations && this.renderServices()}\n                  {showServicesAndIntegrations &&\n                    this.renderIntegrations(this.state.showAllIntegrations)}\n                  {!showServicesAndIntegrations && this.renderComingSoon()}\n                </div>\n              </div>\n              <Route exact path=\"/\"></Route>\n              <Switch>\n                <Route\n                  exact\n                  path=\"/services\"\n                  render={(props) => <AdminServicesIndex {...props} services={services} />}\n                />\n                <Route\n                  exact\n                  path=\"/integrations\"\n                  render={(props) => (\n                    <AdminIntegrationsIndex {...props} integrations={integrations} />\n                  )}\n                />\n                <Route exact path=\"/integrations/new\" component={AdminIntegrationsNew} />\n                <Route\n                  path=\"/integrations/info/:id\"\n                  component={(props) => (\n                    <AdminIntegrationsInfoShow {...props} enableButtons={enableButtons} />\n                  )}\n                />\n                <Route path=\"/integrations/:id\" component={AdminIntegrationsShow} />\n                <Route\n                  exact\n                  path=\"/services/:serviceId/subservices/:id\"\n                  component={(props) => (\n                    <AdminSubserviceShow {...props} enableButtons={enableButtons} />\n                  )}\n                />\n                <Route\n                  exact\n                  path=\"/services/:id\"\n                  component={(props) => <AdminServiceShow {...props} />}\n                />\n              </Switch>\n            </div>\n          </Router>\n        )}\n      </div>\n    );\n  }\n}\n","import React, { Component } from 'react';\nimport paginatedDataSource from '../data-source';\nimport serviceInterface from '../../scout/service-interface-client';\nimport LinkControl from '../../scout/table/fields/control/link_control';\nimport ScoutIndexTable from '../../scout/table/table';\nimport ScoutIndexRow from '../../scout/table/row';\nimport ScoutFilter from '../../scout/table/filter';\nimport CallbackHeader from '../../scout/table/headers/callback';\nimport DataHeader from '../../scout/table/headers/data';\nimport DataColumn from '../../scout/table/fields/data';\nimport LinkColumn from '../../scout/table/fields/link';\nimport CustomControlColumn from '../../scout/table/fields/custom_control';\nimport ScoutSelect from '../../scout/select';\n\nimport T from 'prop-types';\n\nclass PayingUserIndexTemplate extends Component {\n  static propTypes = {};\n\n  constructor(props) {\n    super(props);\n    this.state = {\n      entityValues: [],\n      rootEntityValues: [],\n      stateValues: []\n    };\n    this.selectCallback = this.selectCallback.bind(this);\n    this.rolePaidFilterCallback = this.rolePaidFilterCallback.bind(this);\n    this.buildCol = this.buildCol.bind(this);\n  }\n\n  buildControls(user) {\n    return [\n      <LinkControl\n        key={0}\n        url={`/admin/entities/${user.entity_id}/users/${user.id}`}\n        title=\"show\"\n      />\n    ];\n  }\n\n  buildCol(user) {\n    let roles = user.roles.map(function (elem, index) {\n      if (index == user.roles.length - 1) {\n        return elem.paid ? (\n          <b key={index} style={{ paddingRight: '0.2em' }}>\n            {elem.name}\n          </b>\n        ) : (\n          `${elem.name}`\n        );\n      } else {\n        return elem.paid ? (\n          <span key={index} style={{ paddingRight: '0.2em' }}>\n            <b>{elem.name}</b>,\n          </span>\n        ) : (\n          `${elem.name}, `\n        );\n      }\n    });\n\n    return [\n      <DataColumn key={0} data={user.first_name} />,\n      <DataColumn key={1} data={user.last_name} />,\n      <DataColumn key={2} data={user.email} />,\n      <DataColumn key={3} data={user.state} />,\n      <LinkColumn key={4} data={user.entity_name} url={`/admin/entities/${user.entity_id}`} />,\n      <DataColumn key={5} data={roles} />,\n      <CustomControlColumn key={6} components={this.buildControls(user)} />\n    ];\n  }\n\n  buildRow(user, index) {\n    return <ScoutIndexRow key={index} cols={this.buildCol(user)} index={index} />;\n  }\n\n  buildHeaders() {\n    const { sortCallback, buildSortableHeader } = this.props;\n\n    return [\n      <CallbackHeader\n        key={0}\n        data={buildSortableHeader('FIRST NAME', 'firstname')}\n        callback={sortCallback}\n        field={'firstname'}\n      />,\n      <CallbackHeader\n        key={1}\n        data={buildSortableHeader('LAST NAME', 'lastname')}\n        callback={sortCallback}\n        field={'lastname'}\n      />,\n      <CallbackHeader\n        key={2}\n        data={buildSortableHeader('EMAIL', 'email')}\n        callback={sortCallback}\n        field={'email'}\n      />,\n      <CallbackHeader\n        key={3}\n        data={buildSortableHeader('STATE', 'state')}\n        callback={sortCallback}\n        field={'state'}\n      />,\n      <CallbackHeader\n        key={4}\n        data={buildSortableHeader('Entity', 'entities.name')}\n        callback={sortCallback}\n        field={'entities.name'}\n      />,\n      <DataHeader key={5} data={'ROLES'} />,\n      <DataHeader key={6} data={'OPERATIONS'} />\n    ];\n  }\n\n  selectCallback(attr, stateName, value) {\n    const { filterCallback } = this.props;\n    filterCallback({ [attr]: value });\n    this.setState({ [stateName]: [].concat(value) });\n  }\n\n  rolePaidFilterCallback(event) {\n    const { filterCallback } = this.props;\n    filterCallback({ roles: { paid: $(event.target).prop('checked') } });\n  }\n\n  payingUserFilters() {\n    const { entities, root_entities, user_states, filters, filterCallback } = this.props;\n\n    return (\n      <ol>\n        <li style={{ width: '20em' }}>\n          <label htmlFor={'entity_filter'}>Specific Entity</label>\n          <ScoutSelect\n            name=\"entity_filter\"\n            onChange={(value) => this.selectCallback('entity_id', 'entityValues', value)}\n            data={entities}\n            values={this.state.entityValues}\n            multi={true}\n          />\n        </li>\n        <li style={{ width: '20em' }}>\n          <label htmlFor={'root_entity_filter'}>Client Level Entity</label>\n          <ScoutSelect\n            name=\"root_entity_filter\"\n            onChange={(value) => this.selectCallback('root_entity_id', 'rootEntityValues', value)}\n            data={root_entities}\n            values={this.state.rootEntityValues}\n            multi={true}\n          />\n        </li>\n        <li style={{ width: '20em' }}>\n          <label htmlFor={'state_filter'}>State</label>\n          <ScoutSelect\n            name=\"state_filter\"\n            onChange={(value) => this.selectCallback('state', 'stateValues', value)}\n            data={user_states}\n            values={this.state.stateValues}\n            multi={true}\n          />\n        </li>\n        <li>\n          <label htmlFor={'filter_paid_role'}>Paid Role?</label>\n          <input\n            type={'checkbox'}\n            checked={filters.roles.paid}\n            onChange={this.rolePaidFilterCallback}\n            id={'filter_paid_role'}\n          />\n        </li>\n        <li>\n          <label htmlFor={'filter_email'}>Email</label>\n          <input\n            type={'text'}\n            checked={filters.email}\n            onChange={(event) => {\n              filterCallback({ email: event.target.value });\n            }}\n            id={'filter_email'}\n          />\n        </li>\n        <li>\n          <label htmlFor={'filter_firstname'}>First Name</label>\n          <input\n            type={'text'}\n            checked={filters.firstname}\n            onChange={(event) => {\n              filterCallback({ firstname: event.target.value });\n            }}\n            id={'filter_firstname'}\n          />\n        </li>\n        <li>\n          <label htmlFor={'filter_lastname'}>Last Name</label>\n          <input\n            type={'text'}\n            checked={filters.lastname}\n            onChange={(event) => {\n              filterCallback({ lastname: event.target.value });\n            }}\n            id={'filter_lastname'}\n          />\n        </li>\n      </ol>\n    );\n  }\n\n  render() {\n    const { data, pagination, paginationCallback, loading } = this.props;\n\n    return (\n      <div>\n        <ScoutFilter\n          title={'Paying Users'}\n          csvSubmit={this.props.csvSubmit}\n          filterSubmit={this.props.filterSubmit}\n          filters={this.payingUserFilters()}\n        />\n        <ScoutIndexTable\n          rows={data.map((item, index) => {\n            return this.buildRow(item, index);\n          })}\n          headers={this.buildHeaders()}\n          paginationCallback={paginationCallback}\n          pagination={pagination}\n          loading={loading}\n        />\n      </div>\n    );\n  }\n}\n\nvar options = {\n  default_filter: { entity_id: [''], root_entity_id: [''], roles: { paid: true } },\n  data_name: 'users',\n  title: 'Paying Users',\n  sort_key: 'users.id',\n  sort_state: {\n    expires_at: 'Desc'\n  }\n};\n\nconst payingUserIndex = serviceInterface(paginatedDataSource(PayingUserIndexTemplate, options), {});\nexport default payingUserIndex;\n","import axios from 'axios';\n\nexport default class ServiceApi {\n    // currently just mockups\n\n  static get(id, callback) {\n    return axios.get(\n      `/admin/service_menu_items/${id}.json`,\n      {\n        headers: {\n          'Content-Type': 'application/json',\n          'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content'),\n        },\n      },\n    ).then(response => callback(response.data));\n  }\n\n  static getSubservice(serviceId, id, callback) {\n    return axios.get(\n      `/admin/service_menu_items/${serviceId}/subservice_items/${id}.json`,\n      {\n        headers: {\n          'Content-Type': 'application/json',\n          'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content'),\n        },\n      },\n    ).then(response => callback(response.data));\n  }\n\n  static sendNotification(serviceId, id, pack, callback) {\n    return axios.post(\n      `/admin/service_menu_items/${serviceId}/subservice_items/${id}/notify_shortlisting`,\n      { price_pack: pack },\n      {\n        'Content-Type': 'application/json',\n        headers: { 'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content') },\n      },\n    ).then(response => callback(response.data));\n  }\n}\n","import React from 'react'\nimport { Link } from 'react-router-dom'\n\nexport default class AdminServicesIndex extends React.Component {\n    render() {\n        const { services } = this.props;\n\n        return (\n            <div className=\"layer-content\">\n                <div className=\"layer-container\">\n\n                    <div className=\"layer-tabs\">\n                        <ul className=\"nav nav-tabs\">\n                            <li className=\"nav-item\">\n                                <Link to=\"/admin\" className=\"nav-link\">\n                                    <i className=\"material-icons\">chevron_left</i>\n                                </Link>\n                            </li>\n                            <li className=\"nav-item\">\n                                <Link to=\"/services/\" className=\"nav-link active\">\n                                    All Services\n                                </Link>\n                            </li>\n                        </ul>\n                    </div>\n\n                    <div className=\"row row-cols-2 row-cols-sm-4\">\n                        {services.map(function (service) {\n                            const { id, icon, title, description } = service;\n                            return (\n                                <div className=\"col mb-4\" key={id}>\n                                    <div className=\"card text-center h-100\">\n                                        <div className='card-image d-flex justify-content-center align-items-center border-bottom p-3'>\n                                            <img \n                                              src={ icon }\n                                              title={ title }\n                                              alt={ title }\n                                              className=\"service-icon big\"\n                                            />\n                                        </div>\n                                        <div className=\"card-body\">\n                                            <div className=\"card-title\">{title}</div>\n                                            <div className=\"card-text\">{description}</div>\n                                            <Link to={`/services/${id}`} className=\"btn btn-sm filled-green\">View More</Link>\n                                        </div>\n                                    </div>\n                                </div>\n                            )\n                        })}\n                    </div>\n                </div>\n            </div>\n        );\n    }\n}\n","import React from 'react'\nimport renderHTML from 'react-render-html';\nimport { createBrowserHistory } from 'history';\nimport { Link } from \"react-router-dom\";\nimport ServiceApi from './api.jsx';\n\nconst history = createBrowserHistory();\n\nexport default class AdminServiceShow extends React.Component {\n  constructor(props) {\n    super(props);\n    this.state = { subservices: [] };\n  }\n\n  componentDidMount () {\n    this.unlisten = history.listen(this.getInfo);\n    this.getInfo(window.location);\n  }\n\n  componentWillUnmount() {\n    this.unlisten();\n  }\n\n  getInfo = (location) => {\n    const id = location.hash.split('/').pop();\n\n    if (location.hash !== `#/services/${id}`) {\n      return;\n    }\n\n    ServiceApi.get(id, (response) => {\n      this.setState({\n        subservices: response.subservice_items,\n        serviceId: response.id,\n        serviceTitle: response.title,\n      });\n    });\n  }\n\n  render() {\n    const { subservices, serviceId, serviceTitle } = this.state;\n\n    return (\n      <div className=\"layer-content\">\n        <div className=\"layer-container\">\n          <div className=\"layer-tabs\">\n            <ul className=\"nav nav-tabs\">\n              <li className=\"nav-item\">\n                <Link to=\"/admin\" className=\"nav-link\">\n                  <i className=\"material-icons\">chevron_left</i>\n                </Link>\n              </li>\n              <li className=\"nav-item\">\n                <Link to={`/services/${serviceId}`} className=\"nav-link active\">\n                  {serviceTitle}\n                </Link>\n              </li>\n            </ul>\n          </div>\n\n        {\n          subservices.map(function (subservice) {\n            const { id, title, icon, body } = subservice;\n            return (\n              <div className=\"card border-0 mb-4\" key={id}>\n                <div className=\"card-body\">\n                    <div className=\"card-image\">\n                      { icon && <img src={icon} alt={title} /> }\n                    </div>\n                    <div className=\"card-title\">{title}</div>\n                    <div className=\"card-text mb-2\">\n                      {renderHTML(body)}\n                    </div>\n                    <Link to={`/services/${serviceId}/subservices/${id}`} className=\"btn filled-green\">Learn More and Purchase</Link>\n                </div>\n              </div>\n            );\n          })\n        }\n        </div>\n      </div>\n    );\n  }\n}\n","import React from 'react';\nimport renderHTML from 'react-render-html';\nimport { createBrowserHistory } from 'history';\nimport { Link } from \"react-router-dom\";\nimport ServiceApi from '../api.jsx';\n\nconst history = createBrowserHistory();\nconst flashDuration = 10000;\nconst flashMessage = \"Thank you! Your request has been forwarded to our team and they will get back to you shortly. If you haven't heard anything in 24 hours, please contact 07 3330 2595\";\n\nexport default class AdminSubserviceShow extends React.Component {\n  constructor(props) {\n    super(props);\n    this.state = { tabs: [], packs: [] };\n  }\n\n  componentDidMount () {\n    this.unlisten = history.listen(this.getInfo);\n    this.getInfo(window.location);\n  }\n\n  componentWillUnmount() {\n    this.unlisten();\n  }\n\n  getInfo = (location) => {\n    const parts = location.hash.split('/');\n    const serviceId = parts[2];\n    const id = parts[4];\n\n    if (location.hash !== `#/services/${serviceId}/subservices/${id}`) {\n      return;\n    }\n\n    ServiceApi.getSubservice(serviceId, id, (response) => {\n      const tabs = response.info_tabs;\n      this.setState({\n        tabs,\n        title: response.title,\n        logo: response.logo,\n        packs: response.packs,\n        btnLabel: response.btn_label,\n        targetUrl: response.target_url,\n        showButton: response.show_button,\n      })\n    });\n  }\n\n  tabs = () => {\n    const result = this.state.tabs.map(function (tab, idx) {\n      const tabClass = ['nav-link'];\n      let tabSelected = 'false';\n      if (idx === 0) {\n        tabClass.push('active');\n        tabSelected = 'true';\n      }\n      return <a className={tabClass.join(' ')} id={`#tab-id-${tab.id}`} data-toggle=\"pill\" href={`#tab-content-${tab.id}`} role=\"tab\" aria-controls={`#tab-content-${tab.id}`} aria-selected={tabSelected} key={tab.id}>\n        {tab.title}\n      </a>;\n    });\n    return result;\n  }\n\n  tabPanes = () => {\n    const result = this.state.tabs.map(function (tab, idx) {\n      const tabPaneClass = ['tab-pane', 'fade'];\n      if (idx === 0) {\n        tabPaneClass.push('show');\n        tabPaneClass.push('active');\n      }\n\n      return (\n        <div className={tabPaneClass.join(' ')} id={`tab-content-${tab.id}`} role=\"tabpanel\" aria-labelledby={`tab-id-${tab.id}`} key={tab.id}>\n           {renderHTML(tab.body)}\n        </div>\n      );\n    });\n    return result;\n  }\n\n  sendNotification = () => {\n    const parts = location.hash.split('/');\n    const serviceId = parts[2];\n    const id = parts[4];\n    const { currentPack } = this.state;\n\n    this.setState({ sending: true });\n    ServiceApi.sendNotification(serviceId, id, currentPack, () => {\n      this.setState({ sending: false, sent: true }, () => {\n        window.setTimeout(() => {\n          this.setState({ sent: false })\n        }, flashDuration);\n      });\n    });\n  }\n\n  handlePackChange = ({ target }) => {\n    this.setState({ currentPack: target.value });\n  }\n\n  priceList() {\n    const result = this.state.packs.map(function (price, idx) {\n      return <option value={price} key={idx}>{price}</option>\n    });\n    return result;\n  }\n\n  render() {\n    const { title, logo, packs, btnLabel, targetUrl, sending, sent, showButton } = this.state;\n    const { enableButtons } = this.props;\n    const priceList = this.priceList();\n\n    return (\n      <div className=\"layer-content\">\n        <div className=\"layer-container\">\n\n          <div className=\"layer-tabs\">\n            <ul className=\"nav nav-tabs\">\n              <li className=\"nav-item\">\n                <Link to=\"/admin\" className=\"nav-link\">\n                  <i className=\"material-icons\">chevron_left</i>\n                </Link>\n              </li>\n              <li className=\"nav-item\">\n                <Link to=\"/integrations\" className=\"nav-link active\">\n                  All Integrations\n                </Link>\n              </li>\n            </ul>\n          </div>\n          <div className=\"card border-0\">\n            <div className=\"card-body\">\n              <div className=\"row\">\n                <div className=\"offset-sm-4 col-sm-8\">\n                  {\n                    logo &&\n                    <div className=\"card-image\"><img src={logo} /></div>\n                  }\n                  <div className=\"card-title\">{title}</div>\n                </div>\n                <div className=\"col-sm-4\">\n                  <div className=\"nav flex-column nav-pills\" role=\"tablist\" aria-orientation=\"vertical\">\n                    {this.tabs()}\n                  </div>\n                </div>\n                <div className=\"col-sm-8\">\n                  <div className=\"d-flex justify-content-end border-top border-bottom mb-2 pt-1 pb-1\">\n                    <div className={`${showButton ? 'mr-2' : 'w-100'} ${priceList.length === 0 ? 'd-none' : ''}`}>\n                      <select className=\"form-control\" name=\"\" id=\"\" onChange={this.handlePackChange}>\n                        {priceList}\n                      </select>\n                    </div>\n                    {\n                      showButton && (\n                        <div className=\"mr-0\">\n                          {\n                            targetUrl && targetUrl.length > 0 ?\n                              <a href={targetUrl} target=\"_blank\" className={`btn filled-blue${enableButtons ? '' : ' disabled'}`} >{btnLabel}</a> :\n                              <button className=\"btn filled-blue\" disabled={!enableButtons || sending || sent} onClick={this.sendNotification}>\n                                {btnLabel}\n                              </button>\n                          }\n                        </div>\n                      )\n                    }\n                  </div>\n                  {\n                    !showButton && (\n                      <div className=\"text-center mb-4\">\n                        <strong>Contact your Account Executive</strong>\n                      </div>\n                    )\n                  }\n                  <div className=\"tab-content\">\n                    {sent && <div className='flash-msg'>{flashMessage}</div>}\n                    {this.tabPanes()}\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    );\n  }\n}\n","import React from 'react';\n\nexport default class AdminSubmenu extends React.Component {\n  constructor(props) {\n    super(props);\n    this.state = { active: props.active };\n  }\n\n  toggleActive = () => {\n    this.setState({ active: !this.state.active });\n  };\n\n  setCookie = (cname, cvalue, exdays) => {\n    const d = new Date();\n    d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);\n    const expires = 'expires=' + d.toGMTString();\n    document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\n  };\n\n  getCookie = (cname) => {\n    const name = cname + '=';\n    const decodedCookie = decodeURIComponent(document.cookie);\n    const ca = decodedCookie.split(';');\n    for (let i = 0; i < ca.length; i++) {\n      let c = ca[i];\n      while (c.charAt(0) == ' ') {\n        c = c.substring(1);\n      }\n      if (c.indexOf(name) == 0) {\n        return c.substring(name.length, c.length);\n      }\n    }\n    return '';\n  };\n\n  clickHandler = (cname) => {\n    this.setCookie(cname, !(this.getCookie(cname) === 'true'), 1);\n  };\n\n  render() {\n    const { active } = this.state;\n    const { item } = this.props;\n    const subMenuId = item.title.toLowerCase().replace(/ /g, '-');\n\n    return (\n      <li className={active ? 'active nav-item menu-item' : 'nav-item menu-item'}>\n        <a\n          href=\"#\"\n          className=\"nav-link\"\n          data-toggle=\"collapse\"\n          data-target={'#' + subMenuId}\n          aria-expanded={this.getCookie(subMenuId) === 'true' ? true : false}\n          aria-controls={subMenuId}\n          onClick={() => this.clickHandler(subMenuId)}\n        >\n          <div className=\"d-flex flex-row\">\n            <i className=\"icon material-icons\">{item.icon}</i>\n            <span>{item.title}</span>\n            <i className=\"chevron material-icons ml-auto\">chevron_right</i>\n          </div>\n        </a>\n        <div\n          className={\n            item.active || this.getCookie(subMenuId) === 'true'\n              ? 'sub-menu collapse show'\n              : 'sub-menu collapse'\n          }\n          id={subMenuId}\n        >\n          <ul className=\"nav flex-column\">\n            {item.submenu.map((subitem, idx) => (\n              <li key={idx} className=\"nav-item\">\n                <a\n                  id={subitem.id}\n                  href={subitem.url}\n                  className={subitem.active ? 'nav-link active' : 'nav-link'}\n                  target={subitem.external ? '_blank' : ''}\n                >\n                  {subitem.title}\n                </a>\n              </li>\n            ))}\n          </ul>\n        </div>\n      </li>\n    );\n  }\n}\n","import React, { Component } from 'react';\nimport classnames from 'classnames';\nimport videojs from 'video.js';\nimport axios from 'axios';\nimport { logActivity, getVideo, deleteVideo } from './video_interview_helper.jsx';\nimport {\n  getBookmarks,\n  addBookmark,\n  deleteBookmark,\n  updateBookmark\n} from './video_bookmarks_helper.jsx';\n\nwindow.addEventListener('error', (e) => {\n  if (e.message === 'ResizeObserver loop limit exceeded') {\n    e.stopImmediatePropagation();\n    e.preventDefault();\n    console.log('ResizeObserver loop limit exceeded, error suppressed');\n  }\n});\n\nclass VideoInterview extends Component {\n  state = {\n    videoCurrentTime: 0,\n    videoJS: {},\n    bookmarkTxt: '',\n    timeMins: 0,\n    timeSecs: 0,\n    time: 0,\n    edit: false,\n    editTxt: '',\n    editNum: 0,\n    editSecs: 0,\n    editMins: 0,\n    addId: 0,\n    removeIndex: 0,\n    videoId: null,\n    bookMarks: [{}],\n    deletedVideo: false\n  };\n\n  componentDidMount() {\n    getVideo(this.props.url, this.props.applicationId).then((data) => {\n      if (data) {\n        this.createVideo(data);\n\n        if (this.props.savedBookmarks) {\n          this.addMultipleBookmarks(data.video.id, this.props.savedBookmarks);\n        } else {\n          getBookmarks(this.props.url, data.video.id).then((bookmarks) => {\n            this.setState({ bookMarks: bookmarks });\n          });\n        }\n\n        this.player.on('timeupdate', () => {\n          const timeMins = Math.floor(this.player.currentTime() / 60);\n          this.setState({\n            timeSecs: Math.floor(this.player.currentTime() - timeMins * 60),\n            timeMins: timeMins\n          });\n        });\n\n        this.player.on('loadedmetadata', () => {\n          this.player.addTextTrack('Question List', 'en');\n        });\n\n        this.handleUpdateTime = this.handleUpdateTime.bind(this);\n      }\n    });\n  }\n\n  componentWillUnmount() {\n    if (this.player) {\n      this.player.dispose();\n    }\n  }\n\n  calcTimeFormat = (time) => {\n    let mins = ~~((time % 3600) / 60);\n    let secs = time % 60;\n    let value = '';\n    value += '' + mins + ':' + (secs < 10 ? '0' : '');\n    value += '' + secs;\n\n    if (!time) {\n      return '0:00';\n    }\n    return value;\n  };\n\n  createVideo = (data) => {\n    const videoJsOptions = {\n      autoplay: false,\n      controls: true,\n      sources: data.video.videoSources.map((video) => ({\n        type: `video/${video.format}`,\n        src: video.url\n      }))\n    };\n\n    this.player = videojs(this.videoNode, videoJsOptions);\n    this.setState({\n      videoCurrentTime: this.player.currentTime(),\n      videoId: data.video.id\n    });\n  };\n\n  addMultipleBookmarks = (videoId, bookMarks) => {\n    var promises = [];\n    const query = `mutation createBookmark($videoId: ID!, $seconds: Int!, $description: String) {\n      createBookmark(input: {videoId: $videoId, seconds: $seconds, description: $description}){\n        errors\n        bookmark {\n          id\n          seconds\n          description\n        }\n      }\n    }`;\n\n    Array.isArray(bookMarks) &&\n      bookMarks.forEach((bookmark) => {\n        promises.push(\n          axios.post(\n            this.props.url,\n            {\n              query: query,\n              variables: {\n                videoId: videoId,\n                seconds: parseInt(bookmark.timeStamp),\n                description: bookmark.text\n              }\n            },\n            {\n              headers: {\n                'Content-Type': 'application/json'\n              }\n            }\n          )\n        );\n      });\n\n    axios.all(promises).then((results) => {\n      var sortBookmarks = [];\n      results.forEach((result) => {\n        const bookmark = result.data.data.createBookmark.bookmark;\n        sortBookmarks.push({\n          text: bookmark.description,\n          id: bookmark.id,\n          timeStamp: parseInt(bookmark.seconds)\n        });\n      });\n      sortBookmarks.sort(function (a, b) {\n        return a.timeStamp - b.timeStamp;\n      });\n      this.setState({ bookMarks: sortBookmarks });\n    });\n  };\n\n  handleUpdateTime = (val) => {\n    this.player.currentTime(val);\n  };\n\n  handleInput = (e) => {\n    this.setState({ [e.target.name]: e.target.value });\n  };\n\n  handleAddSubmit = async (e) => {\n    e.preventDefault();\n    const { bookmarkTxt, timeMins, timeSecs, bookMarks, edit } = this.state;\n    const previousAry = bookMarks.slice();\n    const calTimeStamp = parseInt(timeMins) * 60 + parseInt(timeSecs);\n    const addId = await addBookmark(this.props.url, bookmarkTxt, calTimeStamp, this.state.videoId);\n    this.setState({ addId: addId });\n    previousAry.push({ id: addId, text: bookmarkTxt, timeStamp: parseInt(calTimeStamp) });\n    previousAry.sort((a, b) => a.timeStamp - b.timeStamp);\n    this.setState({ bookMarks: previousAry, timeMins: 0, timeSecs: 0, bookmarkTxt: '' });\n  };\n\n  handleEdit = (val, i) => {\n    const { edit, editTxt, editNum, removeIndex, editMins, editSecs } = this.state;\n    let mins = Math.floor(val.timeStamp / 60);\n    let secs = val.timeStamp - mins * 60;\n    const dropDown = removeIndex === i ? !edit : true;\n    this.setState({\n      edit: dropDown,\n      editTxt: val.text,\n      editNum: val.timeStamp,\n      editMins: mins,\n      editSecs: secs,\n      removeIndex: i\n    });\n  };\n\n  handleEditSubmit = (e) => {\n    const { editTxt, bookMarks, editMins, editSecs, removeIndex, edit } = this.state;\n    const previousAry = bookMarks.slice();\n    const calTimeStamp = parseInt(editMins) * 60 + parseInt(editSecs);\n    previousAry.splice(removeIndex, 1);\n    previousAry.push({\n      text: editTxt,\n      timeStamp: parseInt(calTimeStamp),\n      id: bookMarks[removeIndex].id\n    });\n    previousAry.sort((a, b) => a.timeStamp - b.timeStamp);\n    updateBookmark(this.props.url, calTimeStamp, editTxt, bookMarks[removeIndex].id);\n    this.setState({ bookMarks: previousAry, editSecs: 0, editMins: 0, edit: false });\n    e.preventDefault();\n  };\n\n  handleDelete = (i) => {\n    const { bookMarks } = this.state;\n    const previousAry = bookMarks.slice();\n    previousAry.splice(i, 1);\n    this.setState({ bookMarks: previousAry, edit: false });\n    deleteBookmark(this.props.url, bookMarks[i].id);\n  };\n\n  updateColor = (i) => {\n    const { removeIndex, edit } = this.state;\n    if (removeIndex === i && edit) {\n      return 'SelectedTime BookMarkList';\n    }\n    return 'BookMarkList';\n  };\n\n  exitEdit = () => {\n    const { edit } = this.state;\n    this.setState({ edit: !edit });\n  };\n\n  showBookmarkTime = (bookMarks, admin) => {\n    const { videoJS, bookmarkTxt, time, timeMins, timeSecs, edit, editTxt, editMins, editSecs } =\n      this.state;\n\n    if (admin) {\n      return (\n        <div className=\"TimeStampSection\" style={{ width: '100%' }}>\n          <div className=\"TimeStampWrapper\">\n            {bookMarks.map((time, i) => (\n              <div\n                key={i}\n                onClick={this.handleUpdateTime.bind(this, time.timeStamp)}\n                className={this.updateColor(i)}\n              >\n                <div className=\"ellipsTxt\">{time.text}</div>\n                <div className=\"TimeStampTxtSection\">\n                  {this.props.deletePermission && (\n                    <div>\n                      <span className=\"deleteIcon\" onClick={this.handleDelete.bind(this, i)}>\n                        <span className=\"IconTxt\">DELETE</span>\n                      </span>\n                      <span className=\"editIcon\" onClick={this.handleEdit.bind(this, time, i)}>\n                        <span className=\"IconTxt\">EDIT</span>\n                      </span>\n                    </div>\n                  )}\n                </div>\n              </div>\n            ))}\n          </div>\n          <div className=\"TimeStampForm\">\n            {edit ? (\n              <div>\n                <form onSubmit={this.handleEditSubmit}>\n                  <div style={{ display: 'inline-flex' }}>\n                    <input\n                      type=\"text\"\n                      name=\"editTxt\"\n                      className=\"TimeStampTxtInput\"\n                      onChange={this.handleInput}\n                      value={editTxt}\n                      placeholder=\"Time Stamp Title\"\n                    />\n                    <div className=\"VideoTimeInput\">\n                      <input\n                        className=\"InputTimeVideo\"\n                        required={true}\n                        type=\"number\"\n                        name=\"editMins\"\n                        min=\"0\"\n                        max=\"99\"\n                        onChange={this.handleInput}\n                        value={this.padTimeWithZeros(editMins, 'mins')}\n                      />\n                      :\n                      <input\n                        type=\"number\"\n                        className=\"InputTimeVideo\"\n                        name=\"editSecs\"\n                        required={true}\n                        min=\"00\"\n                        max=\"59\"\n                        onChange={this.handleInput}\n                        value={this.padTimeWithZeros(editSecs)}\n                      />\n                    </div>\n                  </div>\n                  <br />\n                  <div className=\"SubmitBTNVideos\">\n                    <input\n                      onClick={this.exitEdit}\n                      style={{ width: '3rem', textAlign: 'center' }}\n                      className=\"EditTimeStampBtn\"\n                      defaultValue=\"Exit\"\n                    />\n                    <input type=\"submit\" value=\"SAVE\" />\n                  </div>\n                </form>\n              </div>\n            ) : (\n              <div className=\"TimeStampForm\">\n                {this.props.deletePermission && (\n                  <form onSubmit={this.handleAddSubmit}>\n                    <div style={{ display: 'inline-flex' }}>\n                      <input\n                        type=\"text\"\n                        name=\"bookmarkTxt\"\n                        onChange={this.handleInput}\n                        className=\"TimeStampTxtInput\"\n                        value={bookmarkTxt}\n                        placeholder=\"Time Stamp Title\"\n                      />\n                      <div className=\"VideoTimeInput\">\n                        <input\n                          className=\"InputTimeVideo\"\n                          required={true}\n                          type=\"number\"\n                          name=\"timeMins\"\n                          min=\"0\"\n                          max=\"99\"\n                          onChange={this.handleInput}\n                          value={this.padTimeWithZeros(timeMins, 'mins')}\n                        />\n                        :\n                        <input\n                          className=\"InputTimeVideo\"\n                          type=\"number\"\n                          name=\"timeSecs\"\n                          required={true}\n                          min=\"00\"\n                          max=\"59\"\n                          onChange={this.handleInput}\n                          value={this.padTimeWithZeros(timeSecs)}\n                        />\n                      </div>\n                    </div>\n                    <br />\n                    <input className=\"SubmitBTNVideos\" type=\"submit\" value=\"ADD\" />\n                  </form>\n                )}\n              </div>\n            )}\n          </div>\n        </div>\n      );\n    } else {\n      return <div></div>;\n    }\n  };\n\n  showBookmark = (admin) => {\n    const { bookMarks, bookmarkTxt, timeMins, timeSecs } = this.state;\n\n    if (bookMarks.length === 0 && admin) {\n      return (\n        <div className=\"EmptyTimeStampForm\">\n          {this.props.deletePermission && (\n            <form onSubmit={this.handleAddSubmit}>\n              <div style={{ display: 'inline-flex' }}>\n                <input\n                  type=\"text\"\n                  name=\"bookmarkTxt\"\n                  onChange={this.handleInput}\n                  className=\"TimeStampTxtInput\"\n                  value={bookmarkTxt}\n                  placeholder=\"Time Stamp Title\"\n                />\n                <div className=\"VideoTimeInput\">\n                  <input\n                    className=\"InputTimeVideo\"\n                    required={true}\n                    type=\"number\"\n                    name=\"timeMins\"\n                    min=\"0\"\n                    max=\"99\"\n                    onChange={this.handleInput}\n                    value={this.padTimeWithZeros(timeMins, 'mins')}\n                  />\n                  :\n                  <input\n                    className=\"InputTimeVideo\"\n                    type=\"number\"\n                    name=\"timeSecs\"\n                    required={true}\n                    min=\"00\"\n                    max=\"59\"\n                    onChange={this.handleInput}\n                    value={this.padTimeWithZeros(timeSecs)}\n                  />\n                </div>\n              </div>\n              <br />\n              <input className=\"SubmitBTNVideos\" type=\"submit\" value=\"ADD\" />\n            </form>\n          )}\n        </div>\n      );\n    } else {\n      return <div style={{ margin: 'auto' }}>{this.showBookmarkTime(bookMarks, admin)}</div>;\n    }\n  };\n\n  showDeleteButton = (permission) => {\n    if (permission) {\n      return (\n        <div>\n          <button\n            type=\"button\"\n            onClick={(e) => {\n              window.confirm('Are you sure you wish to delete this video?') &&\n                deleteVideo(this.props.deleteVideoUrl, this.state.videoId).then((res) => {\n                  logActivity('deleted video in', this.props.activityUrl);\n                  this.setState({ deletedVideo: true });\n                  window.location.reload(true);\n                });\n            }}\n            style={{ backgroundColor: '#d9534f', color: 'white' }}\n          >\n            DELETE VIDEO\n          </button>\n        </div>\n      );\n    }\n  };\n\n  padTimeWithZeros = (number, unit) => {\n    if (unit !== 'mins') unit = 'secs';\n\n    number = parseInt(number, 10);\n\n    if (unit === 'secs' && number > 59) number = 59;\n    if (unit === 'mins' && number > 99) number = 99;\n    if (number < 0) number = 0;\n\n    if (number < 10) number = `0${number}`;\n\n    return number;\n  };\n\n  showVideo = (admin) => {\n    const pathname = window.location.pathname;\n\n    const VideoInterviewClass = classnames({\n      VideoInterviewAdmin: pathname.startsWith('/admin/'),\n      VideoInterviewClient: pathname.startsWith('/video_interviews/')\n    });\n\n    const VideoWrapperClass = classnames({\n      VideoWrapperAdmin: pathname.startsWith('/admin/'),\n      VideoWrapperClient: pathname.startsWith('/video_interviews/')\n    });\n\n    return (\n      <div>\n        {!this.state.deletedVideo ? (\n          <div className={VideoInterviewClass}>\n            <div className={VideoWrapperClass}>\n              <div data-vjs-player className=\"VideoStyles\">\n                <video\n                  ref={(node) => (this.videoNode = node)}\n                  className=\"video-js vjs-big-play-centered\"\n                  controls\n                ></video>\n              </div>\n              {this.showBookmark(admin)}\n            </div>\n            {this.showDeleteButton(this.props.deletePermission)}\n          </div>\n        ) : (\n          <VideoUpload\n            applicationId={this.props.applicationId}\n            admin={this.props.admin}\n            url={this.props.url}\n            uploadUrl={this.props.uploadUrl}\n            deleteVideoUrl={this.props.deleteVideoUrl}\n            updateUrl={this.props.updateUrl}\n          />\n        )}\n      </div>\n    );\n  };\n\n  render() {\n    const admin = this.props.admin;\n\n    return this.showVideo(admin);\n  }\n}\n\nexport default VideoInterview;\n","import React, { Component } from 'react';\nimport Dropzone from 'react-dropzone';\nimport VideoPlayer from './index.jsx';\nimport axios from 'axios';\nimport { logActivity } from './video_interview_helper.jsx';\n\nclass Upload extends Component {\n  state = {\n    uploading: false,\n    file : [],\n    slug: '',\n    uploadProgress: 0,\n    videoPlayer: false,\n    responseVideoURL: {},\n    videoId: null,\n    display: true,\n    transcoding: true,\n    loadingState: false,\n    validFile: true,\n    bookMarks: null,\n    errors: ''\n  };\n\n  componentDidMount() {\n    if (this.props.hasVideo) this.checkVideoState();\n  }\n\n  checkVideoState = () => {\n    const query = `query fetchVideo($slug: ID){\n      video(slug: $slug) {\n        bookmarks{\n          description\n          seconds\n        }\n        state\n    \t\tid\n        videoSources{\n          src: url\n          type: mimeType\n        }\n      }\n    }`;\n    fetch(this.props.url, {\n      method: 'post',\n      headers: {'Content-Type' : 'application/json' },\n      body: JSON.stringify({\n        query: query,\n        variables: {slug: `interview-application-${this.props.applicationId}`},\n      })\n    })\n    .then(response => response.json())\n      .then(response => {\n        if (response.data) {\n          const videoState = response.data.video.state;\n          const url = response.data.video.videoSources;\n          const Id = response.data.video.id;\n          if (videoState !== 'completed' && this.state.uploadProgress !== 0) {\n            setTimeout(this.checkVideoState, 2000);\n          }\n          else {\n            this.setState({ videoPlayer: true, responseVideoURL: url, videoId: Id })\n\n            const data = new FormData();\n            data.append(`application_id`, this.props.applicationId);\n\n            axios.post(\n              this.props.updateUrl,\n              data,\n              {\n                headers: {\n                  'Content-Type': 'multipart/form-data',\n                  'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content'),\n                },\n              },\n            ).then((response) => {\n\n            });\n          }\n        }\n      });\n  }\n\n  upload = (file) => {\n    const { uploading } = this.state;\n\n    if (uploading) return;\n\n    this.setState({ uploading: true }, () => this.handelUpload());\n  };\n\n  onDragOver = (e) => {\n    e.stopPropagation();\n    e.preventDefault();\n  }\n\n  prepareLink = (file) => {\n    const query = `\n    mutation prepare($userId: ID!, $slug: ID!, $checksum: String, $contentType: String, $contentLength: Int){\n      prepareUploadingVideo(input: {slug: $slug, userId: $userId, checksum: $checksum, contentLength: $contentLength, contentType: $contentType}) {\n        errors\n        url\n        video {\n          id\n          state\n         originalVideoUrl\n        }\n      }\n     }`;\n    const variables = {\n      'slug': `interview-application-${this.props.applicationId}`,\n      'userId': 'SomeID',\n      'contentType': file.type,\n      'contentLength': file.totalSize\n    };\n    fetch(this.props.url, {\n      method: 'post',\n      headers: {'Content-Type' : 'application/json' },\n      body: JSON.stringify({\n        query: query,\n        variables: variables,\n      })\n    })\n      .then(response => response.json())\n      .then(response => {\n        const url = response.data.prepareUploadingVideo.url;\n        this.uploadFile(file, url);\n      });\n  }\n\n  uploadFile = (file, url) => {\n    var xhr = new XMLHttpRequest();\n    xhr.upload.onprogress = (e) => {\n      var done = e.position || e.loaded, total = e.totalSize || e.total;\n      let progress = (Math.floor(done/total*1000)/10);\n      this.setState({ uploadProgress : progress });\n    };\n\n    xhr.open('put', url, true);\n    xhr.setRequestHeader('Content-Type', file.type);\n    xhr.send(file);\n    xhr.onloadend = () => {\n      if (xhr.status !== 200){\n        console.log(xhr.status, ' Error ' );\n      }\n      else { this.upload(); }\n    }\n  }\n\n  getMetaData = (file) => {\n    const data = new FormData();\n\n    data.append(`video`, file[0]);\n    data.append(`application_id`, this.props.applicationId);\n\n    axios.post(\n      this.props.uploadUrl,\n      data,\n      {\n        headers: {\n          'Content-Type': 'multipart/form-data',\n          'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content'),\n        },\n      },\n    ).then((response) => {\n      this.setState({ bookMarks: response.data });\n    });\n  }\n\n  onDrop = (file) => {\n    const { validFile } = this.state;\n\n    if (file.length === 0) {\n      this.setState({ validFile : false})\n    } else {\n      this.getMetaData(file);\n      this.prepareLink(file[0]);\n      this.setState({display: false, transcoding: false, validFile: true});\n    }\n};\n\n  handelUpload = () => {\n    const query = `mutation notifyUploading($slug: ID!){\n      transcodeVideo(input: {slug: $slug}) {\n        video {\n          state\n        }\n      }\n     }`;\n     fetch(this.props.url, {\n      method: 'post',\n      headers: {'Content-Type' : 'application/json' },\n      body: JSON.stringify({\n        query: query,\n        variables: {slug: `interview-application-${this.props.applicationId}`},\n      })\n    })\n    logActivity('uploaded video for', this.props.activityUrl);\n    this.setState({display: true, transcoding: true, loadingState: true})\n    console.log(this.state.transcoding);\n    this.checkVideoState();\n  }\n\n  onDropRejected = (rejectedFiles, e) => {\n\n    let errorsList = [];\n\n    rejectedFiles.forEach((file) => {\n      file.file.size > this.props.fileSizeLimit && errorsList.push('This video is bigger than 500MB')\n      !file.file.type.match(/video\\//) && errorsList.push('This file is not a valid video...')\n    })\n    errorsList = errorsList.filter((value, index) => errorsList.indexOf(value) === index)\n\n    this.setState({\n      errors: errorsList.join(', ')\n    });\n  }\n\n  render () {\n    const { uploading, uploadProgress, videoPlayer, responseVideoURL, videoId, display, transcoding, loadingState, validFile } = this.state;\n    const progressStyles = {\n      width: uploadProgress + '%', background: 'lightgrey',\n      display: display ? 'none' : 'block',\n      textAlign: 'center'\n    }\n    const { admin, applicationId, url } = this.props\n    const transcode = { display: transcoding ? 'none' : 'block' };\n    return (\n      <div>\n        {!videoPlayer ?\n          <div className=\"Upload\">\n            { loadingState ?\n                <div >Transcoding video.. Please wait, do not refresh the page.\n                    <div className=\"Loader\"></div>\n                </div>\n              :\n              <div className=\"DropZoneWrapper\">\n                <Dropzone accept={{'video/*': []}} maxSize={this.props.fileSizeLimit} onDrop={this.onDrop.bind(this)} onDragOver={this.onDragOver} onDropRejected={this.onDropRejected}>\n                  {({ getRootProps, getInputProps }) => (\n                    <div\n                      {...getRootProps()}\n                      className=\"DropzoneStyles\"\n                    >\n                      <input {...getInputProps()} />\n                      Drop a video, or click here.\n                    </div>\n                  )}\n                </Dropzone>\n              </div>\n            }\n            <div style={{marginLeft: '1rem', color: 'red'}}>\n              {!validFile && this.state.errors}\n            </div>\n            <div>\n              {uploadProgress > 0 && uploadProgress < 100 &&\n                <div>\n                  <div className=\"progress\" style={{width: '15rem', height: '1.25rem'}}>\n                    <div className=\"progress-bar\" style={progressStyles}>\n                      <span className=\"percentStyle\">{parseInt(uploadProgress)}%</span>\n                    </div>\n                  </div>\n                </div>\n              }\n            </div>\n          </div>\n        : <VideoPlayer\n            applicationId={applicationId}\n            admin={admin}\n            url={url}\n            uploadUrl={this.props.uploadUrl}\n            savedBookmarks={this.state.bookMarks}\n            activityUrl={this.props.activityUrl}\n            deletePermission={this.props.deletePermission}\n            deleteVideoUrl={this.props.deleteVideoUrl}\n            updateUrl={this.props.updateUrl}\n          />\n        }\n      </div>\n    );\n  }\n}\n\nexport default Upload;\n","import axios from 'axios';\n\nexport function getBookmarks(url, videoId) {\n  const query = `query fetchBookmark($videoId: ID!, $slugId: ID){\n    video(id: $videoId, slug: $slugId) {\n      bookmarks {\n        text : description\n        timeStamp : seconds\n        id\n      }\n    }\n  }`;\n\n  return axios.post(\n    url,\n    JSON.stringify({\n      query: query,\n      variables: {\n        videoId: videoId,\n      },\n    }),\n    {\n      headers: {\n        'Content-Type': 'application/json',\n      },\n    }\n  ).then(response => {\n    if (response.data && response.data.data) {\n      const sortBookmarks = response.data.data.video.bookmarks;\n      sortBookmarks.sort(function (a, b) {\n        return a.timeStamp - b.timeStamp;\n      });\n      return sortBookmarks;\n    } else {\n      alert('Error fetching bookmarks, refresh to try again');\n    }\n  });\n}\n\nexport function addBookmark(url, text, seconds, videoId) {\n  const variables = {\n    \"videoId\": videoId,\n    \"seconds\": parseInt(seconds),\n    \"description\": text\n  };\n\n  const query = `mutation createBookmark($videoId: ID!, $seconds: Int!, $description: String) {\n    createBookmark(input: {videoId: $videoId, seconds: $seconds, description: $description}){\n      errors\n      bookmark {\n        id\n        seconds\n        description\n      }\n    }\n  }`;\n  \n  return axios.post(\n    url,\n    JSON.stringify({\n      query: query,\n      variables: variables,\n    }),\n    {\n      headers: {\n        'Content-Type': 'application/json',\n      },\n    }\n  ).then(response => {\n    if (response.data && response.data.data) {\n      return response.data.data.createBookmark.bookmark.id;\n    } else {\n      alert('Error adding bookmark, please refresh the page and try again.');\n    }\n  });\n}\n\nexport function updateBookmark(url, timeStamp, text, bookmarkId) {\n  const variables = {\n    \"bookmarkId\": bookmarkId,\n    \"seconds\": parseInt(timeStamp),\n    \"description\": text\n  }\n\n  const query = `mutation udpdateBookmark($bookmarkId: ID!, $seconds: Int!, $description: String!){\n    updateBookmark(input: {bookmarkId: $bookmarkId, seconds: $seconds, description: $description}){\n      errors\n      bookmark{\n        id\n        seconds\n        description\n      }\n    }\n  }`;\n\n  axios.post(\n    url,\n    JSON.stringify({\n      query: query,\n      variables: variables,\n    }),\n    {\n      headers: {\n        'Content-Type': 'application/json',\n      },\n    }\n  )\n}\n\nexport function deleteBookmark(url, bookmarkId) {\n  const query = `\n      mutation deleteBookmark($bookMarkID: ID!){\n        deleteBookmark(input: {bookmarkId: $bookMarkID}){\n        errors\n      }\n  }`;\n  axios.post(\n    url,\n    JSON.stringify({\n      query: query,\n      variables: {bookMarkID: bookmarkId},\n    }),\n    {\n      headers: {\n        'Content-Type': 'application/json',\n      },\n    }\n  );\n}\n","import axios from 'axios';\n\nexport function logActivity(activity, activityUrl) {\n  const data = new FormData();\n\n  data.append(`verb`, activity);\n  axios.post(\n    activityUrl,\n    data,\n    {\n      headers: {\n        'Content-Type': 'multipart/form-data',\n        'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content'),\n      },\n    },\n  );\n}\n\nexport function getVideo(url, applicationId) {\n  const data = new FormData();\n\n  const query = `\n    query getVideo($id: ID, $slug: ID) {\n      video(id:$id, slug: $slug){\n        id\n        slug\n        originalVideoUrl\n        state\n        userId\n        videoSources {\n          format\n          id\n          mimeType\n          url\n        }\n        bookmarks {\n          description\n          seconds\n        }\n      }\n    }\n  `;\n\n  return axios.post(\n    url,\n    JSON.stringify({\n      query: query,\n      variables: {\n        slug: `interview-application-${applicationId}`,\n      },\n    }),\n    {\n      headers: {\n        'Content-Type': 'application/json',\n      },\n    }\n  ).then(response => {\n    return response.data.data;\n  });\n}\n\nexport function deleteVideo(url, videoId) {\n  if (videoId) {\n    const data = new FormData();\n    data.append(`video_id`, videoId);\n\n    return axios.post(\n      url,\n      data,\n      {\n        headers: {\n          'Content-Type': 'application/json',\n          'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content'),\n        },\n      }\n    ).then(response => {\n      return response.data;\n    });\n  }\n}\n","import React, { Component } from 'react';\n\nexport default class IntegrationSettings extends Component {\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      entity_id: this.props.entityId,\n      integration_id: this.props.integration.id,\n      enabled: false,\n      auth_string: '',\n      body: '',\n      response: ''\n    }\n  }\n\n  componentWillMount() {\n    const { url } = this.props;\n\n    fetch(`${url}?entity_id=${this.props.entityId}&integration_id=${this.props.integration.id}`,\n      { headers: { \"Content-Type\": \"application/json\" }}\n    )\n      .then(response => response.json())\n      .then((json) => {\n        json.id !== null && this.setState(json);\n      });\n  }\n\n  handleChange = (e) => {\n    const target = e.target;\n    const value = target.type === 'checkbox' ? target.checked : target.value;\n    const name = target.name;\n\n    this.setState({ [name]: value });\n  }\n\n  handleSave = () => {\n    const { url } = this.props;\n\n    fetch(url, {\n      method: 'POST',\n      body: JSON.stringify(this.state),\n      headers: {\n        'Content-Type': 'application/json',\n        'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content')\n      }\n    }).then(response => {\n      if (response.status === 201) {\n        this.setState({ response: 'Saved successfully'})\n      } else if(response.status === 422) {\n        this.setState({ response: 'Invalid JSON' })\n      }\n    })\n      .catch(error => this.setState({ response: 'Could not save settings' }));\n  }\n\n  render () {\n    const { integration } = this.props;\n\n    return (\n      <div>\n        <fieldset>\n          <legend>{this.props.integration.name}</legend>\n          <div>\n            <li className=\"boolean input\">\n              <label>\n                <input\n                  name=\"enabled\"\n                  type=\"checkbox\"\n                  onChange={this.handleChange}\n                  checked={this.state.enabled}\n                />\n                Enabled\n              </label>\n            </li>\n          </div>\n          <div>\n            <li className=\"string input optional stringish\">\n              <label>Auth String</label>\n              <textarea\n                name=\"auth_string\"\n                rows=\"10\"\n                cols=\"150\"\n                onChange={this.handleChange}\n                value={this.state.auth_string}\n              />\n            </li>\n          </div>\n          <div>\n            <li className=\"string input optional stringish\">\n              <label>Body</label>\n              <textarea\n                name=\"body\"\n                rows=\"20\"\n                cols=\"150\"\n                onChange={this.handleChange}\n                value={this.state.body}\n              />\n            </li>\n          </div>\n          <li className=\"action input_action\">\n            <button\n              className=\"commit\"\n              type=\"button\"\n              onClick={this.handleSave}\n            >\n              Save\n            </button>\n          </li>\n          {this.state.response}\n        </fieldset>\n      </div>\n    );\n  }\n}\n","import React, { Component } from 'react';\nimport IntegrationSettings from './integration_settings';\n\nconst Integrations = (props) => {\n  return (\n    <div>\n      {props.integrations.map((integration) => {\n        return (\n          <IntegrationSettings\n            key={integration.id}\n            integration={integration}\n            entityId={props.entity_id}\n            url={props.url}\n          />\n        );\n      })}\n    </div>\n  );\n};\n\nexport default Integrations;\n","import React from 'react';\nimport ScoutSelect from './scout/select';\n\nexport default class MvsRequestTest extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state = { values: [] };\n  }\n\n  onPackageChange(e) {\n    let values = [];\n\n    this.props.packages.map(function (item) {\n      if (item.id === e.target.value) {\n        values = item.checks.map((item) => item.value);\n        return true;\n      }\n    });\n\n    this.setState({ values });\n  }\n\n  render() {\n    const { packages, blueprints } = this.props;\n    const { values } = this.state;\n\n    return (\n      <fieldset className=\"inputs\">\n        <ol>\n          <li className=\"select input\">\n            <label htmlFor=\"package_id\">Package</label>\n            <select name=\"package_id\" id=\"package_id\" onChange={this.onPackageChange.bind(this)}>\n              <option value=\"\"> </option>\n              {packages.map(function (item, key) {\n                return (\n                  <option key={key} value={item.id}>\n                    {item.name}\n                  </option>\n                );\n              })}\n            </select>\n          </li>\n        </ol>\n        <ol>\n          <li className=\"select input\">\n            <label htmlFor=\"blueprint_id\">Additional Checks</label>\n            <ScoutSelect\n              key={values}\n              name=\"blueprint_ids[]\"\n              values={values}\n              data={blueprints}\n              multi={true}\n            />\n          </li>\n        </ol>\n      </fieldset>\n    );\n  }\n}\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport InPlaceInputEditor from '../scout/table/fields/inplace_input_editor';\n\nconst SavedSearchItem = ({ savedSearch, isStaff }) => {\n  const [title, setTitle] = useState(savedSearch.title);\n  const itemUrl = '/admin/search/advanced/saved/' + savedSearch.id;\n  const emailUrl =\n    '/admin/search/advanced/saved/' +\n    savedSearch.id +\n    '/email-batches/new' +\n    (isStaff ? '?skip_scout_clients=true' : '');\n\n  const updateItem = (value, id) =>\n    $.ajax({\n      url: `/admin/api/v1/saved_searches/${id}`,\n      method: 'PATCH',\n      data: {\n        saved_search: {\n          title: value,\n          name: value\n        }\n      },\n      success: ({ data }) => setTitle(data.saved_search.title)\n    });\n\n  const renderSearchLink = () => {\n    const { post_code1, post_code2, status, tags, date1, date2, by_title, query } =\n      savedSearch.params;\n\n    let url = window.location.origin + '/admin/search/advanced/results?';\n\n    let data_params = {\n      query: query || '',\n      sorting: 'id',\n      start: '0',\n      date1: date1 || '',\n      date2: date2 || '',\n      post_code1: post_code1 || '',\n      post_code2: post_code2 || '',\n      by_title: by_title || false\n    };\n    let ret = [];\n    ret = encodeDataParams(ret, data_params);\n    ret = encodeStatus(ret, status);\n    ret = encodeTags(ret, tags);\n\n    url += ret.join('&');\n\n    return <a href={url}>{title || savedSearch.name}</a>;\n  };\n\n  const renderFilters = () => {\n    const { post_code1, post_code2, status, tags, date1, date2, by_title } = savedSearch.params;\n    const parameters = [];\n\n    if (tags && tags.length > 0) parameters.push(`Tags: (${tags.join(', ')})`);\n    if (status && status.length > 0) parameters.push(`Statuses: (${status.join(', ')})`);\n    if (post_code1 && post_code2) parameters.push(`Postcode: ${post_code1} — ${post_code2}`);\n    if (date1) parameters.push(`Dates: ${date1} — ${date2}`);\n    if (by_title) parameters.push('Search by title');\n\n    return parameters.join(', ');\n  };\n\n  return (\n    <tr>\n      <td>\n        <InPlaceInputEditor\n          id={savedSearch.id}\n          saveCallback={updateItem}\n          defaultLabel={renderSearchLink()}\n          value={title || savedSearch.name}\n        />\n      </td>\n      <td>{renderFilters()}</td>\n      <td className=\"\">\n        <a className=\"btn\" href={emailUrl}>\n          Email This List\n        </a>\n        <a className=\"btn\" href={itemUrl} data-method=\"delete\">\n          Delete\n        </a>\n        <a className=\"btn\" href={`${itemUrl}.csv`}>\n          Export As CSV\n        </a>\n      </td>\n    </tr>\n  );\n};\n\nSavedSearchItem.propTypes = {\n  savedSearch: PropTypes.object,\n  isStaff: PropTypes.bool\n};\n\nconst encodeDataParams = (array, dataParams) => {\n  for (let d in dataParams) {\n    if (dataParams[d] === '') continue;\n    array.push(encodeURIComponent(d) + '=' + encodeURIComponent(dataParams[d]));\n  }\n  return array;\n};\n\nconst encodeStatus = (array, status) => {\n  if (status) {\n    for (let i = 0; i < status.length; i++) {\n      array.push(encodeURIComponent('status[]') + '=' + encodeURIComponent(status[i]));\n    }\n  }\n\n  return array;\n};\n\nconst encodeTags = (array, tags) => {\n  if (tags) {\n    for (let i = 0; i < tags.length; i++) {\n      array.push(encodeURIComponent('tags[]') + '=' + encodeURIComponent(tags[i]));\n    }\n  }\n  return array;\n};\n\nexport default SavedSearchItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport SavedSearchItem from './item';\n\nconst SavedSearchTable = ({ collection, isStaff }) => (\n  <table className=\"saved-searches\">\n    <thead>\n      <tr>\n        <th>Title </th>\n        <th>Filtering Options </th>\n        <th>Operations </th>\n      </tr>\n    </thead>\n    <tbody>\n      {collection &&\n        collection.map((savedSearch, key) => (\n          <SavedSearchItem key={key} savedSearch={savedSearch} isStaff={isStaff} />\n        ))}\n    </tbody>\n  </table>\n);\n\nSavedSearchTable.propTypes = {\n  collection: PropTypes.array,\n  isStaff: PropTypes.bool,\n  token: PropTypes.string,\n  endpoint: PropTypes.string\n};\n\nexport default SavedSearchTable;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ScoutTrainingsTable from './table';\nimport ScoutTrainingsPortalButton from './portal-button';\n\nexport default class ScoutTrainingsIndex extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state = { courses: [] };\n  }\n\n  static propTypes = {\n    candidate: PropTypes.object.required,\n    accessToken: PropTypes.string.required,\n    endPoint: PropTypes.string.required\n  };\n\n  loadCourses() {\n    const { candidate, accessToken, endPoint } = this.props;\n    const url = endPoint + '/api/candidates/' + candidate.scout_candidate_id + '/courses';\n\n    const headers = {\n      'Content-Type': 'application/json',\n      Accept: 'application/json',\n      'X-AccessToken': accessToken\n    };\n\n    fetch(url, {\n      method: 'GET',\n      headers: headers\n    })\n      .then((response) => {\n        return response.json();\n      })\n      .then((courses) => {\n        return this.setState({ courses: courses });\n      })\n      .catch((response) => {});\n  }\n\n  syncCandidate() {\n    const { accessToken, endPoint } = this.props;\n    const url = endPoint + '/api/candidates';\n\n    const headers = {\n      'Content-Type': 'application/json',\n      Accept: 'application/json',\n      'X-AccessToken': accessToken\n    };\n\n    fetch(url, {\n      method: 'POST',\n      headers: headers,\n      body: JSON.stringify({ candidate: this.props.candidate })\n    })\n      .then((response) => {\n        return response.json();\n      })\n      .then((data) => {\n        if (data.url) {\n          return (window.location = data.url);\n        }\n      })\n      .catch((response) => {\n        response.json().then((body) => {\n          alert(Object.values(body.error).join(', '));\n        });\n      });\n  }\n\n  componentDidMount() {\n    this.loadCourses();\n  }\n\n  render() {\n    return (\n      <div>\n        <div className=\"section\">\n          <h2>\n            <div className=\"east\">\n              <div className=\"west\">Scout Trainings</div>\n            </div>\n          </h2>\n          <ScoutTrainingsTable collection={this.state.courses} />\n        </div>\n        <div className=\"section\">\n          <ScoutTrainingsPortalButton onClick={this.syncCandidate.bind(this)} />\n        </div>\n      </div>\n    );\n  }\n}\n","import React from 'react';\n\nexport default class ScoutTrainingsPortalButton extends React.Component {\n    static propTypes = {\n      onClick: PropTypes.func.required\n    }\n    render() {\n        return (\n           <div>\n              <button className=\"commit\" onClick={ this.props.onClick }>Scout Trainings</button>\n            </div>\n        );\n      }\n} \n","import React  from 'react';\nimport moment from 'moment';\nexport default class ScoutTrainingsTable extends React.Component {\n    \n    constructor( props ) {\n        super( props );\n    }\n    \n    static propTypes = {\n       collection: PropTypes.array.required\n    }\n    render() {\n        return (\n           <div>\n              <table>\n                <thead>\n                    <tr>\n                        <th>Course</th>\n                        <th>Details</th>\n                        <th>Provider</th>\n                        <th>Status</th>\n                        <th>Commencement Date</th>\n                        <th>Estimated Completion</th>\n                    </tr>\n                </thead>\n                <tbody>\n                { this.props.collection.map((course, key)=> (\n                    <tr key={ key }>\n                        <td>{ course.name }</td>\n                        <td>{ course.details }</td>\n                        <td>{ course.provider }</td>\n                        <td>{ course.status }</td>\n                        <td>{ course.commencemented_at ? moment(course.commencemented_at).format(\"D/MM/YYYY\") : '' }</td>\n                        <td>{ course.completed_at ? moment(course.completed_at).format(\"D/MM/YYYY\") : '' }</td>\n                    </tr>\n                ))}\n                </tbody>\n            </table>\n  \n            </div>\n        );\n      }\n} \n","import React from 'react';\nimport ScoutSelect from './select';\n\ninterface IEventStatus {\n  id: number;\n  details: string;\n}\n\nfunction EventStatusSelect({\n  data,\n  onChangeFunctionName\n}: {\n  data: IEventStatus;\n  onChangeFunctionName: string;\n}) {\n  const formattedData = data.map(({ id, details }) => ({ value: id, label: details }));\n\n  const handleChange = (value) => {\n    window[onChangeFunctionName](value);\n  };\n\n  return <ScoutSelect name=\"event_status_id\" data={formattedData} onChange={handleChange} />;\n}\n\nexport default EventStatusSelect;\n","import React, { Component } from 'react';\nimport ScoutSelect from './select';\n\nexport default class ScoutAddButton extends Component {\n  constructor() {\n    super();\n\n    this.state = {\n      fields: []\n    };\n\n    this.add = this.add.bind(this);\n  }\n\n  add(e) {\n    e.preventDefault();\n    const { fields } = this.state;\n    fields.push({ id: Date.now(), label: '', value: '' });\n    this.setState({ fields });\n  }\n\n  remove(index) {\n    const { fields } = this.state;\n    fields.splice(index, 1);\n\n    this.setState({ fields });\n  }\n\n  handleSelect = (i) => (e) => {\n    const { fields } = this.state;\n    const re = /([a-zA-Z0-9._+-]+@[a-zA-Z0-9._+-]+\\.[a-zA-Z0-9_+-]+)/gi;\n\n    if (e.target.innerText != 'Select...') {\n      fields[i].label = e.target.innerText;\n      fields[i].value = e.target.innerText.match(re).toString();\n    }\n\n    this.setState(fields);\n  };\n\n  render() {\n    const { fields } = this.state;\n    const { name, data, selected } = this.props;\n\n    const inputs = fields.map((item, i) => (\n      <div key={i} className=\"approver\">\n        <div className=\"select inputs\" style={{ marginBottom: '5px' }}>\n          <div className=\"label\" style={{ fontWeight: 'bold' }}>\n            Email\n          </div>\n          <span onClick={this.handleSelect(i)}>\n            <ScoutSelect name={name.replace('%i', item.id)} data={data} value={item.value} />\n          </span>\n        </div>\n        <div className=\"approver-remove\">\n          <span onClick={this.remove.bind(this, i)}>Remove</span>\n        </div>\n        <div className=\"clearfix\"></div>\n      </div>\n    ));\n\n    return (\n      <div>\n        <div>{inputs}</div>\n        <button\n          onClick={this.add}\n          className={'add_field'}\n          disabled={fields.length + selected.length >= data.length}\n        >\n          {this.props.title}\n        </button>\n      </div>\n    );\n  }\n}\n","import React, { Component } from 'react';\nimport T from 'prop-types';\n\nimport debounce from 'debounce';\nimport Async from 'react-select/async';\n\nexport default class ScoutAutocomplete extends Component {\n  static propTypes = {\n    url: T.string.isRequired,\n    name: T.string.isRequired,\n    onChange: T.func,\n    multi: T.bool,\n    values: T.array,\n    value: T.string,\n    includeBlank: T.string,\n    urlHeaders: T.object,\n    selectedLabel: T.string,\n    placeholder: T.string\n  };\n\n  constructor (props) {\n    super(props);\n    const { values, value } = this.props;\n\n    this.state = { values, value, options: [], limitation: '50', optionsFirstLoad: false };\n  }\n\n  handleLimitationChange = (e) => this.setState({limitation: e.target.value});\n\n  onChange = (option) => {\n    if (this.props.multi) {\n      let values = [];\n      if (option) {\n        option.map((opt) => { values.push(opt.value) })\n      }\n      this.setState({ values });\n      if (this.props.onChange) {\n        this.props.onChange(values);\n      }\n    } else {\n      this.setState({ value: option.value });\n      if (this.props.onChange) {\n        this.props.onChange(option.value, option.label, option.attrs);\n      }\n    }\n  }\n\n  getOptions = (input, callback) => {\n    const { url, multi, includeBlank, urlHeaders } = this.props;\n    const { value, values, limitation } = this.state;\n    const selected = multi ? values.join(',') : value;\n    const searchString = input.toLowerCase().trim();\n    const searchUrl = `${url}${url.indexOf('?') < 0 ? '?' : '&'}search=${searchString}&selected=${selected}&limit=${limitation}`\n    fetch(searchUrl, { headers: urlHeaders }).then((response) => {\n      response.json().then((json) => {\n        let options = json.data.map(node => ({ label: node[0], value: node[1], attrs: node[2] }));\n        if (includeBlank) {\n          options.unshift({ label: includeBlank, value: '' });\n        }\n        this.setState({ options, optionsFirstLoad: true });\n        callback(options);\n      });\n    });\n\n    return;\n  }\n\n  loadOptions = debounce(this.getOptions, 500);\n\n  limitationSelect = (limitation) => {\n    const limitationOptions = ['50', '100', '200', '300', '400', '500', '1000', 'All'];\n\n    return (\n      <div className='limit-selection'>\n        <label className='inline-label'>Number of the entities:</label>\n        <select name=\"entities_limitation\" onChange={this.handleLimitationChange} value={limitation}>\n          { limitationOptions.map(option => <option value={option}>{option}</option>)}\n        </select>\n      </div>\n    )\n  }\n\n  render () {\n    const { values, value, limitation, options, optionsFirstLoad } = this.state;\n    const { name, multi, className, url, moveType, selectedLabel, placeholder } = this.props;\n    let selected;\n\n    if (multi) {\n      selected = options.filter((option) => values.indexOf(option.value) >= 0);\n      return (\n        <div key={limitation}>\n          {moveType == 'job_moving' ? this.limitationSelect(limitation) : ''}\n          <Async\n            placeholder={ placeholder }\n            key={ url }\n            className={ className }\n            name={ name }\n            isMulti\n            value={ selected }\n            onChange={ this.onChange }\n            joinValues={ false }\n            loadOptions={ this.loadOptions }\n            cache={ false }\n            defaultOptions={ selectedLabel ? selected : true }\n          />\n        </div>\n      );\n    } else {\n      if (!optionsFirstLoad && selectedLabel) {\n        selected = [{ label: selectedLabel, value: value }];\n      } else {\n        selected = options.filter((option) => value + '' === option.value + '');\n      }\n      return (\n        <div key={limitation}>\n          {moveType == 'job_moving' ? this.limitationSelect(limitation) : ''}\n          <Async\n            placeholder={ placeholder }\n            key={ url }\n            className={ className }\n            name={ name }\n            value={ selected }\n            onChange={ this.onChange }\n            loadOptions={ this.loadOptions }\n            cache={ false }\n            defaultOptions={ selectedLabel ? selected : true }\n          />\n        </div>\n      );\n    }\n  }\n}\n","import React, { Component } from 'react';\nimport T from 'prop-types';\nimport ScoutAutocomplete from './autocomplete';\n\nexport default class NestedAutocomplete extends Component {\n  static propTypes = {\n    parentUrl: T.string.isRequired,\n    childBaseUrl: T.string.isRequired,\n    parentLabel: T.string.isRequired,\n    label: T.string.isRequired,\n    parentValue: T.string,\n    value: T.string,\n    parentName: T.string,\n    name: T.string,\n    includeBlank: T.string\n  };\n\n  constructor(props) {\n    super(props);\n    const { parentValue, value, childBaseUrl } = props;\n\n    this.state = {\n      parentValue,\n      value,\n      childUrl: childBaseUrl.replace('{parentValue}', parentValue || '')\n    };\n  }\n\n  setParentValue = (parentValue) => {\n    const { childBaseUrl } = this.props;\n    this.setState({\n      parentValue,\n      childUrl: childBaseUrl.replace('{parentValue}', parentValue || '')\n    });\n  };\n\n  render() {\n    const { parentName, parentLabel, parentUrl, label, name, includeBlank } = this.props;\n    const { parentValue, value, childUrl } = this.state;\n\n    return (\n      <fieldset className=\"inputs\">\n        <ol>\n          <li>\n            <label>{parentLabel}</label>\n            <ScoutAutocomplete\n              url={parentUrl}\n              name={parentName}\n              onChange={this.setParentValue}\n              value={parentValue}\n            />\n          </li>\n          <li>\n            <label>{label}</label>\n            <ScoutAutocomplete\n              url={childUrl}\n              name={name}\n              value={value}\n              includeBlank={includeBlank}\n            />\n          </li>\n        </ol>\n      </fieldset>\n    );\n  }\n}\n","import React, { Component, Fragment } from 'react';\nimport T from 'prop-types';\nimport Async from 'react-select/async';\n\nconst LIMIT = 300;\n\nexport default class ScoutSelect extends Component {\n  static propTypes = {\n    multi: T.bool,\n    values: T.array,\n    value: T.string,\n    data: T.array.isRequired,\n    name: T.string.isRequired,\n    onChange: T.func,\n    className: T.string,\n  };\n\n  constructor (props) {\n    super(props);\n    const { data, values, value } = this.props;\n\n    this.state = { value, values, options: data, selectingOption: false }\n\n    this.onChange = this.onChange.bind(this);\n    this.getOptions = this.getOptions.bind(this);\n    this.formatEmail = this.formatEmail.bind(this);\n  }\n\n  static getDerivedStateFromProps(nextProps, prevState) {\n    if (!nextProps.multi && !prevState.selectingOption) {\n      return { value: nextProps.value };\n    } else {\n      return { selectingOption: false };\n    }\n  }\n\n  onChange (option) {\n    if (this.props.multi) {\n      let values = [];\n      if (option) {\n        option.map((opt) => { values.push(opt.value) })\n      }\n\n      this.setState({ values, selectingOption: true, options: this.optionsForQuery('') });\n      if (this.props.onChange) {\n        this.props.onChange(values);\n      }\n    } else {\n      this.setState({ selectingOption: true, value: option.value, options: this.optionsForQuery('') });\n      if (this.props.onChange) {\n        \n        this.props.onChange(option.value)\n      }\n    }\n  }\n\n  optionsForQuery(input) {\n    const searchString = input.toLowerCase().trim();\n    return this.props.data.filter(\n      ({ value, label }) => {\n        if (this.props.multi) {\n          if (searchString.length == 0) {\n            return this.state.values;\n          } else {\n            return this.state.values.includes(value) || label.toLowerCase().includes(searchString);\n          }\n        } else {\n          return label.toLowerCase().includes(searchString);\n        }\n      }\n    );\n  }\n\n  formatEmail (str) {\n    if (typeof str !== 'string') return str;\n\n    return str.trim().charAt(0) === '*' ? str.trim().substring(1) : str.trim();\n  }\n\n  getOptions (input, callback) {\n    const options = this.optionsForQuery(input);\n\n    const newOptions = options.map((item) => {\n      item.value = this.formatEmail(item.value);\n      return item;\n    });\n\n    this.setState({ options: newOptions });\n    return callback(options.slice(0, LIMIT));\n  }\n\n  render () {\n    const { values, value, options } = this.state;\n    const { name, multi, className } = this.props;\n\n    if (multi) {\n      const selected = options.filter((option) => values.indexOf(option.value) >= 0);\n      return (\n        <Async\n          className={ className }\n          name={ name }\n          isMulti\n          value={ selected }\n          onChange={ this.onChange }\n          joinValues={ false }\n          loadOptions={ this.getOptions }\n          defaultOptions\n        />\n      );\n    } else {\n      const selected = this.state.options.filter((option) => this.formatEmail(value) === option.value);\n      const defaultValue = this.props.value;\n      const disabled = defaultValue && defaultValue.trim().charAt(0) === '*' ? true : false;\n      return (\n        <Fragment>\n          <Async\n            className={ className }\n            name={ name }\n            value={ selected }\n            onChange={ this.onChange }\n            loadOptions={ this.getOptions }\n            isDisabled={ disabled }\n            defaultOptions\n          />\n          { disabled && <input type=\"hidden\" name={name} value={this.formatEmail(defaultValue)} />}\n        </Fragment>\n      );\n    }\n  }\n}\n","import React, { Component } from 'react';\nimport T from 'prop-types';\n\nexport default class LinkControl extends Component {\n  constructor(props) {\n    super(props)\n  }\n\n  render() {\n    const { url, method, confirm, title } = this.props\n    return(\n      <div><a href={url} data-method={method} data-confirm={confirm}> {title} </a></div>\n    )\n  }\n}\n","import React, { Component } from 'react';\nimport T from 'prop-types';\n\nexport default class CustomControlColumn extends Component {\n  constructor(props) {\n    super(props)\n  }\n\n  render() {\n    const { components } = this.props\n    return(\n      <td>\n        { components }\n      </td>\n    )\n  }\n}\n","import React, { Component } from 'react';\nimport T from 'prop-types';\n\nexport default class DataColumn extends Component {\n  static propTypes = {\n    data: T.node // T.oneOf(['string', 'number', 'date'])\n  }\n\n  constructor(props) {\n    super(props)\n  }\n\n  render() {\n    return (<td>{this.props.data}</td>)\n  }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class InPlaceInputEditor extends React.Component {\n  constructor(props) {\n    super(props)\n\n    this.state = {\n      editing: false,\n      value: this.props.value\n    }\n\n    this.toggleEditing = this.toggleEditing.bind(this)\n    this.saveCallback = this.saveCallback.bind(this)\n    this.inputCallback = this.inputCallback.bind(this)\n  }\n\n  toggleEditing() {\n    const { editing } = this.state\n    this.setState({editing: !editing})\n  }\n\n  saveCallback(event) {\n    const { value, editing } = this.state\n    const { id } = this.props\n    this.toggleEditing();\n    this.props.saveCallback(value, id);\n  }\n\n  inputCallback(event) {\n    this.setState({value: event.target.value})\n  }\n\n  renderInput(event) {\n    const { saveCallback, defaultLabel} = this.props\n    const { editing, value } = this.state\n    if (editing) {\n      return (<div>\n                <input onChange={this.inputCallback} value={value} style={{width: '80%'}}/>\n                <a href='#' className='' onClick={this.saveCallback} style={{paddingLeft: '10px'}}><i className='fa fa-check' style={{color: 'green'}}/></a>\n                <a href='#' className='' onClick={this.toggleEditing}>\n                  <i className='fa fa-close' style={{color: 'red'}}/>\n                </a>\n              </div>)\n    } else {\n      return (<div>\n                {defaultLabel}\n                <a href='#' style={{paddingLeft: '10px'}} onClick={this.toggleEditing}><i className='fa fa-pencil'/></a>\n              </div>)\n    }\n  }\n\n  render() {\n    return(\n      this.renderInput()\n    )\n  }\n}\n","import React, { Component } from 'react';\nimport T from 'prop-types';\n\nexport default class LinkColumn extends Component {\n  static propTypes = {\n    data: T.string,\n    url: T.string\n  }\n\n  constructor(props) {\n    super(props)\n  }\n\n  render() {\n    const { className, url, data } = this.props\n    return (<td><a className={className} href={url}>{data}</a></td>)\n  }\n}\n","import React, { Component } from 'react';\nimport T from 'prop-types';\n\nexport default class ScoutFilter extends Component {\n  static propTypes = {\n    csvSubmit: T.func, // Will add a 'Export CSV' button that calls this function on click\n    filterSubmit: T.func,\n    title: T.string\n  }\n\n  constructor (props) {\n    super(props)\n\n    this.filterFields   = this.filterFields.bind(this)\n    this.localSubmit   = this.localSubmit.bind(this);\n  }\n\n  filterFields() {\n    let out = []\n    for (var i = 0; i < filters.length ; i++) {\n      out.push(\n        <li key={i}>\n          {filters[i]}\n        </li>)\n    }\n    return (\n      {out}\n    )\n  }\n\n  localSubmit(event) {\n    event.preventDefault();\n    this.props.filterSubmit()\n  }\n\n  render() {\n    const {filters} = this.props\n\n    return(\n      <div className='filter'>\n        <link rel=\"stylesheet\" media=\"screen\" href=\"/assets/filters.self.css?body=1\"/>\n        <h2>Filter {this.props.title}</h2>\n        <form onSubmit={this.localSubmit}>\n          <ol>\n            {filters}\n          </ol>\n          <div className=\"submit\">\n            <input type=\"submit\" name=\"commit\" value=\"Filter\"/>\n            {\n              this.props.csvSubmit && (\n                <input type=\"button\" name=\"export_csv\" value=\"Export CSV\" onClick={this.props.csvSubmit} className='export-csv'/>\n              )\n            }\n          </div>\n        </form>\n      </div>\n    )\n  }\n}\n","\nimport React, { Component } from 'react';\nimport T from 'prop-types';\n\nexport default class CallbackHeader extends Component {\n  static propTypes = {\n    callback: T.func,\n    field:    T.string\n  };\n  constructor(props) {\n    super(props)\n  }\n\n  render() {\n    return (<th><a href='#' onClick={this.props.callback} data-field={this.props.field}>{this.props.data}</a></th>)\n  }\n}\n","import React, { Component } from 'react';\nimport T from 'prop-types';\n\nexport default class DataHeader extends Component {\n  static propTypes = {\n    data: T.string,\n  }\n\n  constructor(props) {\n    super(props)\n  }\n\n  render() {\n    return (<th>{this.props.data}</th>)\n  }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class ScoutTablePagination extends React.Component {\n  static propTypes = {\n    pagination: PropTypes.obj,\n    onClick: PropTypes.func\n  }\n\n  constructor(props) {\n    super(props)\n    const width = 7;\n\n    // {\n    //   total_pages: 10,\n    //   current_page: 1,\n    // }\n    this.renderControl = this.renderControl.bind(this)\n    this.renderPageControl = this.renderPageControl.bind(this)\n    this.renderActiveLink = this.renderActiveLink.bind(this)\n    this.renderForwardControl = this.renderForwardControl.bind(this)\n    this.renderBackwardControl = this.renderBackwardControl.bind(this)\n\n  }\n\n  renderActiveLink(key, index, label, classNames = '') {\n    return(<a key={ key } className={ classNames } href={ `#page=${index}` } onClick={ () => { this.props.onClick(index) }}>{ label }</a>);\n  }\n\n  renderControl(links) {\n    return (\n      <span>\n        {links}\n      </span>\n    )\n  }\n\n  renderPageControl() {\n    const { pagination } = this.props;\n    const { total_pages, current_page } = pagination;\n    const width = 6;\n    const middle = 3;\n\n    var start = current_page - middle\n    var end = start + width\n    if( start <= 0) {\n      start = 1;\n      if (width > total_pages) {\n        end = total_pages;\n      } else {\n        end = start + width;\n      }\n    } else if(end > total_pages) {\n      if (width > total_pages) {\n        start = 1;\n      } else {\n        start = total_pages - width;\n      }\n      end = total_pages;\n    }\n\n    var output = []\n    for (var i = start; i <= end; i++) {\n      if(current_page === i) {\n        output.push(<em key={ i } className='current'>{i}</em>)\n      } else {\n        output.push(this.renderActiveLink(i, i, i, 'next_page'))\n      }\n    }\n    if(total_pages > end) {\n      output.push('...')\n      output.push(this.renderActiveLink(end + 1,\n                                        total_pages,\n                                        total_pages,\n                                        'next_page'))\n    }\n    return this.renderControl(output)\n  }\n\n  renderBackwardControl() {\n    const { pagination } = this.props;\n    const { total_pages, current_page } = pagination;\n\n    if (current_page > 1) {\n      return this.renderControl([\n                 this.renderActiveLink(1, 1, 'First', 'next_page'),\n                 this.renderActiveLink(2, current_page - 1, '← Previous', 'next_page')\n               ])\n    } else {\n      return this.renderControl([\n                 (<span key={1} className='next_page disabled'>First</span>),\n                 (<span key={2} className='previous_page disabled'>← Previous</span>)\n               ])\n    }\n  }\n\n  renderForwardControl() {\n    const { pagination } = this.props;\n    const { total_pages, current_page } = pagination;\n    if (current_page < total_pages) {\n      return this.renderControl([\n                 this.renderActiveLink(1, current_page + 1, 'Next →', 'next_page'),\n                 this.renderActiveLink(2, total_pages, 'Last',   'next_page')\n               ])\n    } else {\n      return this.renderControl([\n                 (<span key={1} className='next_page disabled'>Next →</span>),\n                 (<span key={2} className='next_page disabled'>Last</span>)\n               ])\n    }\n  }\n\n  render() {\n    const { pagination } = this.props;\n    const { total_pages, total_records } = pagination;\n    return (\n      <div className='pagination' >\n        <span style={{float: 'left'}}> Total Records: {total_records} </span>\n        { total_pages != 1 && this.renderBackwardControl() }\n        { total_pages != 1 && this.renderPageControl() }\n        { total_pages != 1 && this.renderForwardControl() }\n      </div>\n    );\n  }\n};\n","import React, { Component } from 'react';\nimport T from 'prop-types';\n\nexport default class ScoutIndexRow extends Component {\n  static propTypes = {\n    cols:  T.array,\n    index: T.number\n  }\n\n  constructor (props) {\n    super(props)\n  }\n\n  zebraClass() {\n    if(this.props.index % 2 == 0) {\n      return 'even'\n    } else {\n      return 'odd'\n    }\n  }\n\n  render() {\n    return(\n      <tr className={this.zebraClass()}>\n        {this.props.cols}\n      </tr>\n    )\n  }\n}\n","import React, { Component } from 'react';\nimport ReactLoading from 'react-loading';\nimport ScoutTablePagination from './pagination';\n\nimport T from 'prop-types';\n\nexport default class ScoutIndexTable extends Component {\n  static propTypes = {\n    pagination: T.object,\n    paginationCallback: T.func,\n    rows: T.array,\n    headers: T.array,\n    loading: T.bool\n  };\n\n  constructor(props) {\n    super(props);\n  }\n\n  renderPagination() {\n    const { pagination, paginationCallback } = this.props;\n    return <ScoutTablePagination pagination={pagination} onClick={paginationCallback.bind(this)} />;\n  }\n\n  renderLoadingRow() {\n    const { loading, headers } = this.props;\n\n    let output = [\n      <td key=\"0\">\n        <div className=\"loading\">\n          <ReactLoading key=\"spinner\" type=\"cylon\" color=\"blue\" height=\"25px\" width=\"25px\" />\n        </div>\n      </td>\n    ];\n\n    for (var i = 1; i < headers.length; i++) {\n      output.push(<td key={i}></td>);\n    }\n    return <tr style={{ display: loading ? '' : 'none' }}>{output}</tr>;\n  }\n\n  renderNothingFound() {\n    return <p>No items Found</p>;\n  }\n\n  renderTableBody() {\n    const { pagination, rows, headers, loading, idName } = this.props;\n\n    return (\n      <div>\n        {pagination && this.renderPagination()}\n        <table id={idName}>\n          <thead>\n            <tr>{headers}</tr>\n          </thead>\n          <tbody>\n            {this.renderLoadingRow()}\n            {!loading && rows}\n          </tbody>\n        </table>\n        {pagination && this.renderPagination()}\n      </div>\n    );\n  }\n\n  render() {\n    const { rows, loading } = this.props;\n    return (\n      <div>{rows.length == 0 && !loading ? this.renderNothingFound() : this.renderTableBody()}</div>\n    );\n  }\n}\n","import React, { Component } from 'react';\nimport T from 'prop-types';\nimport AsyncCreatable from 'react-select/async-creatable';\n\nconst LIMIT = 300;\n\nexport default class ScoutTags extends Component {\n  static propTypes = {\n    values: T.array,\n    data: T.array.isRequired,\n    name: T.string.isRequired,\n    onChange: T.func\n  };\n\n  constructor (props) {\n    super(props);\n    const { data, values } = this.props;\n\n    this.state = { values }\n    this.onChange = this.onChange.bind(this);\n    this.getOptions = this.getOptions.bind(this);\n  }\n\n  UNSAFE_componentWillReceiveProps ({ values }) {\n    if (this.props.values && this.props.values.length > 0 && this.props.values !== values) {\n      this.setState({ values: values});\n    }\n  }\n\n  onChange (value) {\n    this.setState({ values: [].concat(value) });\n\n    if (this.props.onChange) {\n      this.props.onChange([].concat(value))\n    }\n  }\n\n  getOptions (input, callback) {\n    const searchString = input.toLowerCase().trim();\n    let options = this.props.data.filter(\n      ({ value, label }) => {\n        if (searchString.length == 0) {\n          return this.state.values.includes(value);\n        } else {\n          return this.state.values.includes(value) || label.toLowerCase().includes(searchString);\n        }\n      });\n\n    return callback(options.slice(0, LIMIT));\n  }\n\n  render () {\n    const { values } = this.state;\n    const { name, className } = this.props;\n\n    return (\n      <AsyncCreatable\n        className={ className }\n        name={ name }\n        isMulti\n        value={ values }\n        onChange={ this.onChange }\n        joinValues={ false }\n        loadOptions={ this.getOptions }\n        defaultOptions\n      />\n    );\n  }\n}\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport DayPickerInput from 'react-day-picker/DayPickerInput';\nimport _ from 'lodash';\nimport ScoutSelect from '../scout/select';\nimport dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\nimport { DateUtils } from 'react-day-picker';\n\ndayjs.extend(customParseFormat);\n\nconst FilteringOptionsTable = ({\n  defaultStatuses,\n  defaultTags,\n  onSubmit,\n  onChange,\n  data,\n  tags,\n  canFilterScoutClients\n}) => {\n  const [statuses, setStatuses] = useState(data.status || []);\n  const [hidden, setHidden] = useState(\n    _.compact([data.by_title, data.post_code1, data.post_code2, data.date1, data.date2]).length ===\n      0\n  );\n  const [componentTags, setTags] = useState(data.tags || []);\n\n  const onDropdownChange = (e) => {\n    const newStatuses = [...statuses, e.target.value];\n    setStatuses(newStatuses);\n    onChange({ target: { name: 'status', value: newStatuses } });\n  };\n\n  const onRemoveClick = (status) => {\n    const newStatuses = _.xor(statuses, [status]);\n    setStatuses(newStatuses);\n    onChange({ target: { name: 'status', value: newStatuses } });\n  };\n\n  const handleToggle = () => {\n    setHidden(!hidden);\n  };\n\n  const isDisabled = (status) => {\n    return _.indexOf(statuses, status) > -1;\n  };\n\n  const onTagsChange = (newTags) => {\n    const updatedTags = [...newTags];\n    setTags(updatedTags);\n    onChange({ target: { name: 'tags', value: updatedTags } });\n  };\n\n  const renderDropdown = () => {\n    return (\n      <div className=\"input\">\n        <select name=\"status\" onChange={onDropdownChange}>\n          {defaultStatuses.map((status) => (\n            <option\n              key={status}\n              value={status}\n              disabled={isDisabled(status)}\n              onClick={onDropdownChange}\n            >\n              {status}\n            </option>\n          ))}\n        </select>\n        {statuses.map((status, key) => (\n          <div key={key}>\n            {status}\n            <a href=\"#\" onClick={() => onRemoveClick(status)}>\n              X\n            </a>\n          </div>\n        ))}\n      </div>\n    );\n  };\n\n  const onDate1Change = (day, modifiers, dayPickerInput) => {\n    const inputDay = dayPickerInput.getInput().value;\n    if (day !== undefined) {\n      let dayYear = day.getFullYear().toString();\n      if (dayYear.length > 3) {\n        onChange({ target: { name: 'date1', value: dayjs(day).format(FORMAT) } });\n      }\n    } else if (inputDay !== '') {\n      onChange({ target: { name: 'date1', value: inputDay } });\n    } else {\n      onChange({ target: { name: 'date1', value: '' } });\n    }\n  };\n\n  const onDate2Change = (day, modifiers, dayPickerInput) => {\n    const inputDay = dayPickerInput.getInput().value;\n    if (day !== undefined) {\n      let dayYear = day.getFullYear().toString();\n      if (dayYear.length > 3) {\n        onChange({ target: { name: 'date2', value: dayjs(day).format(FORMAT) } });\n      }\n    } else if (inputDay !== '') {\n      onChange({ target: { name: 'date2', value: inputDay } });\n    } else {\n      onChange({ target: { name: 'date2', value: '' } });\n    }\n  };\n\n  const { by_title, post_code1, post_code2, date1, date2 } = data;\n\n  function parseDate(str, format, locale) {\n    const parsed = dayjs(str, format, locale);\n    if (DateUtils.isDate(parsed)) {\n      return parsed;\n    }\n    return undefined;\n  }\n\n  function formatDate(date, format, locale) {\n    return dayjs(date, format, locale);\n  }\n\n  const FORMAT = 'DD/MM/YYYY';\n\n  return (\n    <div className=\"filtering-options\">\n      <div id=\"titlebar\" className=\"page-title\" onClick={handleToggle}>\n        <h1 className={hidden ? 'inactive' : 'active'}>Filtering Options</h1>\n      </div>\n\n      <div className={hidden ? 'hidden' : 'search-welcome'}>\n        <div className=\"item\">\n          <label>\n            <input\n              type=\"checkbox\"\n              name=\"by_title\"\n              onChange={onChange}\n              defaultChecked={!!by_title}\n            />{' '}\n            Search By Title\n          </label>\n        </div>\n\n        <div className=\"item\">\n          <div className=\"title\">Post code:</div>\n          <div className=\"input\">\n            <input type=\"text\" name=\"post_code1\" onChange={onChange} value={post_code1} />\n            &nbsp;&mdash;&nbsp;\n            <input type=\"text\" name=\"post_code2\" onChange={onChange} value={post_code2} />\n          </div>\n        </div>\n\n        <div className=\"item\">\n          <div className=\"title\">Status:</div>\n          {renderDropdown()}\n        </div>\n\n        <div className=\"item\">\n          <div className=\"title\">Date:</div>\n          <div className=\"input\">\n            <DayPickerInput\n              name=\"date1\"\n              placeholder=\"DD/MM/YYYY\"\n              value={date1}\n              formatDate={formatDate}\n              parseDate={parseDate}\n              format={FORMAT}\n              onDayChange={onDate1Change}\n            />\n            &nbsp;&mdash;&nbsp;\n            <DayPickerInput\n              name=\"date2\"\n              placeholder=\"DD/MM/YYYY\"\n              value={date2}\n              formatDate={formatDate}\n              parseDate={parseDate}\n              format={FORMAT}\n              onDayChange={onDate2Change}\n            />\n          </div>\n        </div>\n\n        {defaultTags && (\n          <div className=\"item\">\n            <div className=\"title\">Tags:</div>\n            <ScoutSelect\n              name=\"tags\"\n              values={defaultTags}\n              onChange={onTagsChange}\n              data={tags}\n              multi={true}\n            />\n          </div>\n        )}\n\n        <div className=\"buttons\" style={{ width: '18%' }}>\n          <input\n            type=\"submit\"\n            value=\"Apply\"\n            className=\"apply-button\"\n            style={{ width: '100%' }}\n            onClick={onSubmit}\n          />\n        </div>\n      </div>\n    </div>\n  );\n};\n\nFilteringOptionsTable.propTypes = {\n  defaultStatuses: PropTypes.array,\n  defaultTags: PropTypes.array,\n  onSubmit: PropTypes.func,\n  onChange: PropTypes.func,\n  data: PropTypes.object,\n  tags: PropTypes.array,\n  canFilterScoutClients: PropTypes.bool\n};\nexport default FilteringOptionsTable;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport SearchResultsHeaderRow from './header_row';\n\nexport default class SearchResultsHeader extends React.Component {\n  static propTypes = {\n    onSorting: PropTypes.func\n  };\n\n  render() {\n    return (\n      <div className=\"header\">\n        <div className=\"sorting row\">\n          {SearchResultsHeader.rows.map((row, key) => (\n            <SearchResultsHeaderRow row={row} key={key} onSorting={this.props.onSorting} />\n          ))}\n        </div>\n      </div>\n    );\n  }\n}\n\nSearchResultsHeader.rows = [\n  { id: 'id', name: 'ID' },\n  { id: 'candidate', name: 'Candidate' },\n  { id: 'reference', name: 'Reference' },\n  { id: 'job', name: 'Job' },\n  { id: 'post_code', name: 'Postcode' },\n  { id: 'location', name: 'Location' },\n  { id: 'created_at', name: 'Created At' },\n  { id: 'rating', name: 'Rating' },\n  { id: 'status', name: 'Status' }\n];\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nexport default class SearchResultsHeaderRow extends React.Component {\n  static propTypes = {\n    row: PropTypes.object,\n    onSorting: PropTypes.func\n  };\n\n  isSortingAsc() {\n    return this.context.sorting === this.props.row.id;\n  }\n\n  isSortingDesc() {\n    return this.context.sorting === `-${this.props.row.id}`;\n  }\n\n  className() {\n    const defaultClassName = `head-cell ${this.props.row.id}`;\n    if (this.isSortingAsc()) {\n      return `sorting-asc ${defaultClassName}`;\n    }\n    if (this.isSortingDesc()) {\n      return `sorting-desc ${defaultClassName}`;\n    }\n    return defaultClassName;\n  }\n\n  render() {\n    const { row } = this.props;\n    return (\n      <div className={this.className()}>\n        <div className=\"title\" onClick={() => this.props.onSorting(row.id)}>\n          {row.name}\n        </div>\n      </div>\n    );\n  }\n}\n\nSearchResultsHeaderRow.contextTypes = {\n  sorting: PropTypes.string\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\n\nexport default class SearchResultsItem  extends React.Component {\n\n  static propTypes = {\n    item: PropTypes.object\n  }\n\n  render() {\n    const { item } = this.props;\n\n    return(\n        <div className='row'>\n          <div className='body-cell'>\n            <a href={ item.url }>{ item.id }</a>\n          </div>\n          <div className='body-cell'>\n            <a href={ item.url }> { item.candidate }</a>\n          </div>\n          <div className='body-cell'>{ item.reference }</div>\n          <div className='body-cell'>{ item.job }</div>\n          <div className='body-cell'>{ item.post_code }</div>\n          <div className='body-cell'>{ item.location }</div>\n          <div className='body-cell'>{ moment(item.created_at[0]).format('DD/MM/YYYY') }</div>\n          <div className='body-cell'>{ item.rating }</div>\n          <div className='body-cell'>{ item.status }</div>\n        </div>\n      );\n  }\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class SearchResultsPagination extends React.Component {\n  static propTypes = {\n    pagination: PropTypes.object,\n    onClick: PropTypes.func\n  }\n\n  isEmpty() {\n    const { pagination } = this.props;\n    return pagination.pages && pagination.pages.length == 1\n  }\n\n  renderPreviousPage() {\n    const { pagination } = this.props;\n\n    if (!pagination.previous_page && this.isEmpty()) { return null }\n\n    if (pagination.previous_page) {\n      return this.renderActiveLink(pagination.previous_page, '← Previous', 'previous_page');\n    } else {\n      return(<span className='previous_page disabled'>← Previous</span>)\n    }\n  }\n\n  renderNextPage() {\n    const { pagination } = this.props;\n\n    if (!pagination.next_page && this.isEmpty()) {\n      return null\n    }\n\n    if (pagination.next_page) {\n      return this.renderActiveLink(pagination.next_page, 'Next →', 'next_page')\n    } else {\n      return (<span className='next_page disabled'>Next →</span>)\n    }\n\n  }\n\n  renderActiveLink(page, title, classNames = '') {\n    return(<a key={ title } className={ classNames } href={ `#page=${page.title}` } onClick={ () => { this.props.onClick(page.url) }}>{ title }</a>);\n  }\n\n  isNothingToRender() {\n    return this.props.pagination.pages.length === 1 && this.isEmpty()\n  }\n\n  renderFirstPage() {\n    const { pagination } = this.props;\n\n    if (this.isNothingToRender()) { return null }\n\n    const firstPage = pagination.pages[0];\n\n    if (pagination.previous_page) {\n      return this.renderActiveLink(firstPage, 'First', 'next_page')\n    } else {\n      return (<span className='next_page disabled'>First</span>);\n    }\n  }\n\n  renderLastPage() {\n    const { pagination } = this.props;\n\n    if (this.isNothingToRender()) { return null }\n\n    const lastPage = pagination.pages.slice(-1)[0];\n\n    if (pagination.next_page) {\n      return this.renderActiveLink(lastPage, 'Last', 'next_page');\n    } else {\n      return (<span className='next_page disabled'>Last</span>);\n    }\n  }\n\n  renderPages() {\n    const { pagination, onClick } = this.props;\n    const paginationSize = 6;\n\n    const currentPage = pagination.pages.find(({ current }) => current);\n    const previousPages = (currentPage.title >= paginationSize) ? currentPage.title - paginationSize : 0;\n    const nextPages = currentPage.title + paginationSize - 1;\n\n    if (!pagination.pages || this.isEmpty()) return null;\n\n    return pagination.pages.slice(previousPages, nextPages).map((item, key) =>\n      item.current\n      ? <em key={ item.title } className='current'>{item.title}</em>\n      : this.renderActiveLink(item, item.title)\n    );\n  }\n\n  render() {\n    return (\n      <div className='pagination'>\n        { this.renderFirstPage() }\n        { this.renderPreviousPage() }\n        { this.renderPages() }\n        { this.renderNextPage() }\n        { this.renderLastPage() }\n      </div>\n    );\n  }\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class SearchBox extends React.Component {\n  static propTypes = {\n    data: PropTypes.object\n  };\n\n  render() {\n    const { data } = this.props;\n\n    return (\n      <div className=\"search-welcome\">\n        <form action=\"/admin/search/advanced/results\" acceptCharset=\"UTF-8\" method=\"get\">\n          <input name=\"utf8\" type=\"hidden\" value=\"✓\" />\n          <input\n            type=\"search\"\n            name=\"query\"\n            defaultValue={data.query}\n            id=\"query\"\n            className=\"search\"\n            autoFocus=\"autofocus\"\n          />\n          {data.by_title && <input type=\"hidden\" name=\"by_title\" value={data.by_title} />}\n          {data.post_code1 && <input type=\"hidden\" name=\"post_code1\" value={data.post_code1} />}\n          {data.post_code2 && <input type=\"hidden\" name=\"post_code2\" value={data.post_code2} />}\n          {data.date1 && <input type=\"hidden\" name=\"date1\" value={data.date1} />}\n          {data.date2 && <input type=\"hidden\" name=\"date2\" value={data.date2} />}\n          {data.status &&\n            data.status.map((status, key) => (\n              <input type=\"hidden\" name=\"status[]\" value={status} key={key} />\n            ))}\n          <input type=\"submit\" name=\"commit\" value=\"Search Now\" className=\"search\" />\n        </form>\n      </div>\n    );\n  }\n}\n","import React, { Component, createContext } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactLoading from 'react-loading';\nimport SearchResultsTableWithSpinner from './table_with_spinner.jsx';\nimport FilteringOptionsTable from './filtering_options_table';\nimport SearchBox from './search_box';\nimport SearchResultsPagination from './pagination.jsx';\nimport SearchResultsItem from './item.jsx';\nimport SearchResultsHeader from './header.jsx';\n\nconst SortingContext = createContext('');\n\nexport default class SearchResultsTable extends Component {\n  constructor(props) {\n    super(props);\n    const results = { results: [], pagination: {} };\n    const { query } = this.props;\n\n    this.state = {\n      results,\n      query,\n      pagination: false,\n      isSearchSave: false,\n      loading: true,\n      by_title: false\n    };\n  }\n\n  componentDidMount = () => {\n    this.loadResults();\n    document.getElementById('query').value = this.props.query.query;\n  };\n\n  loadResults = () => {\n    this.setState({ pagination: true });\n    const { token, searchEndpoint } = this.props;\n\n    const params = Object.entries(this.state.query).reduce((acc, [key, value]) => {\n      if (value !== null) {\n        acc[key] = value;\n      }\n      return acc;\n    }, {});\n    params['token'] = token;\n\n    const url_with_params = `${searchEndpoint}?${$.param(params)}`;\n\n    fetch(url_with_params)\n      .then((response) => response.json())\n      .then((data) =>\n        this.setState({\n          results: data,\n          query: this.state.query,\n          loading: false,\n          pagination: false,\n          by_title: false\n        })\n      );\n  };\n\n  handleSorting = (sorting) => {\n    let { query } = this.state;\n\n    if (query.sorting === sorting) {\n      query.sorting = `-${sorting}`;\n    } else {\n      query.sorting = sorting;\n    }\n\n    this.setState({ query }, this.loadResults);\n  };\n\n  handleSaveSearch = () => {\n    const { query } = this.state;\n    const $searchName = document.getElementById('#search_name');\n    const token = document.querySelector('meta[name=\"csrf-token\"]').getAttribute('content');\n    const searchName = $searchName ? $searchName.value : query.query.substring(0, 255);\n\n    fetch(this.props.savedSearchEndpoint, {\n      method: 'POST',\n      headers: {\n        'X-Requested-With': 'XMLHttpRequest',\n        'X-CSRF-Token': token,\n        'Content-Type': 'application/json'\n      },\n      body: JSON.stringify({\n        saved_search: { name: searchName, params: query }\n      }),\n      credentials: 'same-origin'\n    })\n      .then((response) => {\n        if (!response.ok) {\n          throw response;\n        }\n        return response;\n      })\n      .then((response) => {\n        this.setState({ isSearchSaved: true });\n      })\n      .catch((response) => {\n        response.json().then((body) => {\n          alert(Object.values(body.error).join(', '));\n        });\n      });\n  };\n\n  handlePagination = (url) => {\n    let url_with_params = `${url}&token=${this.props.token}`;\n    this.setState({ pagination: true });\n\n    fetch(url_with_params)\n      .then((response) => response.json())\n      .then((results) => {\n        this.setState({ results, pagination: false });\n      });\n  };\n\n  handleFilterOnChange = (e) => {\n    const { query } = this.state;\n    query[e.target.name] = e.target.type === 'checkbox' ? e.target.checked : e.target.value;\n    this.setState({ query });\n  };\n\n  handleFilterOnSubmit = () => this.loadResults();\n\n  renderHeader() {\n    const { isSearchSaved } = this.state;\n\n    return (\n      <div id=\"titlebar\" className=\"page-title search-toolbar\">\n        <div className=\"west\">\n          <div className=\"east\">\n            <div className=\"search-title\">Found Items: {this.state.results.pagination.total}</div>\n            <div className=\"search-header\">\n              {isSearchSaved && <button className=\"save-search-disabled\">Save This Search</button>}\n              {!isSearchSaved && <input type=\"text\" id=\"search_name\" placeholder=\"Search name\" />}\n              {!isSearchSaved && (\n                <button className=\"save-search\" onClick={this.handleSaveSearch}>\n                  Save This Search\n                </button>\n              )}\n            </div>\n          </div>\n        </div>\n      </div>\n    );\n  }\n\n  hasResults = () => {\n    if (this.state.results.error !== undefined) {\n      return false;\n    } else {\n      return this.state.results.results.length > 0;\n    }\n  };\n\n  renderResultsWithSpinner = () => {\n    return (\n      <div>\n        <div className=\"results-table\">\n          <SearchResultsHeader onSorting={this.handleSorting} />\n          <SearchResultsTableWithSpinner\n            items={this.state.results.results}\n            color={this.props.color}\n          />\n        </div>\n\n        <SearchResultsPagination\n          pagination={this.state.results.pagination}\n          onClick={this.handlePagination}\n        />\n      </div>\n    );\n  };\n\n  renderResults = () => {\n    return (\n      <div>\n        <div className=\"results-table\">\n          <SortingContext.Provider value={{ sorting: this.state.query.sorting }}>\n            {<SearchResultsHeader onSorting={this.handleSorting} />}\n          </SortingContext.Provider>\n          <div className=\"body\">\n            {this.state.results.results.map((item, key) => {\n              return <SearchResultsItem key={key} item={item.fields} />;\n            })}\n          </div>\n        </div>\n        <SearchResultsPagination\n          pagination={this.state.results.pagination}\n          onClick={this.handlePagination}\n        />\n      </div>\n    );\n  };\n\n  renderError = () =>\n    this.state.results.error !== undefined\n      ? 'An error has happened during search. Contact Support Team.'\n      : '';\n\n  renderNoResults = () =>\n    this.state.loading ? (\n      <div className=\"loading-results\">\n        <ReactLoading type=\"spin\" color={this.props.color} />\n      </div>\n    ) : (\n      <p>No results found!</p>\n    );\n\n  defaultTags = (tags) => {\n    const result = [];\n    tags.forEach((skill) => result.push({ value: skill, label: skill }));\n    return result;\n  };\n\n  render = () => {\n    return (\n      <div className=\"content\">\n        <SearchBox data={this.state.query} />\n        <FilteringOptionsTable\n          defaultStatuses={this.props.statuses}\n          defaultTags={this.defaultTags(this.props.query.tags)}\n          tags={this.defaultTags(this.props.tags)}\n          canFilterScoutClients={this.props.canFilterScoutClients}\n          onSubmit={this.handleFilterOnSubmit}\n          onChange={this.handleFilterOnChange}\n          data={this.state.query}\n        />\n\n        {this.renderError()}\n        {this.hasResults() && this.renderHeader()}\n        {this.hasResults() && this.state.pagination && this.renderResultsWithSpinner()}\n        {this.hasResults() && !this.state.pagination && this.renderResults()}\n        {!this.hasResults() && this.renderNoResults()}\n      </div>\n    );\n  };\n}\n\nSearchResultsTable.propTypes = {\n  query: PropTypes.object,\n  token: PropTypes.string,\n  searchEndpoint: PropTypes.string,\n  savedSearchEndpoint: PropTypes.string,\n  color: PropTypes.string,\n  statuses: PropTypes.array,\n  tags: PropTypes.array,\n  canFilterScoutClients: PropTypes.bool\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactLoading from 'react-loading';\n\nexport default class SearchResultsTableWithSpinner extends React.Component {\n  static propTypes = {\n    items: PropTypes.array,\n    color: PropTypes.string\n  }\n\n  render() {\n    return (\n      <div className='body'>\n        { this.props.items.map((item, key) => {\n          return(\n            <div className='row' key={ key }>\n              <div className='body-cell'>\n              </div>\n              <div className='body-cell'>\n              </div>\n              <div className='body-cell'>\n              </div>\n              <div className='body-cell'>\n                <div className=\"loading\">\n                  <ReactLoading type='cylon' color={ this.props.color } height='25px' width='25px'/>\n                </div>\n              </div>\n              <div className='body-cell'>\n              </div>\n              <div className='body-cell'>\n              </div>\n              <div className='body-cell'>\n\n              </div>\n              <div className='body-cell'>\n\n              </div>\n              <div className='body-cell'>\n\n              </div>\n            </div>\n          );\n        })\n        }\n      </div>);\n  }\n}\n","// eslint-disable-next-line react/no-deprecated\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport className from 'classnames';\n\nexport class AccordionItem extends Component {\n  static propTypes = {\n    title: PropTypes.string.isRequired,\n    children: PropTypes.object.isRequired,\n  };\n\n  state = {\n    isActive: false,\n  };\n\n  onClick = () => {\n    this.setState({\n      isActive: !this.state.isActive,\n    });\n  };\n\n  render() {\n    const { title } = this.props;\n    const { isActive } = this.state;\n    const classes = className({\n      \"accordion__item\": true,\n      \"accordion__item--active\": isActive,\n    });\n\n    return <div className={classes}>\n      <h2 onClick={this.onClick} className='title'> {title} </h2>\n      <div className='accordion__body'>\n        {isActive && this.props.children}\n      </div>\n    </div>\n  }\n}\n\nexport class Accordion extends Component {\n  render() {\n    return <div className='accordion'>\n      { this.props.children }\n    </div>\n  }\n}\n\nAccordion.propTypes = {\n  children: PropTypes.oneOfType([\n    PropTypes.object,\n    PropTypes.array\n  ])\n};\n","export const adEditorCancelButton = {\n  color: '#E37D7A',\n  fontSize: 16,\n  fontWeight: '600',\n  textDecoration: 'underline',\n  '&:hover': {\n    cursor: 'pointer',\n    color: '#E37D7A'\n  }\n};\n","var __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nimport React, { useEffect, useState } from \"react\";\nimport { Accordion, AccordionSummary, AccordionDetails, Typography, Box, Chip, CircularProgress } from \"@mui/material\";\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\nimport Api from \"../../lib/Api\";\nimport { classes } from \"./styles\";\nimport dayjs from \"dayjs\";\nimport isToday from \"dayjs/plugin/isToday\";\nimport LocalizedFormat from \"dayjs/plugin/localizedFormat\";\nimport relativeTime from \"dayjs/plugin/relativeTime\";\ndayjs.extend(relativeTime);\ndayjs.extend(LocalizedFormat);\ndayjs.extend(isToday);\nfunction ActivityFeed() {\n  const [activityList, setList] = useState([]);\n  const [loading, setLoading] = useState(false);\n  const [finished, setFinished] = useState(false);\n  function getActivities(prevId) {\n    return __async(this, null, function* () {\n      setLoading(true);\n      const response = yield Api.getActivities(prevId);\n      if (response[0]) {\n        setList([...activityList, ...response]);\n      } else {\n        setFinished(true);\n      }\n      setLoading(false);\n    });\n  }\n  function checkScroll(evt) {\n    if (loading || finished) return;\n    if (evt.target.scrollTop + evt.target.clientHeight < evt.target.scrollHeight - 50) return;\n    const lastDate = activityList[activityList.length - 1];\n    const lastActivity = lastDate.activities[lastDate.activities.length - 1];\n    getActivities(lastActivity.id);\n  }\n  useEffect(() => {\n    getActivities();\n  }, []);\n  if (activityList[0]) activityList[0].isToday = dayjs(activityList[0].date).isToday();\n  return /* @__PURE__ */ React.createElement(Box, { mb: 2 }, /* @__PURE__ */ React.createElement(Accordion, { defaultExpanded: true, sx: classes.accordian }, /* @__PURE__ */ React.createElement(\n    AccordionSummary,\n    {\n      sx: classes.accordianButton,\n      expandIcon: /* @__PURE__ */ React.createElement(ExpandMoreIcon, { sx: { color: \"#ffffff\" } })\n    },\n    /* @__PURE__ */ React.createElement(Typography, { sx: classes.accordianTitle }, \"Activity Feed\")\n  ), /* @__PURE__ */ React.createElement(\n    AccordionDetails,\n    {\n      sx: classes.activitiesContainer,\n      onScroll: checkScroll\n    },\n    activityList.map(({ date, activities, isToday: isToday2 }) => /* @__PURE__ */ React.createElement(Box, { py: 2, key: date, width: \"100%\" }, /* @__PURE__ */ React.createElement(Box, { sx: classes.dateContainer }, /* @__PURE__ */ React.createElement(\n      Chip,\n      {\n        size: \"small\",\n        label: isToday2 ? \"Today\" : dayjs(date).format(\"LL\"),\n        sx: classes.chip\n      }\n    )), activities.map(({ id, timestamp, actor, activity_html }) => /* @__PURE__ */ React.createElement(Box, { key: id, py: 1 }, /* @__PURE__ */ React.createElement(Typography, { sx: classes.timeStamp }, isToday2 ? dayjs().to(dayjs(timestamp)) : dayjs(timestamp).format(\"LT\")), /* @__PURE__ */ React.createElement(Typography, { sx: classes.actor }, actor), /* @__PURE__ */ React.createElement(\n      Typography,\n      {\n        dangerouslySetInnerHTML: { __html: activity_html },\n        sx: classes.activity\n      }\n    ))))),\n    loading && /* @__PURE__ */ React.createElement(Box, { display: \"flex\", justifyContent: \"center\" }, /* @__PURE__ */ React.createElement(CircularProgress, null))\n  )));\n}\nexport default ActivityFeed;\n","import ActivityFeed from \"./ActivityFeed\";\nexport default ActivityFeed;\n","import { theme } from \"../ThemeContext/ThemeObject\";\nexport const classes = {\n  dateContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"flex-start\",\n    justifyContent: \"center\",\n    position: \"relative\",\n    width: \"100%\",\n    \"&:before\": {\n      content: '\"\"',\n      position: \"absolute\",\n      left: 0,\n      right: 0,\n      borderBottom: \"1px solid\",\n      borderBottomColor: \"rgba(0, 0, 0, 0.12)\",\n      marginLeft: theme.spacing(-2),\n      marginRight: theme.spacing(-2)\n    }\n  },\n  chip: {\n    zIndex: 2,\n    color: theme.palette.common.white,\n    backgroundColor: \"#616161\",\n    fontFamily: \"Source Sans Pro\"\n  },\n  actor: {\n    fontFamily: \"Source Sans Pro\",\n    fontWeight: \"bold\",\n    margin: `0 ${theme.spacing(0.5)}`,\n    fontSize: \"0.875rem\",\n    lineHeight: 1.43\n  },\n  activity: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"0.875rem\",\n    fontWeight: 400,\n    lineHeight: 1.43,\n    color: \"rgba(0, 0, 0, 0.87)\",\n    \"& a\": {\n      color: \"#2a7572\",\n      textDecoration: \"none\"\n    }\n  },\n  timeStamp: {\n    fontSize: \"0.875rem\",\n    fontFamily: \"Source Sans Pro\",\n    fontWeight: 500,\n    lineHeight: 1.57,\n    color: \"rgba(0, 0, 0, 0.6)\"\n  },\n  accordian: {\n    \"& .MuiAccordionSummary-root.Mui-expanded\": {\n      minHeight: \"40px\"\n    }\n  },\n  activitiesContainer: {\n    maxHeight: \"400px\",\n    overflow: \"auto\",\n    flexDirection: \"column\"\n  },\n  accordianButton: {\n    borderRadius: 0,\n    backgroundColor: theme.palette.primary.main,\n    minHeight: \"40px\",\n    \"& .MuiAccordionSummary-content\": {\n      margin: \"0 !important\"\n    }\n  },\n  accordianTitle: {\n    fontSize: \"0.88rem\",\n    fontFamily: \"Source Sans Pro\",\n    fontWeight: 700,\n    lineHeight: 1.75,\n    textTransform: \"none\",\n    color: theme.palette.common.white\n  }\n};\n","import { makeStyles } from \"@material-ui/core/styles\";\nexport default makeStyles(() => ({\n  root: {\n    position: \"relative\"\n  }\n}));\n","var __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nimport React, { useState, useEffect, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { withScoutTheme } from \"../../ThemeContext/ThemeContext\";\nimport { Step1, Step2, Step3 } from \"./Steps\";\nimport { Button, Dialog, Snackbar, CircularProgress } from \"@material-ui/core\";\nimport useStyles from \"./useStyles\";\nimport sharedStyles from \"../AdList/useStyles\";\nimport axios from \"axios\";\nimport draftToHtml from \"draftjs-to-html\";\nimport { convertToRaw } from \"draft-js\";\nimport CheckCircleIcon from \"@material-ui/icons/CheckCircle\";\nimport moment from \"moment\";\nimport StepperComponent from \"../../../components/NewUI/Components/CustomUIElements/StepperComponent\";\nimport StepperLeftButton from \"../../../components/NewUI/Components/Buttons/StepperLeftButton\";\nimport StepperRightButton from \"../../../components/NewUI/Components/Buttons/StepperRightButton\";\nimport { handleNext } from \"../../../components/NewUI/Components/Multiposter/handleNext\";\nimport { handleDraftValue } from \"../../../components/NewUI/Components/Multiposter/handleDraftValue\";\nconst steps = [\"Classify Job\", \"Job Details\", \"Preview Ad\"];\nconst salaryTypes = [\n  [\"Range\", \"Range\"],\n  [\"Exact Rate\", \"ExactRate\"]\n];\nfunction AdEditor({ jobAdParams }) {\n  const [saving, setSaving] = useState(false);\n  const [savingDraft, setSavingDraft] = useState(false);\n  const [isSnackOpen, setIsSnackOpen] = useState(false);\n  const [snackMessage, setSnackMessage] = useState(\"\");\n  const [isSuccessDialogOpen, setIsSuccessDialogOpen] = useState(false);\n  const [activeStep, setActiveStep] = useState(0);\n  const [isExitModalOpen, setIsExitModalOpen] = useState(false);\n  const [answers, setAnswers] = useState(updateAnswers(jobAdParams));\n  const [activeError, setActiveError] = useState(null);\n  const classes = useStyles();\n  const sharedClasses = sharedStyles();\n  function updateAnswers(params) {\n    return {\n      companyName: params.company_name || \"\",\n      industry: params.industry_options.find((param) => param[1] === params.listing_classification) || \"\",\n      subIndustry: params.listing_classification ? params.sub_industry_options[params.listing_classification].find(\n        (param) => param[1] === params.listing_sub_classification\n      ) : \"\",\n      jobTitle: params.title || \"\",\n      reportToWork: params.report_to ? \"true\" : \"false\",\n      address: params.address || \"\",\n      city: params.city || \"\",\n      state: params.state || \"\",\n      country: params.country || \"\",\n      language: params.language || \"\",\n      remoteWork: params.remote || params.remote_type_options[0][0],\n      hires: params.number_of_hires || 1,\n      hiring: params.always_hiring === null ? false : params.always_hiring,\n      employmentType: params.work_type_options.filter((param) => params.work_type.includes(param[1])).map((param) => param[1]) || [],\n      schedule: params.schedules_options.filter((param) => params.schedules.includes(param[1])).map((param) => param[1]) || [],\n      isStartDate: params.start_date ? true : false,\n      startDate: params.start_date ? moment(params.start_date).format(\"LL\") : \"\",\n      salaryTypes,\n      selectedSalaryType: salaryTypes.find((param) => param[1] === params.salary_type) || salaryTypes[0],\n      rangeTo: params.salary_max ? params.salary_max : \"\",\n      rangeFrom: params.salary_min ? params.salary_min : \"\",\n      rangeUnit: params.payment_frequencies_options.find((param) => param[1] === params.salary_frequency) || params.payment_frequencies_options[0],\n      additionalPay: params.additional_payment_options.filter((param) => params.additional_payments.includes(param[1])).map((param) => param[1]) || [],\n      benefits: params.salary_benefit_options.filter((param) => params.salary_benefits.includes(param[1])).map((param) => param[1]) || [],\n      submitResume: params.require_resume || \"required\",\n      isApplicationDeadline: params.application_deadline ? true : false,\n      applicationDeadline: params.application_deadline ? moment(params.application_deadline).format(\"LL\") : \"\",\n      startConversation: params.applicant_starts_conversation,\n      covidPrecautions: params.covid_precautions || \"\",\n      jobReference: params.id || \"\",\n      askQualifications: params.applicant_qualifications,\n      description: handleDraftValue(params.description) || \"\",\n      ad_preview: params.ad_preview || \"\"\n    };\n  }\n  function submit(type) {\n    return __async(this, null, function* () {\n      try {\n        type === \"draft\" ? setSavingDraft(true) : setSaving(true);\n        const token = document.querySelector('meta[name=\"csrf-token\"]').content;\n        const { data } = yield axios.put(`/admin/job_ads/${jobAdParams.id}/indeed_ads/builder`, {\n          headers: { \"Content-Type\": \"application/json\" },\n          authenticity_token: token,\n          page: activeStep + 1,\n          job_ad: {\n            additional_payments: answers.additionalPay || null,\n            listing_location: answers.address || null,\n            always_hiring: answers.hiring || false,\n            applicant_qualifications: answers.askQualifications || false,\n            applicant_starts_conversation: answers.startConversation || false,\n            application_deadline: moment(answers.applicationDeadline).format() || null,\n            city: answers.city || null,\n            company_name: answers.companyName || null,\n            country: answers.country || null,\n            covid_precautions: answers.covidPrecautions || null,\n            ad_details: draftToHtml(convertToRaw(answers.description.getCurrentContent())) || null,\n            language: answers.language || null,\n            listing_classification: answers.industry && answers.industry[1] || null,\n            listing_sub_classification: answers.subIndustry && answers.subIndustry[1] || null,\n            work_type: answers.employmentType || null,\n            number_of_hires: answers.hires || null,\n            remote: answers.remoteWork || null,\n            report_to: answers.reportToWork || null,\n            require_resume: answers.submitResume || null,\n            salary_benefits: answers.benefits || null,\n            salary_frequency: answers.rangeUnit && answers.rangeUnit[0] || null,\n            salary_max: parseFloat(answers.rangeTo) || null,\n            salary_min: parseFloat(answers.rangeFrom) || null,\n            salary_type: answers.selectedSalaryType && answers.selectedSalaryType[1] || null,\n            schedules: answers.schedule || null,\n            start_date: moment(answers.startDate).format() || null,\n            state: answers.state || null,\n            title: answers.jobTitle || null,\n            approved: type === \"submit\" ? true : false\n          }\n        });\n        if (type === \"draft\") {\n          handleSnack(\"Draft saved\");\n          setIsExitModalOpen(false);\n          window.history.back();\n        } else if (type === \"submit\") {\n          setIsSuccessDialogOpen(true);\n        } else if (type === \"next\") {\n          setAnswers(updateAnswers(data));\n          setActiveStep(activeStep + 1);\n        }\n      } catch (e) {\n        if (type === \"draft\") {\n          handleSnack(\"Unable to save draft\");\n        } else if (type === \"submit\") {\n          handleSnack(\"Unable to post to Indeed. Please check required fields and try again.\");\n        } else if (type === \"next\") {\n          setActiveStep(activeStep + 1);\n        }\n      } finally {\n        setSaving(false);\n        setSavingDraft(false);\n      }\n    });\n  }\n  function handleSnack(message) {\n    setIsSnackOpen(true);\n    setSnackMessage(message);\n  }\n  const requiredRefs = {\n    companyName: useRef(null),\n    industry: useRef(null),\n    jobTitle: useRef(null),\n    address: useRef(null),\n    hires: useRef(null),\n    employmentType: useRef(null),\n    schedule: useRef(null),\n    startDate: useRef(null),\n    salary: useRef(null),\n    description: useRef(null),\n    jobReference: useRef(null)\n  };\n  const handleNextButton = (type) => {\n    handleNext(type, checkErrors, requiredRefs, setActiveError, submit);\n  };\n  function checkErrors() {\n    const error = Object.keys(requiredRefs).find((ref) => {\n      if (activeStep === 0) {\n        if ([\"companyName\", \"industry\", \"jobTitle\"].includes(ref)) {\n          return !answers[ref] && ref;\n        } else if (ref === \"address\") {\n          return !answers.address || !answers.city || !answers.state && ref;\n        } else if (ref === \"hires\") {\n          return !answers.hiring && !answers.hires && ref;\n        }\n      } else if (activeStep === 1) {\n        if ([\"schedule\", \"employmentType\"].includes(ref)) {\n          return answers[ref] && answers[ref].length <= 0 && ref;\n        } else if (ref === \"startDate\") {\n          return answers.isStartDate && !answers.startDate && ref;\n        } else if (ref === \"salary\") {\n          return answers.rangeTo < answers.rangeFrom && ref;\n        } else if (ref === \"description\") {\n          return answers.description.getCurrentContent().getPlainText(\"\").length === 0 && ref;\n        } else if (ref === \"jobReference\") {\n          return !answers.jobReference && ref;\n        }\n      }\n    });\n    return error;\n  }\n  useEffect(() => {\n    setActiveError(null);\n  }, [answers]);\n  useEffect(() => {\n    window.scrollTo({ top: 0, behavior: \"smooth\" });\n  }, [activeStep]);\n  return /* @__PURE__ */ React.createElement(\"div\", { className: classes.containerOuter }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.container }, /* @__PURE__ */ React.createElement(StepperComponent, { activeStep, steps, classes }), activeStep === 0 && /* @__PURE__ */ React.createElement(\n    Step1,\n    {\n      jobAdParams,\n      answers,\n      setAnswers,\n      requiredRefs,\n      activeError\n    }\n  ), activeStep === 1 && /* @__PURE__ */ React.createElement(\n    Step2,\n    {\n      jobAdParams,\n      answers,\n      setAnswers,\n      handleDraftValue,\n      requiredRefs,\n      activeError\n    }\n  ), activeStep === 2 && /* @__PURE__ */ React.createElement(\n    Step3,\n    {\n      setActiveStep,\n      jobAdParams,\n      answers,\n      setAnswers\n    }\n  ), /* @__PURE__ */ React.createElement(\"div\", { className: classes.buttonContainer }, /* @__PURE__ */ React.createElement(\"a\", { className: sharedClasses.buttonGreenLight, onClick: () => setIsExitModalOpen(true) }, \"Save and exit\"), /* @__PURE__ */ React.createElement(\"div\", { className: classes.buttons }, /* @__PURE__ */ React.createElement(\n    StepperLeftButton,\n    {\n      activeStep,\n      onClick: () => setActiveStep(activeStep - 1),\n      classes: sharedClasses\n    }\n  ), /* @__PURE__ */ React.createElement(\n    StepperRightButton,\n    {\n      activeStep,\n      steps,\n      isSaving: saving,\n      onClick: () => handleNextButton(activeStep + 1 === steps.length ? \"submit\" : \"next\"),\n      classes: sharedClasses\n    }\n  )))), /* @__PURE__ */ React.createElement(\n    Dialog,\n    {\n      open: isExitModalOpen,\n      onClose: () => setIsExitModalOpen(false),\n      classes: { paper: classes.dialog }\n    },\n    /* @__PURE__ */ React.createElement(\"h4\", null, \"Are you sure?\"),\n    /* @__PURE__ */ React.createElement(\"div\", { className: classes.dialogButtonContainer }, /* @__PURE__ */ React.createElement(\n      Button,\n      {\n        disableElevation: true,\n        className: sharedClasses.buttonSecondaryLight,\n        onClick: () => setIsExitModalOpen(false)\n      },\n      \"Cancel\"\n    ), /* @__PURE__ */ React.createElement(\n      Button,\n      {\n        disableElevation: true,\n        className: sharedClasses.buttonSecondary,\n        onClick: () => submit(\"draft\"),\n        style: { minWidth: 130 }\n      },\n      savingDraft ? /* @__PURE__ */ React.createElement(CircularProgress, { size: 20, color: \"inherit\" }) : \"Save and exit\"\n    ))\n  ), /* @__PURE__ */ React.createElement(\n    Dialog,\n    {\n      open: isSuccessDialogOpen,\n      onClose: () => window.history.back(),\n      classes: { paper: classes.successDialog }\n    },\n    /* @__PURE__ */ React.createElement(\"div\", { className: classes.successCheck }, /* @__PURE__ */ React.createElement(CheckCircleIcon, { color: \"primary\", fontSize: \"large\" })),\n    /* @__PURE__ */ React.createElement(\"h4\", null, \"Success\"),\n    /* @__PURE__ */ React.createElement(\"span\", null, \"Your ad has been posted to Indeed\"),\n    /* @__PURE__ */ React.createElement(\"div\", { className: classes.dialogButtonContainer, style: { marginTop: 20 } }, /* @__PURE__ */ React.createElement(\n      Button,\n      {\n        disableElevation: true,\n        className: sharedClasses.buttonSecondaryLight,\n        onClick: () => window.history.back()\n      },\n      \"Back to ads\"\n    ), /* @__PURE__ */ React.createElement(\n      Button,\n      {\n        disableElevation: true,\n        className: sharedClasses.buttonSecondary,\n        onClick: () => window.location = `/admin/indeed/job_ads/${jobAdParams.id}/sponsored_job/edit/`\n      },\n      \"Sponsor job\"\n    ))\n  ), /* @__PURE__ */ React.createElement(Snackbar, { open: isSnackOpen, onClose: () => setIsSnackOpen(false), message: snackMessage }));\n}\nAdEditor.propTypes = {\n  jobAdParams: PropTypes.object.isRequired\n};\nexport default withScoutTheme(AdEditor);\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport React from \"react\";\nimport {\n  Select,\n  FormControl,\n  FormLabel,\n  FormControlLabel,\n  Checkbox,\n  TextField,\n  Radio,\n  RadioGroup,\n  FormHelperText,\n  Grid,\n  IconButton,\n  MenuItem\n} from \"@material-ui/core\";\nimport useStyles from \"../useStyles\";\nimport EditIcon from \"@material-ui/icons/Edit\";\nimport AddIcon from \"@material-ui/icons/Add\";\nimport RemoveIcon from \"@material-ui/icons/Remove\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\nimport { jobAdPropTypes } from \"../../../NewUI/Components/Multiposter/types\";\nimport AddressInput from \"../../../NewUI/Components/CustomUIElements/AddressInput\";\nfunction Step1({ answers, setAnswers, jobAdParams, requiredRefs, activeError }) {\n  const [value, setValue] = React.useState({\n    description: [answers.address, answers.city, answers.state].filter((cur) => cur).join(\", \")\n  });\n  const classes = useStyles();\n  return /* @__PURE__ */ React.createElement(\"div\", { className: classes.stepContainer }, /* @__PURE__ */ React.createElement(\"h4\", null, \"Let's get started\"), /* @__PURE__ */ React.createElement(\n    FormControl,\n    {\n      ref: requiredRefs.companyName,\n      fullWidth: true,\n      className: `${classes.formControl} ${classes.medium}`\n    },\n    /* @__PURE__ */ React.createElement(FormLabel, { required: true, className: classes.label }, \"Company name for this job\"),\n    /* @__PURE__ */ React.createElement(\n      TextField,\n      {\n        error: activeError === requiredRefs.companyName,\n        className: classes.textField,\n        variant: \"outlined\",\n        value: answers.companyName,\n        onChange: (e) => e.target.value.length <= 52 && setAnswers(__spreadProps(__spreadValues({}, answers), { companyName: e.target.value })),\n        InputProps: {\n          endAdornment: activeError === requiredRefs.companyName && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))\n        }\n      }\n    ),\n    /* @__PURE__ */ React.createElement(FormHelperText, { className: classes.helperText }, answers.companyName.length, \"/52\")\n  ), /* @__PURE__ */ React.createElement(\n    FormControl,\n    {\n      ref: requiredRefs.industry,\n      fullWidth: true,\n      className: `${classes.formControl} ${classes.medium}`\n    },\n    /* @__PURE__ */ React.createElement(FormLabel, { required: true, className: classes.label }, \"Industry\"),\n    /* @__PURE__ */ React.createElement(\n      Select,\n      {\n        classes: { select: classes.input },\n        variant: \"outlined\",\n        value: answers.industry,\n        onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { industry: e.target.value, subIndustry: \"\" })),\n        displayEmpty: true,\n        renderValue: (value2) => value2 && value2[0] || /* @__PURE__ */ React.createElement(\"span\", { className: classes.placeholder }, \"Select an option\"),\n        endAdornment: activeError === requiredRefs.industry && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))\n      },\n      jobAdParams.industry_options.map((industry) => /* @__PURE__ */ React.createElement(MenuItem, { key: industry[1], value: industry }, industry[0]))\n    )\n  ), /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl} ${classes.medium}` }, /* @__PURE__ */ React.createElement(FormLabel, { className: classes.label }, \"Sub-industry\"), /* @__PURE__ */ React.createElement(\n    Select,\n    {\n      disabled: !answers.industry,\n      classes: { select: classes.input },\n      variant: \"outlined\",\n      value: answers.subIndustry,\n      onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { subIndustry: e.target.value })),\n      displayEmpty: true,\n      renderValue: (value2) => value2 ? value2[0] : /* @__PURE__ */ React.createElement(\"span\", { className: classes.placeholder }, \"Select an option\")\n    },\n    answers.industry && jobAdParams.sub_industry_options[answers.industry[1]].map((subIndustry) => /* @__PURE__ */ React.createElement(MenuItem, { key: subIndustry[1], value: subIndustry }, subIndustry[0]))\n  )), /* @__PURE__ */ React.createElement(\n    FormControl,\n    {\n      ref: requiredRefs.jobTitle,\n      fullWidth: true,\n      className: `${classes.formControl} ${classes.medium}`\n    },\n    /* @__PURE__ */ React.createElement(FormLabel, { required: true, className: classes.label }, \"Job title\"),\n    /* @__PURE__ */ React.createElement(\n      TextField,\n      {\n        error: activeError === requiredRefs.jobTitle,\n        className: classes.textField,\n        variant: \"outlined\",\n        value: answers.jobTitle,\n        onChange: (e) => e.target.value.length <= 52 && setAnswers(__spreadProps(__spreadValues({}, answers), { jobTitle: e.target.value })),\n        InputProps: {\n          endAdornment: activeError === requiredRefs.jobTitle && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))\n        }\n      }\n    ),\n    /* @__PURE__ */ React.createElement(FormHelperText, { className: classes.helperText }, answers.companyName.length, \"/52\")\n  ), /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl} ${classes.medium}` }, /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: classes.label }, \"Where will an employee report to work?\"), /* @__PURE__ */ React.createElement(\n    RadioGroup,\n    {\n      value: answers.reportToWork,\n      onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { reportToWork: e.target.value }))\n    },\n    /* @__PURE__ */ React.createElement(\n      FormControlLabel,\n      {\n        label: \"Employees will report to a specific address\",\n        value: \"true\",\n        control: /* @__PURE__ */ React.createElement(Radio, null)\n      }\n    ),\n    /* @__PURE__ */ React.createElement(\n      FormControlLabel,\n      {\n        label: \"Employees will not report to a specific address\",\n        value: \"false\",\n        control: /* @__PURE__ */ React.createElement(Radio, null)\n      }\n    )\n  )), /* @__PURE__ */ React.createElement(\n    AddressInput,\n    {\n      requiredRef: requiredRefs.address,\n      classes,\n      value,\n      setValue,\n      activeError: activeError === requiredRefs.address,\n      answers,\n      setAnswers\n    }\n  ), /* @__PURE__ */ React.createElement(\"div\", { className: `${classes.formControl} ${classes.medium} ${classes.greyBox}` }, /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true }, /* @__PURE__ */ React.createElement(Grid, { container: true, alignItems: \"center\" }, /* @__PURE__ */ React.createElement(\"span\", null, \"Country:\"), /* @__PURE__ */ React.createElement(\n    Select,\n    {\n      classes: {\n        select: classes.greyInput,\n        icon: classes.greyIcon\n      },\n      value: answers.country,\n      renderValue: (value2) => jobAdParams.country_options.find((cur) => cur[1] === value2)[0],\n      onChange: (e) => {\n        setValue(null);\n        setAnswers(__spreadProps(__spreadValues({}, answers), {\n          country: e.target.value,\n          address: \"\",\n          city: \"\",\n          state: \"\"\n        }));\n      },\n      IconComponent: EditIcon,\n      disableUnderline: true\n    },\n    jobAdParams.country_options.map((country) => /* @__PURE__ */ React.createElement(MenuItem, { key: country[1], value: country[1] }, country[0]))\n  ))), /* @__PURE__ */ React.createElement(FormControl, null, /* @__PURE__ */ React.createElement(Grid, { container: true, alignItems: \"center\" }, /* @__PURE__ */ React.createElement(\"span\", null, \"Job posting will be displayed in:\"), /* @__PURE__ */ React.createElement(\n    Select,\n    {\n      classes: {\n        select: classes.greyInput,\n        icon: classes.greyIcon\n      },\n      value: answers.language,\n      renderValue: (value2) => jobAdParams.languages_options.find((cur) => cur[1] === value2)[0],\n      onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { language: e.target.value })),\n      IconComponent: EditIcon,\n      disableUnderline: true\n    },\n    jobAdParams.languages_options.map((language) => /* @__PURE__ */ React.createElement(MenuItem, { key: language[1], value: language[1] }, language[0]))\n  )))), /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl}` }, /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: classes.label }, \"Can this job be performed remotely, meaning primarily from home? If so, we\\u2019ll add a \\u201CRemote\\u201D tag to your post\"), /* @__PURE__ */ React.createElement(\n    RadioGroup,\n    {\n      value: answers.remoteWork,\n      onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { remoteWork: e.target.value }))\n    },\n    jobAdParams.remote_type_options.map((remote) => /* @__PURE__ */ React.createElement(\n      FormControlLabel,\n      {\n        key: remote[1],\n        label: remote[0],\n        value: remote[1],\n        control: /* @__PURE__ */ React.createElement(Radio, null)\n      }\n    ))\n  )), /* @__PURE__ */ React.createElement(\n    FormControl,\n    {\n      ref: requiredRefs.hires,\n      fullWidth: true,\n      className: `${classes.formControl} ${classes.medium}`\n    },\n    /* @__PURE__ */ React.createElement(FormLabel, { focused: false, required: true, className: classes.label }, \"How many hires?\"),\n    /* @__PURE__ */ React.createElement(\"span\", { className: classes.subLabel }, \"This helps us match you with the right number of applicants.\"),\n    /* @__PURE__ */ React.createElement(\n      Grid,\n      {\n        container: true,\n        classes: {\n          root: `${classes.controlledNumberInput} ${activeError === requiredRefs.hires ? classes.errorOutline : \"\"}`\n        }\n      },\n      /* @__PURE__ */ React.createElement(\n        TextField,\n        {\n          type: \"number\",\n          variant: \"outlined\",\n          className: `${classes.textField}`,\n          value: answers.hires,\n          onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { hires: parseInt(e.target.value) || 0 })),\n          InputProps: {\n            classes: { root: classes.w200 },\n            endAdornment: activeError === requiredRefs.hires && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))\n          }\n        }\n      ),\n      /* @__PURE__ */ React.createElement(\n        IconButton,\n        {\n          onClick: () => setAnswers(__spreadProps(__spreadValues({}, answers), { hires: answers.hires - 1 })),\n          disabled: answers.hires <= 0 || answers.hiring\n        },\n        /* @__PURE__ */ React.createElement(RemoveIcon, null)\n      ),\n      /* @__PURE__ */ React.createElement(\n        IconButton,\n        {\n          onClick: () => setAnswers(__spreadProps(__spreadValues({}, answers), { hires: answers.hires + 1 })),\n          disabled: answers.hires >= 100 || answers.hiring\n        },\n        /* @__PURE__ */ React.createElement(AddIcon, null)\n      )\n    ),\n    /* @__PURE__ */ React.createElement(Grid, { container: true, style: { marginTop: 10 } }, /* @__PURE__ */ React.createElement(\n      FormControlLabel,\n      {\n        label: \"Always Hiring\",\n        control: /* @__PURE__ */ React.createElement(\n          Checkbox,\n          {\n            checked: answers.hiring,\n            onChange: () => setAnswers(__spreadProps(__spreadValues({}, answers), { hiring: !answers.hiring }))\n          }\n        )\n      }\n    ))\n  ));\n}\nStep1.propTypes = jobAdPropTypes;\nexport default Step1;\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport React from \"react\";\nimport {\n  Select,\n  FormGroup,\n  FormControl,\n  FormLabel,\n  FormControlLabel,\n  Checkbox,\n  TextField,\n  Radio,\n  RadioGroup,\n  FormHelperText,\n  Grid,\n  MenuItem,\n  InputAdornment,\n  Box,\n  Switch\n} from \"@material-ui/core\";\nimport useStyles from \"../useStyles\";\nimport DayPickerInput from \"react-day-picker/DayPickerInput\";\nimport { formatDate } from \"react-day-picker/moment\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\nimport { jobAdPropTypes } from \"../../../NewUI/Components/Multiposter/types\";\nimport TextEditor from \"../../../NewUI/Components/CustomUIElements/TextEditor\";\nfunction Step2({ answers, setAnswers, jobAdParams, requiredRefs, activeError }) {\n  const classes = useStyles();\n  function handleMultiCheck(value, state, key) {\n    state.includes(value) ? setAnswers(__spreadProps(__spreadValues({}, answers), { [key]: state.filter((id) => id !== value) })) : setAnswers(__spreadProps(__spreadValues({}, answers), { [key]: [...answers[key], value] }));\n  }\n  return /* @__PURE__ */ React.createElement(\"div\", { className: classes.stepContainer }, /* @__PURE__ */ React.createElement(\"h4\", null, \"Job details\"), /* @__PURE__ */ React.createElement(\n    FormControl,\n    {\n      fullWidth: true,\n      className: `${classes.formControl} ${classes.medium} ${classes.greyBox}`\n    },\n    /* @__PURE__ */ React.createElement(Grid, { container: true, alignItems: \"center\" }, /* @__PURE__ */ React.createElement(\"span\", null, \"Job title:\"), /* @__PURE__ */ React.createElement(\"div\", null, answers.jobTitle)),\n    /* @__PURE__ */ React.createElement(Grid, { container: true, alignItems: \"center\" }, /* @__PURE__ */ React.createElement(\"span\", null, \"Job company name:\"), /* @__PURE__ */ React.createElement(\"div\", null, answers.companyName)),\n    /* @__PURE__ */ React.createElement(Grid, { container: true, alignItems: \"center\" }, /* @__PURE__ */ React.createElement(\"span\", null, \"Job location:\"), /* @__PURE__ */ React.createElement(\"div\", null, `${[answers.address, answers.city, answers.state].filter((cur) => cur).join(\", \")}`))\n  ), /* @__PURE__ */ React.createElement(\n    FormControl,\n    {\n      ref: requiredRefs.employmentType,\n      fullWidth: true,\n      className: `${classes.formControl} ${classes.medium}`\n    },\n    /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: classes.label }, \"What type of employment is it?\", /* @__PURE__ */ React.createElement(\"span\", { className: classes.asterisk }, \" *\"), activeError === requiredRefs.employmentType && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))),\n    /* @__PURE__ */ React.createElement(FormGroup, null, /* @__PURE__ */ React.createElement(Grid, { container: true }, jobAdParams.work_type_options.map((type) => /* @__PURE__ */ React.createElement(Grid, { key: type[0], item: true, xs: 6 }, /* @__PURE__ */ React.createElement(\n      FormControlLabel,\n      {\n        disabled: answers.employmentType.length >= 2 && !answers.employmentType.includes(type[1]),\n        label: type[0],\n        value: type[1],\n        control: /* @__PURE__ */ React.createElement(\n          Checkbox,\n          {\n            checked: answers.employmentType.includes(type[1]),\n            onChange: (e) => handleMultiCheck(e.target.value, answers.employmentType, \"employmentType\")\n          }\n        )\n      }\n    )))))\n  ), /* @__PURE__ */ React.createElement(\n    FormControl,\n    {\n      ref: requiredRefs.schedule,\n      fullWidth: true,\n      className: `${classes.formControl} ${classes.medium}`\n    },\n    /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: classes.label }, \"What is the schedule for this job?\", /* @__PURE__ */ React.createElement(\"span\", { className: classes.asterisk }, \" *\"), activeError === requiredRefs.schedule && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))),\n    /* @__PURE__ */ React.createElement(FormGroup, null, /* @__PURE__ */ React.createElement(Grid, { container: true }, jobAdParams.schedules_options.map((schedule) => /* @__PURE__ */ React.createElement(Grid, { key: schedule[1], item: true, xs: 6 }, /* @__PURE__ */ React.createElement(\n      FormControlLabel,\n      {\n        label: schedule[0],\n        value: schedule[1],\n        control: /* @__PURE__ */ React.createElement(\n          Checkbox,\n          {\n            checked: answers.schedule.includes(schedule[1]),\n            onChange: (e) => handleMultiCheck(e.target.value, answers.schedule, \"schedule\")\n          }\n        )\n      }\n    )))))\n  ), /* @__PURE__ */ React.createElement(\n    FormControl,\n    {\n      ref: requiredRefs.startDate,\n      fullWidth: true,\n      className: `${classes.formControl} ${classes.small}`\n    },\n    /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: classes.label }, \"Is there a planned start date for this job?\", /* @__PURE__ */ React.createElement(\"span\", { className: classes.asterisk }, \" *\"), activeError === requiredRefs.startDate && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))),\n    /* @__PURE__ */ React.createElement(FormGroup, null, /* @__PURE__ */ React.createElement(\n      FormControlLabel,\n      {\n        label: \"Yes\",\n        control: /* @__PURE__ */ React.createElement(\n          Radio,\n          {\n            checked: answers.isStartDate === true,\n            onChange: () => setAnswers(__spreadProps(__spreadValues({}, answers), { isStartDate: true }))\n          }\n        )\n      }\n    ), /* @__PURE__ */ React.createElement(\n      FormControlLabel,\n      {\n        label: \"No\",\n        control: /* @__PURE__ */ React.createElement(\n          Radio,\n          {\n            checked: answers.isStartDate === false,\n            onChange: () => setAnswers(__spreadProps(__spreadValues({}, answers), { isStartDate: false }))\n          }\n        )\n      }\n    )),\n    answers.isStartDate && /* @__PURE__ */ React.createElement(\n      DayPickerInput,\n      {\n        value: answers.startDate,\n        onDayChange: (day) => setAnswers(__spreadProps(__spreadValues({}, answers), { startDate: formatDate(day, \"LL\") })),\n        classNames: {\n          container: `${classes.calendarContainer} ${activeError === requiredRefs.startDate ? classes.errorStartDate : \"\"}`,\n          overlay: classes.calendarOverlay\n        },\n        format: \"LL\",\n        placeholder: \"Select a date\"\n      }\n    )\n  ), /* @__PURE__ */ React.createElement(\"h4\", { ref: requiredRefs.salary, className: classes.requiredHeader }, \"Salary & benefits\", /* @__PURE__ */ React.createElement(\"span\", null, \"*\"), activeError === requiredRefs.salary && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"Please input valid salary range\"))), /* @__PURE__ */ React.createElement(\"div\", { className: `${classes.formControl} ${classes.medium}` }, /* @__PURE__ */ React.createElement(Box, { mb: 1, classes: { root: classes.salaryInput } }, /* @__PURE__ */ React.createElement(\n    Select,\n    {\n      classes: { select: classes.input, root: classes.fullWidth },\n      variant: \"outlined\",\n      value: answers.selectedSalaryType,\n      onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), {\n        selectedSalaryType: e.target.value,\n        rangeTo: 0,\n        rangeFrom: 0\n      })),\n      displayEmpty: true,\n      renderValue: (value) => value[0]\n    },\n    answers.salaryTypes.map((type) => /* @__PURE__ */ React.createElement(MenuItem, { key: type[1], value: type }, type[0]))\n  )), /* @__PURE__ */ React.createElement(FormGroup, null, /* @__PURE__ */ React.createElement(Grid, { container: true, classes: { root: classes.inputAdornment } }, /* @__PURE__ */ React.createElement(\n    Grid,\n    {\n      item: true,\n      container: true,\n      xs: 9,\n      alignContent: \"center\",\n      alignItems: \"center\",\n      justifyContent: \"center\",\n      wrap: \"nowrap\"\n    },\n    answers.selectedSalaryType[0] === \"Range\" ? /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Box, { m: 1, ml: 0 }, /* @__PURE__ */ React.createElement(\n      TextField,\n      {\n        error: activeError === requiredRefs.salary,\n        className: classes.textField,\n        variant: \"outlined\",\n        value: Number(answers.rangeFrom).toLocaleString(),\n        InputProps: {\n          startAdornment: /* @__PURE__ */ React.createElement(InputAdornment, { position: \"start\" }, \"$\")\n        },\n        onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), {\n          rangeFrom: e.target.value ? parseFloat(e.target.value.split(\",\").join(\"\")) : \"\"\n        }))\n      }\n    )), /* @__PURE__ */ React.createElement(Box, { sx: { marginTop: \"20px\" }, m: 1 }, /* @__PURE__ */ React.createElement(\"span\", null, \"to\")), /* @__PURE__ */ React.createElement(Box, { m: 1 }, /* @__PURE__ */ React.createElement(\n      TextField,\n      {\n        error: activeError === requiredRefs.salary,\n        className: classes.textField,\n        variant: \"outlined\",\n        value: Number(answers.rangeTo).toLocaleString(),\n        InputProps: {\n          startAdornment: /* @__PURE__ */ React.createElement(InputAdornment, { position: \"start\" }, \"$\")\n        },\n        onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), {\n          rangeTo: e.target.value ? parseFloat(e.target.value.split(\",\").join(\"\")) : \"\"\n        }))\n      }\n    ))) : /* @__PURE__ */ React.createElement(\n      TextField,\n      {\n        error: activeError === requiredRefs.salary,\n        style: { width: \"100%\", marginRight: 10 },\n        className: classes.textField,\n        variant: \"outlined\",\n        value: Number(answers.rangeTo).toLocaleString(),\n        InputProps: {\n          startAdornment: /* @__PURE__ */ React.createElement(InputAdornment, { position: \"start\" }, \"$\")\n        },\n        onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), {\n          rangeTo: e.target.value ? parseFloat(e.target.value.split(\",\").join(\"\")) : \"\",\n          rangeFrom: e.target.value ? parseFloat(e.target.value.split(\",\").join(\"\")) : \"\"\n        }))\n      }\n    )\n  ), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 3 }, /* @__PURE__ */ React.createElement(Box, { m: 1, mr: 0 }, /* @__PURE__ */ React.createElement(\n    Select,\n    {\n      classes: { select: classes.input },\n      className: classes.salaryDropdown,\n      variant: \"outlined\",\n      value: answers.rangeUnit,\n      onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { rangeUnit: e.target.value })),\n      displayEmpty: true,\n      renderValue: (value) => value[1]\n    },\n    jobAdParams.payment_frequencies_options.map((range) => /* @__PURE__ */ React.createElement(MenuItem, { key: range[0], value: range }, range[1]))\n  ))))), /* @__PURE__ */ React.createElement(Box, { mt: 1 }, /* @__PURE__ */ React.createElement(\"span\", null, \"Specifying $0 omits salary from your job ad\"))), /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl} ${classes.medium}` }, /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: classes.label }, \"Are any forms of additional pay offered?\"), /* @__PURE__ */ React.createElement(FormGroup, null, /* @__PURE__ */ React.createElement(Grid, { container: true }, jobAdParams.additional_payment_options.map((pay) => /* @__PURE__ */ React.createElement(Grid, { key: pay[1], item: true, xs: 6 }, /* @__PURE__ */ React.createElement(\n    FormControlLabel,\n    {\n      label: pay[0],\n      value: pay[1],\n      control: /* @__PURE__ */ React.createElement(\n        Checkbox,\n        {\n          checked: answers.additionalPay.includes(pay[1]),\n          onChange: (e) => handleMultiCheck(e.target.value, answers.additionalPay, \"additionalPay\")\n        }\n      )\n    }\n  )))))), /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl} ${classes.medium}` }, /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: classes.label }, \"Are any of the following benefits offered?\"), /* @__PURE__ */ React.createElement(FormGroup, null, /* @__PURE__ */ React.createElement(Grid, { container: true }, jobAdParams.salary_benefit_options.map((benefit) => /* @__PURE__ */ React.createElement(Grid, { key: benefit[1], item: true, xs: 6 }, /* @__PURE__ */ React.createElement(\n    FormControlLabel,\n    {\n      label: benefit[0],\n      value: benefit[1],\n      control: /* @__PURE__ */ React.createElement(\n        Checkbox,\n        {\n          checked: answers.benefits.includes(benefit[1]),\n          onChange: (e) => handleMultiCheck(e.target.value, answers.benefits, \"benefits\")\n        }\n      )\n    }\n  )))))), /* @__PURE__ */ React.createElement(\"h4\", null, \"Application Settings\"), /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl} ${classes.medium}` }, /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: classes.label }, \"Do you want applicants to submit a resume?\"), /* @__PURE__ */ React.createElement(\n    RadioGroup,\n    {\n      value: answers.submitResume,\n      onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { submitResume: e.target.value }))\n    },\n    /* @__PURE__ */ React.createElement(FormControlLabel, { label: \"Yes\", value: \"required\", control: /* @__PURE__ */ React.createElement(Radio, null) }),\n    /* @__PURE__ */ React.createElement(FormControlLabel, { label: \"No\", value: \"hidden\", control: /* @__PURE__ */ React.createElement(Radio, null) }),\n    /* @__PURE__ */ React.createElement(FormControlLabel, { label: \"Optional\", value: \"optional\", control: /* @__PURE__ */ React.createElement(Radio, null) })\n  )), /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl} ${classes.small}` }, /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: classes.label }, \"Is there an application deadline?\"), /* @__PURE__ */ React.createElement(FormGroup, null, /* @__PURE__ */ React.createElement(\n    FormControlLabel,\n    {\n      label: \"Yes\",\n      control: /* @__PURE__ */ React.createElement(\n        Radio,\n        {\n          checked: answers.isApplicationDeadline === true,\n          onChange: () => setAnswers(__spreadProps(__spreadValues({}, answers), { isApplicationDeadline: true }))\n        }\n      )\n    }\n  ), /* @__PURE__ */ React.createElement(\n    FormControlLabel,\n    {\n      label: \"No\",\n      control: /* @__PURE__ */ React.createElement(\n        Radio,\n        {\n          checked: answers.isApplicationDeadline === false,\n          onChange: () => setAnswers(__spreadProps(__spreadValues({}, answers), { isApplicationDeadline: false }))\n        }\n      )\n    }\n  )), answers.isApplicationDeadline && /* @__PURE__ */ React.createElement(\n    DayPickerInput,\n    {\n      value: answers.applicationDeadline,\n      onDayChange: (day) => setAnswers(__spreadProps(__spreadValues({}, answers), { applicationDeadline: formatDate(day, \"LL\") })),\n      classNames: { container: `${classes.calendarContainer}` },\n      format: \"LL\",\n      placeholder: \"Select a date\"\n    }\n  )), /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl} ${classes.large}` }, /* @__PURE__ */ React.createElement(Grid, { container: true }, /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 10 }, /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: classes.label }, \"Do you want to let applicants start the conversation?\"), /* @__PURE__ */ React.createElement(\"span\", { className: classes.subLabel }, \"Allow job seekers to message you about their applications.\", /* @__PURE__ */ React.createElement(\"br\", null), \"Messages will be sent to the email address you added in Application settings.\")), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 2 }, /* @__PURE__ */ React.createElement(\n    FormControlLabel,\n    {\n      label: answers.startConversation ? \"Yes\" : \"No\",\n      control: /* @__PURE__ */ React.createElement(\n        Switch,\n        {\n          checked: answers.startConversation,\n          onChange: () => setAnswers(__spreadProps(__spreadValues({}, answers), { startConversation: !answers.startConversation }))\n        }\n      )\n    }\n  )))), /* @__PURE__ */ React.createElement(\"h4\", { ref: requiredRefs.description, className: classes.requiredHeader }, \"Job description\", /* @__PURE__ */ React.createElement(\"span\", null, \"*\"), activeError === requiredRefs.description && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))), /* @__PURE__ */ React.createElement(\n    FormControl,\n    {\n      fullWidth: true,\n      className: `${classes.formControl} ${classes.large}`,\n      style: { marginTop: 5 }\n    },\n    /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: classes.label }, \"Describe the responsbilities of this job, required work experience, skills, or education.\"),\n    /* @__PURE__ */ React.createElement(\n      TextEditor,\n      {\n        editorState: answers.description,\n        setAnswers,\n        answers,\n        activeError,\n        requiredRef: requiredRefs.description,\n        classes\n      }\n    )\n  ), /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl} ${classes.large}` }, /* @__PURE__ */ React.createElement(FormLabel, { className: classes.label }, \"Are you taking any additional COVID-19 precautions?\"), /* @__PURE__ */ React.createElement(\"span\", { className: classes.subLabel }, \"Let job seekers know how you're responding to COVID-19\"), /* @__PURE__ */ React.createElement(\n    TextField,\n    {\n      multiline: true,\n      placeholder: \"Eg. All customers are required to wear a mask, curbside pickup available, common surfaces sanitised regularly, etc.\",\n      className: `${classes.textField} ${classes.textBox}`,\n      variant: \"outlined\",\n      value: answers.covidPrecautions,\n      onChange: (e) => e.target.value.length <= 255 && setAnswers(__spreadProps(__spreadValues({}, answers), { covidPrecautions: e.target.value }))\n    }\n  ), /* @__PURE__ */ React.createElement(FormHelperText, { className: classes.helperText }, answers.covidPrecautions.length, \"/255\")), /* @__PURE__ */ React.createElement(\n    FormControl,\n    {\n      ref: requiredRefs.jobReference,\n      fullWidth: true,\n      className: `${classes.formControl} ${classes.small}`\n    },\n    /* @__PURE__ */ React.createElement(FormLabel, { required: true, focused: false, className: classes.label }, \"Job reference ID\"),\n    /* @__PURE__ */ React.createElement(\n      TextField,\n      {\n        error: activeError === requiredRefs.jobReference,\n        type: \"number\",\n        className: classes.textField,\n        variant: \"outlined\",\n        value: answers.jobReference,\n        onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { jobReference: e.target.value })),\n        InputProps: {\n          endAdornment: activeError === requiredRefs.jobReference && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))\n        }\n      }\n    )\n  ), /* @__PURE__ */ React.createElement(\"h4\", null, \"Applicant qualifications\"), /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: classes.large, style: { marginTop: 14 } }, /* @__PURE__ */ React.createElement(Grid, { container: true }, /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 10 }, /* @__PURE__ */ React.createElement(\"span\", { className: classes.label }, \"Include applicant questionnaire from your job.\")), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 2 }, /* @__PURE__ */ React.createElement(\n    FormControlLabel,\n    {\n      label: answers.askQualifications ? \"On\" : \"Off\",\n      control: /* @__PURE__ */ React.createElement(\n        Switch,\n        {\n          checked: answers.askQualifications,\n          onChange: () => setAnswers(__spreadProps(__spreadValues({}, answers), { askQualifications: !answers.askQualifications }))\n        }\n      )\n    }\n  )))));\n}\nStep2.propTypes = jobAdPropTypes;\nexport default Step2;\n","import React, { useState, useEffect } from \"react\";\nimport {\n  Grid\n} from \"@material-ui/core\";\nimport useStyles from \"../useStyles\";\nimport PropTypes from \"prop-types\";\nimport FavoriteBorderIcon from \"@material-ui/icons/FavoriteBorder\";\nimport renderHTML from \"react-render-html\";\nimport moment from \"moment\";\nfunction Step2({ jobAdParams, answers, setActiveStep }) {\n  const [isMobile, setIsMobile] = useState(false);\n  const classes = useStyles();\n  useEffect(() => {\n    window.scrollTo(0, 0);\n  }, []);\n  return /* @__PURE__ */ React.createElement(\"div\", { className: classes.stepContainer }, /* @__PURE__ */ React.createElement(\"h4\", null, \"Preview Ad\"), /* @__PURE__ */ React.createElement(\"div\", { className: `${classes.previewType} ${isMobile ? \"mobile\" : \"\"}` }, /* @__PURE__ */ React.createElement(\"div\", { onClick: () => setIsMobile(false) }, \"Desktop\"), /* @__PURE__ */ React.createElement(\"div\", { onClick: () => setIsMobile(true) }, \"Mobile\")), /* @__PURE__ */ React.createElement(\"div\", { className: `${classes.previewContainer} ${isMobile ? \"mobile\" : \"\"}` }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.previewTitle }, answers.jobTitle), /* @__PURE__ */ React.createElement(\"div\", { className: classes.previewDetails }, `${jobAdParams.company_name} ${jobAdParams.address}`), /* @__PURE__ */ React.createElement(\"div\", { className: classes.previewButtons }, /* @__PURE__ */ React.createElement(\"div\", null, \"Apply Now\"), /* @__PURE__ */ React.createElement(\"div\", null, /* @__PURE__ */ React.createElement(FavoriteBorderIcon, null))), /* @__PURE__ */ React.createElement(\"div\", { className: classes.previewContent }, renderHTML(answers.ad_preview))), /* @__PURE__ */ React.createElement(\"div\", { className: `${classes.large}` }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.applicationSettings }, /* @__PURE__ */ React.createElement(\"h4\", null, \"Application settings\"), /* @__PURE__ */ React.createElement(\"span\", { onClick: () => setActiveStep(0) }, \"Edit\")), /* @__PURE__ */ React.createElement(Grid, { container: true, classes: { root: classes.greyBox } }, /* @__PURE__ */ React.createElement(Grid, { container: true, classes: { root: classes.applicationSettingsInner } }, /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 8 }, \"Resume:\"), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 4 }, answers.submitResume === \"required\" && \"Required document\", answers.submitResume === \"optional\" && \"Optional document\", answers.submitResume === \"hidden\" && \"Not required\")), /* @__PURE__ */ React.createElement(Grid, { container: true, classes: { root: classes.applicationSettingsInner } }, /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 8 }, \"Application deadline:\"), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 4 }, answers.isApplicationDeadline ? moment(answers.applicationDeadline).format(\"LL\") : \"No deadline\")))));\n}\nStep2.propTypes = {\n  setActiveStep: PropTypes.func.isRequired,\n  jobAdParams: PropTypes.object.isRequired,\n  answers: PropTypes.object.isRequired,\n  setAnswers: PropTypes.func.isRequired\n};\nexport default Step2;\n","import AdEditor from \"./AdEditor\";\nexport default AdEditor;\n","import { makeStyles } from \"@material-ui/core\";\nimport { adEditorCancelButton } from \"../../shared/commonStyles\";\nexport default makeStyles((theme) => ({\n  containerOuter: {\n    marginTop: 40,\n    background: \"#FFF\",\n    borderRadius: 8,\n    padding: 40,\n    display: \"flex\",\n    justifyContent: \"center\",\n    \"& button:focus\": {\n      outline: 0\n    }\n  },\n  container: {\n    padding: \"50px 120px\",\n    width: \"100%\"\n  },\n  stepSelect: {\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    marginBottom: 40,\n    width: \"90%\",\n    margin: \"auto\"\n  },\n  stepContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    \"& h4\": {\n      color: \"#666666\",\n      fontSize: 20,\n      fontWeight: \"900\",\n      marginBottom: 0,\n      marginTop: 70,\n      \"&:first-child\": {\n        marginTop: 0\n      },\n      \"& + span\": {\n        color: \"#939393\",\n        fontSize: 16,\n        marginTop: 20\n      },\n      \"& span\": {\n        color: \"#E37D7A\"\n      },\n      \"& + div\": {\n        marginTop: 20\n      }\n    },\n    \"& fieldset\": {\n      borderColor: \"#DDDDDD\"\n    },\n    \"& .MuiSwitch-switchBase + .MuiSwitch-track\": {\n      backgroundColor: \"#A0A0A0\"\n    }\n  },\n  formControl: {\n    marginTop: 50\n  },\n  subFormControl: {\n    marginTop: 20\n  },\n  large: {\n    width: 600\n  },\n  medium: {\n    width: 400\n  },\n  small: {\n    width: 300\n  },\n  greyBox: {\n    background: \"#FAFAFA\",\n    border: \"1px solid #DDDDDD\",\n    borderRadius: 6,\n    padding: 30,\n    \"& span\": {\n      color: \"#939393\",\n      fontSize: 16,\n      display: \"block\",\n      marginRight: 8\n    },\n    \"& > div\": {\n      marginBottom: 15,\n      \"&:last-child\": {\n        marginBottom: 0\n      }\n    }\n  },\n  applicationSettingsInner: {\n    \"& > div\": {\n      fontSize: 16,\n      color: \"#000\",\n      textAlign: \"right\",\n      \"&:first-child\": {\n        fontSize: 18,\n        color: \"#939393\",\n        textAlign: \"left\"\n      }\n    },\n    \"& span\": {\n      display: \"block\",\n      color: \"#000\"\n    }\n  },\n  greyIcon: {\n    color: theme.palette.secondary.main,\n    width: 18,\n    height: 18\n  },\n  greyInput: {\n    padding: \"0 32px 0 0 !important\",\n    color: \"#000000\",\n    \"&:focus\": {\n      background: \"#FAFAFA\"\n    }\n  },\n  inputField: {\n    padding: \"10px 18px\",\n    borderRadius: 6,\n    border: \"1px solid #DDDDDD\",\n    background: \"#FFF\"\n  },\n  textField: {\n    \"& input\": {\n      // padding: '10px 18px',\n      borderRadius: 6\n    }\n  },\n  textBox: {\n    \"& input\": {\n      height: 150\n    }\n  },\n  salaryDropdown: {\n    marginTop: \"0.5rem\",\n    height: \"44px\"\n  },\n  controlledNumberInput: {\n    \"& fieldset\": {\n      borderTopRightRadius: 0,\n      borderBottomRightRadius: 0\n    },\n    \"& button\": {\n      color: \"#A2A2A2\",\n      borderRadius: 0,\n      border: \"1px solid #DDDDDD\",\n      borderLeft: 0,\n      padding: 0,\n      minWidth: 40,\n      display: \"flex\",\n      alignItems: \"center\",\n      justifyContent: \"center\",\n      height: \"44px\",\n      marginTop: \"0.5rem\",\n      \"&:last-child\": {\n        borderTopRightRadius: 6,\n        borderBottomRightRadius: 6\n      },\n      \"&[disabled]\": {\n        background: \"#F3F3F3\",\n        color: \"#E5E5E5\"\n      }\n    }\n  },\n  fullWidth: {\n    width: \"100%\"\n  },\n  input: {\n    padding: \"10px 18px\",\n    borderRadius: 6,\n    width: \"100%\",\n    \"&:focus\": {\n      background: \"#FFF\"\n    }\n  },\n  inputAdornment: {\n    \"& input\": {\n      paddingLeft: 0\n    },\n    \"& span\": {\n      fontSize: 16\n    }\n  },\n  placeholder: {\n    fontSize: 14,\n    color: \"#CCCCCC\"\n  },\n  salaryInput: {\n    width: \"31%\",\n    \"& > div:first-child\": {\n      width: \"100%\"\n    }\n  },\n  label: {\n    color: \"#939393\",\n    fontSize: 16,\n    marginBottom: 14,\n    display: \"flex\",\n    lineHeight: \"20px\",\n    \"& span\": {\n      color: \"#E37D7A\"\n    }\n  },\n  asterisk: {\n    display: \"block\",\n    marginLeft: 10,\n    color: theme.palette.error.main\n  },\n  requiredHeader: {\n    display: \"flex\",\n    lineHeight: \"20px\"\n  },\n  subLabel: {\n    display: \"block\",\n    color: \"#000\",\n    fontSize: 14,\n    marginBottom: 10\n  },\n  helperText: {\n    textAlign: \"right\",\n    position: \"absolute\",\n    bottom: \"-22px\",\n    right: 0\n  },\n  calendarContainer: {\n    marginTop: 10,\n    \"& input\": {\n      padding: \"10px 18px\",\n      borderRadius: 6,\n      border: \"1px solid #DDD\",\n      width: \"100%\",\n      \"&:focus\": {\n        background: \"#FFF\",\n        outline: 0,\n        borderColor: theme.palette.primary.main\n      }\n    },\n    \"& .DayPicker\": {\n      background: \"#FFF\",\n      borderRadius: 6,\n      boxShadow: \"0px 0px 10px 1px rgba(0,0,0,0.1)\",\n      position: \"absolute\",\n      zIndex: 100\n    },\n    \"& .DayPicker-wrapper\": {\n      padding: \"20px 10px\",\n      borderRadius: 6\n    },\n    \"& .DayPicker-Caption\": {\n      height: \"2rem\",\n      \"& div\": {\n        fontWeight: \"600\",\n        fontSize: 18,\n        color: theme.palette.primary.main\n      }\n    },\n    \"& .DayPicker-NavBar\": {\n      top: \"1.3rem\",\n      \"& span\": {\n        height: \"0.9rem\",\n        width: \"0.9rem\"\n      }\n    },\n    \"& .DayPicker-Weekdays abbr\": {\n      textDecoration: \"none\"\n    },\n    \"& .DayPicker-Day\": {\n      border: 0,\n      padding: \"10px 12px\",\n      fontSize: 12\n    },\n    \"& .DayPicker-Day--today\": {\n      color: theme.palette.primary.main,\n      fontWeight: \"600\"\n    },\n    \"& .DayPicker-Day--selected:not(.DayPicker-Day--disabled):not(.DayPicker-Day--outside)\": {\n      backgroundColor: theme.palette.secondary.main,\n      borderRadius: \"100%\"\n    }\n  },\n  actionText: {\n    fontWeight: \"600\",\n    color: theme.palette.primary.main,\n    fontSize: 14,\n    display: \"block\",\n    marginBottom: 10,\n    \"&:hover\": {\n      cursor: \"pointer\"\n    }\n  },\n  spaceItems: {\n    \"& > *\": {\n      marginBottom: 14\n    }\n  },\n  removeIcon: {\n    position: \"absolute\",\n    right: 10,\n    color: \"#DDD\",\n    \"&:hover\": {\n      color: \"#E37D7A\",\n      cursor: \"pointer\"\n    }\n  },\n  sliderContainer: {\n    width: 560,\n    marginTop: 15,\n    borderRadius: 6,\n    border: \"1px solid #DDDDDD\",\n    padding: \"30px 60px\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    textAlign: \"center\"\n  },\n  sliderTitle: {\n    color: theme.palette.primary.main,\n    fontWeight: \"600\",\n    display: \"block\",\n    marginBottom: 35\n  },\n  sliderValue: {\n    display: \"block\",\n    marginTop: 4,\n    color: \"#999\",\n    textAlign: \"right\"\n  },\n  thumb: {\n    width: 20,\n    height: 20,\n    marginTop: \"-9px\"\n  },\n  textEditor: {\n    borderRadius: 6,\n    border: \"1px solid #DDDDDD\",\n    overflow: \"hidden\"\n  },\n  textEditorToolbar: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    background: \"#DDDDDD\",\n    padding: \"10px 15px 6px\",\n    \"& .rdw-inline-wrapper\": {\n      display: \"flex\",\n      flexDirection: \"row\"\n    },\n    \"& .rdw-option-wrapper\": {\n      padding: \"0 10px\"\n    }\n  },\n  textEditorBody: {\n    minHeight: 250,\n    padding: 20,\n    \"&:hover\": {\n      cursor: \"text\"\n    },\n    \"& ul\": {\n      paddingLeft: 20\n    },\n    \"& li\": {\n      listStyle: \"disc\"\n    }\n  },\n  stepperRoot: {\n    width: \"100%\"\n  },\n  stepItem: {\n    fontWeight: \"600\"\n  },\n  stepIconActive: {\n    color: `${theme.palette.secondary.main} !important`,\n    boxShadow: \"0px 0px 10px 1px rgba(0,0,0,0.1)\",\n    \"& text\": {\n      color: \"#FFF\"\n    }\n  },\n  stepIconCompleted: {\n    color: `${theme.palette.secondary.main} !important`,\n    boxShadow: \"0px 0px 10px 1px rgba(0,0,0,0.1)\",\n    \"& text\": {\n      color: \"#FFF\"\n    }\n  },\n  stepIconRoot: {\n    color: \"#F3F3F3\",\n    borderRadius: \"100%\",\n    width: \"50px !important\",\n    height: \"50px !important\",\n    \"& text\": {\n      color: \"#CCCCCC\"\n    }\n  },\n  stepLabelIconContainer: {\n    width: \"50px !important\",\n    height: \"50px !important\"\n  },\n  stepLabelLabel: {\n    fontWeight: \"600 !important\",\n    color: \"#CCCCCC !important\"\n  },\n  stepLabelActive: {\n    color: \"#666666 !important\"\n  },\n  stepLabelCompleted: {\n    color: \"#666666 !important\"\n  },\n  stepHover: {\n    \"&:hover\": {\n      cursor: \"pointer\",\n      opacity: 0.8\n    }\n  },\n  stepNoHover: {\n    \"&:hover\": {\n      cursor: \"auto\"\n    }\n  },\n  buttonContainer: {\n    marginTop: 60,\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    \"& a\": adEditorCancelButton\n  },\n  buttons: {\n    display: \"flex\",\n    \"& > *\": {\n      marginLeft: 20\n    }\n  },\n  buttonSecondary: {\n    borderRadius: 6,\n    padding: \"6px 8px !important\",\n    color: \"#FFF !important\",\n    textDecoration: \"none !important\",\n    fontWeight: \"600 !important\",\n    fontSize: 14,\n    background: theme.palette.secondary.main,\n    \"&:hover\": {\n      background: theme.palette.secondary.dark\n    },\n    \"&.Mui-disabled\": {\n      backgroundColor: \"#666666\"\n    },\n    \"& svg\": {\n      width: \"24px !important\",\n      height: \"25px !important\",\n      \"& path\": {\n        fill: \"white !important\",\n        width: \"100%\",\n        height: \"100%\"\n      }\n    }\n  },\n  buttonSecondaryLight: {\n    borderRadius: 6,\n    padding: \"6px 8px\",\n    background: theme.palette.secondary.light,\n    color: theme.palette.secondary.main,\n    \"&:hover\": {\n      background: theme.palette.secondary.main,\n      color: \"#FFF\"\n    }\n  },\n  successDialogText: {\n    display: \"flex\",\n    alignItems: \"center\",\n    height: \"3rem\",\n    fontWeight: \"600\",\n    color: \"#666666\",\n    \"& span\": {\n      paddingRight: \"0.5rem\"\n    }\n  },\n  successDialogContainer: {\n    marginTop: \"20px\",\n    \"& button\": {\n      padding: \"9px 13px\"\n    }\n  },\n  previewType: {\n    display: \"flex\",\n    marginTop: 20,\n    borderBottom: \"3px solid #F3F3F3\",\n    position: \"relative\",\n    width: 260,\n    \"& div\": {\n      padding: 20,\n      fontSize: 16,\n      color: \"#939393\",\n      flexGrow: 1,\n      textAlign: \"center\",\n      \"&:hover\": {\n        cursor: \"pointer\",\n        color: \"#666\"\n      }\n    },\n    \"&:after\": {\n      content: '\"\"',\n      display: \"block\",\n      position: \"absolute\",\n      width: \"50%\",\n      background: \"#2557A7\",\n      borderRadius: 3,\n      left: \"0%\",\n      bottom: \"-3px\",\n      height: 3,\n      transition: \"left 0.2s ease\"\n    },\n    \"&.mobile:after\": {\n      left: \"50%\"\n    }\n  },\n  previewContainer: {\n    border: \"1px solid #DDD\",\n    borderRadius: 6,\n    padding: \"40px 50px\",\n    marginTop: 20,\n    marginBottom: 60,\n    width: \"80%\",\n    \"&.mobile\": {\n      width: \"40%\"\n    }\n  },\n  previewTitle: {\n    color: \"#666666\",\n    fontSize: 30,\n    fontWeight: \"600\"\n  },\n  previewDetails: {\n    fontSize: 20,\n    color: \"#939393\",\n    marginTop: 6\n  },\n  previewButtons: {\n    display: \"flex\",\n    marginTop: 30,\n    \"& div\": {\n      borderRadius: 6,\n      fontWeight: \"600\",\n      lineHeight: \"20px\",\n      \"&:hover\": {\n        cursor: \"pointer\"\n      }\n    },\n    \"& div:first-child\": {\n      background: \"#2557A7\",\n      color: \"#FFF\",\n      fontSize: 20,\n      marginRight: 10,\n      padding: \"9px 24px\",\n      \"&:hover\": {\n        background: \"#3d6fbf\"\n      }\n    },\n    \"& div:last-child\": {\n      color: \"#606060\",\n      background: \"#F3F3F3\",\n      padding: \"9px 12px\",\n      \"&:hover\": {\n        background: \"#e6e3e3\"\n      }\n    }\n  },\n  previewContent: {\n    marginTop: 30,\n    \"& p, li\": {\n      fontSize: 18,\n      color: \"#939393\",\n      marginTop: 0\n    },\n    \"& strong\": {\n      fontWeight: \"600\",\n      color: \"#666666\",\n      fontSize: 20\n    },\n    \"& ul\": {\n      listStyle: \"disc\",\n      paddingLeft: 20\n    },\n    \"& li:marker\": {\n      color: \"#939393\"\n    }\n  },\n  applicationSettings: {\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    marginBottom: 25,\n    \"& span\": {\n      color: theme.palette.primary.main,\n      fontWeight: \"600\",\n      \"&:hover\": {\n        cursor: \"pointer\"\n      }\n    }\n  },\n  dialog: {\n    padding: \"40px 60px\",\n    alignItems: \"center\",\n    textAlign: \"center\",\n    \"& > h4\": {\n      fontSize: 26,\n      color: theme.palette.primary.main,\n      marginBottom: 14\n    },\n    \"& > span\": {\n      fontWeight: \"600\",\n      color: \"#666666\",\n      fontSize: 16,\n      lineHeight: \"20px\"\n    },\n    \"& button:focus\": {\n      outline: 0\n    }\n  },\n  dialogButtonContainer: {\n    display: \"flex\",\n    marginTop: 40,\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    flexDirection: \"row\",\n    \"& > button\": {\n      margin: \"0 10px\",\n      minWidth: 150\n    }\n  },\n  successDialog: {\n    padding: \"80px 100px\",\n    alignItems: \"center\",\n    textAlign: \"center\",\n    \"& svg\": {\n      width: 80,\n      height: 80,\n      \"& path\": {\n        fill: \"#0064F7\",\n        width: \"100%\",\n        height: \"100%\"\n      }\n    },\n    \"& > h4\": {\n      marginTop: 10,\n      fontSize: 48,\n      color: \"#666666\",\n      marginBottom: 4,\n      fontWeight: \"900\"\n    },\n    \"& > span\": {\n      fontWeight: \"500\",\n      color: \"#666666\",\n      fontSize: 24,\n      display: \"block\",\n      marginBottom: 20\n    }\n  },\n  successCheck: {\n    position: \"relative\",\n    \"&:after\": {\n      content: '\"\"',\n      display: \"block\",\n      position: \"absolute\",\n      height: \"100%\",\n      width: \"100%\",\n      top: 0,\n      left: 0,\n      border: \"16px solid #0064F7\",\n      borderRadius: \"100%\",\n      boxShadow: \"0px 0px 10px 1px rgba(0,0,0,0.3)\"\n    }\n  },\n  autoComplete: {\n    marginTop: 10,\n    \"& input\": {\n      minHeight: 30\n    }\n  },\n  autoCompleteRoot: {\n    padding: \"0 6px !important\",\n    \"& input::placeholder\": {\n      fontSize: 14,\n      color: \"#CCCCCC\",\n      opacity: 1\n    }\n  },\n  autoCompleteClose: {\n    position: \"absolute\",\n    right: 0,\n    \"& svg\": {\n      fill: \"#c7c7c7\"\n    }\n  },\n  autoCompletePopper: {\n    \"& fieldset\": {\n      padding: \"10px 18px\",\n      borderRadius: 6,\n      border: \"1px solid #DDDDDD\"\n    },\n    \"& svg\": {\n      fill: \"#DDD\",\n      marginRight: 10\n    }\n  },\n  sponsorJobContainer: {\n    maxWidth: 780,\n    paddingLeft: 30\n  },\n  disabled: {\n    pointerEvents: \"none\",\n    opacity: 0.2\n  },\n  sponsorJobSubTitle: {\n    display: \"block\",\n    marginTop: 20,\n    fontSize: 16,\n    color: \"#939393\"\n  },\n  hireCounter: {\n    display: \"flex\",\n    alignItems: \"center\",\n    \"& > *\": {\n      padding: 12,\n      border: \"1px solid #DDDDDD\",\n      borderRadius: 6,\n      marginRight: 6,\n      color: \"#2557A7\",\n      lineHeight: \"1.5rem\",\n      minWidth: \"50px\",\n      textAlign: \"center\",\n      \"&:last-child\": {\n        marginRight: 0\n      }\n    },\n    \"& > div\": {\n      fontSize: 20\n    }\n  },\n  smallText: {\n    color: \"#939393\",\n    fontSize: 12,\n    display: \"block\",\n    marginTop: 8\n  },\n  mediumText: {\n    color: \"#939393\",\n    fontSize: 14,\n    display: \"block\",\n    marginTop: 14\n  },\n  budgetInput: {\n    display: \"flex\",\n    alignItems: \"center\",\n    flexWrap: \"nowrap\",\n    \"& fieldset\": {\n      border: 0\n    },\n    \"& > *\": {\n      border: \"1px solid #DDDDDD\",\n      borderRight: 0,\n      borderRadius: 0,\n      \"&:first-child\": {\n        borderBottomLeftRadius: 6,\n        borderTopLeftRadius: 6,\n        display: \"flex\",\n        alignSelf: \"stretch\",\n        alignItems: \"center\",\n        fontSize: 12\n      },\n      \"&:last-child\": {\n        borderTopRightRadius: 6,\n        borderBottomRightRadius: 6,\n        borderRight: \"1px solid #DDDDDD\"\n      }\n    }\n  },\n  budgetInutFocused: {\n    border: \"1px solid #DDDDDD !important\"\n  },\n  estimatedResults: {\n    border: \"1px solid #DDDDDD\",\n    borderRadius: 6,\n    padding: 26,\n    \"& h4\": {\n      marginTop: 0,\n      fontSize: 16,\n      fontWeight: \"600\",\n      color: \"#666666\",\n      borderBottom: \"1px solid #F3F3F3\",\n      paddingBottom: 10\n    },\n    \"& h3\": {\n      marginTop: 12,\n      color: \"#2557A7\",\n      fontSize: 20,\n      \"& b\": {\n        fontSize: 26\n      }\n    },\n    \"& span\": {\n      display: \"block\",\n      marginTop: 4,\n      fontSize: 15,\n      color: \"#939393\"\n    }\n  },\n  paragraphTitle: {\n    marginBottom: 10,\n    fontSize: 18\n  },\n  paragraph: {\n    color: \"#939393\",\n    fontSize: 15,\n    \"& ul\": {\n      listStyle: \"disc\",\n      paddingLeft: 20,\n      margin: \"10px 0\"\n    }\n  },\n  error: {\n    display: \"flex\",\n    alignItems: \"center\",\n    flexDirection: \"row\",\n    color: theme.palette.error.main,\n    left: \"25px\",\n    position: \"relative\",\n    width: 0,\n    \"& span\": {\n      position: \"absolute\",\n      whiteSpace: \"nowrap\",\n      left: 30,\n      fontSize: 13,\n      fontWeight: \"400\"\n    },\n    \"& svg\": {\n      \"&:hover\": {\n        cursor: \"auto\"\n      }\n    }\n  },\n  errorOutline: {\n    \"& $error\": {\n      left: 120\n    },\n    \"& fieldset\": {\n      borderLeft: `1px solid ${theme.palette.error.main}`,\n      borderTop: `1px solid ${theme.palette.error.main}`,\n      borderBottom: `1px solid ${theme.palette.error.main}`\n    },\n    \"& button\": {\n      borderTop: `1px solid ${theme.palette.error.main}`,\n      borderBottom: `1px solid ${theme.palette.error.main}`,\n      \"&:last-child\": {\n        borderRight: `1px solid ${theme.palette.error.main}`\n      }\n    }\n  },\n  w200: {\n    maxWidth: 200,\n    minWidth: 200\n  },\n  errorStartDate: {\n    \"& input\": {\n      borderColor: theme.palette.error.main\n    }\n  },\n  errorDescription: {\n    borderColor: theme.palette.error.main\n  },\n  submitButtonContainer: {\n    marginTop: 30,\n    display: \"flex\",\n    justifyContent: \"flex-end\"\n  },\n  menuItem: {\n    fontSize: 14\n  }\n}));\n","var __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nimport React, { useState } from \"react\";\nimport { Button } from \"@material-ui/core\";\nimport AdTable from \"../components/AdTable\";\nimport PropTypes from \"prop-types\";\nimport { withScoutTheme } from \"../../ThemeContext/ThemeContext\";\nimport axios from \"axios\";\nimport useStyles from \"./useStyles\";\nconst ADTYPES = [{\n  id: [\"open\", \"new\"],\n  name: \"Active\"\n}, {\n  id: [\"expired\"],\n  name: \"Expired\"\n}, {\n  id: [\"archived\"],\n  name: \"Archived\"\n}];\nfunction AdList({ job_ads, requestNewAdUrl }) {\n  const [ads, setAds] = useState(job_ads);\n  const [selectedAdType, setSelectedAdType] = useState(ADTYPES[0].id);\n  const classes = useStyles();\n  function getNewAdUrl() {\n    return __async(this, null, function* () {\n      try {\n        const token = document.querySelector('meta[name=\"csrf-token\"]').content;\n        const { data } = yield axios.post(requestNewAdUrl, {\n          authenticity_token: token,\n          headers: {\n            \"Content-Type\": \"x-www-form-urlencoded\"\n          }\n        });\n        window.location = data.url;\n      } catch (e) {\n        console.log(e);\n      }\n    });\n  }\n  return /* @__PURE__ */ React.createElement(\"div\", { className: classes.containerOuter }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.container }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.banner }, /* @__PURE__ */ React.createElement(\"div\", { id: \"indeed-logo\" }), /* @__PURE__ */ React.createElement(\n    Button,\n    {\n      style: { minWidth: 110, fontSize: 12 },\n      disableElevation: true,\n      className: classes.buttonSecondary,\n      onClick: () => getNewAdUrl()\n    },\n    \"New Ad\"\n  )), /* @__PURE__ */ React.createElement(\"div\", { className: classes.toggleButtonGroup }, ADTYPES.map(\n    (type) => /* @__PURE__ */ React.createElement(\n      Button,\n      {\n        key: type.name,\n        disableElevation: true,\n        onClick: () => setSelectedAdType(type.id),\n        className: type.id[0] === selectedAdType[0] ? [classes.buttonPrimary, classes.buttonActive] : classes.buttonGrey\n      },\n      type.name\n    )\n  )), /* @__PURE__ */ React.createElement(\n    AdTable,\n    {\n      jobAds: job_ads,\n      ads: ads.filter((ad) => selectedAdType.includes(ad.status)),\n      setAds\n    }\n  )));\n}\nAdList.propTypes = {\n  job_ads: PropTypes.array.isRequired,\n  requestNewAdUrl: PropTypes.string.isRequired\n};\nexport default withScoutTheme(AdList);\n","import AdList from \"./AdList\";\nexport default AdList;\n","import { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n  container: {\n    background: \"#F3F3F3\",\n    borderRadius: 8,\n    padding: 40,\n    width: \"100%\"\n  },\n  banner: {\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\"\n  },\n  toggleButtonGroup: {\n    borderRadius: 8,\n    margin: \"20px 0\",\n    \"& button\": {\n      padding: \"6px 16px\",\n      borderRadius: 0,\n      textTransform: \"capitalize\",\n      borderRight: \"1px solid #f3f3f3\",\n      \"&:first-child\": {\n        borderTopLeftRadius: 6,\n        borderBottomLeftRadius: 6\n      },\n      \"&:last-child\": {\n        borderTopRightRadius: 6,\n        borderBottomRightRadius: 6,\n        borderRight: 0\n      }\n    }\n  },\n  containerOuter: {\n    marginTop: 40,\n    background: \"#FFF\",\n    borderRadius: 8,\n    padding: 40,\n    display: \"flex\",\n    justifyContent: \"center\",\n    \"& button:focus\": {\n      outline: 0\n    }\n  },\n  buttonPrimary: {\n    borderRadius: 6,\n    padding: \"14px 30px\",\n    color: \"#FFF\",\n    fontWeight: \"600\",\n    fontSize: 14,\n    background: theme.palette.primary.main,\n    \"&:hover\": {\n      background: theme.palette.primary.dark\n    }\n  },\n  buttonPrimaryLight: {\n    borderRadius: 6,\n    padding: \"14px 30px\",\n    background: theme.palette.primary.light,\n    color: theme.palette.primary\n  },\n  buttonSecondary: {\n    borderRadius: 6,\n    padding: \"14px 30px\",\n    color: \"#FFF\",\n    fontWeight: \"600\",\n    fontSize: 14,\n    background: theme.palette.secondary.main,\n    \"&:hover\": {\n      background: theme.palette.secondary.dark\n    }\n  },\n  buttonSecondaryLight: {\n    borderRadius: 6,\n    padding: \"14px 30px\",\n    background: theme.palette.secondary.light,\n    color: theme.palette.secondary.main,\n    \"&:hover\": {\n      background: theme.palette.secondary.main,\n      color: \"#FFF\"\n    }\n  },\n  buttonRed: {\n    borderRadius: 6,\n    padding: \"14px 30px\",\n    color: \"#FFF\",\n    fontWeight: \"600\",\n    fontSize: 14,\n    background: theme.palette.error.main,\n    \"&:hover\": {\n      background: theme.palette.error.dark,\n      color: \"#FFF\"\n    }\n  },\n  buttonRedLight: {\n    padding: \"14px 30px\",\n    background: theme.palette.error.light,\n    color: theme.palette.error.main,\n    \"&:hover\": {\n      background: theme.palette.error.main,\n      color: \"#FFF\"\n    }\n  },\n  buttonGreen: {\n    padding: \"14px 30px\",\n    background: theme.palette.success.main\n  },\n  buttonGreenLight: {\n    padding: \"14px 30px\",\n    background: theme.palette.success.light,\n    color: theme.palette.success.main,\n    \"&:hover\": {\n      background: theme.palette.success.main,\n      color: \"#FFF\"\n    }\n  },\n  buttonWhite: {\n    padding: \"14px 30px\",\n    background: \"#FFF\",\n    color: theme.palette.secondary.main,\n    \"&:hover\": {\n      background: theme.palette.secondary.main,\n      color: \"#FFF\"\n    }\n  },\n  buttonGrey: {\n    padding: \"14px 30px\",\n    background: \"#FFF\",\n    color: \"#DDDDDD\",\n    \"&:hover\": {\n      background: theme.palette.secondary.main,\n      color: \"#FFF\"\n    }\n  },\n  buttonActive: {\n    color: theme.palette.secondary.main\n  },\n  disableIcon: {\n    pointerEvents: \"none\",\n    opacity: 0.5\n  }\n}));\n","var __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nimport React, { useState, useEffect } from \"react\";\nimport {\n  Grid,\n  FormControl,\n  FormLabel,\n  FormControlLabel,\n  Checkbox,\n  IconButton,\n  TextField,\n  Select,\n  InputAdornment,\n  MenuItem,\n  Button,\n  CircularProgress,\n  Dialog\n} from \"@material-ui/core\";\nimport { withScoutTheme } from \"../../ThemeContext/ThemeContext\";\nimport useStyles from \"../AdEditor/useStyles\";\nimport useSharedStyles from \"../AdEditor/useStyles\";\nimport axios from \"axios\";\nimport PropTypes from \"prop-types\";\nimport DayPickerInput from \"react-day-picker/DayPickerInput\";\nimport AddIcon from \"@material-ui/icons/Add\";\nimport RemoveIcon from \"@material-ui/icons/Remove\";\nimport CheckCircleIcon from \"@material-ui/icons/CheckCircle\";\nimport { formatDate } from \"react-day-picker/moment\";\nconst budgetTypes = [[\"One time\", \"one_time\"], [\"Monthly Average*\", \"monthly\"]];\nfunction SponsoredJobEditor({ sponsoredAd, apiKey, accessToken, jobId }) {\n  const [isAdvanced, setIsAdvanced] = useState(false);\n  const [costPerClick, setCostPerClick] = useState(0.25);\n  const [isEndDate, setIsEndDate] = useState(!!sponsoredAd.end_date);\n  const [isSubmitting, setIsSubmitting] = useState(false);\n  const [isSuccessDialogOpen, setIsSuccessDialogOpen] = useState(false);\n  const [budgetType, setBudgetType] = useState(budgetTypes.find((budget2) => budget2[1] === sponsoredAd.budget_type) || budgetTypes[0]);\n  const [budget, setBudget] = useState(sponsoredAd.budget_amount);\n  const [hireCount, setHireCount] = useState(sponsoredAd.hires_number);\n  const [endDate, setEndDate] = useState(sponsoredAd.end_date || \"\");\n  function handleSubmit() {\n    return __async(this, null, function* () {\n      setIsSubmitting(true);\n      try {\n        yield axios.put(`/api/v4/indeed/job_ads/${sponsoredAd.job_ad_id}/sponsored_job`, {\n          indeed_access_token: accessToken,\n          sponsored_job: {\n            budget_type: budgetType[1],\n            budget_amount: budget,\n            hires_number: hireCount,\n            end_date: endDate ? formatDate(endDate, \"YYYY-MM-DD\") : null\n          }\n        }, {\n          headers: {\n            \"X-api-authenticate\": apiKey\n          }\n        });\n      } catch (err) {\n        console.log(err);\n      } finally {\n        setIsSubmitting(false);\n        setIsSuccessDialogOpen(true);\n      }\n    });\n  }\n  const classes = useStyles();\n  const sharedClasses = useSharedStyles();\n  useEffect(() => {\n    window.scrollTo(0, 0);\n  }, []);\n  return /* @__PURE__ */ React.createElement(\"div\", { className: classes.containerOuter }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.container }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.stepContainer }, /* @__PURE__ */ React.createElement(\"h4\", null, \"Sponsor Job\"), /* @__PURE__ */ React.createElement(\"span\", { className: classes.sponsorJobSubTitle }, \"Choosing the \", /* @__PURE__ */ React.createElement(\"b\", null, \"recommended budget\"), \" means your listing will get \", /* @__PURE__ */ React.createElement(\"b\", null, \"better visibility\"), \" and show up more often in search results, making it easier for relevant job seekers to find and apply to your job.\", /* @__PURE__ */ React.createElement(\"br\", null), /* @__PURE__ */ React.createElement(\"br\", null), \"All currency values will use the currency defined in your Indeed account.\"), /* @__PURE__ */ React.createElement(\"div\", null, /* @__PURE__ */ React.createElement(\"div\", { className: `${classes.previewType} ${isAdvanced ? \"mobile\" : \"\"}` }, /* @__PURE__ */ React.createElement(\"div\", { onClick: () => setIsAdvanced(false) }, \"Simple\"), /* @__PURE__ */ React.createElement(\"div\", { onClick: () => {\n    setIsAdvanced(true);\n    setBudgetType(budgetTypes[0]);\n  } }, \"Advanced\")), /* @__PURE__ */ React.createElement(Grid, { container: true, className: classes.sponsorJobContainer }, isAdvanced ? /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\"div\", { className: classes.formControl }, /* @__PURE__ */ React.createElement(\"h4\", { className: classes.paragraphTitle }, \"Job Budget\"), /* @__PURE__ */ React.createElement(\"div\", { className: classes.paragraph }, \"Instead of paying a large amount up-front to post your job, choose a small amount you are willing to pay each time a job seeker clicks to view your job (the Maximum cost per click or Max CPC).\", /* @__PURE__ */ React.createElement(\"ul\", null, /* @__PURE__ */ React.createElement(\"li\", null, \"Most clicks on Indeed cost between $0.20 - $1.20 (USD)\"), /* @__PURE__ */ React.createElement(\"li\", null, \"Jobs with higher Max CPCs tend to get seen more often\"), /* @__PURE__ */ React.createElement(\"li\", null, \"You can change your Max CPC at any time\")))), /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl} ${classes.medium}` }, /* @__PURE__ */ React.createElement(FormLabel, { required: true, className: classes.label }, \"Maximum cost per click\"), /* @__PURE__ */ React.createElement(Grid, { container: true, classes: { root: `${classes.controlledNumberInput} ${classes.budgetInput}` } }, /* @__PURE__ */ React.createElement(\n    TextField,\n    {\n      className: `${classes.textField} ${classes.inputAdornment}`,\n      variant: \"outlined\",\n      value: costPerClick,\n      placeholder: \"0\",\n      InputProps: {\n        classes: { focused: classes.budgetInputFocused },\n        startAdornment: /* @__PURE__ */ React.createElement(InputAdornment, { position: \"start\" }, \"$\")\n      },\n      onChange: (e) => {\n        if (!e.target.value) setCostPerClick(null);\n        else if (/^\\d+(\\.\\d{0,2})?$/.test(e.target.value)) setCostPerClick(e.target.value);\n      }\n    }\n  ))), /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl} ${classes.medium}` }, /* @__PURE__ */ React.createElement(FormLabel, { required: true, className: classes.label }, \"Job budget\"), /* @__PURE__ */ React.createElement(\"div\", { className: classes.subLabel }, \"Choose the total amount you want to spend promoting your job on Indeed. You can change your job budget at any time.\"), /* @__PURE__ */ React.createElement(Grid, { container: true, classes: { root: `${classes.controlledNumberInput} ${classes.budgetInput}` } }, /* @__PURE__ */ React.createElement(\n    TextField,\n    {\n      className: `${classes.textField} ${classes.inputAdornment}`,\n      variant: \"outlined\",\n      value: Number(budget).toLocaleString(),\n      InputProps: {\n        startAdornment: /* @__PURE__ */ React.createElement(InputAdornment, { position: \"start\" }, \"$\")\n      },\n      onChange: (e) => setBudget(e.target.value ? parseFloat(e.target.value.split(\",\").join(\"\")) : 0)\n    }\n  ))), /* @__PURE__ */ React.createElement(\"span\", { className: classes.mediumText }, \"You'll get at least \", parseInt(budget / costPerClick), \" clicks on your job if you use your entire budget.\")) : /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 8 }, /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl}` }, /* @__PURE__ */ React.createElement(FormLabel, { focused: false, required: true, className: classes.label }, \"How many people do you need to hire?\"), /* @__PURE__ */ React.createElement(Grid, { className: classes.hireCounter }, /* @__PURE__ */ React.createElement(IconButton, { disabled: hireCount <= 0, onClick: () => setHireCount(hireCount - 1) }, /* @__PURE__ */ React.createElement(RemoveIcon, null)), /* @__PURE__ */ React.createElement(\"div\", null, hireCount), /* @__PURE__ */ React.createElement(IconButton, { onClick: () => setHireCount(hireCount + 1) }, /* @__PURE__ */ React.createElement(AddIcon, null)))), /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: classes.formControl }, /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: classes.label }, \"Job budget\"), /* @__PURE__ */ React.createElement(\"span\", { className: classes.subLabel }, \"Recommended budget (value) based on your job title and location.\"), /* @__PURE__ */ React.createElement(Grid, { container: true, classes: { root: `${classes.controlledNumberInput} ${classes.budgetInput}` } }, /* @__PURE__ */ React.createElement(\n    TextField,\n    {\n      className: `${classes.textField} ${classes.inputAdornment}`,\n      variant: \"outlined\",\n      value: Number(budget).toLocaleString(),\n      InputProps: {\n        startAdornment: /* @__PURE__ */ React.createElement(InputAdornment, { position: \"start\" }, \"$\")\n      },\n      onChange: (e) => setBudget(e.target.value ? parseFloat(e.target.value.split(\",\").join(\"\")) : 0)\n    }\n  ), /* @__PURE__ */ React.createElement(\n    Select,\n    {\n      classes: { select: classes.input, selectMenu: classes.menuItem },\n      variant: \"outlined\",\n      value: budgetType,\n      onChange: (e) => setBudgetType(e.target.value),\n      displayEmpty: true,\n      renderValue: (value) => value[0]\n    },\n    budgetTypes.map(\n      (type) => /* @__PURE__ */ React.createElement(MenuItem, { classes: { root: classes.menuItem }, key: type[1], value: type }, type[0])\n    )\n  )), /* @__PURE__ */ React.createElement(\"span\", { className: classes.smallText }, \"You can change the amount, pause or close your job at any time.\")))), /* @__PURE__ */ React.createElement(Grid, { container: true, style: { marginTop: 35 } }, /* @__PURE__ */ React.createElement(\n    FormControlLabel,\n    {\n      label: \"Set an end date (optional)\",\n      control: /* @__PURE__ */ React.createElement(\n        Checkbox,\n        {\n          checked: isEndDate,\n          onChange: () => setIsEndDate(!isEndDate)\n        }\n      )\n    }\n  )), isEndDate && /* @__PURE__ */ React.createElement(\n    DayPickerInput,\n    {\n      value: endDate,\n      onDayChange: (day) => setEndDate(formatDate(day, \"LL\")),\n      classNames: { container: `${classes.calendarContainer} ${classes.small}`, overlay: {} },\n      format: \"LL\",\n      placeholder: \"Select a date\"\n    }\n  ), /* @__PURE__ */ React.createElement(Grid, { container: true, style: { marginTop: 15 }, direction: \"column\" }, /* @__PURE__ */ React.createElement(\"span\", { className: classes.smallText }, \"* Actual daily spend may vary.\"), /* @__PURE__ */ React.createElement(\"span\", { className: classes.smallText }, \"** Based on Indeed's past results. This is not a guarantee of future performance.\"))), /* @__PURE__ */ React.createElement(\"div\", { className: classes.submitButtonContainer }, /* @__PURE__ */ React.createElement(\n    Button,\n    {\n      disableElevation: true,\n      color: \"secondary\",\n      onClick: handleSubmit,\n      disabled: !budget || !hireCount\n    },\n    \"Sponsor job\",\n    isSubmitting && /* @__PURE__ */ React.createElement(CircularProgress, { style: { marginLeft: 6 }, size: 20, color: \"inherit\" })\n  ))))), /* @__PURE__ */ React.createElement(Dialog, { open: isSuccessDialogOpen, onClose: () => window.history.back(), classes: { paper: classes.successDialog } }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.successCheck }, /* @__PURE__ */ React.createElement(CheckCircleIcon, { color: \"primary\", fontSize: \"large\" })), /* @__PURE__ */ React.createElement(\"h4\", null, \"Success\"), /* @__PURE__ */ React.createElement(\"span\", null, \"Your ad has been sponsored\"), /* @__PURE__ */ React.createElement(\"div\", { className: classes.dialogButtonContainer, style: { marginTop: 20 } }, /* @__PURE__ */ React.createElement(\n    Button,\n    {\n      disableElevation: true,\n      color: \"secondary\",\n      className: sharedClasses.buttonSecondary,\n      onClick: () => window.location = `/admin/jobs/${jobId}/job_ads`\n    },\n    \"Back to ads\"\n  ))));\n}\nSponsoredJobEditor.propTypes = {\n  sponsoredAd: PropTypes.object.isRequired,\n  apiKey: PropTypes.string.isRequired,\n  accessToken: PropTypes.string.isRequired,\n  jobId: PropTypes.number.isRequired\n};\nexport default withScoutTheme(SponsoredJobEditor);\n","import SponsoredJobEditor from \"./SponsoredJobEditor\";\nexport default SponsoredJobEditor;\n","var __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nimport React, { useState, useEffect } from \"react\";\nimport useStyles from \"./useStyles\";\nimport sharedStyles from \"../../AdList/useStyles\";\nimport PropTypes from \"prop-types\";\nimport { Button, IconButton, Snackbar, Tooltip } from \"@material-ui/core\";\nimport moment from \"moment\";\nimport axios from \"axios\";\nimport GenericDialog from \"../GenericDialog\";\nimport CancelIcon from \"@material-ui/icons/Cancel\";\nimport CheckCircleIcon from \"@material-ui/icons/CheckCircle\";\nimport EditIcon from \"@material-ui/icons/Edit\";\nimport FileCopyIcon from \"@material-ui/icons/FileCopy\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\nimport ArchiveIcon from \"@material-ui/icons/Archive\";\nfunction AdTable({ jobAds, ads, setAds }) {\n  const [token, setToken] = useState(null);\n  const [dialogUrl, setDialogUrl] = useState(\"\");\n  const [dialogTitle, setDialogTitle] = useState(\"\");\n  const [dialogDescription, setDialogDescription] = useState(\"\");\n  const [dialogButtonText, setDialogButtonText] = useState(\"\");\n  const [dialogButtonCallback, setDialogButtonCallback] = useState(null);\n  const [dialogLoading, setDialogLoading] = useState(false);\n  const [dialogOpen, setDialogOpen] = useState(false);\n  const [isSnackOpen, setIsSnackOpen] = useState(false);\n  const [snackMessage, setSnackMessage] = useState(\"\");\n  const classes = useStyles();\n  const sharedClasses = sharedStyles();\n  function handleSnack(message) {\n    setIsSnackOpen(true);\n    setSnackMessage(message);\n  }\n  useEffect(() => {\n    setToken(document.querySelector('meta[name=\"csrf-token\"]').content);\n  }, []);\n  function handleButtonStyle(ad) {\n    switch (ad.status) {\n      case \"open\":\n        return {\n          text: \"Expire Ad\",\n          class: sharedClasses.buttonRedLight,\n          callback: () => {\n            setDialogUrl(ad.indeed_urls.expire);\n            setDialogTitle(\"Are you sure you want to expire this ad?\");\n            setDialogDescription(\"This will remove it from Indeed immediately. To repost this ad later you will be charged for a new ad.\");\n            setDialogButtonText(\"Expire now\");\n            setDialogButtonCallback(() => handleExpire);\n            setDialogOpen(true);\n          }\n        };\n      case \"new\":\n        return {\n          text: \"Continue Draft\",\n          class: sharedClasses.buttonGreenLight,\n          callback: () => handleEdit(ad.indeed_urls.edit)\n        };\n      default:\n        return {\n          text: \"Clone Ad\",\n          class: sharedClasses.buttonSecondaryLight,\n          callback: () => {\n            setDialogUrl(ad.indeed_urls.copy);\n            setDialogTitle(\"Are you sure you want to clone this ad?\");\n            setDialogDescription(\"You will have to repost for your ad to be active on Indeed.\");\n            setDialogButtonText(\"Clone ad\");\n            setDialogButtonCallback(() => handleCopy);\n            setDialogOpen(true);\n          }\n        };\n    }\n  }\n  function handleEdit(url) {\n    return __async(this, null, function* () {\n      window.location = url;\n    });\n  }\n  function handleExpire(url) {\n    return __async(this, null, function* () {\n      setDialogLoading(true);\n      try {\n        const { data } = yield axios.put(`${url}`, {\n          authenticity_token: token\n        });\n        handleSnack(`${data.title} has been expired`);\n        const newAds = [...jobAds];\n        newAds[newAds.findIndex((ad) => ad.id === data.id)].status = \"expired\";\n        setAds(newAds);\n      } catch (e) {\n        console.log(e);\n        handleSnack(\"Could not expire ad\");\n      } finally {\n        setDialogLoading(false);\n        setDialogUrl(null);\n        setDialogOpen(false);\n      }\n    });\n  }\n  function handleArchive(url) {\n    return __async(this, null, function* () {\n      setDialogLoading(true);\n      try {\n        const { data } = yield axios.put(`${url}`, {\n          authenticity_token: token\n        });\n        const newAds = [...jobAds];\n        newAds[newAds.findIndex((ad) => ad.id === data.id)].status = \"archived\";\n        setAds(newAds);\n        handleSnack(`${data.title} has been archived`);\n      } catch (e) {\n        console.log(e);\n        handleSnack(\"Could not archive ad\");\n      } finally {\n        setDialogLoading(false);\n        setDialogUrl(null);\n        setDialogOpen(false);\n      }\n    });\n  }\n  function handleDelete(url) {\n    return __async(this, null, function* () {\n      setDialogLoading(true);\n      try {\n        const { data } = yield axios.delete(`${url}`, {\n          data: {\n            authenticity_token: token\n          }\n        });\n        handleSnack(`${data.title} has been deleted`);\n        setAds(jobAds.filter((ad) => ad.id !== data.id));\n      } catch (e) {\n        console.log(e);\n        handleSnack(\"Could not delete ad\");\n      } finally {\n        setDialogLoading(false);\n        setDialogUrl(null);\n        setDialogOpen(false);\n      }\n    });\n  }\n  function handleCopy(url) {\n    return __async(this, null, function* () {\n      setDialogLoading(true);\n      try {\n        const { data } = yield axios.get(`${url}?operation=clone`);\n        window.location = data.url;\n      } catch (e) {\n        console.log(e);\n        handleSnack(\"Could not clone ad\");\n      } finally {\n        setDialogLoading(false);\n        setDialogUrl(null);\n        setDialogOpen(false);\n      }\n    });\n  }\n  return /* @__PURE__ */ React.createElement(\"div\", { className: classes.table }, /* @__PURE__ */ React.createElement(\"div\", { className: `${classes.row} ${classes.rowHeader}` }, /* @__PURE__ */ React.createElement(\"span\", null, \"Job\"), /* @__PURE__ */ React.createElement(\"span\", null, \"Creation Date\"), /* @__PURE__ */ React.createElement(\"span\", null, \"Created By\"), /* @__PURE__ */ React.createElement(\"span\", null, \"Expiry\"), /* @__PURE__ */ React.createElement(\"span\", { className: classes.center }, \"Active on Indeed\"), /* @__PURE__ */ React.createElement(\"span\", { className: classes.center }, \"Sponsored\"), /* @__PURE__ */ React.createElement(\"span\", null), /* @__PURE__ */ React.createElement(\"span\", null)), ads.length > 0 ? ads.map(\n    (ad) => /* @__PURE__ */ React.createElement(\"div\", { key: ad.id, className: classes.row }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.title }, ad.title), /* @__PURE__ */ React.createElement(\"div\", null, moment(ad.created_at).format(\"D MMM YYYY\")), /* @__PURE__ */ React.createElement(\"div\", null, ad.created_by), /* @__PURE__ */ React.createElement(\"div\", null, ad.expiry ? moment(ad.expiry).format(\"D MMM YYYY\") : \"No expiry\"), /* @__PURE__ */ React.createElement(\"div\", { className: `${classes.icon} ${classes.center}` }, ad.status === \"open\" ? /* @__PURE__ */ React.createElement(CheckCircleIcon, { className: classes.iconGreen }) : /* @__PURE__ */ React.createElement(CancelIcon, { className: classes.iconRed })), /* @__PURE__ */ React.createElement(\"div\", { className: `${classes.icon} ${classes.center}` }, ad.sponsored ? /* @__PURE__ */ React.createElement(CheckCircleIcon, { className: classes.iconGreen }) : /* @__PURE__ */ React.createElement(\n      \"div\",\n      {\n        onClick: () => window.location = `/admin/indeed/job_ads/${ad.id}/sponsored_job/edit/`,\n        className: classes.sponsorText\n      },\n      \"Sponsor Ad\"\n    )), /* @__PURE__ */ React.createElement(\"div\", { className: classes.center }, /* @__PURE__ */ React.createElement(\n      Button,\n      {\n        style: { minWidth: 150, padding: \"6px 16px\" },\n        disableElevation: true,\n        size: \"large\",\n        classes: { root: handleButtonStyle(ad).class },\n        onClick: handleButtonStyle(ad).callback\n      },\n      handleButtonStyle(ad).text\n    )), /* @__PURE__ */ React.createElement(\"div\", { className: classes.actionsContainer }, /* @__PURE__ */ React.createElement(Tooltip, { title: \"Edit\" }, /* @__PURE__ */ React.createElement(\n      IconButton,\n      {\n        className: `${[\"expired\", \"archived\"].includes(ad.status) ? sharedClasses.disableIcon : \"\"}`,\n        onClick: () => handleEdit(ad.indeed_urls.edit)\n      },\n      /* @__PURE__ */ React.createElement(EditIcon, { fontSize: \"small\", className: classes.iconGrey })\n    )), /* @__PURE__ */ React.createElement(Tooltip, { title: \"Clone\" }, /* @__PURE__ */ React.createElement(\n      IconButton,\n      {\n        className: `${[\"expired\", \"archived\"].includes(ad.status) ? sharedClasses.disableIcon : \"\"}`,\n        onClick: () => {\n          setDialogUrl(ad.indeed_urls.copy);\n          setDialogTitle(\"Are you sure you want to clone this ad?\");\n          setDialogDescription(\"You will have to repost for your ad to be active on Indeed.\");\n          setDialogButtonText(\"Clone ad\");\n          setDialogButtonCallback(() => handleCopy);\n          setDialogOpen(true);\n        }\n      },\n      /* @__PURE__ */ React.createElement(FileCopyIcon, { className: classes.iconGrey })\n    )), ad.status === \"expired\" ? /* @__PURE__ */ React.createElement(Tooltip, { title: \"Archive\" }, /* @__PURE__ */ React.createElement(IconButton, null, /* @__PURE__ */ React.createElement(\n      ArchiveIcon,\n      {\n        className: classes.iconRed,\n        onClick: () => {\n          setDialogUrl(ad.indeed_urls.archive);\n          setDialogTitle(\"Are you sure you want to archive this ad?\");\n          setDialogDescription(null);\n          setDialogButtonText(\"Archive now\");\n          setDialogButtonCallback(() => handleArchive);\n          setDialogOpen(true);\n        }\n      }\n    ))) : /* @__PURE__ */ React.createElement(Tooltip, { title: \"Delete\" }, /* @__PURE__ */ React.createElement(\n      IconButton,\n      {\n        disabled: ad.status === \"open\",\n        className: `${[\"open\", \"archived\"].includes(ad.status) ? sharedClasses.disableIcon : \"\"}`,\n        onClick: () => {\n          setDialogUrl(ad.indeed_urls.delete);\n          setDialogTitle(\"Are you sure you want to delete this ad?\");\n          setDialogDescription(\"Your job ad will be permanently deleted and you will not be able to recover your ad details.\");\n          setDialogButtonText(\"Delete ad\");\n          setDialogButtonCallback(() => handleDelete);\n          setDialogOpen(true);\n        }\n      },\n      /* @__PURE__ */ React.createElement(DeleteIcon, { className: classes.iconRed })\n    ))))\n  ) : /* @__PURE__ */ React.createElement(\"div\", { className: classes.row }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.title }, \"No ads to display\")), /* @__PURE__ */ React.createElement(\n    GenericDialog,\n    {\n      url: dialogUrl,\n      title: dialogTitle,\n      description: dialogDescription,\n      buttonText: dialogButtonText,\n      buttonCallback: dialogButtonCallback,\n      callbackLoading: dialogLoading,\n      isDialogOpen: dialogOpen,\n      setDialogOpen\n    }\n  ), /* @__PURE__ */ React.createElement(\n    Snackbar,\n    {\n      open: isSnackOpen,\n      onClose: () => setIsSnackOpen(false),\n      message: snackMessage\n    }\n  ));\n}\nAdTable.propTypes = {\n  jobAds: PropTypes.array.isRequired,\n  ads: PropTypes.array.isRequired,\n  setAds: PropTypes.func.isRequired\n};\nexport default AdTable;\n","import AdTable from \"./AdTable\";\nexport default AdTable;\n","import { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n  table: {\n    display: \"table\",\n    borderCollapse: \"collapse\",\n    borderSpacing: 0,\n    width: \"100%\",\n    background: \"#FFF\",\n    borderRadius: 8\n  },\n  rowHeader: {\n    \"& span\": {\n      fontSize: 14,\n      fontWeight: \"600\",\n      color: theme.palette.primary.main\n    }\n  },\n  row: {\n    display: \"table-row-group\",\n    width: \"100%\",\n    borderBottom: \"1px solid #f3f3f3\",\n    \"& > *\": {\n      padding: 24,\n      paddingRight: 0,\n      display: \"table-cell\",\n      fontSize: 14,\n      \"&:first-child\": {\n        paddingLeft: 44\n      },\n      \"&:last-child\": {\n        paddingRight: 44\n      }\n    }\n  },\n  actionsContainer: {\n    whiteSpace: \"nowrap\",\n    textAlign: \"right\"\n  },\n  title: {\n    color: \"#666666\",\n    fontWeight: \"600\"\n  },\n  center: {\n    textAlign: \"center\"\n  },\n  iconGreen: {\n    color: theme.palette.success.main\n  },\n  iconRed: {\n    color: theme.palette.error.main\n  },\n  iconGrey: {\n    color: \"#666666\"\n  },\n  sponsorText: {\n    textDecoration: \"underline\",\n    \"&:hover\": {\n      cursor: \"pointer\"\n    }\n  }\n}));\n","import React from \"react\";\nimport useStyles from \"../../AdEditor/useStyles\";\nimport sharedStyles from \"../../AdList/useStyles\";\nimport PropTypes from \"prop-types\";\nimport { Dialog, Button, CircularProgress } from \"@material-ui/core\";\nfunction GenericDialog({ url, title, description, buttonText, buttonCallback, callbackLoading, isDialogOpen, setDialogOpen }) {\n  const classes = useStyles();\n  const sharedClasses = sharedStyles();\n  return /* @__PURE__ */ React.createElement(Dialog, { open: isDialogOpen, onClose: () => setDialogOpen(false), classes: { paper: classes.dialog } }, /* @__PURE__ */ React.createElement(\"h4\", null, title), description && /* @__PURE__ */ React.createElement(\"span\", null, description), /* @__PURE__ */ React.createElement(\"div\", { className: classes.dialogButtonContainer }, /* @__PURE__ */ React.createElement(\n    Button,\n    {\n      disableElevation: true,\n      className: sharedClasses.buttonSecondaryLight,\n      onClick: () => setDialogOpen(false),\n      style: { padding: \"10px 30px\" }\n    },\n    \"Cancel\"\n  ), /* @__PURE__ */ React.createElement(\n    Button,\n    {\n      disableElevation: true,\n      className: buttonText === \"Clone ad\" ? sharedClasses.buttonSecondary : sharedClasses.buttonRed,\n      onClick: () => buttonCallback(url),\n      style: { padding: \"10px 30px\" }\n    },\n    callbackLoading ? /* @__PURE__ */ React.createElement(CircularProgress, { size: 20, color: \"inherit\" }) : buttonText\n  )));\n}\nGenericDialog.propTypes = {\n  url: PropTypes.string.isRequired,\n  title: PropTypes.string.isRequired,\n  description: PropTypes.string.isRequired,\n  buttonText: PropTypes.string.isRequired,\n  buttonCallback: PropTypes.func,\n  callbackLoading: PropTypes.bool.isRequired,\n  isDialogOpen: PropTypes.bool.isRequired,\n  setDialogOpen: PropTypes.func.isRequired\n};\nexport default GenericDialog;\n","import GenericDialog from \"./GenericDialog\";\nexport default GenericDialog;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { ButtonBase, Paper, Box } from \"@mui/material\";\nimport TrendingDownIcon from \"@mui/icons-material/TrendingDown\";\nimport TrendingUpIcon from \"@mui/icons-material/TrendingUp\";\nimport TrendingFlatIcon from \"@mui/icons-material/TrendingFlat\";\nimport { getClasses } from \"./styles\";\nexport default function KpiCard(props) {\n  const { description, indicator, direction, url } = props;\n  const classes = getClasses(props);\n  const TRENDING_ICONS = {\n    up: /* @__PURE__ */ React.createElement(TrendingUpIcon, { sx: classes.trendingIcon }),\n    down: /* @__PURE__ */ React.createElement(TrendingDownIcon, { sx: classes.trendingIcon }),\n    steady: /* @__PURE__ */ React.createElement(TrendingFlatIcon, { sx: classes.trendingIcon })\n  };\n  return /* @__PURE__ */ React.createElement(ButtonBase, { onClick: url ? () => location.href = url : void 0 }, /* @__PURE__ */ React.createElement(Paper, { sx: classes.card }, /* @__PURE__ */ React.createElement(Box, { sx: classes.cardImageContainer }, /* @__PURE__ */ React.createElement(Box, { sx: classes.cardImage })), /* @__PURE__ */ React.createElement(Box, { display: \"flex\", flexDirection: \"column\", alignItems: \"flex-start\" }, /* @__PURE__ */ React.createElement(Box, { display: \"flex\" }, /* @__PURE__ */ React.createElement(\n    Box,\n    {\n      component: \"span\",\n      sx: classes.indicator,\n      style: { fontSize: indicator ? \"3rem\" : \"2rem\" }\n    },\n    indicator || \"No Data\"\n  )), /* @__PURE__ */ React.createElement(Box, { component: \"h3\", sx: classes.description }, description)), /* @__PURE__ */ React.createElement(Box, { flex: 1 }), TRENDING_ICONS[direction]));\n}\nKpiCard.propTypes = {\n  description: PropTypes.string.isRequired,\n  indicator: PropTypes.string,\n  url: PropTypes.string,\n  imageUrl: PropTypes.string.isRequired,\n  status: PropTypes.string.isRequired,\n  direction: PropTypes.string\n};\n","import KpiCard from \"./KpiCard\";\nexport default KpiCard;\n","import { theme } from \"../../ThemeContext/ThemeObject\";\nconst STATUS_COLOR = {\n  good: \"#4ED182\",\n  bad: \"#FF2121\",\n  average: \"#FF981F\"\n};\nexport const getClasses = (props) => {\n  return {\n    card: {\n      borderLeft: \"4px solid\",\n      borderLeftColor: STATUS_COLOR[props.status],\n      display: \"flex\",\n      alignItems: \"center\",\n      padding: \"16px 18px\",\n      height: \"124px\",\n      width: \"296px\"\n    },\n    cardImage: {\n      height: \"32px\",\n      width: \"32px\",\n      margin: \"12px\",\n      backgroundPosition: \"center\",\n      backgroundSize: \"contain\",\n      backgroundRepeat: \"no-repeat\",\n      backgroundImage: `url(${props.imageUrl})`\n    },\n    cardImageContainer: {\n      backgroundColor: STATUS_COLOR[props.status] || theme.palette.common.black,\n      borderRadius: \"50%\",\n      marginRight: \"24px\"\n    },\n    description: {\n      marginTop: \"10px\",\n      fontSize: \"0.8rem\",\n      color: \"#878787\",\n      maxHeight: \"1rem\",\n      textAlign: \"left\"\n    },\n    indicator: {\n      height: \"36px\",\n      fontWeight: \"bold\",\n      position: \"relative\",\n      lineHeight: \"36px\",\n      color: STATUS_COLOR[props.status]\n    },\n    kpiIcon: {\n      height: \"20px\",\n      width: \"20px\",\n      backgroundPosition: \"center\",\n      backgroundSize: \"cover\",\n      marginLeft: \"8px\"\n    },\n    trendingIcon: {\n      color: STATUS_COLOR[props.directionStatus],\n      fontSize: \"40px !important\"\n    },\n    cardInner: {\n      display: \"flex\",\n      alignItems: \"center\",\n      width: \"100%\"\n    }\n  };\n};\n","var __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nimport React, { useEffect, useState } from \"react\";\nimport ReactLoading from \"react-loading\";\nimport Api from \"../../lib/Api\";\nimport KpiCard from \"./KpiCard\";\nimport { Button, Grid, Box } from \"@mui/material\";\nimport SettingsIcon from \"@mui/icons-material/Settings\";\nimport KpiSettings from \"./KpiSettings\";\nimport { classes } from \"./styles\";\nfunction KpiDashboard() {\n  const [kpiCategories, setCategories] = useState(null);\n  const [settingsOpen, setSettingsOpen] = useState(false);\n  function getDashboard() {\n    return __async(this, null, function* () {\n      setCategories(null);\n      const response = yield Api.getDashboard();\n      setCategories(response);\n    });\n  }\n  useEffect(() => {\n    getDashboard();\n  }, []);\n  if (!kpiCategories) return /* @__PURE__ */ React.createElement(Box, { mb: 4 }, /* @__PURE__ */ React.createElement(\n    ReactLoading,\n    {\n      type: \"cylon\",\n      color: \"blue\"\n    }\n  ));\n  return /* @__PURE__ */ React.createElement(Box, { sx: classes.root }, /* @__PURE__ */ React.createElement(Box, { sx: classes.manageMetrics }, /* @__PURE__ */ React.createElement(\n    Button,\n    {\n      sx: classes.button,\n      variant: \"contained\",\n      startIcon: /* @__PURE__ */ React.createElement(SettingsIcon, null),\n      onClick: () => setSettingsOpen(true)\n    },\n    \"Manage Metrics\"\n  )), kpiCategories.map(({ title, cards }) => /* @__PURE__ */ React.createElement(Box, { mb: 4, key: title }, /* @__PURE__ */ React.createElement(Box, { component: \"h2\", sx: classes.category }, title), /* @__PURE__ */ React.createElement(Grid, { container: true, spacing: 2 }, cards.map((cardProps) => /* @__PURE__ */ React.createElement(Grid, { item: true, key: cardProps.description }, /* @__PURE__ */ React.createElement(KpiCard, __spreadValues({}, cardProps))))))), /* @__PURE__ */ React.createElement(\n    KpiSettings,\n    {\n      open: settingsOpen,\n      setOpen: setSettingsOpen,\n      getDashboard\n    }\n  ));\n}\nexport default KpiDashboard;\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nimport React, { useState, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Dialog, DialogTitle, DialogContent, CircularProgress, Box, Typography, Grid, DialogActions, Button } from \"@mui/material\";\nimport { capitalCase } from \"change-case\";\nimport Api from \"../../../lib/Api\";\nimport KpiSettingsCard from \"./KpiSettingsCard\";\nimport { withFormValidation } from \"react-form-context-validation\";\nimport { classes } from \"./styles\";\nfunction KpiSettings({ open, setOpen, getDashboard }) {\n  const [kpiSettings, setSettings] = useState(null);\n  const [saving, setSaving] = useState(false);\n  function fetchSettings() {\n    return __async(this, null, function* () {\n      const { settings } = yield Api.getDashboardSettings();\n      setSettings(settings);\n    });\n  }\n  function getCardList(category) {\n    const list = Object.keys(kpiSettings[category]);\n    list.sort((kpiA, kpiB) => kpiSettings[category][kpiA].position - kpiSettings[category][kpiB].position);\n    return list;\n  }\n  function moveCard(category, kpi, forward) {\n    const list = getCardList(category);\n    const currentIndex = list.indexOf(kpi);\n    const currentPosition = kpiSettings[category][kpi].position;\n    const swapWith = list[forward ? currentIndex - 1 : currentIndex + 1];\n    if (!swapWith) return;\n    const newSettings = __spreadValues({}, kpiSettings);\n    newSettings[category][kpi].position = newSettings[category][swapWith].position;\n    newSettings[category][swapWith].position = currentPosition;\n    setSettings(newSettings);\n  }\n  function saveSettings() {\n    return __async(this, null, function* () {\n      setSaving(true);\n      yield Api.saveDashboardSettings(kpiSettings);\n      setOpen(false);\n      getDashboard();\n    });\n  }\n  useEffect(() => {\n    fetchSettings();\n  }, []);\n  return /* @__PURE__ */ React.createElement(\n    Dialog,\n    {\n      open,\n      onClose: () => {\n        setOpen(false);\n      },\n      maxWidth: \"lg\"\n    },\n    /* @__PURE__ */ React.createElement(DialogTitle, { sx: { fontFamily: \"Source Sans Pro\" } }, \"Dashboard Settings\"),\n    /* @__PURE__ */ React.createElement(DialogContent, null, kpiSettings ? Object.keys(kpiSettings).map((category) => /* @__PURE__ */ React.createElement(Box, { mb: 4, key: category }, /* @__PURE__ */ React.createElement(Typography, { variant: \"h5\", sx: { fontFamily: \"Source Sans Pro\" } }, \":\", capitalCase(category)), /* @__PURE__ */ React.createElement(Box, { mb: 2 }), /* @__PURE__ */ React.createElement(Grid, { container: true, spacing: 2 }, getCardList(category).map((kpi) => /* @__PURE__ */ React.createElement(Grid, { item: true, key: kpi }, /* @__PURE__ */ React.createElement(\n      KpiSettingsCard,\n      __spreadProps(__spreadValues({}, kpiSettings[category][kpi]), {\n        title: capitalCase(kpi),\n        move: (forward) => moveCard(category, kpi, forward),\n        onChange: (field, value) => setSettings(__spreadProps(__spreadValues({}, kpiSettings), {\n          [category]: __spreadProps(__spreadValues({}, kpiSettings[category]), {\n            [kpi]: __spreadProps(__spreadValues({}, kpiSettings[category][kpi]), {\n              [field]: value\n            })\n          })\n        }))\n      })\n    )))))) : /* @__PURE__ */ React.createElement(Box, { display: \"flex\", justifyContent: \"center\" }, /* @__PURE__ */ React.createElement(CircularProgress, null))),\n    /* @__PURE__ */ React.createElement(DialogActions, { sx: classes.buttonContainer }, /* @__PURE__ */ React.createElement(\n      Button,\n      {\n        variant: \"outlined\",\n        onClick: () => setOpen(false),\n        sx: classes.cancelButton\n      },\n      \"Cancel\"\n    ), /* @__PURE__ */ React.createElement(Box, { position: \"relative\" }, /* @__PURE__ */ React.createElement(\n      Button,\n      {\n        onClick: saveSettings,\n        disabled: saving,\n        sx: classes.saveButton\n      },\n      \"Save Setting\"\n    ), saving && /* @__PURE__ */ React.createElement(\n      CircularProgress,\n      {\n        size: 24,\n        sx: classes.buttonProgress\n      }\n    )))\n  );\n}\nKpiSettings.propTypes = {\n  open: PropTypes.bool.isRequired,\n  setOpen: PropTypes.func.isRequired,\n  getDashboard: PropTypes.func.isRequired\n};\nexport default withFormValidation(KpiSettings);\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Card, Typography, CardContent, Grid, Box, CardActions, Button, Tooltip, IconButton } from \"@mui/material\";\nimport TextInput from \"../../../inputs/TextInput/TextInput\";\nimport Checkbox from \"../../../inputs/Checkbox/Checkbox\";\nimport Select from \"../../../inputs/Select\";\nimport HelpIcon from \"@mui/icons-material/Help\";\nimport { classes } from \"../styles\";\nconst THRESHOLD_DIRECTION_OPTS = [{\n  value: \"<=\",\n  label: \"Less than\"\n}, {\n  value: \">=\",\n  label: \"Greater than\"\n}];\nexport default function KpiSettingsCard({ title, visible, onChange, good, bad, move, tooltip, good_direction, bad_direction }) {\n  return /* @__PURE__ */ React.createElement(Card, { variant: \"outlined\", sx: { maxWidth: \"320px\" } }, /* @__PURE__ */ React.createElement(CardContent, null, /* @__PURE__ */ React.createElement(Grid, { container: true, spacing: 1, alignItems: \"center\" }, /* @__PURE__ */ React.createElement(Grid, { item: true }, /* @__PURE__ */ React.createElement(Tooltip, { title: tooltip }, /* @__PURE__ */ React.createElement(IconButton, { size: \"small\" }, /* @__PURE__ */ React.createElement(HelpIcon, { fontSize: \"small\" })))), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: true }, /* @__PURE__ */ React.createElement(Typography, { sx: { fontFamily: \"Source Sans Pro\" } }, title)), /* @__PURE__ */ React.createElement(Grid, { item: true }, /* @__PURE__ */ React.createElement(\n    Checkbox,\n    {\n      onCheck: (checked) => onChange(\"visible\", checked),\n      checked: visible\n    }\n  ))), /* @__PURE__ */ React.createElement(Box, { mb: 1 }), /* @__PURE__ */ React.createElement(Grid, { container: true, spacing: 1, sx: { marginBottom: \"14px\" } }, /* @__PURE__ */ React.createElement(Grid, { item: true, sx: { width: \"50%\" } }, /* @__PURE__ */ React.createElement(\n    Select,\n    {\n      options: THRESHOLD_DIRECTION_OPTS,\n      value: bad_direction,\n      onChange: (selected) => onChange(\"bad_direction\", selected),\n      valueField: \"value\",\n      labelField: \"label\"\n    }\n  )), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: true }, /* @__PURE__ */ React.createElement(\n    TextInput,\n    {\n      label: \"Bad Threshold\",\n      value: bad,\n      onChange: (val) => onChange(\"bad\", val),\n      type: \"number\",\n      variant: \"standard\"\n    }\n  ))), /* @__PURE__ */ React.createElement(Box, { mb: 1 }), /* @__PURE__ */ React.createElement(Grid, { container: true, spacing: 1 }, /* @__PURE__ */ React.createElement(Grid, { item: true, sx: { width: \"50%\" } }, /* @__PURE__ */ React.createElement(\n    Select,\n    {\n      options: THRESHOLD_DIRECTION_OPTS,\n      value: good_direction,\n      onChange: (selected) => onChange(\"good_direction\", selected),\n      valueField: \"value\",\n      labelField: \"label\"\n    }\n  )), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: true }, /* @__PURE__ */ React.createElement(\n    TextInput,\n    {\n      label: \"Good Threshold\",\n      value: good,\n      onChange: (val) => onChange(\"good\", val),\n      type: \"number\",\n      variant: \"standard\"\n    }\n  )))), /* @__PURE__ */ React.createElement(CardActions, { sx: { display: \"flex\", justifyContent: \"space-around\", width: \"100%\" } }, /* @__PURE__ */ React.createElement(\n    Button,\n    {\n      size: \"small\",\n      variant: \"text\",\n      onClick: () => move(true),\n      sx: classes.moveButton\n    },\n    \"Move Forward\"\n  ), /* @__PURE__ */ React.createElement(\n    Button,\n    {\n      size: \"small\",\n      variant: \"text\",\n      onClick: () => move(false),\n      sx: classes.moveButton\n    },\n    \"Move Back\"\n  )));\n}\nKpiSettingsCard.propTypes = {\n  title: PropTypes.string,\n  visible: PropTypes.bool,\n  onChange: PropTypes.func,\n  good: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n  bad: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n  move: PropTypes.func,\n  tooltip: PropTypes.string,\n  bad_direction: PropTypes.string,\n  good_direction: PropTypes.string\n};\n","import KpiSettingsCard from \"./KpiSettingsCard\";\nexport default KpiSettingsCard;\n","import KpiSettings from \"./KpiSettings\";\nexport default KpiSettings;\n","export const classes = {\n  buttonProgress: {\n    position: \"absolute\",\n    top: \"50%\",\n    left: \"50%\",\n    marginTop: -12,\n    marginLeft: -12\n  },\n  moveButton: {\n    textTransform: \"none\",\n    fontFamily: \"Source Sans Pro\",\n    fontWeight: 700,\n    color: \"#084d6d\",\n    padding: \"8px 16px\"\n  },\n  buttonContainer: {\n    display: \"flex\",\n    columnGap: \"16px\",\n    paddingRight: \"24px\",\n    paddingBottom: \"24px\"\n  },\n  saveButton: {\n    textTransform: \"none\",\n    fontFamily: \"Source Sans Pro\",\n    fontWeight: 700,\n    color: \"#ffffff\",\n    backgroundColor: \"#084d6d\",\n    padding: \"8px 16px\",\n    \"&:hover\": {\n      backgroundColor: \"rgb(5, 53, 76)\"\n    }\n  },\n  cancelButton: {\n    textTransform: \"none\",\n    fontFamily: \"Source Sans Pro\",\n    fontWeight: 700,\n    color: \"#084d6d\",\n    borderColor: \"#084d6d\",\n    padding: \"8px 16px\",\n    backgroundColor: \"#ffffff\",\n    \"&:hover\": {\n      backgroundColor: \"rgb(235, 235, 235)\"\n    }\n  }\n};\n","import KpiDashboard from \"./KpiDashboard\";\nexport default KpiDashboard;\n","import { theme } from \"../ThemeContext/ThemeObject\";\nexport const classes = {\n  category: {\n    marginBottom: theme.spacing(2),\n    marginTop: 0\n  },\n  root: {\n    position: \"relative\"\n  },\n  manageMetrics: {\n    position: \"absolute\",\n    top: 0,\n    right: 0\n  },\n  button: {\n    fontFamily: \"source sans pro\",\n    fontSize: \"0.85rem\",\n    fontWeight: 700,\n    backgroundColor: theme.palette.primary.main + \" !important\",\n    color: \"#fff !important\",\n    textTransform: \"none\",\n    borderRadius: \"4px !important\",\n    padding: \"10px 20px !important\",\n    \"&:hover\": {\n      backgroundColor: theme.palette.primary.dark + \" !important\"\n    }\n  }\n};\n","const getOrCreateTooltip = (chart) => {\n  let tooltipEl = chart.canvas.parentNode.querySelector(\"div\");\n  if (!tooltipEl) {\n    tooltipEl = document.createElement(\"div\");\n    tooltipEl.style.color = \"#084D6D\";\n    tooltipEl.style.opacity = 1;\n    tooltipEl.style.pointerEvents = \"none\";\n    tooltipEl.style.position = \"absolute\";\n    tooltipEl.style.transform = \"translate(-20%, -70%)\";\n    tooltipEl.style.transition = \"all .1s ease\";\n    const table = document.createElement(\"table\");\n    table.style.margin = \"0px\";\n    tooltipEl.appendChild(table);\n    chart.canvas.parentNode.appendChild(tooltipEl);\n  }\n  return tooltipEl;\n};\nconst paperCon = document.createElement(\"img\");\npaperCon.src = \"/images/icons/newNote.svg\";\npaperCon.style.height = \"22px\";\npaperCon.style.paddingTop = \"3px\";\nexport const externalTooltipHandler = (context) => {\n  const { chart, tooltip } = context;\n  const tooltipEl = getOrCreateTooltip(chart);\n  const data = tooltip.body[0].lines[0];\n  if (tooltip.opacity === 0) {\n    tooltipEl.style.opacity = 0;\n    return;\n  }\n  if (tooltip.body) {\n    const title = data.split(\": \")[0];\n    const body = data.split(\": \")[1];\n    const tableHead = document.createElement(\"thead\");\n    const trow = document.createElement(\"tr\");\n    trow.style.borderWidth = 0;\n    trow.style.background = \"transparent\";\n    trow.style.fontSize = \"18px\";\n    const th = document.createElement(\"th\");\n    th.style.borderWidth = 0;\n    th.style.background = \"transparent\";\n    th.style.padding = \"0px\";\n    th.style.display = \"flex\";\n    th.style.alignItems = \"center\";\n    th.style.textTransform = \"unset\";\n    const titleText = document.createTextNode(title);\n    th.appendChild(paperCon);\n    th.appendChild(titleText);\n    trow.appendChild(th);\n    tableHead.appendChild(trow);\n    const tableBody = document.createElement(\"tbody\");\n    const span = document.createElement(\"span\");\n    span.innerText = \" Applicants\";\n    span.style.fontSize = \"12px\";\n    const tr = document.createElement(\"tr\");\n    tr.style.backgroundColor = \"transparent\";\n    tr.style.borderWidth = 0;\n    const td = document.createElement(\"td\");\n    td.style.borderWidth = 0;\n    td.style.fontSize = \"12px\";\n    td.style.color = \"#666666\";\n    td.style.padding = \"0px\";\n    td.style.paddingLeft = \"3px\";\n    const text = document.createTextNode(body);\n    td.appendChild(text);\n    td.appendChild(span);\n    tr.appendChild(td);\n    tableBody.appendChild(tr);\n    const tableRoot = tooltipEl.querySelector(\"table\");\n    tableRoot.style.background = \"transparent\";\n    while (tableRoot.firstChild) {\n      tableRoot.firstChild.remove();\n    }\n    tableRoot.appendChild(tableHead);\n    tableRoot.appendChild(tableBody);\n  }\n  const { offsetLeft: positionX, offsetTop: positionY } = chart.canvas;\n  tooltipEl.style.opacity = 1;\n  tooltipEl.style.left = positionX + tooltip.caretX + \"px\";\n  tooltipEl.style.top = positionY + tooltip.caretY + \"px\";\n  tooltipEl.style.font = tooltip.options.bodyFont.string;\n  tooltipEl.style.background = \"#FEFEFE80\";\n  tooltipEl.style.borderRadius = \"4px\";\n  tooltipEl.style.padding = \"6px\";\n  tooltipEl.style.backdropFilter = \"blur(4px)\";\n};\n","const getOrCreateTooltip = (chart) => {\n  let tooltipEl = chart.canvas.parentNode.querySelector(\"div\");\n  if (!tooltipEl) {\n    tooltipEl = document.createElement(\"div\");\n    tooltipEl.style.color = \"#084D6D\";\n    tooltipEl.style.opacity = 1;\n    tooltipEl.style.pointerEvents = \"none\";\n    tooltipEl.style.position = \"absolute\";\n    tooltipEl.style.transform = \"translate(-50%, 30%)\";\n    tooltipEl.style.transition = \"all .1s ease\";\n    tooltipEl.style.width = \"82px\";\n    const table = document.createElement(\"table\");\n    table.style.margin = \"0px\";\n    tooltipEl.appendChild(table);\n    chart.canvas.parentNode.appendChild(tooltipEl);\n  }\n  return tooltipEl;\n};\nconst eyeCon = document.createElement(\"img\");\neyeCon.src = \"/images/icons/eyeLogo.svg\";\neyeCon.style.height = \"18px\";\neyeCon.style.marginRight = \"6px\";\nexport const externalTooltipHandler = (context) => {\n  const { chart, tooltip } = context;\n  const tooltipEl = getOrCreateTooltip(chart);\n  if (tooltip.opacity === 0) {\n    tooltipEl.style.opacity = 0;\n    return;\n  }\n  if (tooltip.body) {\n    const titleLines = tooltip.title || [];\n    const bodyLines = tooltip.body.map((b) => b.lines);\n    const tableHead = document.createElement(\"thead\");\n    titleLines.forEach((title) => {\n      const tr = document.createElement(\"tr\");\n      tr.style.borderWidth = 0;\n      tr.style.background = \"transparent\";\n      tr.style.fontSize = \"18px\";\n      const th = document.createElement(\"th\");\n      th.style.borderWidth = 0;\n      th.style.background = \"transparent\";\n      th.style.padding = \"0px\";\n      th.style.display = \"flex\";\n      th.style.alignItems = \"center\";\n      th.style.textTransform = \"unset\";\n      const text = document.createTextNode(title);\n      th.appendChild(eyeCon);\n      th.appendChild(text);\n      tr.appendChild(th);\n      tableHead.appendChild(tr);\n    });\n    const tableBody = document.createElement(\"tbody\");\n    bodyLines.forEach((body, i) => {\n      const span = document.createElement(\"span\");\n      span.innerText = \" Applicants\";\n      span.style.fontSize = \"12px\";\n      const tr = document.createElement(\"tr\");\n      tr.style.backgroundColor = \"transparent\";\n      tr.style.borderWidth = 0;\n      const td = document.createElement(\"td\");\n      td.style.borderWidth = 0;\n      td.style.fontSize = \"12px\";\n      td.style.color = \"#666666\";\n      td.style.padding = \"0px\";\n      const text = document.createTextNode(body);\n      td.appendChild(text);\n      td.appendChild(span);\n      tr.appendChild(td);\n      tableBody.appendChild(tr);\n    });\n    const tableRoot = tooltipEl.querySelector(\"table\");\n    tableRoot.style.background = \"transparent\";\n    while (tableRoot.firstChild) {\n      tableRoot.firstChild.remove();\n    }\n    tableRoot.appendChild(tableHead);\n    tableRoot.appendChild(tableBody);\n  }\n  const { offsetLeft: positionX, offsetTop: positionY } = chart.canvas;\n  tooltipEl.style.opacity = 1;\n  tooltipEl.style.left = positionX + tooltip.caretX + \"px\";\n  tooltipEl.style.top = positionY + tooltip.caretY + \"px\";\n  tooltipEl.style.font = tooltip.options.bodyFont.string;\n  tooltipEl.style.background = \"#FEFEFE20\";\n  tooltipEl.style.borderRadius = \"4px\";\n  tooltipEl.style.padding = \"6px\";\n  tooltipEl.style.backdropFilter = \"blur(4px)\";\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Stepper, Step, StepLabel, StepConnector } from \"@material-ui/core\";\nimport { withStyles } from \"@material-ui/core/styles\";\nconst QontoConnector = withStyles((theme) => ({\n  alternativeLabel: {\n    top: 25,\n    left: \"calc(-50% + 25px)\",\n    right: \"calc(50% + 25px)\"\n  },\n  active: {\n    \"& $line\": {\n      borderColor: theme.palette.secondary.main\n    }\n  },\n  completed: {\n    \"& $line\": {\n      borderColor: theme.palette.secondary.main\n    }\n  },\n  line: {\n    borderColor: \"#F3F3F3\",\n    borderTopWidth: 3,\n    borderRadius: 1\n  }\n}))(StepConnector);\nconst StepperComponent = ({ activeStep, steps, classes }) => {\n  StepperComponent.propTypes = {\n    activeStep: PropTypes.number.isRequired,\n    steps: PropTypes.array.isRequired,\n    classes: PropTypes.object.isRequired\n  };\n  return /* @__PURE__ */ React.createElement(\"div\", { className: classes.stepSelect }, /* @__PURE__ */ React.createElement(\n    Stepper,\n    {\n      classes: { root: classes.stepperRoot },\n      alternativeLabel: true,\n      activeStep,\n      connector: /* @__PURE__ */ React.createElement(QontoConnector, null)\n    },\n    steps.map((step, i) => /* @__PURE__ */ React.createElement(Step, { key: i, classes: { root: `${classes.stepItem}` } }, /* @__PURE__ */ React.createElement(\n      StepLabel,\n      {\n        classes: {\n          iconContainer: classes.stepLabelIconContainer,\n          label: classes.stepLabelLabel,\n          active: classes.stepLabelActive,\n          completed: classes.stepLabelCompleted\n        },\n        StepIconProps: {\n          classes: {\n            root: classes.stepIconRoot,\n            active: classes.stepIconActive,\n            completed: classes.stepIconCompleted\n          }\n        }\n      },\n      step.label\n    )))\n  ));\n};\nexport default StepperComponent;\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nimport React, { useState, useRef, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { withScoutTheme } from \"../../../../ThemeContext/ThemeContext\";\nimport { Snackbar } from \"@material-ui/core\";\nimport { Step1, Step2, Step3 } from \"./Steps\";\nimport useStyles from \"../../../../IndeedIntegration/AdEditor/useStyles\";\nimport ExitConfirmationDialog from \"../../../../../components/SeekAd/AdEditor/Components/ExitConfirmationDialog\";\nimport StepperComponent from \"../../CustomUIElements/StepperComponent\";\nimport StepperLeftButton from \"../../Buttons/StepperLeftButton\";\nimport StepperRightButton from \"../../Buttons/StepperRightButton\";\nimport JobAdSuccessDialog from \"../../CustomUIElements/JobAdSuccessDialog\";\nimport { handleNext } from \"../handleNext\";\nimport axios from \"axios\";\nimport _ from \"lodash\";\nconst steps = [\n  { label: \"Classify Job\", value: \"job_details\" },\n  { label: \"Ad Description\", value: \"job_description\" },\n  { label: \"Preview Ad\", value: \"preview\" }\n];\nfunction AdEditor({ jobAdParams }) {\n  const [activeStep, setActiveStep] = useState(0);\n  const [answers, setAnswers] = useState(updateAnswers(jobAdParams));\n  const [activeError, setActiveError] = useState(null);\n  const [isExitModalOpen, setIsExitModalOpen] = useState(false);\n  const [saving, setSaving] = useState(false);\n  const [savingDraft, setSavingDraft] = useState(false);\n  const [editExistingJob, setEditExistingJob] = useState(false);\n  const [isSnackOpen, setIsSnackOpen] = useState(false);\n  const [snackMessage, setSnackMessage] = useState(\"\");\n  const [isSuccessDialogOpen, setIsSuccessDialogOpen] = useState(false);\n  const [checkoutUrl, setCheckoutUrl] = useState(\"\");\n  const [checkNewListingUrl, setCheckNewListingUrl] = useState(\"\");\n  const classes = useStyles();\n  function updateAnswers(params) {\n    return {\n      featured: params.featured || false,\n      title: params.title || \"\",\n      description: params.ad_details || \"\",\n      classification: params.listing_classification || \"\",\n      workType: params.work_type || \"\",\n      workLocation: params.work_location || \"\",\n      address: params.address || \"\",\n      payType: params.pay_type || \"\",\n      payRangeLow: params.salary_min || 0,\n      payRangeHigh: params.salary_max || 0,\n      benefits: params.benefits ? JSON.parse(params.benefits) : [],\n      jobPreview: JSON.parse(params.job_preview) || {},\n      externalUrl: params.external_url || \"\",\n      externalId: params.external_id || \"\",\n      advertisement_id: params.advertisement_id || \"\",\n      preview_url: params.preview_url || \"\"\n    };\n  }\n  function submit(type) {\n    return __async(this, null, function* () {\n      try {\n        type === \"draft\" ? setSavingDraft(true) : setSaving(true);\n        const token = document.querySelector('meta[name=\"csrf-token\"]').content;\n        const { data } = yield axios.put(`/admin/job_ads/${jobAdParams.id}/view_jobs_ads/builder`, {\n          headers: { \"Content-Type\": \"application/json\" },\n          authenticity_token: token,\n          page: activeStep + 1,\n          draft: type === \"draft\" ? true : false,\n          job_ad: __spreadProps(__spreadValues(__spreadValues({\n            title: answers.title || \"\",\n            ad_details: answers.description || null,\n            listing_classification: answers.classification || null,\n            work_type: answers.workType || null,\n            work_location: answers.workLocation || null,\n            address: answers.address || null,\n            pay_type: answers.payType || null,\n            salary_min: answers.payRangeLow || 0,\n            salary_max: answers.payRangeHigh || 0,\n            benefits: answers.benefits || []\n          }, activeStep === 1 && { featured: answers.featured || false }), activeStep === 1 && answers.featured && { job_preview: answers.jobPreview }), {\n            external_url: answers.externalUrl || null,\n            external_id: answers.externalId || null,\n            advertisement_id: answers.advertisement_id || null,\n            preview_url: answers.preview_url || null\n          })\n        });\n        if (type === \"draft\") {\n          handleSnack(\"Draft saved\");\n          setIsExitModalOpen(false);\n          window.history.back();\n        } else if (type === \"submit\") {\n          setIsSuccessDialogOpen(true);\n        } else if (type === \"next\") {\n          if (activeStep === 1) {\n            setCheckoutUrl(data.checkout_url);\n            setCheckNewListingUrl(data.check_new_listing_url);\n          } else {\n            const newAnswers = updateAnswers(data.job_ad);\n            if (!_.isEqual(newAnswers, answers)) {\n              setAnswers(newAnswers);\n            }\n          }\n          setActiveStep(activeStep + 1);\n        }\n        console.log(\"submit\", type);\n      } catch (e) {\n        console.log(e);\n        if (type === \"draft\") {\n          handleSnack(\"Unable to save draft\");\n        } else if (type === \"submit\") {\n          handleSnack(\"Unable to post to ViewJobs. Please check required fields and try again.\");\n        } else if (type === \"next\") {\n          handleSnack(\n            \"Unable to update ViewJobs job ad. Please check required fields and try again.\"\n          );\n        }\n      } finally {\n        setSaving(false);\n        setSavingDraft(false);\n      }\n    });\n  }\n  function handleSnack(message) {\n    setIsSnackOpen(true);\n    setSnackMessage(message);\n  }\n  const requiredRefs = {\n    title: useRef(null),\n    address: useRef(null),\n    classification: useRef(null),\n    workType: useRef(null),\n    workLocation: useRef(null),\n    payType: useRef(null),\n    salary: useRef(null),\n    benefits: useRef(null),\n    featured: useRef(null),\n    jobPreview: useRef(null)\n  };\n  const handleNextButton = (type) => {\n    handleNext(type, checkErrors, requiredRefs, setActiveError, submit);\n  };\n  function checkErrors() {\n    const errorChecks = {\n      title: !answers.title,\n      address: !answers.address,\n      classification: !answers.classification,\n      workType: !answers.workType,\n      workLocation: !answers.workLocation,\n      payType: !answers.payType,\n      salary: !answers.payRangeHigh\n    };\n    const error = Object.keys(errorChecks).find((ref) => errorChecks[ref]);\n    return error;\n  }\n  useEffect(() => {\n    setActiveError(null);\n  }, [answers]);\n  useEffect(() => {\n    window.scrollTo({ top: 0, behavior: \"smooth\" });\n  }, [activeStep]);\n  return /* @__PURE__ */ React.createElement(\"div\", { className: classes.containerOuter }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.container }, /* @__PURE__ */ React.createElement(StepperComponent, { activeStep, steps, classes }), activeStep === 0 && /* @__PURE__ */ React.createElement(\n    Step1,\n    {\n      jobAdParams,\n      answers,\n      setAnswers,\n      requiredRefs,\n      activeError\n    }\n  ), activeStep === 1 && /* @__PURE__ */ React.createElement(\n    Step2,\n    {\n      jobAdParams,\n      answers,\n      setAnswers,\n      requiredRefs,\n      activeError\n    }\n  ), activeStep === 2 && /* @__PURE__ */ React.createElement(\n    Step3,\n    {\n      answers,\n      setAnswers,\n      checkoutUrl,\n      checkNewListingUrl\n    }\n  ), /* @__PURE__ */ React.createElement(\"div\", { className: classes.buttonContainer }, /* @__PURE__ */ React.createElement(\"a\", { onClick: () => setIsExitModalOpen(true) }, \"Save and exit\"), /* @__PURE__ */ React.createElement(\"div\", { className: classes.buttons }, /* @__PURE__ */ React.createElement(\n    StepperLeftButton,\n    {\n      activeStep,\n      onClick: () => setActiveStep(activeStep - 1),\n      classes\n    }\n  ), /* @__PURE__ */ React.createElement(\n    StepperRightButton,\n    {\n      activeStep,\n      steps,\n      isSaving: saving,\n      onClick: () => handleNextButton(activeStep + 1 === steps.length ? \"submit\" : \"next\"),\n      classes\n    }\n  )))), /* @__PURE__ */ React.createElement(\n    ExitConfirmationDialog,\n    {\n      saving,\n      savingDraft,\n      setActiveStep,\n      isExitModalOpen,\n      setIsExitModalOpen,\n      editExistingJob,\n      submit\n    }\n  ), /* @__PURE__ */ React.createElement(\n    JobAdSuccessDialog,\n    {\n      open: isSuccessDialogOpen,\n      onClose: () => window.location.replace(document.referrer),\n      answers,\n      classes,\n      adType: \"viewjobs\"\n    }\n  ), /* @__PURE__ */ React.createElement(Snackbar, { open: isSnackOpen, onClose: () => setIsSnackOpen(false), message: snackMessage }));\n}\nAdEditor.propTypes = {\n  jobAdParams: PropTypes.object.isRequired\n};\nexport default withScoutTheme(AdEditor);\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport React from \"react\";\nimport {\n  Box,\n  TextField,\n  FormControlLabel,\n  FormControl,\n  FormLabel,\n  FormHelperText,\n  Select,\n  MenuItem,\n  Radio,\n  RadioGroup,\n  FormGroup,\n  Checkbox,\n  Grid,\n  InputAdornment\n} from \"@material-ui/core\";\nimport sharedStyles from \"../../../../../IndeedIntegration/AdEditor/useStyles\";\nimport usestyles from \"../useStyles\";\nimport { jobAdPropTypes } from \"../../../../../NewUI/Components/Multiposter/types\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\nimport AddressInput from \"../../../../../NewUI/Components/CustomUIElements/AddressInput\";\nimport { parseSalary } from \"../../salaryHelper\";\nfunction Step1({ answers, setAnswers, jobAdParams, requiredRefs, activeError }) {\n  const [value, setValue] = React.useState({\n    description: [answers.address].filter((cur) => cur).join(\", \")\n  });\n  const sharedClasses = sharedStyles();\n  const classes = usestyles();\n  function handleMultiCheck(value2, state, key) {\n    state.includes(value2) ? setAnswers(__spreadProps(__spreadValues({}, answers), { [key]: state.filter((id) => id !== value2) })) : setAnswers(__spreadProps(__spreadValues({}, answers), { [key]: [...answers[key], value2] }));\n  }\n  return /* @__PURE__ */ React.createElement(\"div\", { className: sharedClasses.stepContainer }, /* @__PURE__ */ React.createElement(\n    FormControl,\n    {\n      ref: requiredRefs.title,\n      fullWidth: true,\n      className: `${sharedClasses.formControl} ${sharedClasses.medium}`\n    },\n    /* @__PURE__ */ React.createElement(FormLabel, { required: true, className: sharedClasses.label }, \"Job Title\"),\n    /* @__PURE__ */ React.createElement(\n      TextField,\n      {\n        error: activeError === requiredRefs.title,\n        className: sharedClasses.textField,\n        variant: \"outlined\",\n        value: answers.title,\n        onChange: (e) => {\n          const newValue = e.target.value;\n          if (newValue.length <= 52 && newValue !== answers.title) {\n            setAnswers(__spreadProps(__spreadValues({}, answers), { title: newValue }));\n          }\n        },\n        InputProps: {\n          endAdornment: activeError === requiredRefs.title && /* @__PURE__ */ React.createElement(\"div\", { className: sharedClasses.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))\n        }\n      }\n    ),\n    /* @__PURE__ */ React.createElement(FormHelperText, { className: sharedClasses.helperText }, answers.title.length, \"/52\")\n  ), /* @__PURE__ */ React.createElement(\n    AddressInput,\n    {\n      requiredRef: requiredRefs.address,\n      classes: sharedClasses,\n      value,\n      setValue,\n      activeError: activeError === requiredRefs.address,\n      answers,\n      setAnswers,\n      viewJobsAd: true\n    }\n  ), /* @__PURE__ */ React.createElement(\n    FormControl,\n    {\n      ref: requiredRefs.classification,\n      fullWidth: true,\n      className: `${sharedClasses.formControl} ${sharedClasses.medium}`\n    },\n    /* @__PURE__ */ React.createElement(FormLabel, { required: true, className: sharedClasses.label }, \"Classification\"),\n    /* @__PURE__ */ React.createElement(\n      Select,\n      {\n        classes: { select: sharedClasses.input },\n        variant: \"outlined\",\n        value: answers.classification,\n        onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { classification: e.target.value })),\n        displayEmpty: true,\n        renderValue: (value2) => value2 || /* @__PURE__ */ React.createElement(\"span\", { className: sharedClasses.placeholder }, \"Select an option\"),\n        endAdornment: activeError === requiredRefs.classification && /* @__PURE__ */ React.createElement(\"div\", { className: sharedClasses.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))\n      },\n      jobAdParams.classifications.map((classification) => /* @__PURE__ */ React.createElement(MenuItem, { key: classification[1], value: classification[0] }, classification[0]))\n    )\n  ), /* @__PURE__ */ React.createElement(\n    FormControl,\n    {\n      ref: requiredRefs.workType,\n      fullWidth: true,\n      className: `${sharedClasses.formControl}`\n    },\n    /* @__PURE__ */ React.createElement(FormLabel, { required: true, className: sharedClasses.label }, \"Work type\", activeError === requiredRefs.workType && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))),\n    /* @__PURE__ */ React.createElement(\n      RadioGroup,\n      {\n        value: answers.workType,\n        onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { workType: e.target.value }))\n      },\n      jobAdParams.worktypes.map((type) => /* @__PURE__ */ React.createElement(\n        FormControlLabel,\n        {\n          key: type[1],\n          label: type[0],\n          value: type[0],\n          control: /* @__PURE__ */ React.createElement(Radio, { color: \"secondary\" })\n        }\n      ))\n    )\n  ), /* @__PURE__ */ React.createElement(\n    FormControl,\n    {\n      ref: requiredRefs.workLocation,\n      fullWidth: true,\n      className: `${sharedClasses.formControl}`\n    },\n    /* @__PURE__ */ React.createElement(FormLabel, { required: true, className: sharedClasses.label }, \"Work location\", activeError === requiredRefs.workLocation && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))),\n    /* @__PURE__ */ React.createElement(\n      RadioGroup,\n      {\n        value: answers.workLocation,\n        onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { workLocation: e.target.value }))\n      },\n      jobAdParams.worklocations.map((location) => /* @__PURE__ */ React.createElement(\n        FormControlLabel,\n        {\n          key: location[1],\n          label: location[0],\n          value: location[0],\n          control: /* @__PURE__ */ React.createElement(Radio, { color: \"secondary\" })\n        }\n      ))\n    )\n  ), /* @__PURE__ */ React.createElement(\n    FormControl,\n    {\n      ref: requiredRefs.payType,\n      fullWidth: true,\n      className: `${sharedClasses.formControl}`\n    },\n    /* @__PURE__ */ React.createElement(FormLabel, { required: true, className: sharedClasses.label }, \"Pay details\", activeError === requiredRefs.payType && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))),\n    /* @__PURE__ */ React.createElement(\n      RadioGroup,\n      {\n        value: answers.payType,\n        onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { payType: e.target.value }))\n      },\n      jobAdParams.paytypes.map((type) => /* @__PURE__ */ React.createElement(\n        FormControlLabel,\n        {\n          key: type[1],\n          label: type[0],\n          value: type[0],\n          control: /* @__PURE__ */ React.createElement(Radio, { color: \"secondary\" })\n        }\n      ))\n    )\n  ), /* @__PURE__ */ React.createElement(\n    FormControl,\n    {\n      ref: requiredRefs.salary,\n      fullWidth: true,\n      className: `${sharedClasses.formControl} ${sharedClasses.medium}`\n    },\n    /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: sharedClasses.label }, \"Pay Range\", /* @__PURE__ */ React.createElement(\"span\", { className: sharedClasses.asterisk }, \" *\"), activeError === requiredRefs.salary && /* @__PURE__ */ React.createElement(\"div\", { className: sharedClasses.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))),\n    /* @__PURE__ */ React.createElement(\"span\", { className: sharedClasses.subLabel }, \"Enter a pay range to offer candidates\"),\n    /* @__PURE__ */ React.createElement(Grid, { container: true, classes: { root: sharedClasses.controlledNumberInput } }, /* @__PURE__ */ React.createElement(\n      Grid,\n      {\n        item: true,\n        container: true,\n        alignContent: \"center\",\n        alignItems: \"center\",\n        justifyContent: \"center\",\n        wrap: \"nowrap\"\n      },\n      /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Box, { m: 1, ml: 0 }, /* @__PURE__ */ React.createElement(\n        TextField,\n        {\n          error: activeError === requiredRefs.salary,\n          className: sharedClasses.textField,\n          variant: \"outlined\",\n          onBlur: () => {\n            if (answers.payRangeLow > answers.payRangeHigh)\n              setAnswers(__spreadProps(__spreadValues({}, answers), { payRangeHigh: answers.payRangeLow }));\n          },\n          value: Number(answers.payRangeLow).toLocaleString(),\n          InputProps: {\n            startAdornment: /* @__PURE__ */ React.createElement(InputAdornment, { position: \"start\" }, \"From\")\n          },\n          onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { payRangeLow: parseSalary(e.target.value) }))\n        }\n      )), /* @__PURE__ */ React.createElement(Box, { m: 1 }, /* @__PURE__ */ React.createElement(\n        TextField,\n        {\n          error: activeError === requiredRefs.salary,\n          className: sharedClasses.textField,\n          variant: \"outlined\",\n          value: Number(answers.payRangeHigh).toLocaleString(),\n          onBlur: () => {\n            if (answers.payRangeHigh < answers.payRangeLow)\n              setAnswers(__spreadProps(__spreadValues({}, answers), { payRangeHigh: answers.payRangeLow }));\n          },\n          InputProps: {\n            startAdornment: /* @__PURE__ */ React.createElement(InputAdornment, { position: \"start\" }, \"To\")\n          },\n          onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { payRangeHigh: parseSalary(e.target.value) }))\n        }\n      )), /* @__PURE__ */ React.createElement(\"span\", { className: classes.salaryIntervalLabel }, \"per \", answers.payType === \"Annual salary\" ? \"Year\" : \"Hour\"))\n    ))\n  ), /* @__PURE__ */ React.createElement(\n    FormControl,\n    {\n      fullWidth: true,\n      className: `${sharedClasses.formControl} ${sharedClasses.medium}`\n    },\n    /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: sharedClasses.label }, \"Benefits\"),\n    /* @__PURE__ */ React.createElement(FormGroup, null, /* @__PURE__ */ React.createElement(Grid, { container: true }, jobAdParams.extrabenefits.map((benefit) => {\n      var _a;\n      return /* @__PURE__ */ React.createElement(Grid, { key: benefit[1], item: true, xs: 6 }, /* @__PURE__ */ React.createElement(\n        FormControlLabel,\n        {\n          label: benefit[0],\n          value: benefit[0],\n          control: /* @__PURE__ */ React.createElement(\n            Checkbox,\n            {\n              checked: (_a = answers == null ? void 0 : answers.benefits) == null ? void 0 : _a.includes(benefit[0]),\n              onChange: (e) => handleMultiCheck(e.target.value, answers.benefits, \"benefits\")\n            }\n          )\n        }\n      ));\n    })))\n  ));\n}\nStep1.propTypes = jobAdPropTypes;\nexport default Step1;\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport React, { useEffect, useState, useMemo } from \"react\";\nimport {\n  Box,\n  FormControl,\n  FormLabel,\n  FormHelperText,\n  TextField,\n  FormControlLabel,\n  Switch\n} from \"@material-ui/core\";\nimport sharedStyles from \"../../../../../IndeedIntegration/AdEditor/useStyles\";\nimport usestyles from \"../useStyles\";\nimport { jobAdPropTypes } from \"../../../../../NewUI/Components/Multiposter/types\";\nconst MAX_KEY_SELLING_POINTS = 3;\nconst MAX_CHAR_LIMIT = 80;\nfunction Step2({ answers, setAnswers, jobAdParams, requiredRefs, activeError }) {\n  var _a, _b;\n  const sharedClasses = sharedStyles();\n  const classes = usestyles();\n  return /* @__PURE__ */ React.createElement(\"div\", { className: sharedClasses.stepContainer }, /* @__PURE__ */ React.createElement(\"h4\", null, \"Feature Job on Viewjobs\"), /* @__PURE__ */ React.createElement(Box, { className: classes.switchContainer }, /* @__PURE__ */ React.createElement(FormLabel, null, \"From $350 + GST, boost visibility and attract more candidates.\"), /* @__PURE__ */ React.createElement(\n    FormControlLabel,\n    {\n      control: /* @__PURE__ */ React.createElement(\n        Switch,\n        {\n          checked: answers.featured,\n          onChange: () => setAnswers(__spreadProps(__spreadValues({}, answers), { featured: !answers.featured })),\n          color: \"secondary\"\n        }\n      ),\n      label: \"\"\n    }\n  )), answers.featured && /* @__PURE__ */ React.createElement(\n    FormControl,\n    {\n      fullWidth: true,\n      className: `${sharedClasses.formControl} ${sharedClasses.medium}`\n    },\n    /* @__PURE__ */ React.createElement(FormLabel, { required: false, className: sharedClasses.label }, \"Short Summary (Optional)\"),\n    /* @__PURE__ */ React.createElement(\n      TextField,\n      {\n        className: sharedClasses.textField,\n        variant: \"outlined\",\n        value: answers.jobPreview.summary,\n        onChange: (e) => e.target.value.length <= 150 && setAnswers(__spreadProps(__spreadValues({}, answers), {\n          jobPreview: __spreadProps(__spreadValues({}, answers.jobPreview), { summary: e.target.value })\n        }))\n      }\n    ),\n    /* @__PURE__ */ React.createElement(FormHelperText, { className: sharedClasses.helperText }, ((_b = (_a = answers.jobPreview) == null ? void 0 : _a.summary) == null ? void 0 : _b.length) || 0, \"/150\")\n  ), answers.featured && /* @__PURE__ */ React.createElement(\n    FormControl,\n    {\n      fullWidth: true,\n      className: `${sharedClasses.formControl} ${sharedClasses.medium}`\n    },\n    /* @__PURE__ */ React.createElement(FormLabel, { required: false, className: sharedClasses.label }, \"Key Selling Points (Optional)\"),\n    /* @__PURE__ */ React.createElement(\"span\", { className: sharedClasses.subLabel }, \"Enter \", MAX_KEY_SELLING_POINTS, \" key selling points to attract candidates to view your role\"),\n    Array.from({ length: MAX_KEY_SELLING_POINTS }).map((_, index) => {\n      var _a2, _b2;\n      return /* @__PURE__ */ React.createElement(\n        FormControl,\n        {\n          key: index,\n          fullWidth: true,\n          className: `${sharedClasses.formControl} ${sharedClasses.medium}`\n        },\n        /* @__PURE__ */ React.createElement(\n          TextField,\n          {\n            className: sharedClasses.textField,\n            variant: \"outlined\",\n            value: answers.jobPreview[`key${index + 1}`],\n            onChange: (e) => e.target.value.length <= MAX_CHAR_LIMIT && setAnswers(__spreadProps(__spreadValues({}, answers), {\n              jobPreview: __spreadProps(__spreadValues({}, answers.jobPreview), { [`key${index + 1}`]: e.target.value })\n            }))\n          }\n        ),\n        /* @__PURE__ */ React.createElement(FormHelperText, { className: sharedClasses.helperText }, ((_b2 = (_a2 = answers.jobPreview) == null ? void 0 : _a2[`key${index + 1}`]) == null ? void 0 : _b2.length) || 0, \"/\", MAX_CHAR_LIMIT)\n      );\n    })\n  ), /* @__PURE__ */ React.createElement(\"h4\", null, \"Job description\"), /* @__PURE__ */ React.createElement(\n    FormControl,\n    {\n      fullWidth: true,\n      style: { margin: \"0.5rem 0 1.5rem 0\" },\n      className: `preview-html ${classes.formControl} ${classes.large}`\n    },\n    /* @__PURE__ */ React.createElement(\"div\", { dangerouslySetInnerHTML: { __html: answers.description || \"No description\" } })\n  ));\n}\nStep2.propTypes = jobAdPropTypes;\nexport default Step2;\n","import React from \"react\";\nimport { Box } from \"@mui/material\";\nimport sharedStyles from \"../../../../../IndeedIntegration/AdEditor/useStyles\";\nimport { jobAdPropTypes } from \"../../../../../NewUI/Components/Multiposter/types\";\nimport renderHTML from \"react-render-html\";\nconst MAX_KEY_SELLING_POINTS = 3;\nfunction Step3({ answers }) {\n  const sharedClasses = sharedStyles();\n  return /* @__PURE__ */ React.createElement(Box, { className: sharedClasses.stepContainer }, /* @__PURE__ */ React.createElement(\"h4\", null, \"Preview Ad\"), /* @__PURE__ */ React.createElement(\"div\", { className: sharedClasses.previewContainer }, /* @__PURE__ */ React.createElement(\"div\", { className: sharedClasses.previewTitle }, `${answers.title} (${answers.workType})`), /* @__PURE__ */ React.createElement(\n    \"div\",\n    {\n      className: sharedClasses.previewDetails\n    },\n    `${answers.address} (${answers.workLocation})`\n  ), /* @__PURE__ */ React.createElement(\n    \"div\",\n    {\n      className: sharedClasses.previewDetails\n    },\n    `$${answers.payRangeLow}-$${answers.payRangeHigh}`\n  ), answers.benefits && /* @__PURE__ */ React.createElement(\"div\", { className: sharedClasses.previewDetails }, answers.benefits.map((benefit, index) => /* @__PURE__ */ React.createElement(\"span\", { key: index }, benefit, index < answers.benefits.length - 1 && \" \\u2022 \"))), answers.featured && /* @__PURE__ */ React.createElement(Box, { sx: { marginTop: \"1rem\" } }, /* @__PURE__ */ React.createElement(\"div\", { className: sharedClasses.previewDetails }, \"Featured Job on Viewjobs\"), /* @__PURE__ */ React.createElement(\"br\", null), /* @__PURE__ */ React.createElement(\"div\", { className: sharedClasses.previewDetails }, answers.jobPreview.summary), Array.from({ length: MAX_KEY_SELLING_POINTS }).map((_, index) => /* @__PURE__ */ React.createElement(\"div\", { className: sharedClasses.previewDetails, key: index }, \"\\u2022 \", answers.jobPreview[`key${index + 1}`]))), /* @__PURE__ */ React.createElement(\"div\", { className: sharedClasses.previewContent }, renderHTML(answers.description))));\n}\nStep3.propTypes = jobAdPropTypes;\nexport default Step3;\n","import { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n  switchContainer: {\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    flexDirection: \"row\"\n  },\n  descriptionLabel: {\n    marginTop: 50\n  },\n  textField: {\n    marginTop: 10\n  },\n  salaryIntervalLabel: {\n    width: 150\n  },\n  formControl: {\n    marginTop: 50\n  },\n  large: {\n    maxWidth: 600\n  },\n  previewButtons: {\n    display: \"flex\",\n    marginTop: 30,\n    \"& div\": {\n      borderRadius: 6,\n      fontWeight: \"600\",\n      lineHeight: \"20px\",\n      background: \"#2557A7\",\n      color: \"#FFF\",\n      fontSize: 20,\n      marginRight: 10,\n      padding: \"9px 24px\",\n      \"&:hover\": {\n        background: \"#3d6fbf\",\n        cursor: \"pointer\"\n      }\n    }\n  }\n}));\n","import { ContentState, EditorState } from \"draft-js\";\nimport htmlToDraft from \"html-to-draftjs\";\nexport function handleDraftValue(e) {\n  const contentBlock = htmlToDraft(e);\n  if (contentBlock) {\n    const contentState = ContentState.createFromBlockArray(contentBlock.contentBlocks);\n    const editorState = EditorState.createWithContent(contentState);\n    return editorState;\n  }\n  return null;\n}\n","export const handleNext = (type, checkErrors, requiredRefs, setActiveError, submit) => {\n  const errorRef = checkErrors();\n  if (errorRef) {\n    const ref = requiredRefs[errorRef];\n    setActiveError(ref);\n    window.scrollTo({ top: ref.current.offsetTop - 120, behavior: \"smooth\" });\n  } else {\n    submit(type);\n  }\n};\n","export const parseSalary = (value) => {\n  return parseFloat(value.split(\",\").join(\"\")) || 0;\n};\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nimport React, { useState, useEffect, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { usePreviewSeekAd } from \"../../SeekAd/hooks/usePreviewSeekAd\";\nimport { withScoutTheme } from \"../../ThemeContext/ThemeContext\";\nimport { Step1, Step2, Step3, Step4 } from \"./Steps\";\nimport { Button, Dialog, Snackbar, CircularProgress } from \"@material-ui/core\";\nimport useStyles from \"./useStyles\";\nimport ChevronRightIcon from \"@material-ui/icons/ChevronRight\";\nimport ChevronLeftIcon from \"@material-ui/icons/ChevronLeft\";\nimport axios from \"axios\";\nimport ExitConfirmationDialog from \"./Components/ExitConfirmationDialog\";\nimport StepperComponent from \"../../../components/NewUI/Components/CustomUIElements/StepperComponent\";\nimport JobAdSuccessDialog from \"../../../components/NewUI/Components/CustomUIElements/JobAdSuccessDialog\";\nconst steps = [\n  { label: \"Classify Job\", value: \"classify_job\" },\n  { label: \"What Jobseekers See In Search Results\", value: \"search_results\" },\n  { label: \"Ad Description\", value: \"description\" },\n  { label: \"Preview\", value: \"preview\" },\n  { label: \"Publish\", value: \"publish\" }\n];\nfunction AdEditor({\n  jobAdId,\n  apiKey,\n  jobId,\n  linkOutEnabled,\n  privacyOverLimit,\n  seek_billing_reference,\n  seek_billing_reference_flag,\n  job_url_prop\n}) {\n  const [saving, setSaving] = useState(false);\n  const [savingDraft, setSavingDraft] = useState(false);\n  const [isSnackOpen, setIsSnackOpen] = useState(false);\n  const [brandingEnabled, setBrandingEnabled] = useState(false);\n  const [maxBulletPoints, setMaxBulletPoints] = useState(0);\n  const [snackMessage, setSnackMessage] = useState(\"\");\n  const [isSuccessDialogOpen, setIsSuccessDialogOpen] = useState(false);\n  const [failedSeekDialogOpen, setFailedSeekDialogOpen] = useState(false);\n  const [failedSeekDialogMessage, setfailedSeekDialogMessage] = useState(\"\");\n  const [activeStep, setActiveStep] = useState(0);\n  const [isExitModalOpen, setIsExitModalOpen] = useState(false);\n  const [getSeekAdBrandingData, setGetSeekAdBrandingData] = useState(null);\n  const [answers, setAnswers] = useState(null);\n  const [activeError, setActiveError] = useState(null);\n  const [activeErrorMessage, setActiveErrorMessage] = useState(null);\n  const [editExistingJob, setEditExistingJob] = useState(false);\n  const classes = useStyles();\n  const { previewUrl } = usePreviewSeekAd(jobAdId);\n  function submit(type) {\n    return __async(this, null, function* () {\n      try {\n        type === \"draft\" ? setSavingDraft(true) : setSaving(true);\n        yield axios.put(\n          `/api/v4/seek/job_ads/${jobAdId}`,\n          { job_ad: answers, draft: type === \"draft\" ? true : false },\n          {\n            headers: { \"X-api-authenticate\": apiKey }\n          }\n        );\n        if (activeStep === 3 && type !== \"draft\") {\n          try {\n            answers.advertisement_id ? yield axios.put(`/api/v4/seek/job_ads/${jobAdId}/ad_posting`, null, {\n              headers: { \"X-api-authenticate\": apiKey }\n            }) : yield axios.post(`/api/v4/seek/job_ads/${jobAdId}/ad_posting`, null, {\n              headers: { \"X-api-authenticate\": apiKey }\n            });\n            setIsSuccessDialogOpen(true);\n          } catch (e) {\n            setFailedSeekDialogOpen(true);\n            return;\n          }\n        }\n        if (type === \"draft\") {\n          handleSnack(\"Draft saved\");\n          setIsExitModalOpen(false);\n          window.location.href = `/admin/jobs/${jobId}/job_ads`;\n        } else if (type === \"submit\") {\n          setIsSuccessDialogOpen(true);\n        } else if (type === \"next\") {\n          setActiveStep(activeStep + 1);\n        }\n      } catch (e) {\n        if (type === \"draft\") {\n          handleSnack(\"Unable to save draft\");\n        } else if (type === \"submit\") {\n          handleSnack(\"Unable to post to SEEK. Please check required fields and try again.\");\n        } else if (type === \"next\") {\n          setActiveStep(activeStep + 1);\n        }\n      } finally {\n        setSaving(false);\n        setSavingDraft(false);\n      }\n    });\n  }\n  function handleSnack(message) {\n    setIsSnackOpen(true);\n    setSnackMessage(message);\n  }\n  function getJobData() {\n    return __async(this, null, function* () {\n      try {\n        const { data } = yield axios.get(`/api/v4/seek/job_ads/${jobAdId}`, {\n          headers: { \"X-api-authenticate\": apiKey }\n        });\n        setAnswers(data);\n        setEditExistingJob(data.advertisement_id && data.advertisement_published_at ? true : false);\n        setActiveStep(0);\n      } catch (e) {\n      }\n    });\n  }\n  useEffect(() => {\n    getJobData();\n  }, []);\n  useEffect(() => {\n    setActiveError(null);\n  }, [answers]);\n  useEffect(() => {\n    window.scrollTo({ top: 0, behavior: \"smooth\" });\n  }, [activeStep]);\n  const requiredRefs = {\n    title: useRef(null),\n    listing_location: useRef(null),\n    category: useRef(null),\n    salary: useRef(null),\n    description: useRef(null),\n    ad_details: useRef(null),\n    link_out: useRef(null),\n    video_embed_code: useRef(null),\n    ad_type: useRef(null)\n  };\n  function setError(data) {\n    setActiveError(requiredRefs[Object.keys(data)[0]]);\n    setActiveErrorMessage(Object.values(data)[0]);\n  }\n  function handleNext(type) {\n    return __async(this, null, function* () {\n      const errorRef = checkErrors();\n      if (errorRef) {\n        const ref = requiredRefs[errorRef];\n        setActiveError(ref);\n        window.scrollTo({ top: ref.current.offsetTop - 120, behavior: \"smooth\" });\n      } else {\n        try {\n          const { data } = yield axios.post(\n            `/api/v4/seek/job_ads/${jobAdId}/validate`,\n            { job_ad: __spreadProps(__spreadValues({}, answers), { current_step: steps[activeStep].value }) },\n            {\n              headers: { \"X-api-authenticate\": apiKey }\n            }\n          );\n          if (data.success) {\n            submit(type);\n            if (activeError) {\n              setActiveError(null);\n              setActiveErrorMessage(null);\n            }\n          } else {\n            setFailedSeekDialogOpen(true);\n            setfailedSeekDialogMessage(data.error_message);\n          }\n        } catch (e) {\n          return e;\n        }\n      }\n    });\n  }\n  function checkErrors() {\n    const error = Object.keys(requiredRefs).find((ref) => {\n      if (activeStep === 0) {\n        if ([\"title\", \"listing_location\"].includes(ref)) {\n          return !answers[ref] && ref;\n        } else if (ref === \"category\") {\n          return answers.use_suggested_classification ? !answers.listing_sub_classification && ref : !answers.listing_sub_classification && !answers.listing_classification && ref;\n        } else if (ref === \"salary\") {\n          let difference = answers.salary_max - answers.salary_min;\n          return !answers.salary_min || !answers.salary_max || answers.salary_min < 1e5 && difference > 1e5 && ref;\n        } else if (ref === \"ad_type\") {\n          return !answers[ref] && ref;\n        }\n      } else if (activeStep === 1) {\n        if ([\"description\"].includes(ref)) {\n          return !answers[ref] && ref;\n        } else if (ref === \"video_embed_code\" && answers.video_embed_code !== \"\") {\n          if (!answers.video_embed_code) return;\n          const regex = /https:\\/\\/((www\\.youtube\\.com\\/embed|youtu\\.be)\\/[\\w-]+(\\?[\\w-]+=[\\w-]*(&[\\w-]+=[\\w-]*)*)?|www\\.youtube\\.com\\/watch\\?v=[\\w-]+(&[\\w-]+=[\\w-]*)*)/;\n          return !answers.video_embed_code.match(regex) && ref;\n        }\n      } else if (activeStep === 2) {\n        if ([\"title\", \"ad_details\"].includes(ref)) {\n          return !answers[ref] && ref;\n        }\n      }\n    });\n    return error;\n  }\n  const buttonName = () => {\n    if (activeStep + 2 >= steps.length) {\n      return editExistingJob ? \"Update\" : \"Publish\";\n    } else {\n      return \"Next\";\n    }\n  };\n  return /* @__PURE__ */ React.createElement(\"div\", { className: classes.containerOuter }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.container }, /* @__PURE__ */ React.createElement(StepperComponent, { activeStep, steps, classes }), answers && activeStep === 0 && /* @__PURE__ */ React.createElement(\n    Step1,\n    {\n      answers,\n      setAnswers,\n      apiKey,\n      jobId,\n      jobAdId,\n      requiredRefs,\n      activeError,\n      setBrandingEnabled,\n      setMaxBulletPoints,\n      seek_billing_reference,\n      seek_billing_reference_flag\n    }\n  ), answers && activeStep === 1 && /* @__PURE__ */ React.createElement(\n    Step2,\n    {\n      answers,\n      setAnswers,\n      getSeekAdBrandingData,\n      setGetSeekAdBrandingData,\n      apiKey,\n      jobAdId,\n      requiredRefs,\n      activeError,\n      activeErrorMessage,\n      maxBulletPoints,\n      brandingEnabled\n    }\n  ), answers && activeStep === 2 && /* @__PURE__ */ React.createElement(\n    Step3,\n    {\n      setActiveStep,\n      answers,\n      setAnswers,\n      requiredRefs,\n      activeError,\n      linkOutEnabled,\n      privacyOverLimit,\n      activeErrorMessage,\n      jobId,\n      setActiveError,\n      setActiveErrorMessage,\n      job_url_prop\n    }\n  ), answers && (activeStep === 3 || activeStep === 4) && /* @__PURE__ */ React.createElement(Step4, { answers }), /* @__PURE__ */ React.createElement(\"div\", { className: classes.buttonContainer }, /* @__PURE__ */ React.createElement(\"a\", { onClick: () => setIsExitModalOpen(true) }, \"Save and exit\"), /* @__PURE__ */ React.createElement(\"div\", { className: classes.buttons }, activeStep !== 0 && /* @__PURE__ */ React.createElement(\n    Button,\n    {\n      disableElevation: true,\n      className: classes.buttonSecondaryLight,\n      onClick: () => {\n        setAnswers(__spreadProps(__spreadValues({}, answers), { current_step: steps[activeStep - 1].value }));\n        setActiveStep(activeStep - 1);\n      }\n    },\n    /* @__PURE__ */ React.createElement(ChevronLeftIcon, null)\n  ), activeStep === 3 && /* @__PURE__ */ React.createElement(\n    Button,\n    {\n      disableElevation: true,\n      className: `${classes.buttonSecondary} preview`,\n      style: { minWidth: 130 },\n      href: previewUrl,\n      target: \"_blank\"\n    },\n    \"Preview on SEEK\"\n  ), activeStep !== 4 && /* @__PURE__ */ React.createElement(\n    Button,\n    {\n      disableElevation: true,\n      className: classes.buttonSecondary,\n      id: \"SeekNextStepMultiposterBtn\",\n      style: { minWidth: 130 },\n      onClick: () => handleNext(activeStep + 1 === steps.length ? \"submit\" : \"next\"),\n      endIcon: saving ? null : /* @__PURE__ */ React.createElement(ChevronRightIcon, null)\n    },\n    saving ? /* @__PURE__ */ React.createElement(CircularProgress, { size: 20, color: \"inherit\" }) : buttonName()\n  )))), /* @__PURE__ */ React.createElement(\n    ExitConfirmationDialog,\n    {\n      saving,\n      savingDraft,\n      setActiveStep,\n      isExitModalOpen,\n      setIsExitModalOpen,\n      editExistingJob,\n      submit\n    }\n  ), /* @__PURE__ */ React.createElement(\n    JobAdSuccessDialog,\n    {\n      open: isSuccessDialogOpen,\n      onClose: () => window.location.replace(document.referrer),\n      answers,\n      classes,\n      adType: \"seek\",\n      jobId\n    }\n  ), /* @__PURE__ */ React.createElement(\n    Dialog,\n    {\n      open: failedSeekDialogOpen,\n      onClose: () => {\n        setFailedSeekDialogOpen(false);\n        setfailedSeekDialogMessage(\"\");\n      },\n      classes: { paper: classes.failDialog }\n    },\n    /* @__PURE__ */ React.createElement(\"h4\", null, \"Posting Failed\"),\n    /* @__PURE__ */ React.createElement(\"span\", null, failedSeekDialogMessage || \"Please check all your details again and republish.\"),\n    /* @__PURE__ */ React.createElement(\"div\", { className: classes.dialogButtonContainer }, /* @__PURE__ */ React.createElement(\n      Button,\n      {\n        disableElevation: true,\n        className: classes.buttonSecondary,\n        onClick: () => {\n          setFailedSeekDialogOpen(false);\n          setfailedSeekDialogMessage(\"\");\n          setActiveStep(0);\n        }\n      },\n      /* @__PURE__ */ React.createElement(\"span\", { style: { marginRight: \"0.5rem\" } }, \"Ok\"),\n      \" >\"\n    ))\n  ), /* @__PURE__ */ React.createElement(Snackbar, { open: isSnackOpen, onClose: () => setIsSnackOpen(false), message: snackMessage }));\n}\nAdEditor.propTypes = {\n  jobAdId: PropTypes.number.isRequired,\n  jobId: PropTypes.number.isRequired,\n  apiKey: PropTypes.string.isRequired,\n  linkOutEnabled: PropTypes.bool.isRequired,\n  privacyOverLimit: PropTypes.bool,\n  seek_billing_reference: PropTypes.bool,\n  seek_billing_reference_flag: PropTypes.bool,\n  job_url_prop: PropTypes.string\n};\nexport default withScoutTheme(AdEditor);\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nimport React, { useState, useEffect } from \"react\";\nimport { Radio, Grid, CircularProgress, withStyles } from \"@material-ui/core\";\nimport useStyles from \"../useStyles\";\nimport PropTypes from \"prop-types\";\nimport axios from \"axios\";\nconst PinkRadio = withStyles({\n  root: {\n    \"&$checked\": {\n      color: \"#E60278\"\n    }\n  },\n  checked: {}\n})((props) => /* @__PURE__ */ React.createElement(Radio, __spreadValues({ color: \"default\" }, props)));\nfunction AdProductSelection({\n  debouncedTitle,\n  answers,\n  setAnswers,\n  requiredRefs,\n  jobAdId,\n  setMaxBulletPoints,\n  setBrandingEnabled\n}) {\n  const [seekAdProduct, setSeekAdProduct] = useState(null);\n  const [adProductInfo, setAdProductInfo] = useState(\"\");\n  const [loadingSeekAdProduct, setLoadingSeekAdProduct] = useState(true);\n  const [selectedId, setSelectedId] = useState(null);\n  const classes = useStyles();\n  const setSelectedValue = (value) => {\n    setSelectedId(value);\n    setAnswers(__spreadProps(__spreadValues({}, answers), { ad_type: value }));\n  };\n  const handleChangeAdType = (ad) => {\n    setSelectedValue(ad.id.value);\n    setBrandingEnabled(!!ad.features.branding);\n    setMaxBulletPoints(\n      ad.features.searchBulletPoints ? Number(ad.features.searchBulletPoints.limit) : 0\n    );\n  };\n  useEffect(() => {\n    const getSeekAdProducts = (url) => __async(this, null, function* () {\n      setLoadingSeekAdProduct(true);\n      try {\n        const { data } = yield axios.get(url, {\n          params: {\n            listing_sub_classification: answers.listing_sub_classification,\n            listing_location: answers.listing_location,\n            title: debouncedTitle,\n            job_ad_id: jobAdId\n          }\n        });\n        const { products, information } = data.data.advertisementProducts;\n        setSeekAdProduct(products);\n        setAdProductInfo(information);\n        products.forEach((product) => {\n          if (product.selected) {\n            handleChangeAdType(product);\n          }\n        });\n      } catch (exception) {\n        console.error(exception);\n        setSeekAdProduct(null);\n      } finally {\n        setLoadingSeekAdProduct(false);\n      }\n    });\n    answers.listing_sub_classification && debouncedTitle && answers.listing_location && getSeekAdProducts(`/api/v4/seek/job_ads/${jobAdId}/ad_products`);\n  }, [answers.listing_location, answers.listing_sub_classification, debouncedTitle, jobAdId]);\n  if (loadingSeekAdProduct) {\n    return /* @__PURE__ */ React.createElement(CircularProgress, { size: 20, color: \"inherit\" });\n  }\n  return /* @__PURE__ */ React.createElement(Grid, { container: true }, seekAdProduct && seekAdProduct.map((ad, index) => {\n    const id = ad.id.value;\n    const selected = selectedId === id;\n    return /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12, sm: 12, md: Math.floor(12 / seekAdProduct.length), key: index }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.seekAdType, onClick: () => handleChangeAdType(ad) }, /* @__PURE__ */ React.createElement(\n      \"div\",\n      {\n        className: \"seekAdheaderWrapper\",\n        style: index === 0 || index === seekAdProduct.length - 1 ? { borderRadius: index === 0 ? \"5px 0 0 0\" : \"0 5px 0 0\" } : {}\n      },\n      \"Pay using your SEEK Contract\"\n    ), /* @__PURE__ */ React.createElement(\n      \"div\",\n      {\n        style: selected ? { border: \"#E60278 1px solid\", height: \"calc(100% - 2rem)\" } : { border: \"#E9E8E8 1px solid\", height: \"calc(100% - 2rem)\" }\n      },\n      /* @__PURE__ */ React.createElement(\"div\", { className: \"seekRadioRadioBtnWrapper\", ref: requiredRefs.ad_type }, /* @__PURE__ */ React.createElement(\n        PinkRadio,\n        {\n          checked: selected,\n          onChange: () => handleChangeAdType(ad),\n          value: id,\n          name: \"radio-buttons\",\n          inputProps: { \"aria-label\": \"A\" }\n        }\n      )),\n      /* @__PURE__ */ React.createElement(\"h4\", null, ad.label),\n      /* @__PURE__ */ React.createElement(\"div\", null, ad.price && ad.price.summary),\n      /* @__PURE__ */ React.createElement(\"div\", { className: classes.seekEmbeddedHTML }, /* @__PURE__ */ React.createElement(\"div\", null, ad.description), /* @__PURE__ */ React.createElement(\"ul\", null, ad.sellingPoints.map((sp, index2) => /* @__PURE__ */ React.createElement(\"li\", { key: index2 }, sp.text))))\n    )));\n  }), /* @__PURE__ */ React.createElement(\"p\", { className: classes.adProductInfo }, adProductInfo));\n}\nAdProductSelection.propTypes = {\n  answers: PropTypes.object.isRequired,\n  setAnswers: PropTypes.func.isRequired,\n  requiredRefs: PropTypes.object.isRequired,\n  jobAdId: PropTypes.number,\n  setMaxBulletPoints: PropTypes.func.isRequired,\n  setBrandingEnabled: PropTypes.func.isRequired,\n  debouncedTitle: PropTypes.string\n};\nexport default AdProductSelection;\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nimport React, { useState, useEffect } from \"react\";\nimport { Radio, Grid, CircularProgress, withStyles } from \"@material-ui/core\";\nimport useStyles from \"../useStyles\";\nimport PropTypes from \"prop-types\";\nimport axios from \"axios\";\nconst PinkRadio = withStyles({\n  root: {\n    \"&$checked\": {\n      color: \"#E60278\"\n    }\n  },\n  checked: {}\n})((props) => /* @__PURE__ */ React.createElement(Radio, __spreadValues({ color: \"default\" }, props)));\nfunction AdSelection({\n  answers,\n  setAnswers,\n  requiredRefs,\n  jobAdId,\n  setMaxBulletPoints,\n  setBrandingEnabled\n}) {\n  const [getSeekAdSelectionData, setGetSeekAdSelectionData] = useState(null);\n  const [loadingSeekAdType, setLoadingSeekAdType] = useState(true);\n  const [selectedValue, setSelectedValue] = React.useState(answers.ad_type);\n  const classes = useStyles();\n  const handleChangeAdType = (event) => {\n    const adType = event.target.value;\n    setSelectedValue(adType);\n    setAnswers(__spreadProps(__spreadValues({}, answers), { ad_type: adType }));\n  };\n  useEffect(() => {\n    if (selectedValue === \"Classic\") {\n      setMaxBulletPoints(0);\n      setBrandingEnabled(false);\n    } else {\n      setMaxBulletPoints(3);\n      setBrandingEnabled(true);\n    }\n  }, [selectedValue, setMaxBulletPoints, setBrandingEnabled]);\n  useEffect(() => {\n    const getSeekAdType = (url) => __async(this, null, function* () {\n      setLoadingSeekAdType(true);\n      try {\n        const { data } = yield axios.get(url, {\n          params: {\n            listing_sub_classification: answers.listing_sub_classification,\n            listing_location: answers.listing_location,\n            title: answers.title,\n            job_ad_id: jobAdId\n          }\n        });\n        setGetSeekAdSelectionData(data.data.seekAnzHirerAdvertisementCreationProducts);\n      } catch (exception) {\n        console.error(exception);\n        setGetSeekAdSelectionData(null);\n      } finally {\n        setLoadingSeekAdType(false);\n      }\n    });\n    answers.listing_sub_classification && answers.title && answers.listing_location && getSeekAdType(`/api/v4/seek/job_ads/${jobAdId}/ad_selections`);\n  }, [answers.listing_location, answers.listing_sub_classification, answers.title, jobAdId]);\n  if (loadingSeekAdType) {\n    return /* @__PURE__ */ React.createElement(CircularProgress, { size: 20, color: \"inherit\" });\n  }\n  return /* @__PURE__ */ React.createElement(Grid, { container: true }, getSeekAdSelectionData && getSeekAdSelectionData.map((ad, index) => /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12, sm: 12, md: 4, key: index }, /* @__PURE__ */ React.createElement(\n    \"div\",\n    {\n      className: !ad.enabledIndicator ? classes.seekAdTypeDisabled : classes.seekAdType,\n      onClick: () => {\n        if (!ad.enabledIndicator) {\n          return;\n        }\n        setSelectedValue(ad.advertisementTypeCode);\n        setAnswers(__spreadProps(__spreadValues({}, answers), { ad_type: ad.advertisementTypeCode }));\n      }\n    },\n    /* @__PURE__ */ React.createElement(\n      \"div\",\n      {\n        className: \"seekAdheaderWrapper\",\n        style: index === 0 || index === 2 ? { borderRadius: index === 0 ? \"5px 0 0 0\" : \"0 5px 0 0\" } : {}\n      },\n      \"Pay using your SEEK Contract\"\n    ),\n    /* @__PURE__ */ React.createElement(\n      \"div\",\n      {\n        style: selectedValue === ad.advertisementTypeCode && ad.enabledIndicator ? { border: \"#E60278 1px solid\", minHeight: \"12.75rem\" } : { border: \"#E9E8E8 1px solid\", minHeight: \"12.5rem\" }\n      },\n      /* @__PURE__ */ React.createElement(\"div\", { className: \"seekRadioRadioBtnWrapper\", ref: requiredRefs.ad_type }, /* @__PURE__ */ React.createElement(\n        PinkRadio,\n        {\n          checked: selectedValue === ad.advertisementTypeCode && ad.enabledIndicator,\n          onChange: handleChangeAdType,\n          value: ad.advertisementTypeCode,\n          disabled: !ad.enabledIndicator,\n          name: \"radio-buttons\",\n          inputProps: { \"aria-label\": \"A\" }\n        }\n      )),\n      /* @__PURE__ */ React.createElement(\"h4\", null, ad.advertisementTypeCode),\n      /* @__PURE__ */ React.createElement(\"div\", null, ad.price.summary),\n      /* @__PURE__ */ React.createElement(\n        \"div\",\n        {\n          className: classes.seekEmbeddedHTML,\n          dangerouslySetInnerHTML: { __html: ad.description }\n        }\n      )\n    )\n  ))));\n}\nAdSelection.propTypes = {\n  answers: PropTypes.object.isRequired,\n  setAnswers: PropTypes.func.isRequired,\n  requiredRefs: PropTypes.object.isRequired,\n  jobAdId: PropTypes.number,\n  setMaxBulletPoints: PropTypes.func.isRequired,\n  setBrandingEnabled: PropTypes.func.isRequired\n};\nexport default AdSelection;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Dialog } from \"@material-ui/core\";\nimport useDialogStyles from \"../useDialogStyles\";\nimport ExitExistingDialogContent from \"./ExitExistingDialogContent\";\nimport ExitNewDialogContent from \"./ExitNewDialogContent\";\nexport function ExitConfirmationDialog({\n  saving,\n  savingDraft,\n  isExitModalOpen,\n  setIsExitModalOpen,\n  editExistingJob,\n  submit\n}) {\n  const classes = useDialogStyles();\n  const close = () => setIsExitModalOpen(false);\n  const saveDraft = () => submit(\"draft\");\n  return /* @__PURE__ */ React.createElement(Dialog, { open: isExitModalOpen, onClose: close, classes: { paper: classes.dialog } }, editExistingJob ? /* @__PURE__ */ React.createElement(\n    ExitExistingDialogContent,\n    {\n      saving,\n      savingDraft,\n      close,\n      saveDraft\n    }\n  ) : /* @__PURE__ */ React.createElement(ExitNewDialogContent, { savingDraft, close, saveDraft }));\n}\nExitConfirmationDialog.propTypes = {\n  saving: PropTypes.bool,\n  savingDraft: PropTypes.bool,\n  editExistingJob: PropTypes.bool,\n  isExitModalOpen: PropTypes.bool,\n  setActiveStep: PropTypes.func,\n  setIsExitModalOpen: PropTypes.func,\n  submit: PropTypes.func\n};\nexport default ExitConfirmationDialog;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Button, CircularProgress } from \"@material-ui/core\";\nimport ChevronRightIcon from \"@material-ui/icons/ChevronRight\";\nimport IconButton from \"@mui/material/IconButton\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport useDialogStyles from \"../useDialogStyles\";\nexport function ExitExistingDialogContent({ saving, savingDraft, close, saveDraft }) {\n  const classes = useDialogStyles();\n  return /* @__PURE__ */ React.createElement(\"div\", null, /* @__PURE__ */ React.createElement(\"div\", { className: classes.closeContainer }, /* @__PURE__ */ React.createElement(IconButton, { onClick: close }, /* @__PURE__ */ React.createElement(CloseIcon, { style: { fill: \"#cccccc\", width: 20, height: 20 } }))), /* @__PURE__ */ React.createElement(\"h4\", { className: classes.dialogHeader }, \"Changes are not yet live!\"), /* @__PURE__ */ React.createElement(\"p\", { className: classes.dialogDescription }, \"Your changes are not saved yet.\"), /* @__PURE__ */ React.createElement(\"p\", { className: classes.dialogDescription }, `Please navigate to the last page and click 'Update' to ensure all edits to your SEEK Ad are saved.`), /* @__PURE__ */ React.createElement(\"div\", { className: classes.dialogButtonContainer }, /* @__PURE__ */ React.createElement(\n    Button,\n    {\n      disableElevation: true,\n      className: classes.buttonSecondaryLight,\n      onClick: saveDraft,\n      style: { minWidth: 130 }\n    },\n    savingDraft ? /* @__PURE__ */ React.createElement(CircularProgress, { size: 20, color: \"inherit\" }) : \"No, save and exit\"\n  ), /* @__PURE__ */ React.createElement(\n    Button,\n    {\n      disableElevation: true,\n      className: classes.buttonSecondary,\n      id: \"SeekNextStepMultiposterBtn\",\n      style: { minWidth: 130 },\n      onClick: close,\n      endIcon: saving ? null : /* @__PURE__ */ React.createElement(ChevronRightIcon, null)\n    },\n    \"Continue Editing\"\n  )));\n}\nExitExistingDialogContent.propTypes = {\n  saving: PropTypes.bool,\n  savingDraft: PropTypes.bool,\n  close: PropTypes.func,\n  saveDraft: PropTypes.func\n};\nexport default ExitExistingDialogContent;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Button, CircularProgress } from \"@material-ui/core\";\nimport useDialogStyles from \"../useDialogStyles\";\nexport function ExitNewDialogContent({ savingDraft, close, saveDraft }) {\n  const classes = useDialogStyles();\n  return /* @__PURE__ */ React.createElement(\"div\", null, /* @__PURE__ */ React.createElement(\"h4\", { className: classes.dialogDescription }, \"Are you sure?\"), /* @__PURE__ */ React.createElement(\"div\", { className: classes.dialogButtonContainer }, /* @__PURE__ */ React.createElement(Button, { disableElevation: true, className: classes.buttonSecondaryLight, onClick: close }, \"Cancel\"), /* @__PURE__ */ React.createElement(\n    Button,\n    {\n      disableElevation: true,\n      className: classes.buttonSecondary,\n      onClick: saveDraft,\n      style: { minWidth: 130 }\n    },\n    savingDraft ? /* @__PURE__ */ React.createElement(CircularProgress, { size: 20, color: \"inherit\" }) : \"Save and exit\"\n  )));\n}\nExitNewDialogContent.propTypes = {\n  savingDraft: PropTypes.bool,\n  close: PropTypes.func,\n  saveDraft: PropTypes.func\n};\nexport default ExitNewDialogContent;\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport React from \"react\";\nimport {\n  FormControl,\n  FormLabel,\n  FormControlLabel,\n  InputAdornment,\n  TextField,\n  Radio,\n  RadioGroup,\n  Grid,\n  Box,\n  Select,\n  MenuItem\n} from \"@material-ui/core\";\nimport useStyles from \"../useStyles\";\nimport { useSeekPayTypes } from \"../../hooks/useSeekPayTypes\";\nimport { useSeekCurrencies } from \"../../hooks/useSeekCurrencies\";\nimport PropTypes from \"prop-types\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\nimport TextAreaWithCounter from \"../UtilComponents/TextAreaWithCounter\";\nimport { parseSalary } from \"../../../NewUI/Components/Multiposter/salaryHelper\";\nfunction PayDetails({ answers, setAnswers, requiredRefs, activeError }) {\n  const { payTypes } = useSeekPayTypes();\n  const { currencies } = useSeekCurrencies();\n  const classes = useStyles();\n  const setSalaryType = (value) => {\n    const [basisCode, intervalCode] = value.split(\":\");\n    setAnswers(__spreadProps(__spreadValues({}, answers), { salary_type: basisCode, salary_interval: intervalCode }));\n  };\n  return /* @__PURE__ */ React.createElement(Box, { className: classes.payDetailsContainer }, /* @__PURE__ */ React.createElement(\"h4\", null, \"Pay details\"), /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl}` }, /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: classes.label }, \"Pay Type\", /* @__PURE__ */ React.createElement(\"span\", { className: classes.asterisk }, \" *\")), /* @__PURE__ */ React.createElement(\n    RadioGroup,\n    {\n      value: `${answers.salary_type}:${answers.salary_interval || \"Hour\"}`,\n      onChange: (e) => setSalaryType(e.target.value)\n    },\n    payTypes.map((pay) => /* @__PURE__ */ React.createElement(\n      FormControlLabel,\n      {\n        key: pay.label,\n        label: pay.label,\n        value: `${pay.basisCode}:${pay.intervalCode}`,\n        control: /* @__PURE__ */ React.createElement(Radio, null)\n      }\n    ))\n  )), /* @__PURE__ */ React.createElement(\n    FormControl,\n    {\n      ref: requiredRefs.salary,\n      fullWidth: true,\n      className: `${classes.formControl} ${classes.medium}`\n    },\n    /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: classes.label }, \"Pay Range\", /* @__PURE__ */ React.createElement(\"span\", { className: classes.asterisk }, \" *\"), activeError === requiredRefs.salary && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), !answers.salary_min || !answers.salary_max ? /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\") : /* @__PURE__ */ React.createElement(\"span\", null, \"The pay range cannot exceed $100,000\"))),\n    /* @__PURE__ */ React.createElement(\"span\", { className: classes.subLabel }, \"Enter a pay range to offer candidates (this will not show on your ad)\"),\n    /* @__PURE__ */ React.createElement(Grid, { container: true, classes: { root: classes.controlledNumberInput } }, /* @__PURE__ */ React.createElement(\n      Grid,\n      {\n        item: true,\n        container: true,\n        alignContent: \"center\",\n        alignItems: \"center\",\n        justifyContent: \"center\",\n        wrap: \"nowrap\"\n      },\n      /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Box, { m: 1, ml: 0 }, /* @__PURE__ */ React.createElement(\n        TextField,\n        {\n          error: activeError === requiredRefs.salary,\n          className: classes.textField,\n          variant: \"outlined\",\n          onBlur: () => {\n            if (answers.salary_min > answers.salary_max)\n              setAnswers(__spreadProps(__spreadValues({}, answers), { salary_max: answers.salary_min }));\n          },\n          value: Number(answers.salary_min).toLocaleString(),\n          InputProps: {\n            startAdornment: /* @__PURE__ */ React.createElement(InputAdornment, { position: \"start\" }, \"From\")\n          },\n          onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { salary_min: parseSalary(e.target.value) }))\n        }\n      )), /* @__PURE__ */ React.createElement(Box, { m: 1 }, /* @__PURE__ */ React.createElement(\n        TextField,\n        {\n          error: activeError === requiredRefs.salary,\n          className: classes.textField,\n          variant: \"outlined\",\n          value: Number(answers.salary_max).toLocaleString(),\n          onBlur: () => {\n            if (answers.salary_max < answers.salary_min)\n              setAnswers(__spreadProps(__spreadValues({}, answers), { salary_max: answers.salary_min }));\n          },\n          InputProps: {\n            startAdornment: /* @__PURE__ */ React.createElement(InputAdornment, { position: \"start\" }, \"To\")\n          },\n          onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { salary_max: parseSalary(e.target.value) }))\n        }\n      )), /* @__PURE__ */ React.createElement(Box, { m: 1 }, /* @__PURE__ */ React.createElement(\n        Select,\n        {\n          classes: { select: classes.dropdown },\n          variant: \"outlined\",\n          value: answers.currency,\n          onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { currency: e.target.value })),\n          displayEmpty: false,\n          renderValue: (value) => value\n        },\n        currencies.map((currency) => /* @__PURE__ */ React.createElement(MenuItem, { key: currency.code, value: currency.code }, currency.code))\n      )), /* @__PURE__ */ React.createElement(\"span\", { className: classes.salaryIntervalLabel }, \"per \", answers.salary_interval || \"Hour\"))\n    ))\n  ), /* @__PURE__ */ React.createElement(\n    TextAreaWithCounter,\n    {\n      title: \"Customise the Pay information on your Ad (Optional)\",\n      value: answers.salary_additional_text,\n      setValue: (value) => setAnswers(__spreadProps(__spreadValues({}, answers), { salary_additional_text: value })),\n      maxLength: 50,\n      helperText: \"E.g. $50,000 + annual bonus\"\n    }\n  ));\n}\nPayDetails.propTypes = {\n  answers: PropTypes.object.isRequired,\n  setAnswers: PropTypes.func.isRequired,\n  requiredRefs: PropTypes.object.isRequired,\n  activeError: PropTypes.ref\n};\nexport default PayDetails;\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport React from \"react\";\nimport TextAreaWithCounter from \"../UtilComponents/TextAreaWithCounter\";\nimport PropTypes from \"prop-types\";\nfunction SeekBillingReference({ answers, setAnswers }) {\n  return /* @__PURE__ */ React.createElement(\n    TextAreaWithCounter,\n    {\n      title: \"Seek Billing Reference (Optional)\",\n      value: answers.billing_reference,\n      setValue: (value) => setAnswers(__spreadProps(__spreadValues({}, answers), { billing_reference: value })),\n      maxLength: 50,\n      helperText: \"Include a purchase order or reference to appear on your SEEK invoice\"\n    }\n  );\n}\nSeekBillingReference.propTypes = {\n  answers: PropTypes.object.isRequired,\n  setAnswers: PropTypes.func.isRequired\n};\nexport default SeekBillingReference;\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport React from \"react\";\nimport { FormControl, FormLabel, FormControlLabel, Radio, RadioGroup } from \"@material-ui/core\";\nimport useStyles from \"../useStyles\";\nimport PropTypes from \"prop-types\";\nconst workSalaryOptions = [\n  { value: \"Casual\", label: \"Casual\" },\n  { value: \"ContractTemp\", label: \"Contract\" },\n  { value: \"FullTime\", label: \"Full Time\" },\n  { value: \"PartTime\", label: \"Part Time\" }\n];\nfunction WorkTypes({ answers, setAnswers }) {\n  const classes = useStyles();\n  return /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl}` }, /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: classes.label }, \"Work Type\"), /* @__PURE__ */ React.createElement(\n    RadioGroup,\n    {\n      value: answers.listing_work_type,\n      onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { listing_work_type: e.target.value }))\n    },\n    workSalaryOptions.map((pay) => /* @__PURE__ */ React.createElement(\n      FormControlLabel,\n      {\n        key: pay.value,\n        label: pay.label,\n        value: pay.value,\n        control: /* @__PURE__ */ React.createElement(Radio, null)\n      }\n    ))\n  ));\n}\nWorkTypes.propTypes = {\n  answers: PropTypes.object.isRequired,\n  setAnswers: PropTypes.func.isRequired\n};\nexport default WorkTypes;\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nimport React, { useState, useEffect, useCallback } from \"react\";\nimport {\n  FormControl,\n  FormLabel,\n  FormControlLabel,\n  TextField,\n  Radio,\n  RadioGroup,\n  FormHelperText,\n  Grid,\n  Select,\n  MenuItem\n} from \"@material-ui/core\";\nimport useStyles from \"../useStyles\";\nimport PropTypes from \"prop-types\";\nimport axios from \"axios\";\nimport { useDebounce } from \"use-debounce\";\nimport { CircularProgress } from \"@material-ui/core\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\nimport ScoutAutocomplete from \"../../../scout/autocomplete\";\nimport AdProductSelection from \"../Components/AdProductSelection\";\nimport AdSelection from \"../Components/AdSelection\";\nimport PayDetails from \"../Components/PayDetails\";\nimport WorkTypes from \"../Components/WorkTypes\";\nimport SeekBillingReference from \"../Components/SeekBillingReference\";\nconst TITLE_LIMIT = 80;\nfunction Step1({\n  answers,\n  setAnswers,\n  apiKey,\n  requiredRefs,\n  activeError,\n  jobAdId,\n  setBrandingEnabled,\n  setMaxBulletPoints,\n  seek_billing_reference,\n  seek_billing_reference_flag\n}) {\n  const [loadingSeekAdAllCategories, setLoadingSeekAdTypeAllCategories] = useState(true);\n  const [loadingSeekAdCategories, setLoadingSeekAdCategories] = useState(true);\n  const [seekAdCategories, setSeekAdCategories] = useState(null);\n  const [getSeekAdCategoriesData, setGetSeekAdCategoriesData] = useState(null);\n  const [categoriesIndex, setCategoriesIndex] = useState(null);\n  const [debouncedTitle] = useDebounce(answers.title, 2500);\n  const [debouncedAddress] = useDebounce(answers.listing_location, 2500);\n  const classes = useStyles();\n  const updateCategoryIndex = useCallback(\n    (rawData) => {\n      const data = rawData || getSeekAdCategoriesData;\n      if (data) {\n        const index = data.findIndex(\n          (category) => category.id.value === answers.listing_classification\n        );\n        setCategoriesIndex(index);\n      }\n    },\n    [answers.listing_classification, getSeekAdCategoriesData]\n  );\n  useEffect(() => {\n    const getSeekAdCategories = (url) => __async(this, null, function* () {\n      setLoadingSeekAdTypeAllCategories(true);\n      try {\n        const { data } = yield axios.get(url, {\n          headers: { \"Content-Type\": \"application/json\" }\n        });\n        setGetSeekAdCategoriesData(data.data.jobCategories);\n        setLoadingSeekAdTypeAllCategories(false);\n      } catch (e) {\n        setSeekAdCategories(null);\n        setLoadingSeekAdTypeAllCategories(false);\n      }\n    });\n    getSeekAdCategories(\n      `/api/v4/seek/job_ads/${jobAdId}/job_categories?location_id=${answers.listing_location}`\n    );\n  }, [jobAdId, answers.listing_location]);\n  useEffect(() => {\n    answers.use_suggested_classification && answers.listing_classification && answers.listing_sub_classification && updateCategoryIndex(getSeekAdCategoriesData);\n  }, [\n    answers.listing_classification,\n    answers.listing_sub_classification,\n    answers.use_suggested_classification,\n    getSeekAdCategoriesData,\n    updateCategoryIndex\n  ]);\n  const getSugestedSeekAdCategories = (url) => __async(this, null, function* () {\n    if (!answers.title || !answers.listing_location) {\n      setSeekAdCategories(null);\n      setLoadingSeekAdCategories(false);\n      return;\n    }\n    try {\n      const { data } = yield axios.get(url, {\n        headers: { \"X-api-authenticate\": apiKey },\n        params: { title: answers.title, listing_location: answers.listing_location }\n      });\n      setSeekAdCategories(data.data.jobCategorySuggestions);\n      setLoadingSeekAdCategories(false);\n    } catch (e) {\n      setSeekAdCategories(null);\n      setLoadingSeekAdCategories(false);\n    }\n  });\n  useEffect(() => {\n    getSugestedSeekAdCategories(`/api/v4/seek/job_ads/${jobAdId}/job_categories/suggestions`);\n  }, [jobAdId, debouncedTitle, debouncedAddress]);\n  useEffect(() => {\n    setLoadingSeekAdCategories(true);\n  }, [debouncedTitle, answers.listing_location]);\n  useEffect(() => {\n    if (!getSeekAdCategoriesData) return;\n    updateCategoryIndex(null);\n  }, [answers.listing_classification, getSeekAdCategoriesData, updateCategoryIndex]);\n  return /* @__PURE__ */ React.createElement(\"div\", { className: classes.stepContainer }, /* @__PURE__ */ React.createElement(\n    FormControl,\n    {\n      ref: requiredRefs.title,\n      fullWidth: true,\n      className: `${classes.formControl} ${classes.medium}`\n    },\n    /* @__PURE__ */ React.createElement(FormLabel, { required: true, className: classes.label }, \"Job Title\"),\n    /* @__PURE__ */ React.createElement(\n      TextField,\n      {\n        error: activeError === requiredRefs.title,\n        className: classes.textField,\n        variant: \"outlined\",\n        value: answers.title,\n        onChange: (e) => e.target.value.length <= TITLE_LIMIT && setAnswers(__spreadProps(__spreadValues({}, answers), { title: e.target.value })),\n        InputProps: {\n          endAdornment: activeError === requiredRefs.title && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))\n        }\n      }\n    ),\n    /* @__PURE__ */ React.createElement(FormHelperText, { className: classes.helperText }, answers.title.length, \"/\", TITLE_LIMIT)\n  ), /* @__PURE__ */ React.createElement(\n    FormControl,\n    {\n      ref: requiredRefs.listing_location,\n      fullWidth: true,\n      className: `${classes.formControl} ${classes.medium}`\n    },\n    /* @__PURE__ */ React.createElement(FormLabel, { className: classes.label }, \"Location\", /* @__PURE__ */ React.createElement(\"span\", { className: classes.asterisk }, \" *\"), activeError === requiredRefs.listing_location && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", { id: \"SeekMultiposterErrorTxt\" }, \"This field is required\"))),\n    /* @__PURE__ */ React.createElement(\n      ScoutAutocomplete,\n      {\n        className: `${activeError === requiredRefs.listing_location ? classes.errorAutocomplete : \"\"} select-seek-location`,\n        url: `/api/v4/seek/job_ads/${jobAdId}/locations/options`,\n        name: \"location\",\n        value: answers.listing_location,\n        selectedLabel: answers.listing_location_display,\n        includeBlank: true,\n        placeholder: \"Type to search...\",\n        onChange: (value, label, attrs) => {\n          setAnswers(__spreadProps(__spreadValues({}, answers), {\n            listing_location: value,\n            listing_location_display: label,\n            currency: attrs && attrs.currencies ? attrs.currencies[0].code : \"AUD\"\n          }));\n        }\n      }\n    )\n  ), /* @__PURE__ */ React.createElement(\n    FormControl,\n    {\n      ref: requiredRefs.category,\n      fullWidth: true,\n      className: `${classes.formControl}`\n    },\n    /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: classes.label }, \"Category\", /* @__PURE__ */ React.createElement(\"span\", { className: classes.asterisk }, \" *\"), activeError === requiredRefs.category && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))),\n    seekAdCategories && /* @__PURE__ */ React.createElement(\"span\", { className: classes.subLabel }, \"Suggested category based on both job title and location\"),\n    loadingSeekAdCategories || loadingSeekAdAllCategories ? /* @__PURE__ */ React.createElement(CircularProgress, { size: 20, color: \"inherit\" }) : seekAdCategories ? /* @__PURE__ */ React.createElement(\n      RadioGroup,\n      {\n        value: answers.listing_sub_classification,\n        onChange: (e) => {\n          setAnswers(__spreadProps(__spreadValues({}, answers), {\n            listing_sub_classification: e.target.value,\n            use_suggested_classification: false,\n            listing_sub_classification_display: e.target.name\n          }));\n        }\n      },\n      seekAdCategories.map((category) => /* @__PURE__ */ React.createElement(\"div\", { key: category.jobCategory.id.value }, /* @__PURE__ */ React.createElement(\n        FormControlLabel,\n        {\n          label: category.jobCategory.parent.name,\n          name: `${category.jobCategory.parent.name} > ${category.jobCategory.name}`,\n          value: category.jobCategory.id.value,\n          control: /* @__PURE__ */ React.createElement(Radio, null)\n        }\n      ), /* @__PURE__ */ React.createElement(\"div\", null, /* @__PURE__ */ React.createElement(\"span\", { style: { padding: \"0 0.5rem 0 1.75rem\" } }, \">\"), \" \", category.jobCategory.name)))\n    ) : /* @__PURE__ */ React.createElement(Grid, { item: true }, /* @__PURE__ */ React.createElement(\"div\", null, !answers.listing_location || !answers.listing_sub_classification ? \"No suggested categories, please add a job title and location to see suggested categories\" : \"No suggested categories for the current job title and location\")),\n    /* @__PURE__ */ React.createElement(\n      RadioGroup,\n      {\n        value: answers.use_suggested_classification,\n        onChange: () => setAnswers(__spreadProps(__spreadValues({}, answers), {\n          use_suggested_classification: true,\n          listing_sub_classification: null,\n          listing_classification: null\n        }))\n      },\n      /* @__PURE__ */ React.createElement(\n        FormControlLabel,\n        {\n          key: \"other\",\n          label: \"Choose a different category\",\n          checked: answers.use_suggested_classification === true,\n          control: /* @__PURE__ */ React.createElement(Radio, null)\n        }\n      )\n    ),\n    answers.use_suggested_classification && getSeekAdCategoriesData && /* @__PURE__ */ React.createElement(\n      FormControl,\n      {\n        style: { marginTop: \"5px\" },\n        fullWidth: true,\n        className: `${classes.formControl} ${classes.medium}`\n      },\n      /* @__PURE__ */ React.createElement(\n        Select,\n        {\n          error: activeError === requiredRefs.category,\n          classes: { select: classes.input },\n          variant: \"outlined\",\n          value: answers.listing_classification,\n          onChange: (e) => {\n            const index = getSeekAdCategoriesData.findIndex(\n              (category) => category.id.value === e.target.value\n            );\n            setAnswers(__spreadProps(__spreadValues({}, answers), {\n              listing_classification: e.target.value,\n              listing_classification_display: index >= 0 ? getSeekAdCategoriesData[index].name : \"\"\n            }));\n          },\n          displayEmpty: true\n        },\n        getSeekAdCategoriesData.map((category) => /* @__PURE__ */ React.createElement(MenuItem, { key: category.id.value, value: category.id.value }, category.name))\n      ),\n      /* @__PURE__ */ React.createElement(\n        FormLabel,\n        {\n          focused: false,\n          style: { marginTop: \"20px\" },\n          required: true,\n          className: classes.label\n        },\n        \"Sub Category\"\n      ),\n      /* @__PURE__ */ React.createElement(\n        Select,\n        {\n          error: activeError === requiredRefs.category,\n          classes: { select: classes.input },\n          disabled: !answers.listing_classification,\n          variant: \"outlined\",\n          value: answers.listing_sub_classification,\n          onChange: (e) => {\n            const index = getSeekAdCategoriesData[categoriesIndex].children.findIndex(\n              (category) => category.id.value === e.target.value\n            );\n            setAnswers(__spreadProps(__spreadValues({}, answers), {\n              listing_sub_classification: e.target.value,\n              listing_sub_classification_display: index >= 0 ? getSeekAdCategoriesData[categoriesIndex].children[index].name : \"\"\n            }));\n          },\n          displayEmpty: true\n        },\n        answers.listing_classification && getSeekAdCategoriesData && typeof categoriesIndex === \"number\" && categoriesIndex >= 0 && getSeekAdCategoriesData[categoriesIndex].children.map((category) => /* @__PURE__ */ React.createElement(MenuItem, { key: category.id.value, value: category.id.value }, category.name))\n      )\n    )\n  ), /* @__PURE__ */ React.createElement(WorkTypes, { answers, setAnswers }), /* @__PURE__ */ React.createElement(\n    PayDetails,\n    {\n      answers,\n      setAnswers,\n      requiredRefs,\n      activeError\n    }\n  ), seek_billing_reference && seek_billing_reference_flag && /* @__PURE__ */ React.createElement(SeekBillingReference, { answers, setAnswers }), /* @__PURE__ */ React.createElement(\"h4\", null, \"SEEK Ad Type\"), activeError === requiredRefs.ad_type && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", { id: \"SeekMultiposterErrorTxt\" }, \"This field is required\")), answers.seek_account_id ? /* @__PURE__ */ React.createElement(\n    AdProductSelection,\n    {\n      answers,\n      setAnswers,\n      requiredRefs,\n      jobAdId,\n      setMaxBulletPoints,\n      setBrandingEnabled,\n      debouncedTitle\n    }\n  ) : /* @__PURE__ */ React.createElement(\n    AdSelection,\n    {\n      answers,\n      setAnswers,\n      requiredRefs,\n      jobAdId,\n      setMaxBulletPoints,\n      setBrandingEnabled\n    }\n  ));\n}\nStep1.propTypes = {\n  answers: PropTypes.object.isRequired,\n  setAnswers: PropTypes.func.isRequired,\n  apiKey: PropTypes.string.isRequired,\n  requiredRefs: PropTypes.object.isRequired,\n  activeError: PropTypes.ref,\n  jobAdId: PropTypes.number.isRequired,\n  seek_billing_reference: PropTypes.bool,\n  seek_billing_reference_flag: PropTypes.bool,\n  setBrandingEnabled: PropTypes.func.isRequired,\n  setMaxBulletPoints: PropTypes.func.isRequired\n};\nexport default Step1;\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nimport React, { useState, useEffect } from \"react\";\nimport {\n  FormControl,\n  FormLabel,\n  Checkbox,\n  TextField,\n  FormHelperText,\n  Grid,\n  FormControlLabel,\n  Button\n} from \"@material-ui/core\";\nimport useStyles from \"../useStyles\";\nimport PropTypes from \"prop-types\";\nimport axios from \"axios\";\nimport { CircularProgress } from \"@material-ui/core\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\nfunction Step2({\n  answers,\n  setAnswers,\n  getSeekAdBrandingData,\n  setGetSeekAdBrandingData,\n  apiKey,\n  jobAdId,\n  activeError,\n  requiredRefs,\n  maxBulletPoints,\n  brandingEnabled\n}) {\n  const [loadingSeekAdBranding, setLoadingSeekAdBranding] = useState(true);\n  const [seekBrandindInfo, setSeekBrandindInfo] = useState(null);\n  const classes = useStyles();\n  const shortDescriptionLength = 150;\n  const getSeekAdType = (url, nextPage) => __async(this, null, function* () {\n    !nextPage && setLoadingSeekAdBranding(true);\n    try {\n      const { data } = yield axios.get(url, {\n        headers: { \"X-api-authenticate\": apiKey }\n      });\n      setGetSeekAdBrandingData(\n        nextPage ? [...getSeekAdBrandingData, ...data.data.advertisementBrandings.edges] : data.data.advertisementBrandings.edges\n      );\n      setSeekBrandindInfo(data.data.advertisementBrandings.pageInfo);\n      if (!answers.branding_id)\n        setAnswers(__spreadProps(__spreadValues({}, answers), {\n          branding_id: data.data.advertisementBrandings.edges[0].node.id.value\n        }));\n      setLoadingSeekAdBranding(false);\n    } catch (e) {\n      setGetSeekAdBrandingData(null);\n      setLoadingSeekAdBranding(false);\n    }\n  });\n  const setStandoutBullet = (index, value) => {\n    const standoutBullets = answers.standout_bullets;\n    standoutBullets[index] = value;\n    setAnswers(__spreadProps(__spreadValues({}, answers), { standout_bullets: standoutBullets }));\n  };\n  useEffect(() => {\n    if (!getSeekAdBrandingData) {\n      getSeekAdType(`/api/v4/seek/job_ads/${jobAdId}/brands`, false);\n    } else setLoadingSeekAdBranding(false);\n  }, []);\n  return /* @__PURE__ */ React.createElement(\"div\", { className: classes.stepContainer }, /* @__PURE__ */ React.createElement(\"h4\", null, \"Job details\"), /* @__PURE__ */ React.createElement(\n    FormControl,\n    {\n      ref: requiredRefs.description,\n      fullWidth: true,\n      className: `${classes.formControl} ${classes.large}`\n    },\n    /* @__PURE__ */ React.createElement(FormLabel, { required: true, className: classes.label }, \"Short Description\"),\n    /* @__PURE__ */ React.createElement(\n      TextField,\n      {\n        error: activeError === requiredRefs.description,\n        multiline: true,\n        className: `${classes.textField} ${classes.textBox}`,\n        variant: \"outlined\",\n        value: answers.description,\n        onChange: (e) => e.target.value.length <= shortDescriptionLength && setAnswers(__spreadProps(__spreadValues({}, answers), { description: e.target.value })),\n        InputProps: {\n          endAdornment: activeError === requiredRefs.description && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))\n        }\n      }\n    ),\n    /* @__PURE__ */ React.createElement(FormHelperText, { className: classes.helperText }, answers.description.length, \"/\", shortDescriptionLength)\n  ), maxBulletPoints > 0 && /* @__PURE__ */ React.createElement(\"div\", { style: { display: \"grid\" } }, /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl} ${classes.large}` }, /* @__PURE__ */ React.createElement(FormLabel, { className: classes.label }, \"Key Selling Points (Optional)\"), /* @__PURE__ */ React.createElement(\"span\", { className: classes.subLabel }, \"Enter \", maxBulletPoints, \" key selling points to attract candidates to view your role\")), [...Array(maxBulletPoints).keys()].map((index) => /* @__PURE__ */ React.createElement(\n    FormControl,\n    {\n      fullWidth: true,\n      className: `${classes.formControl} ${classes.large}`,\n      key: index\n    },\n    /* @__PURE__ */ React.createElement(\n      TextField,\n      {\n        className: classes.textField,\n        variant: \"outlined\",\n        value: answers.standout_bullets[index],\n        onChange: (e) => e.target.value.length <= 80 && setStandoutBullet(index, e.target.value)\n      }\n    ),\n    /* @__PURE__ */ React.createElement(FormHelperText, { className: classes.helperText }, answers.standout_bullets[index] ? answers.standout_bullets[index].length : 0, \"/80\")\n  ))), brandingEnabled && /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl}` }, /* @__PURE__ */ React.createElement(FormLabel, { style: { paddingBottom: \"10px\" }, className: classes.label }, \"Branding\"), loadingSeekAdBranding ? /* @__PURE__ */ React.createElement(CircularProgress, { size: 20, color: \"inherit\" }) : /* @__PURE__ */ React.createElement(Grid, { container: true, style: { margin: 0 }, spacing: 2 }, getSeekAdBrandingData ? getSeekAdBrandingData.map((brand) => {\n    const selected = answers.branding_id === brand.node.id.value;\n    const borderColor = selected ? \"#5BC4BF\" : \"#e9e8e8\";\n    return /* @__PURE__ */ React.createElement(\n      Grid,\n      {\n        item: true,\n        xs: 12,\n        sm: 12,\n        md: 4,\n        key: brand.node.id.value,\n        style: {\n          height: \"230px\",\n          maxWidth: \"215px\",\n          minWidth: \"215px\",\n          cursor: \"pointer\",\n          border: `solid ${borderColor} 3px`,\n          borderRadius: \"5px\",\n          marginRight: \"10px\",\n          marginBottom: \"10px\",\n          padding: 0\n        }\n      },\n      /* @__PURE__ */ React.createElement(RenderList, { brand: brand.node, setAnswers, answers })\n    );\n  }) : /* @__PURE__ */ React.createElement(\"div\", null, \"No Branding.\"), getSeekAdBrandingData && seekBrandindInfo && /* @__PURE__ */ React.createElement(\"div\", null, seekBrandindInfo.hasNextPage ? /* @__PURE__ */ React.createElement(\n    Button,\n    {\n      disableElevation: true,\n      className: classes.buttonSecondary,\n      style: { minWidth: 130 },\n      onClick: () => {\n        getSeekAdType(\n          `/api/v4/seek/job_ads/${jobAdId}/brands?after=${seekBrandindInfo.endCursor}`,\n          true\n        );\n      }\n    },\n    \"Load More Branding\"\n  ) : \"\"))), /* @__PURE__ */ React.createElement(\n    FormControl,\n    {\n      fullWidth: true,\n      className: `${classes.formControl} ${classes.medium}`,\n      ref: requiredRefs.video_embed_code\n    },\n    /* @__PURE__ */ React.createElement(FormLabel, { className: classes.label }, \"Video URL\"),\n    /* @__PURE__ */ React.createElement(\n      TextField,\n      {\n        className: classes.textField,\n        error: activeError === requiredRefs.video_embed_code,\n        variant: \"outlined\",\n        value: answers.video_embed_code,\n        onChange: (e) => e.target.value.length >= 0 && setAnswers(__spreadProps(__spreadValues({}, answers), { video_embed_code: e.target.value }))\n      }\n    ),\n    activeError === requiredRefs.video_embed_code ? /* @__PURE__ */ React.createElement(\"span\", null, /* @__PURE__ */ React.createElement(\"div\", { style: { display: \"flex\", marginTop: \"0.5rem\" }, className: classes.errorMessage }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"div\", { className: \"seekValidationErrorMsg\" }, \"URL must start with https://\")), /* @__PURE__ */ React.createElement(\"div\", { style: { display: \"flex\", marginTop: \"0.5rem\" }, className: classes.errorMessage }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"div\", { className: \"seekValidationErrorMsg\" }, \"Seek requires a YouTube link in one of the following formats:\")), /* @__PURE__ */ React.createElement(\"div\", { style: { display: \"flex\", marginTop: \"0.5rem\" }, className: classes.errorMessage }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.seekYoutubeUrl }, /* @__PURE__ */ React.createElement(\"div\", null, \" https://www.youtube.com/embed/aAgePQvHBQM\"), /* @__PURE__ */ React.createElement(\"div\", { style: { padding: \"0.25rem 0\" } }, \" \", \"https://www.youtube.com/watch?v=aAgePQvHBQM\"), /* @__PURE__ */ React.createElement(\"div\", null, \" https://youtu.be/aAgePQvHBQM\")))) : /* @__PURE__ */ React.createElement(FormHelperText, { className: classes.helperText }, \"The URL you require will look like this: https://youtube.com/embed/abcd12345\")\n  ), /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl} ${classes.medium}` }, /* @__PURE__ */ React.createElement(FormLabel, { className: classes.label }, \"Video Position\"), /* @__PURE__ */ React.createElement(Grid, { container: true, style: { margin: 0 }, spacing: 2 }, /* @__PURE__ */ React.createElement(Grid, { style: { marginRight: \"10px\" } }, /* @__PURE__ */ React.createElement(\n    \"div\",\n    {\n      id: \"seek-video-top\",\n      onClick: () => setAnswers(__spreadProps(__spreadValues({}, answers), { video_position: \"Above\" })),\n      style: {\n        border: `solid ${answers.video_position === \"Above\" ? \"#5BC4BF\" : \"#e9e8e8\"} 1px`,\n        borderRadius: \"5px\",\n        cursor: \"pointer\"\n      }\n    }\n  )), /* @__PURE__ */ React.createElement(Grid, null, /* @__PURE__ */ React.createElement(\n    \"div\",\n    {\n      id: \"seek-video-bottom\",\n      onClick: () => setAnswers(__spreadProps(__spreadValues({}, answers), { video_position: \"Below\" })),\n      style: {\n        border: `solid ${answers.video_position === \"Below\" ? \"#5BC4BF\" : \"#e9e8e8\"} 1px`,\n        borderRadius: \"5px\",\n        cursor: \"pointer\"\n      }\n    }\n  )))));\n}\nStep2.propTypes = {\n  answers: PropTypes.object.isRequired,\n  setAnswers: PropTypes.func.isRequired,\n  jobAdId: PropTypes.number.isRequired,\n  apiKey: PropTypes.string.isRequired,\n  getSeekAdBrandingData: PropTypes.array || PropTypes.null,\n  setGetSeekAdBrandingData: PropTypes.func.isRequired,\n  requiredRefs: PropTypes.object.isRequired,\n  activeError: PropTypes.ref,\n  maxBulletPoints: PropTypes.number.isRequired,\n  brandingEnabled: PropTypes.bool.isRequired\n};\nexport default Step2;\nconst RenderList = ({ brand, setAnswers, answers }) => {\n  const imageLength = brand.images.length;\n  return /* @__PURE__ */ React.createElement(\"div\", null, imageLength === 1 ? /* @__PURE__ */ React.createElement(\"div\", null, /* @__PURE__ */ React.createElement(\n    \"div\",\n    {\n      role: \"img\",\n      alt: \"Image not found\",\n      onClick: () => setAnswers(__spreadProps(__spreadValues({}, answers), { branding_id: brand.id.value })),\n      style: brand.images[0].typeCode !== \"OriginalLogo\" ? {\n        backgroundImage: `url(${brand.images[0].url})`,\n        backgroundSize: \"cover\",\n        backgroundPosition: \"center\",\n        backgroundRepeat: \"no-repeat\",\n        height: \"100px\"\n      } : { height: \"100px\", padding: \"10px\" }\n    },\n    brand.images[0].typeCode === \"OriginalLogo\" && \"No Cover Image\"\n  ), /* @__PURE__ */ React.createElement(\n    \"div\",\n    {\n      role: \"img\",\n      alt: \"Image not found\",\n      onClick: () => setAnswers(__spreadProps(__spreadValues({}, answers), { branding_id: brand.id.value })),\n      style: brand.images[0].typeCode === \"OriginalLogo\" ? {\n        backgroundImage: `url(${brand.images[0].url})`,\n        backgroundSize: \"contain\",\n        backgroundRepeat: \"no-repeat\",\n        padding: \"0 0 0 5px\",\n        height: \"70px\",\n        width: \"100%\"\n      } : { height: \"100px\", padding: \"10px\" }\n    },\n    brand.images[0].typeCode !== \"OriginalLogo\" && \"No Logo Image\"\n  )) : /* @__PURE__ */ React.createElement(\"div\", null, /* @__PURE__ */ React.createElement(\n    \"div\",\n    {\n      role: \"img\",\n      alt: \"Image not found\",\n      onClick: () => setAnswers(__spreadProps(__spreadValues({}, answers), { branding_id: brand.id.value })),\n      style: {\n        backgroundImage: `url(${brand.images[brand.images[0].typeCode === \"OriginalLogo\" ? 1 : 0].url})`,\n        backgroundSize: \"cover\",\n        backgroundPosition: \"center\",\n        backgroundRepeat: \"no-repeat\",\n        height: \"100px\"\n      }\n    }\n  ), /* @__PURE__ */ React.createElement(\n    \"div\",\n    {\n      role: \"img\",\n      alt: \"Image not found\",\n      onClick: () => setAnswers(__spreadProps(__spreadValues({}, answers), { branding_id: brand.id.value })),\n      style: {\n        backgroundImage: `url(${brand.images[brand.images[0].typeCode === \"OriginalLogo\" ? 0 : 1].url})`,\n        backgroundSize: \"contain\",\n        backgroundRepeat: \"no-repeat\",\n        padding: \"0 0 0 5px\",\n        height: \"70px\",\n        width: \"100%\"\n      }\n    }\n  )), /* @__PURE__ */ React.createElement(\"div\", null, /* @__PURE__ */ React.createElement(\"div\", { style: { padding: \"10px\" } }, brand.name)));\n};\nRenderList.propTypes = {\n  answers: PropTypes.object.isRequired,\n  setAnswers: PropTypes.func.isRequired,\n  brand: PropTypes.object\n};\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport React, { useEffect } from \"react\";\nimport {\n  FormControlLabel,\n  RadioGroup,\n  FormControl,\n  FormLabel,\n  Checkbox,\n  TextField,\n  Radio\n} from \"@material-ui/core\";\nimport useStyles from \"../useStyles\";\nimport PropTypes from \"prop-types\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\nimport HtmlEditor from \"../../../NewUI/Components/Utilities/HtmlEditor\";\nfunction Step3({\n  answers,\n  setAnswers,\n  activeError,\n  requiredRefs,\n  linkOutEnabled,\n  privacyOverLimit,\n  activeErrorMessage,\n  jobId,\n  setActiveError,\n  setActiveErrorMessage,\n  job_url_prop\n}) {\n  const classes = useStyles();\n  useEffect(() => {\n    window.scrollTo(0, 0);\n  }, []);\n  return /* @__PURE__ */ React.createElement(\"div\", { className: classes.stepContainer }, /* @__PURE__ */ React.createElement(\n    FormControl,\n    {\n      ref: requiredRefs.title,\n      fullWidth: true,\n      className: `${classes.formControl} ${classes.medium}`\n    },\n    /* @__PURE__ */ React.createElement(FormLabel, { required: true, className: classes.label }, \"Job Title\"),\n    /* @__PURE__ */ React.createElement(\n      TextField,\n      {\n        error: activeError === requiredRefs.title,\n        className: classes.textField,\n        variant: \"outlined\",\n        value: answers.title,\n        onChange: (e) => e.target.value.length >= 0 && setAnswers(__spreadProps(__spreadValues({}, answers), { title: e.target.value })),\n        InputProps: {\n          endAdornment: activeError === requiredRefs.title && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))\n        }\n      }\n    )\n  ), /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl} ${classes.editor}` }, /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: classes.label }, \"Ad Details\", /* @__PURE__ */ React.createElement(\"span\", { className: classes.asterisk }, \" *\"), activeError === requiredRefs.ad_details && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))), /* @__PURE__ */ React.createElement(\n    HtmlEditor,\n    {\n      body: answers.ad_details,\n      onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { ad_details: e }))\n    }\n  ), /* @__PURE__ */ React.createElement(\"div\", null, \"Supported formatting styles: headings (H2), Italics, Bold, Underline, Bullet Points/Numbered List\"), /* @__PURE__ */ React.createElement(\"div\", null, \"NOTE: If your job description contains unsupported formatting styles, they will be removed from the Ad Details section.\")), /* @__PURE__ */ React.createElement(\"h4\", null, \"Candidate Application Options\"), linkOutEnabled && /* @__PURE__ */ React.createElement(\"div\", null, /* @__PURE__ */ React.createElement(\n    RadioGroup,\n    {\n      value: answers.link_out,\n      onChange: () => setAnswers(__spreadProps(__spreadValues({}, answers), { link_out: true }))\n    },\n    /* @__PURE__ */ React.createElement(\n      FormControlLabel,\n      {\n        label: \"Apply through :Recruit Talent Landing Page\",\n        checked: answers.link_out === true,\n        control: /* @__PURE__ */ React.createElement(Radio, null)\n      }\n    )\n  ), /* @__PURE__ */ React.createElement(\n    FormControl,\n    {\n      fullWidth: true,\n      style: { margin: \"0.5rem 0 1.5rem 0\" },\n      className: `${classes.formControl} ${classes.large}`\n    },\n    /* @__PURE__ */ React.createElement(\n      TextField,\n      {\n        className: classes.textField,\n        style: { marginLeft: \"1rem\" },\n        variant: \"outlined\",\n        disabled: answers.link_out === false,\n        value: answers.application_url || \"\",\n        onChange: (e) => e.target.value.length >= 0 && setAnswers(__spreadProps(__spreadValues({}, answers), { application_url: e.target.value }))\n      }\n    )\n  )), linkOutEnabled && /* @__PURE__ */ React.createElement(\n    RadioGroup,\n    {\n      value: answers.link_out,\n      onChange: () => setAnswers(__spreadProps(__spreadValues({}, answers), { link_out: false }))\n    },\n    /* @__PURE__ */ React.createElement(\n      FormControlLabel,\n      {\n        ref: requiredRefs.link_out,\n        label: \"Apply through SEEK\",\n        checked: answers.link_out === false,\n        disabled: answers.link_out && answers.advertisement_id,\n        control: /* @__PURE__ */ React.createElement(Radio, null)\n      }\n    ),\n    activeError === requiredRefs.link_out && activeErrorMessage && activeErrorMessage.length >= 1 && /* @__PURE__ */ React.createElement(\"span\", null, activeErrorMessage.map((error, i) => /* @__PURE__ */ React.createElement(\n      \"div\",\n      {\n        style: { display: \"flex\", marginTop: \"0.5rem\" },\n        className: classes.errorMessage,\n        key: i\n      },\n      /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }),\n      /* @__PURE__ */ React.createElement(\"div\", { className: \"seekValidationErrorMsg\" }, error, \".\")\n    )), /* @__PURE__ */ React.createElement(\n      \"div\",\n      {\n        className: classes.reviewQuestionText,\n        onClick: () => {\n          window.open(`${window.location.origin}/admin/jobs/${jobId}/fields`, \"_blank\").focus();\n          setActiveError(null);\n          setActiveErrorMessage(null);\n        }\n      },\n      \"Review questions\"\n    ))\n  ), !answers.link_out && linkOutEnabled && /* @__PURE__ */ React.createElement(RadioGroup, { value: answers.posting_questionnaire, className: classes.secondaryRadioGroup }, /* @__PURE__ */ React.createElement(\n    FormControlLabel,\n    {\n      label: \"Include application questionnaire\",\n      checked: answers.posting_questionnaire,\n      disabled: answers.advertisement_id,\n      className: classes.secondaryRadio,\n      control: /* @__PURE__ */ React.createElement(\n        Radio,\n        {\n          onChange: () => setAnswers(__spreadProps(__spreadValues({}, answers), { posting_questionnaire: true, link_out: false }))\n        }\n      )\n    }\n  ), /* @__PURE__ */ React.createElement(\n    FormControlLabel,\n    {\n      label: \"Do not include application questionnaire\",\n      checked: !answers.posting_questionnaire,\n      disabled: answers.advertisement_id,\n      className: classes.secondaryRadio,\n      control: /* @__PURE__ */ React.createElement(\n        Radio,\n        {\n          className: classes.secondaryRadio,\n          onChange: () => setAnswers(__spreadProps(__spreadValues({}, answers), { posting_questionnaire: false, link_out: false }))\n        }\n      )\n    }\n  ), /* @__PURE__ */ React.createElement(\"div\", { className: classes.optionHint }, /* @__PURE__ */ React.createElement(\"strong\", null, \"Please note: \"), answers.posting_questionnaire && /* @__PURE__ */ React.createElement(\"span\", null, \"All questions will be mandatory and cannot be changed once this option has been selected and the ad has been published. Please click\", \" \", /* @__PURE__ */ React.createElement(\"a\", { href: job_url_prop, target: \"_blank\", rel: \"noreferrer\" }, \"HERE\"), \" \", \"to alter questions if required before posting.\"), !answers.posting_questionnaire && /* @__PURE__ */ React.createElement(\"span\", null, \"Candidates will receive an email to fill out the missing questions after applying.\"))), !linkOutEnabled && /* @__PURE__ */ React.createElement(RadioGroup, { value: answers.posting_questionnaire }, /* @__PURE__ */ React.createElement(\n    FormControlLabel,\n    {\n      label: \"Include application questionnaire\",\n      checked: answers.posting_questionnaire,\n      disabled: answers.advertisement_id,\n      className: classes.secondaryRadio,\n      control: /* @__PURE__ */ React.createElement(\n        Radio,\n        {\n          onChange: () => setAnswers(__spreadProps(__spreadValues({}, answers), { posting_questionnaire: true, link_out: false }))\n        }\n      )\n    }\n  ), /* @__PURE__ */ React.createElement(\n    FormControlLabel,\n    {\n      label: \"Do not include application questionnaire\",\n      checked: !answers.posting_questionnaire,\n      disabled: answers.advertisement_id,\n      className: classes.secondaryRadio,\n      control: /* @__PURE__ */ React.createElement(\n        Radio,\n        {\n          className: classes.secondaryRadio,\n          onChange: () => setAnswers(__spreadProps(__spreadValues({}, answers), { posting_questionnaire: false, link_out: false }))\n        }\n      )\n    }\n  ), /* @__PURE__ */ React.createElement(\"div\", { className: classes.optionHint }, /* @__PURE__ */ React.createElement(\"strong\", null, \"Please note: \"), answers.posting_questionnaire && /* @__PURE__ */ React.createElement(\"span\", null, \"All questions will be mandatory and cannot be changed once this option has been selected and the ad has been published. Please click\", \" \", /* @__PURE__ */ React.createElement(\"a\", { href: job_url_prop, target: \"_blank\", rel: \"noreferrer\" }, \"HERE\"), \" \", \"to alter questions if required before posting.\"), !answers.posting_questionnaire && /* @__PURE__ */ React.createElement(\"span\", null, \"Candidates will receive an email to fill out the missing questions after applying.\"))), /* @__PURE__ */ React.createElement(\n    FormControlLabel,\n    {\n      style: { marginTop: \"2rem\" },\n      label: \"Include a privacy policy agreement\",\n      control: /* @__PURE__ */ React.createElement(\n        Checkbox,\n        {\n          checked: answers.include_privacy,\n          disabled: privacyOverLimit || answers.advertisement_id,\n          onChange: () => setAnswers(__spreadProps(__spreadValues({}, answers), { include_privacy: !answers.include_privacy }))\n        }\n      )\n    }\n  ), privacyOverLimit && /* @__PURE__ */ React.createElement(\"div\", null, \"Privacy Policy agreement is unable to be included because it is is over Seek\\u2019s 250 character limit. Please check entity settings or contact Support\"));\n}\nStep3.propTypes = {\n  answers: PropTypes.object.isRequired,\n  setAnswers: PropTypes.func.isRequired,\n  requiredRefs: PropTypes.object.isRequired,\n  activeError: PropTypes.ref,\n  linkOutEnabled: PropTypes.bool.isRequired,\n  job_url_prop: PropTypes.string\n};\nexport default Step3;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport useStyles from \"../useStyles\";\nimport { FormControl } from \"@material-ui/core\";\nfunction Step4({ answers }) {\n  const classes = useStyles();\n  return /* @__PURE__ */ React.createElement(\"div\", { className: classes.stepContainer }, /* @__PURE__ */ React.createElement(\"h4\", null, answers.title), answers.listing_location_display, answers.use_suggested_classification ? /* @__PURE__ */ React.createElement(\"div\", null, answers.listing_location_display, \" \", /* @__PURE__ */ React.createElement(\"span\", { style: { margin: \"0 1rem\" } }, \">\"), \" \", answers.listing_sub_classification_display) : /* @__PURE__ */ React.createElement(\"div\", null, answers.listing_sub_classification_display), /* @__PURE__ */ React.createElement(\n    FormControl,\n    {\n      fullWidth: true,\n      style: { margin: \"0.5rem 0 1.5rem 0\" },\n      className: `preview-html ${classes.formControl} ${classes.large}`\n    },\n    /* @__PURE__ */ React.createElement(\"div\", { dangerouslySetInnerHTML: { __html: answers.ad_details } })\n  ));\n}\nStep4.propTypes = {\n  answers: PropTypes.object\n};\nexport default Step4;\n","import React from \"react\";\nimport { FormControl, FormLabel, TextField, FormHelperText } from \"@material-ui/core\";\nimport useStyles from \"../useStyles\";\nimport PropTypes from \"prop-types\";\nfunction TextAreaWithCounter({ title, value, setValue, maxLength, helperText }) {\n  const classes = useStyles();\n  return /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl} ${classes.medium}` }, /* @__PURE__ */ React.createElement(FormLabel, { className: classes.label }, title), /* @__PURE__ */ React.createElement(\n    TextField,\n    {\n      className: classes.textField,\n      variant: \"outlined\",\n      value,\n      onChange: (e) => e.target.value.length <= maxLength && setValue(e.target.value)\n    }\n  ), /* @__PURE__ */ React.createElement(FormHelperText, { className: classes.helperText }, /* @__PURE__ */ React.createElement(\"span\", { style: { marginRight: \"1rem\" } }, helperText), value ? value.length : 0, \" /\", maxLength));\n}\nTextAreaWithCounter.propTypes = {\n  title: PropTypes.string.isRequired,\n  setValue: PropTypes.func.isRequired,\n  maxLength: PropTypes.number.isRequired,\n  value: PropTypes.string,\n  helperText: PropTypes.string\n};\nexport default TextAreaWithCounter;\n","import AdEditor from \"./AdEditor\";\nexport default AdEditor;\n","import { makeStyles } from \"@material-ui/core\";\nimport {\n  SCOUT_SECONDARY_BLUE,\n  SCOUT_SECONDARY_LIGHT_BLUE,\n  RED,\n  DARK_RED,\n  WHITE,\n  SCOUT_BLUE\n} from \"../../ThemeContext/constants\";\nexport default makeStyles(() => ({\n  dialog: {\n    padding: \"40px 60px\",\n    alignItems: \"center\",\n    textAlign: \"center\"\n  },\n  dialogHeader: {\n    fontSize: \"26px\",\n    color: SCOUT_BLUE,\n    marginTop: 0,\n    marginBottom: 14\n  },\n  dialogDescription: {\n    fontWeight: \"600\",\n    color: \"#666666\",\n    fontSize: \"16px\",\n    lineHeight: \"20px\",\n    margin: 0\n  },\n  dialogButtonContainer: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    flexDirection: \"row\",\n    marginTop: 40\n  },\n  buttonSecondaryLight: {\n    borderRadius: 6,\n    padding: \"14px 30px\",\n    marginRight: 20,\n    fontSize: \"15px !important\",\n    background: `${SCOUT_SECONDARY_LIGHT_BLUE} !important`,\n    color: `${SCOUT_SECONDARY_BLUE} !important`,\n    \"&:hover\": {\n      background: `${SCOUT_SECONDARY_BLUE} !important`,\n      color: `${SCOUT_SECONDARY_LIGHT_BLUE} !important`\n    }\n  },\n  buttonSecondary: {\n    borderRadius: 6,\n    padding: \"14px 30px\",\n    fontSize: \"15px !important\",\n    background: `${RED} !important`,\n    color: `${WHITE} !important`,\n    \"&:hover\": {\n      background: `${DARK_RED} !important`\n    }\n  },\n  closeContainer: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"flex-end\",\n    width: \"100%\"\n  }\n}));\n","import { makeStyles } from \"@material-ui/core\";\nimport { adEditorCancelButton } from \"../../shared/commonStyles\";\nexport default makeStyles((theme) => ({\n  containerOuter: {\n    marginTop: 40,\n    background: \"#FFF\",\n    borderRadius: 8,\n    padding: 40,\n    display: \"flex\",\n    justifyContent: \"center\",\n    \"& button:focus\": {\n      outline: 0\n    }\n  },\n  container: {\n    padding: \"50px 120px\",\n    width: \"100%\"\n  },\n  stepSelect: {\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    marginBottom: 40,\n    width: \"100%\",\n    margin: \"auto\"\n  },\n  payDetailsContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    marginTop: 40\n  },\n  stepContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    \"& h4\": {\n      color: \"#666666\",\n      fontSize: 20,\n      fontWeight: \"600\",\n      marginBottom: 0,\n      marginTop: 70,\n      \"&:first-child\": {\n        marginTop: 0\n      },\n      \"& span\": {\n        color: \"#E37D7A\"\n      },\n      \"& + div\": {\n        marginTop: 20\n      }\n    },\n    \"& fieldset\": {\n      borderColor: \"#DDDDDD\"\n    }\n  },\n  formControl: {\n    marginTop: 50\n  },\n  subFormControl: {\n    marginTop: 20\n  },\n  exLarge: {\n    maxWidth: 800\n  },\n  editor: {\n    width: \"100%\"\n  },\n  large: {\n    maxWidth: 600\n  },\n  medium: {\n    width: 400\n  },\n  small: {\n    width: 300\n  },\n  adProductInfo: {\n    fontSize: 12,\n    paddingTop: 10,\n    textAlign: \"center\"\n  },\n  seekAdTypeDisabled: {\n    justifyContent: \"center\",\n    opacity: 0.5,\n    cursor: \"default\",\n    textAlign: \"center\",\n    \"& .seekAdheaderWrapper\": {\n      color: \"white\",\n      height: \"2rem\",\n      alignItems: \"center\",\n      backgroundColor: \"#E60278\",\n      display: \"flex\",\n      justifyContent: \"center\",\n      fontSize: \"1rem\",\n      padding: \"1.3rem 0 1.3rem 0\"\n    },\n    \"& h4\": {\n      marginTop: \"0.1rem\",\n      textAlign: \"center\",\n      marginBottom: \"-10px\",\n      color: \"black\"\n    },\n    \"& div\": {\n      textAlign: \"center\"\n    },\n    \"& .seekRadioRadioBtnWrapper\": {\n      marginTop: \"1rem\",\n      \"& span:nth-child(1)\": {\n        margin: \"auto\",\n        display: \"flex\",\n        width: \"2.5rem\"\n      }\n    }\n  },\n  seekAdType: {\n    justifyContent: \"center\",\n    cursor: \"pointer\",\n    textAlign: \"center\",\n    height: \"100%\",\n    \"& .seekAdheaderWrapper\": {\n      color: \"white\",\n      height: \"2rem\",\n      alignItems: \"center\",\n      backgroundColor: \"#E60278\",\n      display: \"flex\",\n      justifyContent: \"center\",\n      fontSize: \"1rem\",\n      padding: \"1.3rem 0 1.3rem 0\"\n    },\n    \"& h4\": {\n      marginTop: \"0.1rem\",\n      textAlign: \"center\",\n      marginBottom: \"-10px\",\n      color: \"black\"\n    },\n    \"& div\": {\n      textAlign: \"center\"\n    },\n    \"& .seekRadioRadioBtnWrapper\": {\n      marginTop: \"1rem\",\n      \"& span:nth-child(1)\": {\n        margin: \"auto\",\n        display: \"flex\",\n        width: \"2.5rem\"\n      }\n    }\n  },\n  seekEmbeddedHTML: {\n    padding: \"1rem 0.2rem 0 0.2rem\",\n    \"& ul\": {\n      listStyle: \"disc\",\n      listStylePosition: \"inside\",\n      margin: \"1rem 0.4rem\",\n      paddingLeft: \"1rem\"\n    }\n  },\n  checkboxWrapper: {\n    color: \"#939393\"\n  },\n  greyBox: {\n    background: \"#FAFAFA\",\n    border: \"1px solid #DDDDDD\",\n    borderRadius: 6,\n    padding: 30,\n    \"& span\": {\n      color: \"#939393\",\n      fontSize: 16,\n      display: \"block\",\n      marginRight: 8\n    },\n    \"& > div\": {\n      marginBottom: 15,\n      \"&:last-child\": {\n        marginBottom: 0\n      }\n    }\n  },\n  applicationSettingsInner: {\n    \"& > div\": {\n      fontSize: 16,\n      color: \"#000\",\n      textAlign: \"right\",\n      \"&:first-child\": {\n        fontSize: 18,\n        color: \"#939393\",\n        textAlign: \"left\"\n      }\n    },\n    \"& span\": {\n      display: \"block\",\n      color: \"#000\"\n    }\n  },\n  greyIcon: {\n    color: theme.palette.secondary.main,\n    width: 18,\n    height: 18\n  },\n  greyInput: {\n    padding: \"0 32px 0 0 !important\",\n    color: \"#000000\",\n    fontSize: 16,\n    \"&:focus\": {\n      background: \"#FAFAFA\"\n    }\n  },\n  inputField: {\n    padding: \"10px 18px\",\n    borderRadius: 6,\n    border: \"1px solid #DDDDDD\",\n    background: \"#FFF\"\n  },\n  textField: {\n    \"& input\": {\n      borderRadius: 6\n    }\n  },\n  dropdown: {\n    \"& input\": {\n      borderRadius: 6\n    }\n  },\n  textBox: {\n    \"& input\": {\n      height: 150\n    }\n  },\n  controlledNumberInput: {\n    \"& fieldset\": {\n      borderTopRightRadius: 0,\n      borderBottomRightRadius: 0\n    },\n    \"& button\": {\n      color: \"#A2A2A2\",\n      borderRadius: 0,\n      border: \"1px solid #DDDDDD\",\n      borderLeft: 0,\n      padding: 0,\n      minWidth: 40,\n      display: \"flex\",\n      alignItems: \"center\",\n      justifyContent: \"center\",\n      \"&:last-child\": {\n        borderTopRightRadius: 6,\n        borderBottomRightRadius: 6\n      },\n      \"&[disabled]\": {\n        background: \"#F3F3F3\",\n        color: \"#E5E5E5\"\n      }\n    }\n  },\n  fullWidth: {\n    width: \"100%\"\n  },\n  input: {\n    padding: \"10px 18px\",\n    borderRadius: 6,\n    width: \"100%\",\n    \"&:focus\": {\n      background: \"#FFF\"\n    }\n  },\n  inputAdornment: {\n    \"& input\": {\n      paddingLeft: 0\n    },\n    \"& span\": {\n      fontSize: 16\n    }\n  },\n  placeholder: {\n    fontSize: 14,\n    color: \"#CCCCCC\"\n  },\n  salaryInput: {\n    width: \"31%\",\n    \"& > div:first-child\": {\n      width: \"100%\"\n    }\n  },\n  label: {\n    color: \"#939393\",\n    fontSize: 16,\n    marginBottom: 14,\n    display: \"flex\",\n    alignItems: \"center\",\n    lineHeight: \"20px\",\n    \"& span\": {\n      color: \"#E37D7A\"\n    }\n  },\n  asterisk: {\n    display: \"block\",\n    marginLeft: 3,\n    color: theme.palette.error.main\n  },\n  errorAutocomplete: {\n    \"& > div:first-child\": {\n      borderColor: theme.palette.error.main\n    }\n  },\n  errorDescription: {\n    borderColor: `${theme.palette.error.main} !important`\n  },\n  subLabel: {\n    display: \"block\",\n    color: \"#000\",\n    fontSize: 14,\n    marginBottom: 10\n  },\n  salaryIntervalLabel: {\n    width: 150\n  },\n  helperText: {\n    textAlign: \"right\",\n    position: \"absolute\",\n    bottom: \"-22px\",\n    right: 0\n  },\n  calendarContainer: {\n    marginTop: 10,\n    \"& input\": {\n      padding: \"10px 18px\",\n      borderRadius: 6,\n      border: \"1px solid #DDD\",\n      width: \"100%\",\n      \"&:focus\": {\n        background: \"#FFF\",\n        outline: 0,\n        borderColor: theme.palette.primary.main\n      }\n    },\n    \"& .DayPicker\": {\n      background: \"#FFF\",\n      borderRadius: 6,\n      boxShadow: \"0px 0px 10px 1px rgba(0,0,0,0.1)\",\n      position: \"absolute\",\n      zIndex: 100\n    },\n    \"& .DayPicker-wrapper\": {\n      padding: \"20px 10px\",\n      borderRadius: 6\n    },\n    \"& .DayPicker-Caption\": {\n      height: \"2rem\",\n      \"& div\": {\n        fontWeight: \"600\",\n        fontSize: 18,\n        color: theme.palette.primary.main\n      }\n    },\n    \"& .DayPicker-NavBar\": {\n      top: \"1.3rem\",\n      \"& span\": {\n        height: \"0.9rem\",\n        width: \"0.9rem\"\n      }\n    },\n    \"& .DayPicker-Weekdays abbr\": {\n      textDecoration: \"none\"\n    },\n    \"& .DayPicker-Day\": {\n      border: 0,\n      padding: \"10px 12px\",\n      fontSize: 12\n    },\n    \"& .DayPicker-Day--today\": {\n      color: theme.palette.primary.main,\n      fontWeight: \"600\"\n    },\n    \"& .DayPicker-Day--selected:not(.DayPicker-Day--disabled):not(.DayPicker-Day--outside)\": {\n      backgroundColor: theme.palette.secondary.main,\n      borderRadius: \"100%\"\n    }\n  },\n  actionText: {\n    fontWeight: \"600\",\n    color: theme.palette.primary.main,\n    fontSize: 14,\n    display: \"block\",\n    marginBottom: 10,\n    \"&:hover\": {\n      cursor: \"pointer\"\n    }\n  },\n  spaceItems: {\n    \"& > *\": {\n      marginBottom: 14\n    }\n  },\n  removeIcon: {\n    position: \"absolute\",\n    right: 10,\n    color: \"#DDD\",\n    \"&:hover\": {\n      color: \"#E37D7A\",\n      cursor: \"pointer\"\n    }\n  },\n  sliderContainer: {\n    width: 560,\n    marginTop: 15,\n    borderRadius: 6,\n    border: \"1px solid #DDDDDD\",\n    padding: \"30px 60px\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    textAlign: \"center\"\n  },\n  sliderTitle: {\n    color: theme.palette.primary.main,\n    fontWeight: \"600\",\n    display: \"block\",\n    marginBottom: 35\n  },\n  sliderValue: {\n    display: \"block\",\n    marginTop: 4,\n    color: \"#999\",\n    textAlign: \"right\"\n  },\n  thumb: {\n    width: 20,\n    height: 20,\n    marginTop: \"-9px\"\n  },\n  textEditor: {\n    borderRadius: 6,\n    border: \"1px solid #DDDDDD\",\n    overflow: \"hidden\"\n  },\n  textEditorToolbar: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    background: \"#DDDDDD\",\n    padding: \"10px 15px 6px\",\n    \"& .rdw-inline-wrapper\": {\n      display: \"flex\",\n      flexDirection: \"row\"\n    },\n    \"& .rdw-list-wrapper\": {\n      display: \"flex\",\n      flexDirection: \"row\"\n    },\n    \"& .rdw-text-align-wrapper\": {\n      display: \"flex\",\n      flexDirection: \"row\"\n    },\n    \"& .rdw-link-wrapper\": {\n      display: \"flex\",\n      flexDirection: \"row\",\n      \"& .rdw-link-modal\": {\n        display: \"grid\",\n        position: \"absolute\",\n        background: \"lightgrey\",\n        padding: \"10px\",\n        marginTop: \"1.75rem\",\n        \"& label\": {\n          padding: \"10px 0\"\n        },\n        \"& button\": {\n          marginRight: \"1rem\"\n        },\n        \"& #openLinkInNewWindow\": {\n          marginRight: \"0.5rem\"\n        }\n      }\n    },\n    \"& .rdw-option-wrapper\": {\n      padding: \"6px 10px 0px 10px\",\n      height: \"1.75rem\",\n      backgroundColor: \"transparent\",\n      cursor: \"pointer\"\n    },\n    \"& .rdw-option-active \": {\n      backgroundColor: \"darkgrey\"\n    }\n  },\n  textEditorBody: {\n    minHeight: 250,\n    padding: 20,\n    \"&:hover\": {\n      cursor: \"text\"\n    },\n    \"& li\": {\n      listStyle: \"disc\"\n    },\n    \"& .rdw-center-aligned-block *\": {\n      textAlign: \"center !important\"\n    },\n    \"& .rdw-left-aligned-block *\": {\n      textAlign: \"left !important\"\n    },\n    \"& .rdw-right-aligned-block *\": {\n      textAlign: \"right !important\"\n    }\n  },\n  stepperRoot: {\n    width: \"100%\",\n    paddingLeft: \"5px\",\n    paddingRight: \"5px\"\n  },\n  stepItem: {\n    fontWeight: \"600\"\n  },\n  stepIconActive: {\n    color: `${theme.palette.secondary.main} !important`,\n    boxShadow: \"0px 0px 10px 1px rgba(0,0,0,0.1)\",\n    \"& text\": {\n      color: \"#FFF\"\n    }\n  },\n  stepIconCompleted: {\n    color: `${theme.palette.secondary.main} !important`,\n    boxShadow: \"0px 0px 10px 1px rgba(0,0,0,0.1)\",\n    \"& text\": {\n      color: \"#FFF\"\n    }\n  },\n  stepIconRoot: {\n    color: \"#F3F3F3\",\n    borderRadius: \"100%\",\n    width: \"50px\",\n    height: \"50px\",\n    \"& text\": {\n      color: \"#CCCCCC\"\n    }\n  },\n  stepLabelIconContainer: {\n    width: \"50px\",\n    height: \"50px\"\n  },\n  stepLabelLabel: {\n    fontWeight: \"600 !important\",\n    color: \"#CCCCCC !important\"\n  },\n  stepLabelActive: {\n    color: \"#666666 !important\"\n  },\n  stepLabelCompleted: {\n    color: \"#666666 !important\"\n  },\n  stepHover: {\n    \"&:hover\": {\n      cursor: \"pointer\",\n      opacity: 0.8\n    }\n  },\n  stepNoHover: {\n    \"&:hover\": {\n      cursor: \"auto\"\n    }\n  },\n  buttonContainer: {\n    marginTop: 60,\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    \"& a:not(.preview)\": adEditorCancelButton\n  },\n  buttons: {\n    display: \"flex\",\n    \"& > *\": {\n      marginLeft: 20\n    }\n  },\n  previewType: {\n    display: \"flex\",\n    marginTop: 20,\n    borderBottom: \"3px solid #F3F3F3\",\n    position: \"relative\",\n    width: 260,\n    \"& div\": {\n      padding: 20,\n      fontSize: 16,\n      color: \"#939393\",\n      flexGrow: 1,\n      textAlign: \"center\",\n      \"&:hover\": {\n        cursor: \"pointer\",\n        color: \"#666\"\n      }\n    },\n    \"&:after\": {\n      content: '\"\"',\n      display: \"block\",\n      position: \"absolute\",\n      width: \"50%\",\n      background: \"#2557A7\",\n      borderRadius: 3,\n      left: \"0%\",\n      bottom: \"-3px\",\n      height: 3,\n      transition: \"left 0.2s ease\"\n    },\n    \"&.mobile:after\": {\n      left: \"50%\"\n    }\n  },\n  previewContainer: {\n    border: \"1px solid #DDD\",\n    borderRadius: 6,\n    padding: \"40px 50px\",\n    marginTop: 20,\n    marginBottom: 60,\n    width: \"80%\",\n    \"&.mobile\": {\n      width: \"40%\"\n    }\n  },\n  previewTitle: {\n    color: \"#666666\",\n    fontSize: 30,\n    fontWeight: \"600\"\n  },\n  previewDetails: {\n    fontSize: 20,\n    color: \"#939393\",\n    marginTop: 6\n  },\n  previewButtons: {\n    display: \"flex\",\n    marginTop: 30,\n    \"& div\": {\n      borderRadius: 6,\n      fontWeight: \"600\",\n      lineHeight: \"20px\",\n      \"&:hover\": {\n        cursor: \"pointer\"\n      }\n    },\n    \"& div:first-child\": {\n      background: \"#2557A7\",\n      color: \"#FFF\",\n      fontSize: 20,\n      marginRight: 10,\n      padding: \"9px 24px\",\n      \"&:hover\": {\n        background: \"#3d6fbf\"\n      }\n    },\n    \"& div:last-child\": {\n      color: \"#606060\",\n      background: \"#F3F3F3\",\n      padding: \"9px 12px\",\n      \"&:hover\": {\n        background: \"#e6e3e3\"\n      }\n    }\n  },\n  previewContent: {\n    marginTop: 30,\n    \"& p, li\": {\n      fontSize: 18,\n      color: \"#939393\",\n      marginTop: 0\n    },\n    \"& strong\": {\n      fontWeight: \"600\",\n      color: \"#666666\",\n      fontSize: 20\n    },\n    \"& ul\": {\n      listStyle: \"disc\",\n      paddingLeft: 20\n    },\n    \"& li:marker\": {\n      color: \"#939393\"\n    }\n  },\n  applicationSettings: {\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    marginBottom: 25,\n    \"& span\": {\n      color: theme.palette.primary.main,\n      fontWeight: \"600\",\n      \"&:hover\": {\n        cursor: \"pointer\"\n      }\n    }\n  },\n  dialog: {\n    padding: \"40px 60px\",\n    alignItems: \"center\",\n    textAlign: \"center\",\n    \"& > h4\": {\n      fontSize: 26,\n      color: theme.palette.primary.main,\n      marginBottom: 14\n    },\n    \"& > span\": {\n      fontWeight: \"600\",\n      color: \"#666666\",\n      fontSize: 16,\n      lineHeight: \"20px\"\n    },\n    \"& button:focus\": {\n      outline: 0\n    }\n  },\n  dialogButtonContainer: {\n    display: \"flex\",\n    marginTop: 40,\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    flexDirection: \"row\",\n    \"& > button\": {\n      margin: \"0 10px\",\n      minWidth: 150\n    }\n  },\n  successDialog: {\n    padding: \"60px 60px\",\n    alignItems: \"center\",\n    textAlign: \"center\",\n    \"& svg\": {\n      width: 24,\n      height: 25,\n      \"& path\": {\n        fill: \"white\",\n        width: \"100%\",\n        height: \"100%\"\n      }\n    },\n    \"& > h4\": {\n      marginTop: 0,\n      fontSize: 45,\n      color: \"#666666\",\n      marginBottom: 4,\n      fontWeight: \"600\"\n    },\n    \"& > span\": {\n      fontWeight: \"500\",\n      color: \"#666666\",\n      fontSize: 24,\n      display: \"block\",\n      marginBottom: 20\n    }\n  },\n  failDialog: {\n    padding: \"60px 60px\",\n    alignItems: \"center\",\n    textAlign: \"center\",\n    \"& svg\": {\n      width: 90,\n      height: 90,\n      \"& path\": {\n        fill: \"#E60278\",\n        width: \"100%\",\n        height: \"100%\"\n      }\n    },\n    \"& > h4\": {\n      marginTop: 10,\n      fontSize: 31,\n      color: theme.palette.primary.main,\n      marginBottom: 4,\n      fontWeight: \"600\"\n    },\n    \"& > span\": {\n      fontWeight: \"500\",\n      color: \"#666666\",\n      fontSize: 18,\n      display: \"block\",\n      marginBottom: 20\n    }\n  },\n  successCheck: {\n    position: \"relative\",\n    \"& svg\": {\n      width: 64,\n      height: 64,\n      \"& path\": {\n        fill: \"#E60278\",\n        width: \"100%\",\n        height: \"100%\"\n      }\n    },\n    \"&:after\": {\n      content: '\"\"',\n      display: \"block\",\n      position: \"absolute\",\n      height: \"100%\",\n      width: \"100%\",\n      top: 0,\n      left: 0,\n      border: \"10px solid #E60278\",\n      borderRadius: \"100%\",\n      boxShadow: \"0px 0px 10px 1px rgba(0,0,0,0.3)\"\n    }\n  },\n  autoComplete: {\n    marginTop: 10,\n    \"& .MuiInputBase-root\": {\n      padding: \"0 6px !important\",\n      \"& input::placeholder\": {\n        fontSize: 14,\n        color: \"#CCCCCC\",\n        opacity: 1\n      }\n    }\n  },\n  autoCompletePopper: {\n    \"& fieldset\": {\n      padding: \"10px 18px\",\n      borderRadius: 6,\n      border: \"1px solid #DDDDDD\"\n    },\n    \"& svg\": {\n      fill: \"#DDD\",\n      marginRight: 10\n    }\n  },\n  error: {\n    display: \"flex\",\n    alignItems: \"center\",\n    flexDirection: \"row\",\n    color: theme.palette.error.main,\n    left: \"25px\",\n    position: \"relative\",\n    width: 0,\n    \"& span\": {\n      position: \"absolute\",\n      whiteSpace: \"nowrap\",\n      left: 30,\n      fontSize: 13,\n      fontWeight: \"400\"\n    },\n    \"& svg\": {\n      \"&:hover\": {\n        cursor: \"auto\"\n      }\n    }\n  },\n  errorOutline: {\n    \"& $error\": {\n      left: 120\n    },\n    \"& fieldset\": {\n      borderLeft: `1px solid ${theme.palette.error.main}`,\n      borderTop: `1px solid ${theme.palette.error.main}`,\n      borderBottom: `1px solid ${theme.palette.error.main}`\n    },\n    \"& button\": {\n      borderTop: `1px solid ${theme.palette.error.main}`,\n      borderBottom: `1px solid ${theme.palette.error.main}`,\n      \"&:last-child\": {\n        borderRight: `1px solid ${theme.palette.error.main}`\n      }\n    }\n  },\n  successDialogContainer: {\n    marginTop: \"20px\",\n    \"& button\": {\n      padding: \"9px 13px\"\n    }\n  },\n  successDialogText: {\n    display: \"flex\",\n    alignItems: \"center\",\n    height: \"3rem\",\n    fontWeight: \"600\",\n    color: \"#666666\",\n    \"& span\": {\n      paddingRight: \"0.5rem\"\n    }\n  },\n  errorMessage: {\n    \"& svg\": {\n      margin: \"auto 0\",\n      fontSize: \"15px\",\n      marginRight: \"0.5rem\"\n    }\n  },\n  reviewQuestionText: {\n    textDecoration: \"underline\",\n    marginTop: \"0.5rem\",\n    cursor: \"pointer\"\n  },\n  seekYoutubeUrl: {\n    color: \"red\",\n    marginLeft: \"1.75rem\"\n  },\n  optionHint: {\n    marginTop: \"1rem\",\n    border: \"1px solid #ddd\",\n    padding: \"1.5em 1em\",\n    boxShadow: \"#ccc 0 0 9px 1px\",\n    maxWidth: \"400px\",\n    fontSize: \"0.9rem\"\n  },\n  secondaryRadioGroup: {\n    marginLeft: \"1rem\"\n  },\n  secondaryRadio: {\n    \"& span\": {\n      fontSize: \"0.9rem\"\n    }\n  },\n  buttonSecondary: {\n    borderRadius: 6,\n    padding: \"14px 30px\",\n    color: \"#FFF !important\",\n    textDecoration: \"none !important\",\n    fontWeight: \"600\",\n    fontSize: 14,\n    background: theme.palette.secondary.main,\n    \"&:hover\": {\n      background: theme.palette.secondary.dark\n    }\n  },\n  buttonSecondaryLight: {\n    borderRadius: 6,\n    padding: \"14px 30px\",\n    background: theme.palette.secondary.light,\n    color: theme.palette.secondary.main,\n    \"&:hover\": {\n      background: theme.palette.secondary.main,\n      color: \"#FFF\"\n    }\n  },\n  subheading: {\n    fontSize: \"19.4px\",\n    marginTop: \"0px\"\n  },\n  closeModalContainer: {\n    display: \"flex\",\n    width: \"100%\",\n    justifyContent: \"flex-end\",\n    alignItems: \"center\"\n  }\n}));\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { withScoutTheme } from \"../ThemeContext/ThemeContext\";\nimport AdEditor from \"./AdEditor\";\nfunction SeekAd({\n  jobAdId,\n  jobId,\n  apiKey,\n  linkOutEnabled,\n  privacyOverLimit,\n  seek_billing_reference,\n  seek_billing_reference_flag,\n  job_url_prop\n}) {\n  return (\n    // <div>Seek Ad: Job ID: {jobId}. Ad ID: {jobAdId} </div>\n    /* @__PURE__ */ React.createElement(\n      AdEditor,\n      {\n        jobAdId,\n        apiKey,\n        jobId,\n        linkOutEnabled,\n        privacyOverLimit,\n        seek_billing_reference,\n        seek_billing_reference_flag,\n        job_url_prop\n      }\n    )\n  );\n}\nexport default withScoutTheme(SeekAd);\nSeekAd.propTypes = {\n  jobAdId: PropTypes.number.isRequired,\n  jobId: PropTypes.number.isRequired,\n  apiKey: PropTypes.string.isRequired,\n  linkOutEnabled: PropTypes.bool.isRequired,\n  privacyOverLimit: PropTypes.bool,\n  seek_billing_reference: PropTypes.bool,\n  seek_billing_reference_flag: PropTypes.bool,\n  job_url_prop: PropTypes.string\n};\n","import SeekAd from \"./SeekAd\";\nexport default SeekAd;\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nimport queryString from \"query-string\";\nconst BASE_URL = \"/api/application_categories/category_assignments\";\nclass Api {\n  constructor() {\n    __publicField(this, \"handleResponse\", (response) => {\n      if (response.ok) return response.json();\n      return response.json().then((error) => {\n        error.code = response.status;\n        throw error;\n      });\n    });\n    __publicField(this, \"get\", (path, params = {}, headers = {}) => fetch(`${BASE_URL}${path}?${queryString.stringify(params, { arrayFormat: \"bracket\" })}`, {\n      headers: this.getHeaders(headers)\n    }).then((r) => this.handleResponse(r)));\n    __publicField(this, \"post\", (path, params = {}, headers = {}) => fetch(`${BASE_URL}${path}`, {\n      headers: this.getHeaders(headers),\n      method: \"POST\",\n      body: JSON.stringify(params)\n    }).then((r) => this.handleResponse(r)));\n    __publicField(this, \"put\", (path, params = {}, headers = {}) => fetch(`${BASE_URL}${path}`, {\n      headers: this.getHeaders(headers),\n      method: \"PUT\",\n      body: JSON.stringify(params)\n    }).then((r) => this.handleResponse(r)));\n    __publicField(this, \"delete\", (path, params = {}, headers = {}) => fetch(`${BASE_URL}${path}`, {\n      headers: this.getHeaders(headers),\n      method: \"DELETE\",\n      body: JSON.stringify(params)\n    }).then((r) => this.handleResponse(r)));\n    __publicField(this, \"getCategories\", (entityId) => this.get(`/${entityId}`));\n    __publicField(this, \"updateCategories\", (entityId, params) => this.put(`/${entityId}`, params));\n    __publicField(this, \"createDefaultCategories\", (entityId) => this.post(`/${entityId}/create_defaults`));\n    __publicField(this, \"removeCategories\", (entityId) => this.delete(`/${entityId}`));\n  }\n  getHeaders(headers) {\n    return Object.assign({}, {\n      \"Accept\": \"application/json\",\n      \"Content-Type\": \"application/json\",\n      \"X-api-authenticate\": localStorage.getItem(\"userKey\")\n    }, headers);\n  }\n}\nexport default new Api();\n","import React from \"react\";\nimport { ArrowLeft, ArrowRight } from \"@material-ui/icons\";\nexport default function CategoryDeck({ categoryList, category, onMoveStatus }) {\n  return /* @__PURE__ */ React.createElement(\"div\", { className: \"card\" }, /* @__PURE__ */ React.createElement(\"div\", { className: \"card-body\" }, /* @__PURE__ */ React.createElement(\"h2\", { className: \"card-title mt-0\" }, category), categoryList.map((item, idx) => /* @__PURE__ */ React.createElement(\"div\", { className: \"d-flex flex-row justify-content-between align-items-center\", key: idx }, category !== \"New\" ? /* @__PURE__ */ React.createElement(ArrowLeft, { onClick: () => onMoveStatus(item, category, \"left\") }) : null, /* @__PURE__ */ React.createElement(\"div\", { className: \"my-2\" }, item.name), category !== \"Unsuccessful\" ? /* @__PURE__ */ React.createElement(ArrowRight, { onClick: () => onMoveStatus(item, category, \"right\") }) : null))));\n}\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nimport React, { useEffect, useState } from \"react\";\nimport { Button, CircularProgress } from \"@material-ui/core\";\nimport { withScoutTheme } from \"../ThemeContext/ThemeContext\";\nimport Api from \"./API\";\nimport useStyles from \"./useStyles\";\nimport ScoutSelect from \"../scout/select\";\nfunction StatusCategories({ entityId, apiKey }) {\n  const classes = useStyles();\n  const [categories, setCategories] = useState([]);\n  const [statuses, setStatuses] = useState([]);\n  const [defaults, setDefaults] = useState({});\n  const [loading, setLoading] = useState(false);\n  const [saving, setSaving] = useState(false);\n  const [saved, setSaved] = useState(false);\n  const [dirty, setDirty] = useState(false);\n  const [differentFromDefaults, setDifferentFromDefaults] = useState(false);\n  const [hasParentSettings, setHasParentSettings] = useState(false);\n  const [error, setError] = useState();\n  const fetchCategories = () => __async(this, null, function* () {\n    try {\n      setError(void 0);\n      const data = yield Api.getCategories(entityId);\n      return data;\n    } catch (err) {\n      setError(err.message);\n      return;\n    }\n  });\n  const initialiseCategories = () => __async(this, null, function* () {\n    setLoading(true);\n    const data = yield fetchCategories();\n    setCategories(data.categories);\n    setStatuses(data.statuses);\n    setDefaults(data.defaults);\n    setHasParentSettings(data.has_parent_settings);\n    setDifferentFromDefaults(defaultsDiff(data.categories, data.defaults));\n    setLoading(false);\n  });\n  useEffect(() => {\n    localStorage.setItem(\"userKey\", apiKey);\n    initialiseCategories();\n  }, []);\n  const updateCategories = (cats) => __async(this, null, function* () {\n    setDirty(false);\n    setSaving(true);\n    setSaved(false);\n    const params = {\n      category_assignment: { categories: cats }\n    };\n    try {\n      setError(void 0);\n      yield Api.updateCategories(entityId, params);\n      setSaved(true);\n      setCategories(cats);\n      setDifferentFromDefaults(defaultsDiff(cats, defaults));\n    } catch (err) {\n      setError(err.message);\n    }\n    setSaving(false);\n    setTimeout(() => {\n      setSaved(false);\n    }, 3e3);\n  });\n  const createDefaultCategories = () => __async(this, null, function* () {\n    try {\n      const { categories: categories2 } = yield Api.createDefaultCategories(entityId);\n      setCategories(categories2);\n      setDifferentFromDefaults(false);\n    } catch (err) {\n      setError(err.message);\n    }\n  });\n  const removeCategories = () => __async(this, null, function* () {\n    try {\n      setError(void 0);\n      const { categories: categories2 } = yield Api.removeCategories(entityId);\n      setCategories([]);\n      setDifferentFromDefaults(false);\n    } catch (err) {\n      setError(err.message);\n    }\n  });\n  const resetCategories = () => __async(this, null, function* () {\n    const newCategories = categories.map((category) => {\n      return __spreadProps(__spreadValues({}, category), { status_id: defaults[category.name] });\n    });\n    yield updateCategories(newCategories);\n  });\n  const saveCategories = () => updateCategories(categories);\n  const handleStatusChanged = (category, id) => {\n    if (toS(category.status_id) === toS(id)) {\n      return;\n    }\n    category.status_id = id;\n    setDirty(true);\n  };\n  const toS = (obj) => (obj || \"\") + \"\";\n  const categoryColumn = (category) => {\n    return /* @__PURE__ */ React.createElement(\"div\", { className: \"category-column\", key: category.id }, /* @__PURE__ */ React.createElement(\"div\", { className: \"category-column-header\" }, category.name), /* @__PURE__ */ React.createElement(\n      ScoutSelect,\n      {\n        name: \"category_status\",\n        value: toS(category.status_id),\n        data: statusOptions,\n        onChange: (id) => handleStatusChanged(category, id)\n      }\n    ));\n  };\n  const defaultCategoryColumn = (categoryName, statusId) => {\n    const status = statuses.find(({ id }) => id == statusId);\n    return /* @__PURE__ */ React.createElement(\"div\", { className: \"category-column\", key: categoryName }, /* @__PURE__ */ React.createElement(\"div\", { className: \"category-column-header\" }, categoryName), /* @__PURE__ */ React.createElement(\"div\", null, status ? status.name : \"New\"));\n  };\n  const defaultsDiff = (collection, defaultsData) => collection.some((category) => toS(category.status_id) !== toS(defaultsData[category.name]));\n  const statusOptions = statuses.map((status) => ({ label: status.name, value: toS(status.id) }));\n  return /* @__PURE__ */ React.createElement(\"div\", { className: classes.root }, /* @__PURE__ */ React.createElement(\n    \"div\",\n    {\n      className: \"modal fade\",\n      id: \"statusCategoriesModal\",\n      tabIndex: \"-1\",\n      \"aria-labelledby\": \"statusCategoriesModalLabel\",\n      \"aria-hidden\": \"true\"\n    },\n    /* @__PURE__ */ React.createElement(\"div\", { className: \"modal-dialog modal-xl\" }, /* @__PURE__ */ React.createElement(\"div\", { className: \"modal-content\" }, /* @__PURE__ */ React.createElement(\"div\", { className: \"modal-header\" }, /* @__PURE__ */ React.createElement(\"h2\", { className: \"mt-0\" }, \"Status Categories for Hiring Manager App\"), /* @__PURE__ */ React.createElement(\"button\", { type: \"button\", className: \"close\", \"data-dismiss\": \"modal\", \"aria-label\": \"Close\" }, /* @__PURE__ */ React.createElement(\"span\", { \"aria-hidden\": \"true\" }, \"\\xD7\"))), /* @__PURE__ */ React.createElement(\"div\", { className: \"modal-body\" }, loading ? /* @__PURE__ */ React.createElement(\"div\", { className: \"d-flex justify-content-center\" }, /* @__PURE__ */ React.createElement(CircularProgress, null)) : /* @__PURE__ */ React.createElement(\"div\", { className: \"categories-board\" }, categories.length > 0 && categories.map((category) => categoryColumn(category)), categories.length == 0 && Object.keys(defaults).map(\n      (categoryName) => defaultCategoryColumn(categoryName, defaults[categoryName])\n    ))), !loading && /* @__PURE__ */ React.createElement(\"div\", { className: `modal-footer ${classes.footer}` }, error && /* @__PURE__ */ React.createElement(\"div\", { className: \"alert alert-danger\" }, error), saved && /* @__PURE__ */ React.createElement(\"div\", { className: \"alert alert-success\" }, \"Saved\"), categories.length == 0 && /* @__PURE__ */ React.createElement(Button, { variant: \"text\", onClick: createDefaultCategories }, \"Use custom setting\"), hasParentSettings && categories.length > 0 && /* @__PURE__ */ React.createElement(Button, { variant: \"text\", onClick: removeCategories }, \"Use parent setting\"), categories.length > 0 && /* @__PURE__ */ React.createElement(\n      Button,\n      {\n        variant: \"contained\",\n        color: \"primary\",\n        disabled: !dirty,\n        onClick: saveCategories,\n        startIcon: saving ? /* @__PURE__ */ React.createElement(CircularProgress, { size: 12, color: \"inherit\" }) : null\n      },\n      \"Save\"\n    ), differentFromDefaults && /* @__PURE__ */ React.createElement(Button, { variant: \"outlined\", color: \"secondary\", onClick: resetCategories }, \"Reset to default\"))))\n  ));\n}\nexport default withScoutTheme(StatusCategories);\n","import StatusCategories from \"./StatusCategories\";\nexport default StatusCategories;\n","import { makeStyles } from \"@material-ui/core/styles\";\nconst DARK_BLUE = \"#004E70\";\nexport default makeStyles(() => ({\n  root: {\n    position: \"relative\"\n  },\n  footer: {\n    button: {\n      marginLeft: 12\n    }\n  }\n}));\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nimport React, { useEffect, useState } from \"react\";\nimport { Dialog, Snackbar } from \"@material-ui/core\";\nimport useStyles from \"./useStyles\";\nimport { withScoutTheme } from \"../ThemeContext/ThemeContext\";\nimport PropTypes from \"prop-types\";\nimport ReactLoading from \"react-loading\";\nimport axios from \"axios\";\nimport queryString from \"query-string\";\nimport Messenger from \"./components/Messenger\";\nimport SelectRecipients from \"./components/SelectRecipients\";\nfunction TextUsModal({ applicationId, job, open }) {\n  const [loading, setLoading] = useState(true);\n  const [applications, setApplications] = useState(null);\n  const [selectedApplications, setSelectedApplications] = useState([]);\n  const [isGroupMessage, setIsGroupMessage] = useState(false);\n  const [isSelectModalOpen, setIsSelectModalOpen] = useState(false);\n  const [statuses, setStatuses] = useState([]);\n  const [largeModal, setLargeModal] = useState(true);\n  const [isOpen, setIsOpen] = useState(open);\n  const [snack, setSnack] = useState(null);\n  const classes = useStyles();\n  const token = document.querySelector('meta[name=\"csrf-token\"]').content;\n  const config = {\n    credentials: \"same-origin\",\n    headers: {\n      \"Accept\": \"application/json\",\n      \"Content-Type\": \"application/json\",\n      \"X-CSRF-Token\": token\n    }\n  };\n  const openModal = () => setIsOpen(true);\n  const closeModal = () => setIsOpen(false);\n  useEffect(() => {\n    const toggleTextusModal = (e) => {\n      if (!e.target.classList.contains(\"toggle-textus-btn\")) return;\n      e.preventDefault();\n      setIsGroupMessage(e.target.dataset.isSelectModalOpen === \"true\");\n      openModal();\n    };\n    document.addEventListener(\"click\", toggleTextusModal);\n    return () => document.removeEventListener(\"click\", toggleTextusModal);\n  }, [isOpen]);\n  useEffect(() => {\n    function getData() {\n      return __async(this, null, function* () {\n        setLargeModal(true);\n        setLoading(true);\n        try {\n          const { data } = yield axios.get(`/admin/jobs/${job.id}/applications/`, __spreadProps(__spreadValues({}, config), {\n            params: { application_ids: applicationId },\n            paramsSerializer: (params) => queryString.stringify(params, { arrayFormat: \"bracket\" })\n          }));\n          setApplications(data.applications);\n          if (isGroupMessage) {\n            setIsSelectModalOpen(true);\n          } else {\n            setIsSelectModalOpen(false);\n            setSelectedApplications(data.applications);\n          }\n          setStatuses([\n            {\n              id: null,\n              state: \"new\",\n              name: \"New\",\n              colour: \"\"\n            },\n            ...data.statuses\n          ]);\n        } catch (e) {\n          setSnack(\"Could not fetch applicant data\");\n        } finally {\n          setLoading(false);\n        }\n      });\n    }\n    getData();\n  }, [isGroupMessage, isOpen]);\n  if (loading) return /* @__PURE__ */ React.createElement(ReactLoading, { type: \"spin\", color: \"#004E70\", width: 45, className: classes.loading });\n  return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\n    Dialog,\n    {\n      disableEnforceFocus: true,\n      fullWidth: true,\n      open: isOpen,\n      onClose: closeModal,\n      classes: { paper: `${classes.modalRoot} ${largeModal ? classes.modalLarge : \"\"}` }\n    },\n    isSelectModalOpen ? /* @__PURE__ */ React.createElement(\n      SelectRecipients,\n      {\n        statuses,\n        applications,\n        setSelectedApplications,\n        setIsSelectModalOpen\n      }\n    ) : /* @__PURE__ */ React.createElement(\n      Messenger,\n      {\n        job,\n        statuses,\n        applications,\n        selectedApplications,\n        setSelectedApplications,\n        setLargeModal,\n        closeModal,\n        setSnack,\n        isGroupMessage,\n        setIsGroupMessage,\n        token,\n        config\n      }\n    )\n  ), /* @__PURE__ */ React.createElement(\n    Snackbar,\n    {\n      open: snack,\n      onClose: () => setSnack(null),\n      message: snack\n    }\n  ));\n}\nTextUsModal.propTypes = {\n  applicationId: PropTypes.number,\n  job: PropTypes.object.isRequired,\n  isSelectModalOpen: PropTypes.bool\n};\nexport default withScoutTheme(TextUsModal);\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nimport React, { useEffect, useState } from \"react\";\nimport useStyles from \"./useStyles\";\nimport { withScoutTheme } from \"../../../ThemeContext/ThemeContext\";\nimport PropTypes from \"prop-types\";\nimport axios from \"axios\";\nimport ReactLoading from \"react-loading\";\nimport queryString from \"query-string\";\nimport CandidateListItem from \"./components/CandidateListItem\";\nimport ChatWindow from \"./components/ChatWindow\";\nimport ChatBox from \"./components/ChatBox\";\nimport CandidateFilter from \"./components/CandidateFilter\";\nimport CandidateDetails from \"./components/CandidateDetails\";\nimport moment from \"moment\";\nfunction Messenger({ job, setLargeModal, statuses, selectedApplications, setSelectedApplications, isGroupMessage, config, applications }) {\n  const [conversationsLoading, setConversationsLoading] = useState(true);\n  const [userOptionsLoading, setUserOptionsLoading] = useState(true);\n  const [sending, setSending] = useState(false);\n  const [conversations, setConversations] = useState([]);\n  const [userOptions, setUserOptions] = useState(null);\n  const [searchTerm, setSearchTerm] = useState(\"\");\n  const [selectedStatuses, setSelectedStatuses] = useState([]);\n  const [showSidebar, setShowSidebar] = useState(true);\n  const [selectedConversation, setSelectedConversation] = useState([]);\n  const [body, setBody] = useState(\"\");\n  const [signature, setSignature] = useState(\"\");\n  const [scheduleDate, setScheduleDate] = useState(null);\n  const [scheduleTime, setScheduleTime] = useState(moment().add(\"1 h\").format(\"hh:mm\"));\n  const [isPm, setIsPm] = useState(false);\n  const [groupMessage, setGroupMessage] = useState(isGroupMessage);\n  const classes = useStyles();\n  useEffect(() => {\n    function initData() {\n      return __async(this, null, function* () {\n        const conversations2 = yield fetchConversations(selectedApplications);\n        setConversations(conversations2);\n        fetchUserOptions();\n      });\n    }\n    initData();\n  }, [selectedApplications]);\n  useEffect(() => {\n    if (conversations.length === 1 || selectedConversation.length > 1) {\n      setLargeModal(false);\n      setShowSidebar(false);\n    } else {\n      setLargeModal(true);\n      setShowSidebar(true);\n    }\n  }, [conversations, selectedConversation]);\n  useEffect(() => {\n    setBody(\"\");\n    setSignature(\"\");\n  }, [selectedConversation]);\n  function fetchUserOptions() {\n    return __async(this, null, function* () {\n      setUserOptionsLoading(true);\n      try {\n        const { data } = yield axios.get(\"/admin/integrations/textus/user_options\");\n        setUserOptions(data);\n      } catch (e) {\n        console.log(e);\n      } finally {\n        setUserOptionsLoading(false);\n      }\n    });\n  }\n  function fetchConversations(applications2) {\n    return __async(this, null, function* () {\n      setConversationsLoading(true);\n      try {\n        const { data: conversationsData } = yield axios.get(\"/admin/integrations/textus/conversations\", __spreadProps(__spreadValues({}, config), {\n          params: __spreadValues({\n            job_id: job.id\n          }, applications2.length === 1 && { candidate_id: applications2[0].candidate_id }),\n          paramsSerializer: (params) => queryString.stringify(params, { arrayFormat: \"bracket\" })\n        }));\n        const conversations2 = applications2.map((app) => {\n          const matchingConversation = conversationsData && conversationsData.find((convo) => convo && convo.candidate_id === app.candidate_id);\n          return {\n            id: app.id,\n            candidate_id: app.candidate_id,\n            candidate_name: app.name,\n            candidate_phone: app.phone,\n            candidate_status: app.status,\n            candidate_tags: app.tags,\n            messages: matchingConversation ? matchingConversation.messages : []\n          };\n        });\n        groupMessage ? setSelectedConversation(conversations2) : setSelectedConversation([conversations2[0]]);\n        return conversations2;\n      } catch (e) {\n        console.log(e);\n      } finally {\n        setConversationsLoading(false);\n      }\n    });\n  }\n  function handleTimeValueForPost(value) {\n    const time = value.replace(/-/g, \":\");\n    const [hour, minute] = time.split(\":\");\n    if (isPm) {\n      return parseInt(hour) === 12 ? `00:${minute}:00` : `${parseInt(hour) + 12}:${minute}:00`;\n    } else {\n      return `${hour}:${minute}:00`;\n    }\n  }\n  function handleSend() {\n    return __async(this, null, function* () {\n      setSending(true);\n      try {\n        if (groupMessage) {\n          const { data } = yield axios.post(\"/admin/integrations/textus/campaigns\", {\n            job_id: job.id,\n            candidate_ids: selectedApplications.map((app) => app.candidate_id),\n            campaign_title: `${job.reference} - ${job.title} (${moment().format(\"LLLL\")})`,\n            body,\n            schedule_time: scheduleDate ? moment(`${scheduleDate} ${handleTimeValueForPost(scheduleTime)}`).format() : null\n          }, config);\n          const newConversations = conversations.map((convo) => __spreadProps(__spreadValues({}, convo), {\n            messages: [data.messages[0], ...convo.messages].filter((msg) => msg)\n          }));\n          const existingConversations = yield fetchConversations(applications.filter((app) => !selectedApplications.map((selected) => selected.candidate_id).includes(app.candidate_id)));\n          const combinedConversations = [...newConversations, ...existingConversations];\n          setGroupMessage(false);\n          setConversations(combinedConversations);\n          setSelectedConversation([combinedConversations[0]]);\n        } else {\n          const { data } = yield axios.post(\"/admin/integrations/textus/messages\", {\n            job_id: job.id,\n            candidate_id: selectedConversation[0].candidate_id,\n            body,\n            signature,\n            schedule_time: scheduleDate ? moment(`${scheduleDate} ${handleTimeValueForPost(scheduleTime)}`).format() : null\n          }, config);\n          const newConversation = __spreadProps(__spreadValues({}, selectedConversation[0]), {\n            messages: [data.messages[0], ...selectedConversation[0].messages]\n          });\n          setSelectedConversation([newConversation]);\n          setConversations([newConversation, ...conversations.filter((convo) => convo.candidate_id !== selectedConversation[0].candidate_id)]);\n        }\n      } catch (e) {\n        console.log(e);\n      } finally {\n        setSending(false);\n      }\n    });\n  }\n  if (userOptionsLoading || conversationsLoading) return /* @__PURE__ */ React.createElement(ReactLoading, { type: \"spin\", color: \"#004E70\", width: 45, className: classes.loading });\n  return /* @__PURE__ */ React.createElement(\"div\", { className: classes.root }, showSidebar && /* @__PURE__ */ React.createElement(\"div\", { className: classes.modalLeft }, /* @__PURE__ */ React.createElement(\n    CandidateFilter,\n    {\n      statuses,\n      selectedStatuses,\n      setSelectedStatuses,\n      searchTerm,\n      setSearchTerm,\n      conversations\n    }\n  ), /* @__PURE__ */ React.createElement(\"div\", { className: classes.candidateList }, conversations.filter((convo) => selectedStatuses.length > 0 ? selectedStatuses.map((status) => status.id).includes(convo.candidate_status) : convo.candidate_name.toLowerCase().includes(searchTerm.toLowerCase())).sort((a, b) => !a.messages[0] - !b.messages[0] || a.messages[0] && b.messages[0] && new Date(b.messages[0].sent_time) - new Date(a.messages[0].sent_time)).map(\n    (convo) => /* @__PURE__ */ React.createElement(\n      CandidateListItem,\n      {\n        key: convo.id,\n        conversation: convo,\n        statuses,\n        selectedConversation,\n        setSelectedConversation\n      }\n    )\n  ))), /* @__PURE__ */ React.createElement(\"div\", { className: classes.modalRight, style: { flexBasis: showSidebar ? \"64%\" : \"100%\" } }, /* @__PURE__ */ React.createElement(\n    CandidateDetails,\n    {\n      conversation: selectedConversation\n    }\n  ), /* @__PURE__ */ React.createElement(\n    ChatWindow,\n    {\n      body,\n      conversation: selectedConversation,\n      signature\n    }\n  ), /* @__PURE__ */ React.createElement(\n    ChatBox,\n    {\n      body,\n      setBody,\n      signature,\n      setSignature,\n      conversation: selectedConversation,\n      userOptions,\n      handleSend,\n      sending,\n      scheduleDate,\n      setScheduleDate,\n      scheduleTime,\n      setScheduleTime,\n      isPm,\n      setIsPm,\n      job\n    }\n  )));\n}\nMessenger.propTypes = {\n  job: PropTypes.object.isRequired,\n  setLargeModal: PropTypes.func.isRequired,\n  statuses: PropTypes.array.isRequired,\n  selectedApplications: PropTypes.array.isRequired,\n  setSelectedApplications: PropTypes.func.isRequired,\n  applications: PropTypes.array.isRequired,\n  config: PropTypes.object.isRequired,\n  closeModal: PropTypes.func.isRequired,\n  setSnack: PropTypes.func.isRequired\n};\nexport default withScoutTheme(Messenger);\n","import React from \"react\";\nimport useStyles from \"./useStyles\";\nimport PropTypes from \"prop-types\";\nimport GroupRoundedIcon from \"@material-ui/icons/GroupRounded\";\nfunction CandidateDetails({ conversation }) {\n  const classes = useStyles();\n  return /* @__PURE__ */ React.createElement(\"div\", { className: classes.root }, conversation.length > 1 ? /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\"h4\", null, `${conversation[0].candidate_name}, ${conversation[1].candidate_name}`), conversation.length - 2 > 0 && /* @__PURE__ */ React.createElement(\"div\", { className: classes.remainingApplicants }, /* @__PURE__ */ React.createElement(GroupRoundedIcon, { color: \"primary\", fontSize: \"small\" }), \"+\", conversation.length - 2)) : /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\"h4\", null, conversation[0].candidate_name), /* @__PURE__ */ React.createElement(\"span\", null, conversation[0].candidate_phone)));\n}\nCandidateDetails.propTypes = {\n  conversation: PropTypes.array.isRequired\n};\nexport default CandidateDetails;\n","import CandidateDetails from \"./CandidateDetails\";\nexport default CandidateDetails;\n","import { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n  root: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    flexBasis: \"10%\",\n    padding: \"24px 50px\",\n    borderBottom: \"1px solid #F3F3F3\",\n    alignItems: \"center\",\n    \"& h4\": {\n      marginTop: 0,\n      color: \"#004E70\",\n      fontSize: 24,\n      marginRight: 16,\n      fontWeight: \"600\",\n      textTransform: \"capitalize\"\n    },\n    \"& span\": {\n      color: \"#393939\",\n      fontSize: 16\n    }\n  },\n  remainingApplicants: {\n    background: \"#F3F6F7\",\n    padding: \"10px 14px\",\n    display: \"flex\",\n    borderRadius: \"65px\",\n    alignItems: \"center\",\n    marginLeft: 10,\n    fontSize: 14,\n    fontWeight: \"900\",\n    color: theme.palette.primary.main,\n    pointerEvents: \"none\",\n    \"& svg\": {\n      marginRight: 6\n    }\n  }\n}));\n","import React, { useState, useRef } from \"react\";\nimport useStyles from \"./useStyles\";\nimport sharedStyles from \"../ChatBox/useStyles\";\nimport PropTypes from \"prop-types\";\nimport {\n  TextField,\n  IconButton,\n  InputAdornment,\n  ClickAwayListener,\n  Popper,\n  Chip\n} from \"@material-ui/core\";\nimport { Autocomplete } from \"@material-ui/lab\";\nimport FilterListIcon from \"@material-ui/icons/FilterList\";\nimport SearchIcon from \"@material-ui/icons/Search\";\nfunction CandidateFilter({ conversations, statuses, selectedStatuses, setSelectedStatuses, searchTerm, setSearchTerm }) {\n  const [isOpen, setIsOpen] = useState(false);\n  const anchor = useRef(null);\n  const classes = useStyles();\n  const sharedClasses = sharedStyles();\n  const unselectedStatuses = statuses.filter((status) => conversations.map((app) => app.candidate_status).includes(status.id)).filter((status) => !selectedStatuses.map((selected) => selected.id).includes(status.id));\n  return /* @__PURE__ */ React.createElement(\"div\", { className: `${classes.root} ${selectedStatuses.length > 0 ? classes.reducePadding : \"\"}` }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.searchContainer }, /* @__PURE__ */ React.createElement(\n    TextField,\n    {\n      classes: { root: classes.search },\n      variant: \"outlined\",\n      placeholder: \"Search\",\n      value: searchTerm,\n      onChange: (e) => setSearchTerm(e.target.value),\n      InputProps: {\n        startAdornment: /* @__PURE__ */ React.createElement(InputAdornment, { position: \"start\" }, /* @__PURE__ */ React.createElement(SearchIcon, null))\n      }\n    }\n  ), /* @__PURE__ */ React.createElement(ClickAwayListener, { onClickAway: () => setIsOpen(false) }, /* @__PURE__ */ React.createElement(\"div\", null, /* @__PURE__ */ React.createElement(IconButton, { ref: anchor, onClick: () => setIsOpen(!isOpen), className: `${classes.filterIcon} ${isOpen ? classes.filterIconActive : \"\"}` }, /* @__PURE__ */ React.createElement(FilterListIcon, null)), /* @__PURE__ */ React.createElement(\n    Popper,\n    {\n      className: `${sharedClasses.popper} ${classes.popperStatuses}`,\n      anchorEl: anchor.current,\n      open: isOpen,\n      placement: \"bottom-end\",\n      popperOptions: { positionFixed: true }\n    },\n    unselectedStatuses.length > 0 ? unselectedStatuses.map(\n      (status) => /* @__PURE__ */ React.createElement(\n        \"div\",\n        {\n          key: status.id,\n          className: sharedClasses.popperItem,\n          onClick: () => {\n            setSelectedStatuses([...selectedStatuses, status]);\n            setIsOpen(false);\n          }\n        },\n        status.name\n      )\n    ) : /* @__PURE__ */ React.createElement(\"div\", { className: classes.chipNoItems }, \"No statuses to display\")\n  )))), selectedStatuses.length > 0 && /* @__PURE__ */ React.createElement(\"div\", { className: classes.chipContainer }, selectedStatuses.map(\n    (status) => /* @__PURE__ */ React.createElement(\n      Chip,\n      {\n        key: status.id,\n        className: classes.chipItem,\n        label: status.name,\n        onDelete: () => setSelectedStatuses(selectedStatuses.filter((selected) => selected.id !== status.id)),\n        variant: \"outlined\"\n      }\n    )\n  )));\n}\nCandidateFilter.propTypes = {\n  conversations: PropTypes.array.isRequired,\n  statuses: PropTypes.arrayOf(\n    PropTypes.shape({\n      colour: PropTypes.string,\n      id: PropTypes.number,\n      name: PropTypes.string,\n      position: PropTypes.number,\n      state: PropTypes.string\n    })\n  ).isRequired,\n  selectedStatuses: PropTypes.array.isRequired,\n  setSelectedStatuses: PropTypes.func.isRequired,\n  searchTerm: PropTypes.string,\n  setSearchTerm: PropTypes.func.isRequired\n};\nexport default CandidateFilter;\n","import CandidateFilter from \"./CandidateFilter\";\nexport default CandidateFilter;\n","import { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n  root: {\n    padding: \"30px 40px\",\n    borderBottom: \"1px solid #F3F3F3\"\n  },\n  reducePadding: {\n    paddingBottom: 10\n  },\n  searchContainer: {\n    display: \"flex\"\n  },\n  search: {\n    flexGrow: 1,\n    marginRight: 12,\n    background: \"#FAFAFA\",\n    border: \"1px solid #EAEEF0\",\n    borderRadius: 6,\n    justifyContent: \"center\",\n    \"& svg\": {\n      fill: \"#939393\"\n    },\n    \"& fieldset\": {\n      border: 0\n    },\n    \"& input\": {\n      padding: \"0 8px !important\"\n    }\n  },\n  filterIcon: {\n    color: \"#939393\",\n    padding: 5,\n    background: \"#FAFAFA\",\n    border: \"1px solid #EAEEF0\",\n    borderRadius: 6,\n    \"&:focus\": {\n      outline: 0\n    },\n    \"& svg\": {\n      fill: \"#939393\"\n    }\n  },\n  filterIconActive: {\n    background: \"#ececec\"\n  },\n  popperStatuses: {\n    maxHeight: 400,\n    maxWidth: 250,\n    minWidth: 250\n  },\n  chipContainer: {\n    paddingTop: 10\n  },\n  chipItem: {\n    margin: \"2px 4px\"\n  },\n  chipNoItems: {\n    padding: \"10px 0\",\n    fontSize: 15,\n    color: \"#999\",\n    textAlign: \"center\"\n  }\n}));\n","import React from \"react\";\nimport useStyles from \"./useStyles\";\nimport PropTypes from \"prop-types\";\nimport moment from \"moment\";\nfunction CandidateListItem({ conversation, selectedConversation, setSelectedConversation }) {\n  const classes = useStyles();\n  return /* @__PURE__ */ React.createElement(\n    \"div\",\n    {\n      className: `${classes.root} ${selectedConversation[0].id === conversation.id ? \"selected\" : \"\"}`,\n      onClick: () => setSelectedConversation([conversation])\n    },\n    /* @__PURE__ */ React.createElement(\"div\", { className: classes.details }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.name }, /* @__PURE__ */ React.createElement(\"h4\", null, conversation.candidate_name)), /* @__PURE__ */ React.createElement(\"div\", { className: classes.time }, conversation.messages.length > 0 && conversation.messages[0].sent_time && moment(conversation.messages[0].sent_time).fromNow())),\n    /* @__PURE__ */ React.createElement(\"p\", { className: classes.excerpt }, conversation.messages.length > 0 ? conversation.messages[0].body : \"No messages\")\n  );\n}\nCandidateListItem.propTypes = {\n  conversation: PropTypes.object.isRequired,\n  selectedConversation: PropTypes.array.isRequired,\n  setSelectedConversation: PropTypes.func.isRequired\n};\nexport default CandidateListItem;\n","import CandidateListItem from \"./CandidateListItem\";\nexport default CandidateListItem;\n","import { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n  root: {\n    padding: \"30px 40px\",\n    borderBottom: \"1px solid #F3F3F3\",\n    \"&.selected\": {\n      background: \"#F3F6F7\"\n    },\n    \"&:hover\": {\n      cursor: \"pointer\",\n      background: \"#F3F6F7\",\n      \"& p\": {\n        color: \"#123848\"\n      }\n    }\n  },\n  details: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\"\n  },\n  name: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    flexGrow: 1,\n    \"& h4\": {\n      marginTop: 0,\n      fontSize: 18,\n      color: theme.palette.primary.main,\n      fontWeight: \"600\",\n      lineHeight: \"20px\",\n      textTransform: \"capitalize\"\n    }\n  },\n  status: {\n    borderRadius: \"100%\",\n    background: theme.palette.error.main,\n    //TODO Update with appropriate status colors\n    marginLeft: \"auto\",\n    height: 8,\n    width: 8\n  },\n  time: {\n    color: \"#393939\",\n    fontSize: 14,\n    whiteSpace: \"nowrap\",\n    marginLeft: 6,\n    textTransform: \"capitalize\"\n  },\n  excerpt: {\n    fontSize: 12,\n    color: \"#393939\",\n    marginTop: 10,\n    lineHeight: \"18px\"\n  }\n}));\n","import React, { useState, useRef, useEffect } from \"react\";\nimport useStyles from \"./useStyles\";\nimport PropTypes from \"prop-types\";\nimport {\n  Button,\n  IconButton,\n  Popper,\n  TextareaAutosize,\n  CircularProgress,\n  ClickAwayListener,\n  ButtonGroup\n} from \"@material-ui/core\";\nimport {\n  TemplatePicker,\n  TagPicker,\n  SignatureToggle\n} from \"./components\";\nimport DayPickerInput from \"react-day-picker/DayPickerInput\";\nimport ArrowDropDownIcon from \"@material-ui/icons/ArrowDropDown\";\nimport HighlightOffIcon from \"@material-ui/icons/HighlightOff\";\nimport TimeField from \"react-simple-timefield\";\nimport { formatDate } from \"react-day-picker/moment\";\nfunction ChatBox({\n  conversation,\n  userOptions,\n  body,\n  setBody,\n  signature,\n  setSignature,\n  handleSend,\n  sending,\n  scheduleDate,\n  setScheduleDate,\n  scheduleTime,\n  setScheduleTime,\n  isPm,\n  setIsPm,\n  job\n}) {\n  const [isSchedulerOpen, setIsSchedulerOpen] = useState(false);\n  const timeInputEl = useRef(null);\n  const anchor = useRef(null);\n  const textArea = useRef(null);\n  const classes = useStyles();\n  function insertTag(tag) {\n    const index = textArea.current.selectionStart;\n    setBody(body.slice(0, index) + tag + body.substring(index));\n  }\n  function handleTimeChange(event, value) {\n    const time = value.replace(/-/g, \":\");\n    const [hour, minute] = time.split(\":\");\n    hour >= 12 ? setScheduleTime(`12:${minute}:00`) : setScheduleTime(`${hour}:${minute}:00`);\n  }\n  return /* @__PURE__ */ React.createElement(\"div\", { className: classes.root }, /* @__PURE__ */ React.createElement(\n    TextareaAutosize,\n    {\n      ref: textArea,\n      className: classes.textArea,\n      minRows: 2,\n      maxRows: 6,\n      placeholder: `Reply to ${conversation.length > 1 ? `${conversation.length} applicants` : conversation[0].candidate_name}`,\n      value: body,\n      onChange: (e) => setBody(e.target.value)\n    }\n  ), signature && /* @__PURE__ */ React.createElement(\"div\", { className: classes.signature }, signature), /* @__PURE__ */ React.createElement(\"div\", { className: classes.actions }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.actionButtons }, /* @__PURE__ */ React.createElement(\n    TagPicker,\n    {\n      insertTag,\n      job\n    }\n  ), /* @__PURE__ */ React.createElement(\n    TemplatePicker,\n    {\n      setBody,\n      userOptions\n    }\n  ), userOptions && userOptions.signature && /* @__PURE__ */ React.createElement(\n    SignatureToggle,\n    {\n      signature,\n      setSignature,\n      userOptions\n    }\n  )), /* @__PURE__ */ React.createElement(\"div\", { className: classes.characterCount }, body.length + signature.length, \"/420 characters\"), /* @__PURE__ */ React.createElement(\"div\", { className: classes.send }, /* @__PURE__ */ React.createElement(\n    Button,\n    {\n      disableElevation: true,\n      variant: \"contained\",\n      classes: { root: classes.sendButton },\n      onClick: handleSend\n    },\n    sending ? /* @__PURE__ */ React.createElement(CircularProgress, { thickness: 4.5, size: 28, classes: { root: classes.spinner } }) : scheduleDate ? \"Schedule\" : \"Send\"\n  ), /* @__PURE__ */ React.createElement(ClickAwayListener, { onClickAway: () => setIsSchedulerOpen(false) }, /* @__PURE__ */ React.createElement(\"div\", null, /* @__PURE__ */ React.createElement(\n    IconButton,\n    {\n      classes: { root: `${classes.schedulerButton} ${isSchedulerOpen ? classes.schedulerButtonActive : \"\"}` },\n      ref: anchor,\n      onClick: () => setIsSchedulerOpen(!isSchedulerOpen)\n    },\n    /* @__PURE__ */ React.createElement(ArrowDropDownIcon, { fontSize: \"small\" })\n  ), /* @__PURE__ */ React.createElement(\n    Popper,\n    {\n      className: `${classes.popper} ${classes.popperScheduler}`,\n      anchorEl: anchor.current,\n      open: isSchedulerOpen,\n      placement: \"top-end\",\n      popperOptions: { positionFixed: true }\n    },\n    /* @__PURE__ */ React.createElement(\"h4\", null, \"Schedule message to be sent\"),\n    /* @__PURE__ */ React.createElement(\"div\", { className: classes.schedulerOptions }, /* @__PURE__ */ React.createElement(\n      DayPickerInput,\n      {\n        value: scheduleDate,\n        onDayChange: (day) => setScheduleDate(formatDate(day, \"LL\")),\n        classNames: {\n          container: classes.calendarContainer\n        },\n        format: \"LL\",\n        placeholder: \"Select a date\"\n      }\n    ), /* @__PURE__ */ React.createElement(\"div\", { className: classes.startingTimeInputWrapper }, /* @__PURE__ */ React.createElement(\n      TimeField,\n      {\n        ref: timeInputEl,\n        value: scheduleTime,\n        onChange: handleTimeChange,\n        className: classes.startTimeInput\n      }\n    ), /* @__PURE__ */ React.createElement(ButtonGroup, { className: classes.timeBntGroupWrapper }, /* @__PURE__ */ React.createElement(\n      Button,\n      {\n        className: !isPm && classes.isAMActive,\n        onClick: () => setIsPm(false)\n      },\n      \"AM\"\n    ), /* @__PURE__ */ React.createElement(\n      Button,\n      {\n        className: isPm && classes.isPMActive,\n        onClick: () => setIsPm(true)\n      },\n      \"PM\"\n    )), scheduleDate && /* @__PURE__ */ React.createElement(\n      IconButton,\n      {\n        onClick: () => {\n          setScheduleDate(\"\");\n          setScheduleTime(\"00:00\");\n        }\n      },\n      /* @__PURE__ */ React.createElement(HighlightOffIcon, { color: \"error\" })\n    )))\n  ))))));\n}\nChatBox.propTypes = {\n  conversation: PropTypes.array.isRequired,\n  userOptions: PropTypes.object.isRequired,\n  body: PropTypes.string,\n  setBody: PropTypes.func.isRequired,\n  signature: PropTypes.string,\n  setSignature: PropTypes.func.isRequired,\n  handleSend: PropTypes.func.isRequired,\n  sending: PropTypes.bool.isRequired,\n  scheduleDate: PropTypes.string.isRequired,\n  setScheduleDate: PropTypes.func.isRequired,\n  scheduleTime: PropTypes.string.isRequired,\n  setScheduleTime: PropTypes.func.isRequired,\n  isPm: PropTypes.bool.isRequired,\n  setIsPm: PropTypes.func.isRequired,\n  job: PropTypes.object.isRequired\n};\nexport default ChatBox;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport useStyles from \"../useStyles\";\nimport { IconButton } from \"@material-ui/core\";\nimport GestureIcon from \"@material-ui/icons/Gesture\";\nfunction SignatureToggle({ signature, setSignature, userOptions }) {\n  const classes = useStyles();\n  function handleSignature() {\n    signature ? setSignature(\"\") : setSignature(userOptions.signature);\n  }\n  return /* @__PURE__ */ React.createElement(\"div\", null, /* @__PURE__ */ React.createElement(\n    IconButton,\n    {\n      classes: { root: classes.actionButton },\n      onClick: handleSignature\n    },\n    /* @__PURE__ */ React.createElement(GestureIcon, { fontSize: \"small\", color: signature ? \"primary\" : \"disabled\" })\n  ));\n}\nSignatureToggle.propTypes = {\n  signature: PropTypes.string,\n  setSignature: PropTypes.func.isRequired,\n  userOptions: PropTypes.object.isRequired\n};\nexport default SignatureToggle;\n","import React, { useState, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport useStyles from \"../useStyles\";\nimport {\n  Popper,\n  ClickAwayListener,\n  IconButton\n} from \"@material-ui/core\";\nimport MoreOutlinedIcon from \"@material-ui/icons/MoreOutlined\";\nfunction TagPicker({ insertTag, job }) {\n  const [isOpen, setIsOpen] = useState(false);\n  const anchor = useRef(null);\n  const classes = useStyles();\n  function handleClick(tag) {\n    insertTag(tag);\n    setIsOpen(false);\n  }\n  return /* @__PURE__ */ React.createElement(ClickAwayListener, { onClickAway: () => setIsOpen(false) }, /* @__PURE__ */ React.createElement(\"div\", null, /* @__PURE__ */ React.createElement(\n    IconButton,\n    {\n      classes: { root: classes.actionButton },\n      ref: anchor,\n      onClick: () => setIsOpen(!isOpen)\n    },\n    /* @__PURE__ */ React.createElement(MoreOutlinedIcon, { fontSize: \"small\", color: \"primary\" })\n  ), /* @__PURE__ */ React.createElement(\n    Popper,\n    {\n      className: classes.popper,\n      anchorEl: anchor.current,\n      open: isOpen,\n      placement: \"top-start\"\n    },\n    /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\"div\", { className: classes.popperItem, onClick: () => handleClick('{{contact.firstName | default: \"there\"}}') }, /* @__PURE__ */ React.createElement(\"span\", null, \"First Name\")), /* @__PURE__ */ React.createElement(\"div\", { className: classes.popperItem, onClick: () => handleClick('{{contact.lastName | default: \"there\"}}') }, /* @__PURE__ */ React.createElement(\"span\", null, \"Last Name\")), /* @__PURE__ */ React.createElement(\"div\", { className: classes.popperItem, onClick: () => handleClick(job.title) }, /* @__PURE__ */ React.createElement(\"span\", null, \"Job Name\")), /* @__PURE__ */ React.createElement(\"div\", { className: classes.popperItem, onClick: () => handleClick(job.address_state || job.location) }, /* @__PURE__ */ React.createElement(\"span\", null, \"Job Location\")))\n  )));\n}\nTagPicker.propTypes = {\n  insertTag: PropTypes.func.isRequired,\n  job: PropTypes.object.isRequired\n};\nexport default TagPicker;\n","import React, { useState, useRef, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport useStyles from \"../useStyles\";\nimport inputStyles from \"../../CandidateFilter/useStyles\";\nimport {\n  Popper,\n  ClickAwayListener,\n  IconButton,\n  TextField,\n  InputAdornment\n} from \"@material-ui/core\";\nimport BookmarksOutlinedIcon from \"@material-ui/icons/BookmarksOutlined\";\nimport SearchOutlinedIcon from \"@material-ui/icons/SearchOutlined\";\nfunction TemplatePicker({ setBody, userOptions }) {\n  const [isOpen, setIsOpen] = useState(false);\n  const [searchTerm, setSearchTerm] = useState(\"\");\n  const anchor = useRef(null);\n  const classes = useStyles();\n  function handleClick(template) {\n    setBody(template.body);\n    setIsOpen(false);\n  }\n  return /* @__PURE__ */ React.createElement(ClickAwayListener, { onClickAway: () => setIsOpen(false) }, /* @__PURE__ */ React.createElement(\"div\", null, /* @__PURE__ */ React.createElement(\n    IconButton,\n    {\n      classes: { root: classes.actionButton },\n      ref: anchor,\n      onClick: () => setIsOpen(!isOpen)\n    },\n    /* @__PURE__ */ React.createElement(BookmarksOutlinedIcon, { fontSize: \"small\", color: \"primary\" })\n  ), /* @__PURE__ */ React.createElement(\n    Popper,\n    {\n      className: `${classes.popper} ${classes.popperTemplate}`,\n      anchorEl: anchor.current,\n      open: isOpen,\n      placement: \"top-start\",\n      popperOptions: { positionFixed: true }\n    },\n    /* @__PURE__ */ React.createElement(\n      TextField,\n      {\n        className: classes.textField,\n        type: \"string\",\n        placeholder: \"Search templates\",\n        value: searchTerm,\n        onChange: (e) => setSearchTerm(e.target.value.toLowerCase()),\n        variant: \"outlined\",\n        InputProps: {\n          startAdornment: /* @__PURE__ */ React.createElement(InputAdornment, { position: \"start\" }, /* @__PURE__ */ React.createElement(SearchOutlinedIcon, null))\n        }\n      }\n    ),\n    userOptions && userOptions.templates ? userOptions.templates.filter((template) => template.title.toLowerCase().includes(searchTerm)).map(\n      (template) => /* @__PURE__ */ React.createElement(\"div\", { key: template.id, className: classes.popperItemTemplate, onClick: () => handleClick(template) }, /* @__PURE__ */ React.createElement(\"h4\", null, template.title), /* @__PURE__ */ React.createElement(\"span\", null, template.body))\n    ) : /* @__PURE__ */ React.createElement(\"div\", { className: `${classes.popperItemTemplate} ${classes.noHover}` }, /* @__PURE__ */ React.createElement(\"h4\", null, \"No templates\"))\n  )));\n}\nTemplatePicker.propTypes = {\n  setBody: PropTypes.func.isRequired,\n  userOptions: PropTypes.object.isRequired\n};\nexport default TemplatePicker;\n","import ChatBox from \"./ChatBox\";\nexport default ChatBox;\n","import { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n  root: {\n    flexBasis: \"15%\",\n    padding: \"20px 50px\",\n    borderTop: \"1px solid #F3F3F3\",\n    fontSize: 15,\n    lineHeight: \"20px\",\n    \"& button:focus\": {\n      outline: 0\n    }\n  },\n  textArea: {\n    resize: \"none\",\n    border: 0,\n    borderRadius: 0,\n    width: \"100%\",\n    \"&:focus-visible\": {\n      outline: 0\n    },\n    \"&::placeholder\": {\n      color: \"#B4B4B4\"\n    }\n  },\n  signature: {\n    whiteSpace: \"pre-line\"\n  },\n  actions: {\n    marginTop: 10,\n    display: \"flex\",\n    flexDirection: \"row\",\n    alignItems: \"flex-end\"\n  },\n  characterCount: {\n    marginLeft: \"auto\",\n    color: \"#B4B4B4\",\n    fontSize: 14,\n    marginRight: 20\n  },\n  popper: {\n    boxShadow: \"0px 2px 14px rgba(48, 90, 111, 0.16)\",\n    padding: \"8px 0\",\n    background: \"#FFF\",\n    borderRadius: 6,\n    zIndex: 1e5,\n    overflow: \"scroll\",\n    \"& > div:last-child\": {\n      borderBottom: 0\n    }\n  },\n  popperScheduler: {\n    padding: 26,\n    overflow: \"visible\",\n    \"& h4\": {\n      marginTop: 0,\n      marginBottom: 16,\n      color: theme.palette.primary.main,\n      fontWeight: \"600\",\n      fontSize: 20\n    }\n  },\n  popperTemplate: {\n    padding: 0,\n    minWidth: 340,\n    maxWidth: 340,\n    minHeight: 500,\n    maxHeight: 500\n  },\n  popperItem: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    padding: \"6px 24px\",\n    \"& svg\": {\n      marginRight: 12\n    },\n    \"& span\": {\n      fontSize: 15,\n      userSelect: \"none\"\n    },\n    \"&:hover\": {\n      background: \"#F3F6F7\",\n      cursor: \"pointer\"\n    }\n  },\n  popperItemTemplate: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    padding: \"25px 30px\",\n    borderBottom: \"1px solid #F3F3F3\",\n    \"& h4\": {\n      marginTop: 0,\n      fontSize: 16,\n      color: theme.palette.primary.main,\n      fontWeight: \"600\",\n      marginBottom: 6\n    },\n    \"& span\": {\n      fontSize: 12,\n      color: \"#393939\",\n      lineHeight: \"16px\"\n    },\n    \"&:hover\": {\n      background: \"#F3F6F7\",\n      cursor: \"pointer\"\n    }\n  },\n  noHover: {\n    \"&:hover\": {\n      background: \"none\",\n      cursor: \"default\"\n    }\n  },\n  textField: {\n    width: \"100%\",\n    padding: 20,\n    paddingBottom: 6,\n    \"& .MuiInputBase-root\": {\n      background: \"#FAFAFA\",\n      \"&:hover fieldset\": {\n        border: \"1px solid #D3DCE0\"\n      }\n    },\n    \"& svg\": {\n      fill: \"#939393\"\n    },\n    \"& input\": {\n      padding: 14,\n      paddingLeft: 2\n    },\n    \"& fieldset, .Mui-focused fieldset\": {\n      border: \"1px solid #EAEEF0\"\n    }\n  },\n  actionButton: {\n    \"&:focus\": {\n      outline: 0\n    }\n  },\n  actionButtons: {\n    display: \"flex\",\n    flexDirection: \"row\"\n  },\n  send: {\n    minWidth: 120,\n    display: \"flex\"\n  },\n  spinner: {\n    color: \"#FFF\"\n  },\n  sendButton: {\n    minHeight: 40,\n    maxHeight: 40,\n    flexGrow: 1,\n    borderRadius: 6,\n    color: \"#FFF\",\n    fontWeight: \"600\",\n    fontSize: 16,\n    borderTopRightRadius: 0,\n    borderBottomRightRadius: 0,\n    marginRight: 1,\n    background: theme.palette.success.main,\n    \"&:hover\": {\n      background: theme.palette.success.dark\n    }\n  },\n  schedulerButton: {\n    minHeight: 40,\n    borderRadius: 6,\n    color: \"#FFF\",\n    borderTopLeftRadius: 0,\n    borderBottomLeftRadius: 0,\n    background: theme.palette.success.main,\n    maxHeight: 37,\n    \"&:hover\": {\n      background: theme.palette.success.dark\n    }\n  },\n  schedulerButtonActive: {\n    background: theme.palette.success.dark\n  },\n  schedulerOptions: {\n    display: \"flex\",\n    alignItems: \"center\",\n    \"& fieldset\": {\n      border: \"1px solid #DDDDDD !important\"\n    },\n    \"& > div\": {\n      marginRight: 20,\n      \"&:last-child\": {\n        marginRight: 0\n      }\n    }\n  },\n  select: {\n    padding: \"10px 18px\",\n    borderRadius: 6,\n    border: \"1px solid #DDD\",\n    width: \"100%\",\n    minHeight: 46,\n    maxHeight: 46,\n    \"&:focus\": {\n      background: \"#FFF\"\n    }\n  },\n  calendarContainer: {\n    position: \"relative\",\n    \"& input\": {\n      padding: \"10px 18px\",\n      borderRadius: 6,\n      border: \"1px solid #DDD\",\n      width: \"100%\",\n      minHeight: 46,\n      maxHeight: 46,\n      \"&:focus\": {\n        background: \"#FFF\",\n        outline: 0,\n        borderColor: theme.palette.primary.main\n      }\n    },\n    \"& .DayPicker\": {\n      background: \"#FFF\",\n      borderRadius: 6,\n      boxShadow: \"0px 0px 10px 1px rgba(0,0,0,0.1)\",\n      position: \"absolute\",\n      bottom: 46,\n      zIndex: 100\n    },\n    \"& .DayPicker-wrapper\": {\n      padding: \"20px 10px\",\n      borderRadius: 6\n    },\n    \"& .DayPicker-Caption\": {\n      height: \"2rem\",\n      \"& div\": {\n        fontWeight: \"600\",\n        fontSize: 18,\n        color: theme.palette.primary.main\n      }\n    },\n    \"& .DayPicker-NavBar\": {\n      top: \"1.3rem\",\n      \"& span\": {\n        height: \"0.9rem\",\n        width: \"0.9rem\"\n      }\n    },\n    \"& .DayPicker-Weekdays abbr\": {\n      textDecoration: \"none\"\n    },\n    \"& .DayPicker-Day\": {\n      border: 0,\n      padding: \"7px 12px\",\n      fontSize: 12\n    },\n    \"& .DayPicker-Day--today\": {\n      color: theme.palette.primary.main,\n      fontWeight: \"600\"\n    },\n    \"& .DayPicker-Day--selected:not(.DayPicker-Day--disabled):not(.DayPicker-Day--outside)\": {\n      backgroundColor: theme.palette.secondary.main,\n      borderRadius: \"100%\"\n    }\n  },\n  startingTimeInputWrapper: {\n    marginTop: 0,\n    display: \"flex\",\n    margin: \"auto\",\n    \"& .MuiButton-label\": {\n      margin: \"0 10px\"\n    }\n  },\n  startTimeInput: {\n    width: \"100% !important\",\n    border: \"1px solid #DDDDDD !important\",\n    padding: \"7.5px 15px\",\n    borderRadius: \"6px\",\n    borderTopRightRadius: 0,\n    borderBottomRightRadius: 0,\n    marginRight: 0,\n    height: 46,\n    maxWidth: \"5rem\",\n    \"&:focus-visible\": {\n      outline: 0\n    },\n    \"& .MuiInput-underline:before\": {\n      display: \"none\"\n    },\n    \"& input\": {\n      fontSize: \"0.85rem\"\n    },\n    \"& label\": {\n      display: \"none\"\n    },\n    \"& button\": {\n      paddingRight: \"0\",\n      paddingLeft: \"0\"\n    },\n    \"& .MuiButton-label\": {\n      margin: \"0 10px\"\n    }\n  },\n  isAMActive: {\n    backgroundColor: `${theme.palette.primary.main} !important`,\n    color: \"#FFF !important\"\n  },\n  isPMActive: {\n    backgroundColor: `${theme.palette.primary.main} !important`,\n    color: \"#FFF !important\"\n  },\n  timeBntGroupWrapper: {\n    height: 46,\n    \"& button\": {\n      padding: \"0\",\n      minWidth: \"2.5rem\",\n      borderColor: \"#DDDDDD\",\n      \"&:focus\": {\n        outline: 0\n      },\n      \"&:first-child\": {\n        borderBottomLeftRadius: 0,\n        borderTopLeftRadius: 0,\n        borderLeft: 0\n      }\n    }\n  }\n}));\n","import React, { useEffect, useRef } from \"react\";\nimport useStyles from \"./useStyles\";\nimport PropTypes from \"prop-types\";\nimport moment from \"moment\";\nimport ChatItem from \"./components/ChatItem\";\nimport SmsRoundedIcon from \"@material-ui/icons/SmsRounded\";\nfunction ChatWindow({ conversation, body, signature }) {\n  const root = useRef(null);\n  useEffect(() => {\n    root.current.scrollTop = root.current.scrollHeight + 20;\n  }, [conversation, body, signature]);\n  const classes = useStyles();\n  return /* @__PURE__ */ React.createElement(\"div\", { ref: root, className: classes.root }, conversation.length > 1 ? /* @__PURE__ */ React.createElement(\"div\", { className: classes.noMessages }, /* @__PURE__ */ React.createElement(SmsRoundedIcon, null), /* @__PURE__ */ React.createElement(\"span\", null, \"Send a group message\")) : conversation[0].messages.length <= 0 ? /* @__PURE__ */ React.createElement(\"div\", { className: classes.noMessages }, /* @__PURE__ */ React.createElement(SmsRoundedIcon, null), /* @__PURE__ */ React.createElement(\"span\", null, \"This conversation is empty\")) : /* @__PURE__ */ React.createElement(\"div\", { className: classes.chatContainer }, conversation[0].messages.map(\n    (message, i) => message && conversation[0].messages[i + 1] && moment.duration(moment(message.sent_time).diff(moment(conversation[0].messages[i + 1].sent_time))).asHours() > 1 ? /* @__PURE__ */ React.createElement(ChatItem, { key: message.id, message }) : /* @__PURE__ */ React.createElement(\"div\", { key: message.id, style: { display: \"flex\", flexDirection: \"column\" } }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.timestamp }, message.sent_time && moment(message.sent_time).format(\"h:mma\")), /* @__PURE__ */ React.createElement(ChatItem, { message }))\n  )));\n}\nChatWindow.propTypes = {\n  conversation: PropTypes.array.isRequired,\n  body: PropTypes.string,\n  signature: PropTypes.string\n};\nexport default ChatWindow;\n","import React, { useState, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport useStyles from \"../useStyles\";\nimport {\n  Popper\n} from \"@material-ui/core\";\nimport moment from \"moment\";\nimport ScheduleIcon from \"@material-ui/icons/Schedule\";\nimport ErrorOutlineIcon from \"@material-ui/icons/ErrorOutline\";\nfunction ChatItem({ message }) {\n  const [isOpen, setIsOpen] = useState(false);\n  const anchor = useRef(null);\n  const classes = useStyles();\n  return /* @__PURE__ */ React.createElement(\"div\", { className: `${classes.chatItemContainer} ${message.status === \"received\" ? classes.alignRight : \"\"}` }, /* @__PURE__ */ React.createElement(\"div\", { className: `${classes.chatItem} ${message.status === \"received\" ? classes.fromCandidate : \"\"}` }, message.body), /* @__PURE__ */ React.createElement(\"div\", { ref: anchor, className: classes.status, onMouseEnter: () => setIsOpen(true), onMouseLeave: () => setIsOpen(false) }, message.status === \"scheduled\" && /* @__PURE__ */ React.createElement(ScheduleIcon, { fontSize: \"small\", color: \"disabled\" }), message.status === \"bounced\" && /* @__PURE__ */ React.createElement(ErrorOutlineIcon, { fontSize: \"small\", color: \"error\" })), /* @__PURE__ */ React.createElement(\n    Popper,\n    {\n      className: classes.popper,\n      anchorEl: anchor.current,\n      open: isOpen,\n      placement: \"top-center\"\n    },\n    message.status === \"scheduled\" ? /* @__PURE__ */ React.createElement(\"div\", null, `Scheduled for ${moment(message.scheduled_time).format(\"lll\")}`) : /* @__PURE__ */ React.createElement(\"div\", null, `Message bounced`)\n  ));\n}\nChatItem.propTypes = {\n  message: PropTypes.object.isRequired\n};\nexport default ChatItem;\n","import ChatWindow from \"./ChatWindow\";\nexport default ChatWindow;\n","import { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n  root: {\n    flexBasis: \"75%\",\n    padding: \"0 40px\",\n    overflowY: \"scroll\"\n  },\n  chatContainer: {\n    display: \"flex\",\n    flexDirection: \"column-reverse\",\n    \"& > div:first-child\": {\n      marginBottom: 20\n    }\n  },\n  chatItemContainer: {\n    marginLeft: \"auto\",\n    marginRight: 0,\n    display: \"flex\",\n    alignItems: \"center\",\n    flexDirection: \"row-reverse\"\n  },\n  alignRight: {\n    marginLeft: 0,\n    marginRight: \"auto\",\n    flexDirection: \"row\"\n  },\n  chatItem: {\n    borderRadius: 6,\n    maxWidth: 460,\n    color: \"#FFF\",\n    fontSize: 14,\n    background: theme.palette.primary.main,\n    padding: \"15px 20px\",\n    lineHeight: \"18px\",\n    margin: \"3px 0\",\n    display: \"table\"\n  },\n  fromCandidate: {\n    background: \"#F3F6F7\",\n    color: theme.palette.primary.main\n  },\n  timestamp: {\n    fontSize: 14,\n    color: \"#939393\",\n    marginTop: 20,\n    marginBottom: 10,\n    textAlign: \"center\"\n  },\n  status: {\n    padding: \"0 15px\"\n  },\n  popper: {\n    boxShadow: \"0px 2px 14px rgba(48, 90, 111, 0.16)\",\n    padding: \"10px 20px\",\n    background: \"#FFF\",\n    borderRadius: 6,\n    zIndex: 1e5,\n    fontSize: 12\n  },\n  noMessages: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    height: \"100%\",\n    flexDirection: \"column\",\n    userSelect: \"none\",\n    \"& svg\": {\n      height: 160,\n      width: 160,\n      fill: \"#F7F7F7\"\n    },\n    \"& > span\": {\n      color: \"#E8E8E8\",\n      fontSize: 24,\n      fontWeight: \"600\"\n    }\n  }\n}));\n","import Messenger from \"./Messenger\";\nexport default Messenger;\n","import { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n  root: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    height: \"100%\",\n    width: \"100%\"\n  },\n  modalLeft: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    flexBasis: \"36%\",\n    borderRight: \"1px solid #F3F3F3\"\n  },\n  modalRight: {\n    display: \"flex\",\n    flexDirection: \"column\"\n  },\n  candidateList: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    flexGrow: 1,\n    overflowY: \"scroll\"\n  },\n  loading: {\n    margin: \"auto\"\n  }\n}));\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport React, { useState, useEffect } from \"react\";\nimport {\n  TextField,\n  InputAdornment,\n  IconButton,\n  Select,\n  MenuItem,\n  Chip,\n  Button,\n  Tooltip\n} from \"@material-ui/core\";\nimport Autocomplete from \"@material-ui/lab/Autocomplete\";\nimport useStyles from \"./useStyles\";\nimport { withScoutTheme } from \"../../../ThemeContext/ThemeContext\";\nimport PropTypes from \"prop-types\";\nimport HighlightOffIcon from \"@material-ui/icons/HighlightOff\";\nimport SearchOutlinedIcon from \"@material-ui/icons/SearchOutlined\";\nimport ChevronRightRoundedIcon from \"@material-ui/icons/ChevronRightRounded\";\nfunction SelectRecipients({ statuses, applications, setSelectedApplications, setIsSelectModalOpen }) {\n  const [selectedUsers, setSelectedUsers] = useState([]);\n  const [selectedStatuses, setSelectedStatuses] = useState([]);\n  const [unselectedStatuses, setUnselectedStatuses] = useState([]);\n  const classes = useStyles();\n  useEffect(() => {\n    setUnselectedStatuses(\n      statuses.filter((status) => applications.map((app) => app.status).includes(status.id)).filter((status) => !selectedStatuses.map((selected) => selected.id).includes(status.id))\n    );\n  }, [selectedStatuses]);\n  useEffect(() => {\n    setSelectedStatuses(selectedStatuses.filter((status) => selectedUsers.map((app) => app.status).includes(status.id)));\n  }, [selectedUsers]);\n  function handleStatusRemove(id) {\n    setSelectedStatuses(selectedStatuses.filter((selected) => selected.id !== id));\n    setSelectedUsers(selectedUsers.filter((app) => app.status !== id));\n  }\n  function handleStatusAdd(e) {\n    const newApplicants = applications.filter((app) => app.status === e.target.value.id).filter((app) => !selectedUsers.map((selected) => selected.id).includes(app.id));\n    setSelectedStatuses([...selectedStatuses, e.target.value]);\n    setSelectedUsers([...selectedUsers, ...newApplicants]);\n  }\n  function handleClick() {\n    setSelectedApplications(selectedUsers);\n    setIsSelectModalOpen(false);\n  }\n  return /* @__PURE__ */ React.createElement(\"div\", { className: classes.root }, /* @__PURE__ */ React.createElement(\"h4\", null, \"Select Recipients\"), /* @__PURE__ */ React.createElement(\"div\", { className: classes.searchContainer }, /* @__PURE__ */ React.createElement(\n    Autocomplete,\n    {\n      classes: {\n        root: classes.autocompleteField,\n        inputRoot: classes.autoCompleteInput,\n        endAdornment: classes.endAdornment\n      },\n      multiple: true,\n      disableClearable: true,\n      options: applications,\n      getOptionLabel: (option) => option.name,\n      value: selectedUsers,\n      filterSelectedOptions: true,\n      onChange: (e, newValue) => {\n        setSelectedUsers(newValue);\n      },\n      variant: \"outlined\",\n      renderTags: () => null,\n      renderInput: (params) => /* @__PURE__ */ React.createElement(\n        TextField,\n        __spreadProps(__spreadValues({}, params), {\n          classes: { root: classes.search },\n          placeholder: \"Search Users\",\n          InputLabelProps: {\n            classes: { root: classes.search }\n          },\n          InputProps: __spreadProps(__spreadValues({}, params.InputProps), {\n            disableUnderline: true,\n            startAdornment: /* @__PURE__ */ React.createElement(InputAdornment, { position: \"start\" }, /* @__PURE__ */ React.createElement(SearchOutlinedIcon, null))\n          })\n        })\n      )\n    }\n  ), /* @__PURE__ */ React.createElement(\n    Select,\n    {\n      className: classes.inputBase,\n      classes: { root: classes.select },\n      displayEmpty: true,\n      renderValue: () => \"Filter candidates\",\n      variant: \"outlined\",\n      value: \"\",\n      onChange: handleStatusAdd\n    },\n    unselectedStatuses.map(\n      (status) => /* @__PURE__ */ React.createElement(MenuItem, { key: status.id, value: status }, status.name)\n    )\n  )), selectedStatuses.length > 0 && /* @__PURE__ */ React.createElement(\"div\", { className: classes.chipContainer }, selectedStatuses.map(\n    (status) => /* @__PURE__ */ React.createElement(\n      Chip,\n      {\n        key: status.id,\n        className: classes.chipItem,\n        label: status.name,\n        value: status,\n        onDelete: () => handleStatusRemove(status.id),\n        variant: \"outlined\"\n      }\n    )\n  )), /* @__PURE__ */ React.createElement(\"div\", { className: classes.table }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.row }, /* @__PURE__ */ React.createElement(\"div\", { className: `${classes.tableHeader} ${classes.tableLg}` }, \"Name\"), /* @__PURE__ */ React.createElement(\"div\", { className: `${classes.tableHeader} ${classes.tableMd}` }, \"Phone\"), /* @__PURE__ */ React.createElement(\"div\", { className: `${classes.tableHeader} ${classes.tableLg}` }, \"Status\"), /* @__PURE__ */ React.createElement(\"div\", null)), selectedUsers.length <= 0 ? /* @__PURE__ */ React.createElement(\"div\", { className: classes.row }, /* @__PURE__ */ React.createElement(\"span\", { className: classes.noApplicants }, \"No applicants selected\")) : selectedUsers.map(\n    (app) => /* @__PURE__ */ React.createElement(\n      \"div\",\n      {\n        key: app.id,\n        className: classes.row\n      },\n      /* @__PURE__ */ React.createElement(\"div\", { className: classes.tableLg }, app.name),\n      /* @__PURE__ */ React.createElement(\"div\", { className: classes.tableMd }, app.phone),\n      /* @__PURE__ */ React.createElement(\"div\", { className: classes.tableLg }, statuses.find((status) => status.id === app.status) ? statuses.find((status) => status.id === app.status).name : \"None\"),\n      /* @__PURE__ */ React.createElement(IconButton, { onClick: () => setSelectedUsers(selectedUsers.filter((selected) => selected.id !== app.id)) }, /* @__PURE__ */ React.createElement(HighlightOffIcon, { color: \"error\" }))\n    )\n  )), /* @__PURE__ */ React.createElement(\"div\", { className: classes.buttonContainer }, selectedUsers.length <= 1 ? /* @__PURE__ */ React.createElement(Tooltip, { title: \"Please select 2 or more applicants\" }, /* @__PURE__ */ React.createElement(\"span\", null, /* @__PURE__ */ React.createElement(\n    Button,\n    {\n      disabled: true,\n      disableElevation: true,\n      variant: \"contained\",\n      color: \"secondary\",\n      onClick: handleClick,\n      endIcon: /* @__PURE__ */ React.createElement(ChevronRightRoundedIcon, null)\n    },\n    \"Next\"\n  ))) : /* @__PURE__ */ React.createElement(\n    Button,\n    {\n      disableElevation: true,\n      variant: \"contained\",\n      color: \"secondary\",\n      onClick: handleClick,\n      endIcon: /* @__PURE__ */ React.createElement(ChevronRightRoundedIcon, null)\n    },\n    \"Next\"\n  )));\n}\nSelectRecipients.propTypes = {\n  statuses: PropTypes.array.isRequired,\n  applications: PropTypes.array.isRequired,\n  setSelectedApplications: PropTypes.func.isRequired,\n  setIsSelectModalOpen: PropTypes.func.isRequired\n};\nexport default withScoutTheme(SelectRecipients);\n","import SelectRecipients from \"./SelectRecipients\";\nexport default SelectRecipients;\n","import { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n  root: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    height: \"100%\",\n    width: \"100%\",\n    padding: \"50px 60px\",\n    \"& h4\": {\n      marginTop: 0,\n      color: \"#004E70\",\n      fontSize: 24,\n      fontWeight: \"600\",\n      marginBottom: 20\n    }\n  },\n  autocompleteField: {\n    flexBasis: \"60%\",\n    marginRight: 20,\n    \"& .MuiInput-underline-36:after\": {\n      border: 0\n    }\n  },\n  autoCompleteInput: {\n    paddingLeft: 15\n  },\n  endAdornment: {\n    marginRight: 10\n  },\n  searchContainer: {\n    display: \"flex\",\n    flexDirection: \"row\"\n  },\n  search: {\n    flexGrow: 1,\n    marginRight: 12,\n    background: \"#FAFAFA\",\n    border: \"1px solid #EAEEF0\",\n    borderRadius: 6,\n    justifyContent: \"center\",\n    \"& svg\": {\n      fill: \"#939393\"\n    },\n    \"& fieldset\": {\n      border: 0\n    },\n    \"& input\": {\n      padding: \"14px 8px !important\"\n    }\n  },\n  table: {\n    marginTop: 20,\n    width: \"100%\",\n    height: \"100%\",\n    overflow: \"scroll\",\n    display: \"flex\",\n    flexDirection: \"column\"\n  },\n  row: {\n    margin: 0,\n    display: \"flex\",\n    \"& div\": {\n      display: \"flex\",\n      alignItems: \"center\"\n    },\n    \"& button\": {\n      display: \"block\",\n      marginLeft: \"auto\",\n      opacity: 0,\n      transition: \"opacity 0.24s ease-in-out\",\n      padding: 7,\n      \"&:focus\": {\n        outline: 0\n      }\n    },\n    \"&:hover button\": {\n      opacity: 1\n    }\n  },\n  noApplicants: {\n    color: \"#999\",\n    display: \"block\",\n    marginTop: 7\n  },\n  tableHeader: {\n    fontSize: 16,\n    fontWeight: \"600\",\n    paddingBottom: 10,\n    paddingTop: 15,\n    color: theme.palette.primary.main\n  },\n  tableLg: {\n    width: \"35%\",\n    minWidth: \"35%\",\n    maxWidth: \"35%\",\n    userSelect: \"none\"\n  },\n  tableMd: {\n    width: \"20%\",\n    minWidth: \"20%\",\n    maxWidth: \"20%\",\n    userSelect: \"none\"\n  },\n  chipContainer: {\n    paddingTop: 10\n  },\n  chipItem: {\n    margin: \"4px 8px 4px 0\",\n    color: \"#666\",\n    \"& span\": {\n      color: \"#666\",\n      padding: \"0 16px\",\n      fontSize: 12\n    }\n  },\n  chipNoItems: {\n    padding: \"10px 0\",\n    fontSize: 15,\n    color: \"#999\",\n    textAlign: \"center\"\n  },\n  inputBase: {\n    flexBasis: \"25%\",\n    \"& fieldset\": {\n      border: \"1px solid #DDDDDD !important\"\n    }\n  },\n  select: {\n    height: \"100%\",\n    padding: 0,\n    display: \"flex\",\n    alignItems: \"center\",\n    color: \"#333333\",\n    paddingLeft: 20,\n    \"&:focus\": {\n      background: \"#FFF\"\n    }\n  },\n  buttonContainer: {\n    paddingTop: 20,\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    \"& button\": {\n      padding: \"12px 26px\",\n      color: \"#FFF\"\n    }\n  }\n}));\n","import TextUsModal from \"./TextUsModal\";\nexport default TextUsModal;\n","import { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n  modalRoot: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    overflow: \"hidden\",\n    position: \"relative\",\n    maxHeight: 630,\n    minHeight: 630,\n    height: 630,\n    width: 720,\n    transition: \"width 0.3s cubic-bezier(.65,.37,.25,1)\",\n    maxWidth: \"none\"\n  },\n  modalLarge: {\n    width: 960\n  }\n}));\n","var __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nimport React, { Component } from \"react\";\nfunction paginatedDataSource(DataSourcedComponent, options) {\n  class PaginatedDataSource extends Component {\n    constructor(props) {\n      super(props);\n      this.state = {\n        loading: true,\n        filters: options.default_filter || {},\n        sort_key: options.sort_key || \"\",\n        sort_state: options.sort_state || {},\n        pagination: null,\n        page: this.parseBrowserHash().page\n      };\n      this.fetchCSV = this.fetchCSV.bind(this);\n      this.fetchData = this.fetchData.bind(this);\n      this.handlePagination = this.handlePagination.bind(this);\n      this.buildSortableHeader = this.buildSortableHeader.bind(this);\n      this.handleSort = this.handleSort.bind(this);\n      this.csvSubmit = this.csvSubmit.bind(this);\n      this.filterSubmit = this.filterSubmit.bind(this);\n      this.getFilters = this.getFilters.bind(this);\n      this.filterCallback = this.filterCallback.bind(this);\n    }\n    parseBrowserHash() {\n      return window.location.hash.split(\"&\").map(function(e) {\n        return e.replace(\"#\", \"\").split(\"=\");\n      }).reduce(function(p, c) {\n        p[c[0]] = c[1];\n        return p;\n      }, {});\n    }\n    componentDidMount() {\n      this.fetchData();\n    }\n    handleSort(event) {\n      const sort_key = $(event.currentTarget).data(\"field\");\n      const { sort_state } = this.state;\n      sort_state[sort_key] = sort_state[sort_key] === \"desc\" ? \"asc\" : \"desc\";\n      this.setState({ sort_key, sort_state }, () => {\n        this.fetchData();\n      });\n    }\n    filterCallback(value_object) {\n      const { filters } = this.state;\n      Object.assign(filters, value_object);\n      this.setState({ filters });\n    }\n    handlePagination(id) {\n      this.setState({ page: id }, () => {\n        this.fetchData();\n      });\n    }\n    csvSubmit() {\n      return __async(this, null, function* () {\n        this.setState({ loading: true });\n        yield this.fetchCSV();\n        this.setState({ loading: false });\n      });\n    }\n    filterSubmit() {\n      this.handlePagination(1);\n    }\n    getFilters() {\n      const { filters } = this.state;\n      var filter_map = {};\n      Object.keys(filters).forEach(function(key) {\n        filters[key].path_func(filter_map, filters[key].value);\n      });\n      return filter_map;\n    }\n    buildSortableHeader(title, key) {\n      const { sort_state } = this.state;\n      var type = sort_state[key];\n      return /* @__PURE__ */ React.createElement(\"div\", null, title, \" \", /* @__PURE__ */ React.createElement(\"span\", { className: type ? `sort-#${type}` : \"\" }));\n    }\n    fetchCSV() {\n      return __async(this, null, function* () {\n        var that = this;\n        const { page, sort_key, sort_state, filters } = this.state;\n        const { archived, parseResponse } = this.props;\n        let param_filters;\n        if (Object.keys(filters).length == 0) {\n          param_filters = { empty: \"\" };\n        } else {\n          param_filters = filters;\n        }\n        let params = jQuery.param({\n          page,\n          sort: sort_key,\n          sort_order: sort_state[sort_key],\n          filter: param_filters,\n          archived\n        });\n        window.open(`/admin/api/v1/${options.data_name}.csv?${params}`, \"_blank\");\n      });\n    }\n    fetchData() {\n      var that = this;\n      const { page, sort_key, sort_state, filters } = this.state;\n      const { archived, parseResponse } = this.props;\n      this.setState({ loading: true });\n      let param_filters;\n      if (Object.keys(filters).length == 0) {\n        param_filters = { empty: \"\" };\n      } else {\n        param_filters = filters;\n      }\n      let params = jQuery.param({\n        page,\n        sort: sort_key,\n        sort_order: sort_state[sort_key],\n        filter: param_filters,\n        archived\n      });\n      fetch(`/admin/api/v1/${options.data_name}.json?${params}`, {\n        credentials: \"same-origin\"\n      }).then((response) => {\n        return response.json();\n      }).then((data) => {\n        that.setState({ loading: false });\n        parseResponse(data);\n      }).catch((error) => {\n        that.setState({ loading: false });\n        parseResponse({});\n      });\n    }\n    render() {\n      const { data, pagination, sort_key, sort_state, loading, filters } = this.state;\n      const { response_data } = this.props;\n      return /* @__PURE__ */ React.createElement(\n        DataSourcedComponent,\n        __spreadValues({\n          data: response_data[options.data_name] || [],\n          pagination: response_data.pagination || {},\n          paginationCallback: this.handlePagination,\n          loading,\n          csvSubmit: this.csvSubmit,\n          dataCallback: this.fetchData,\n          sortCallback: this.handleSort,\n          filters,\n          filterCallback: this.filterCallback,\n          filterSubmit: this.filterSubmit,\n          buildSortableHeader: this.buildSortableHeader,\n          sort_field: sort_key,\n          sort_order: sort_state[sort_key]\n        }, this.props)\n      );\n    }\n  }\n  return PaginatedDataSource;\n}\nexport default paginatedDataSource;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { FormControlLabel, Checkbox as MaterialCheckbox } from \"@mui/material\";\nexport default function Checkbox({ checked, onCheck, label, disabled }) {\n  return label ? /* @__PURE__ */ React.createElement(\n    FormControlLabel,\n    {\n      checked,\n      control: /* @__PURE__ */ React.createElement(\n        MaterialCheckbox,\n        {\n          onChange: (evt, checked2) => onCheck(checked2)\n        }\n      ),\n      label,\n      disabled\n    }\n  ) : /* @__PURE__ */ React.createElement(\n    MaterialCheckbox,\n    {\n      checked,\n      onChange: (evt, checked2) => onCheck(checked2),\n      disabled,\n      sx: {\n        color: \"#5BC4BF\",\n        \"&.Mui-checked\": {\n          color: \"#5BC4BF\"\n        }\n      }\n    }\n  );\n}\nCheckbox.propTypes = {\n  checked: PropTypes.bool,\n  onCheck: PropTypes.func.isRequired,\n  label: PropTypes.node,\n  disabled: PropTypes.bool\n};\n","import Checkbox from \"./Checkbox\";\nexport default Checkbox;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { FormControl, InputLabel, Select as MaterialSelect, MenuItem, useTheme, Input } from \"@mui/material\";\nimport { useFormValidator } from \"react-form-context-validation\";\nexport default function Select(props) {\n  const theme = useTheme();\n  const { value, onChange, options, label, style, multiple, placeholder, getOptionLabel, getOptionValue, disabled, valueField, labelField, required = false } = props;\n  const getLabel = getOptionLabel || ((option) => labelField ? `${option[labelField]}` : `${option}`);\n  const getValue = getOptionValue || ((option) => valueField ? `${option[valueField]}` : `${option}`);\n  const error = useFormValidator(required && !value);\n  return /* @__PURE__ */ React.createElement(\n    FormControl,\n    {\n      style,\n      disabled,\n      required,\n      error,\n      fullWidth: true\n    },\n    /* @__PURE__ */ React.createElement(InputLabel, null, label),\n    /* @__PURE__ */ React.createElement(\n      MaterialSelect,\n      {\n        value: value || \"\",\n        onChange: (evt) => onChange(evt.target.value),\n        input: /* @__PURE__ */ React.createElement(\n          Input,\n          {\n            label,\n            style: {\n              color: value ? theme.palette.text.primary : theme.palette.text.disabled,\n              fontFamily: \"Source Sans Pro\"\n            }\n          }\n        ),\n        MenuProps: {\n          sx: {\n            \"& li\": {\n              fontFamily: \"Source Sans Pro\"\n            }\n          }\n        },\n        multiple,\n        displayEmpty: !!placeholder,\n        labelId: \"TEST\"\n      },\n      placeholder && !value && /* @__PURE__ */ React.createElement(MenuItem, { value: \"\", disabled: true }, placeholder),\n      options.map((opt, i) => /* @__PURE__ */ React.createElement(\n        MenuItem,\n        {\n          key: i,\n          value: getValue(opt)\n        },\n        getLabel(opt)\n      ))\n    )\n  );\n}\nSelect.propTypes = {\n  value: PropTypes.any,\n  onChange: PropTypes.func,\n  options: PropTypes.array,\n  label: PropTypes.string,\n  style: PropTypes.object,\n  multiple: PropTypes.bool,\n  placeholder: PropTypes.string,\n  getOptionLabel: PropTypes.func,\n  getOptionValue: PropTypes.func,\n  disabled: PropTypes.bool,\n  valueField: PropTypes.string,\n  labelField: PropTypes.string,\n  required: PropTypes.bool\n};\n","import Select from \"./Select\";\nexport default Select;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { FormControl, TextField, FormHelperText } from \"@mui/material\";\nimport { useFormValidator } from \"react-form-context-validation\";\nexport default function TextInput(props) {\n  const { placeholder, value, onChange, required, tabIndex, label, className, type = \"text\", onBlur, id, disabled, error = false, rows, variant } = props;\n  const inputError = useFormValidator(required && !value || error, id);\n  return /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className }, /* @__PURE__ */ React.createElement(\n    TextField,\n    {\n      label,\n      type,\n      placeholder,\n      value: value != null ? value : \"\",\n      onChange: (e) => onChange(e.target.value),\n      onBlur,\n      required,\n      tabIndex,\n      disabled,\n      error: !!inputError,\n      multiline: !!rows,\n      rows,\n      variant,\n      inputProps: {\n        sx: {\n          fontFamily: \"Source Sans Pro\"\n        }\n      },\n      InputLabelProps: {\n        sx: {\n          fontFamily: \"Source Sans Pro\"\n        }\n      }\n    }\n  ), typeof error === \"string\" && /* @__PURE__ */ React.createElement(FormHelperText, { error: true }, error));\n}\nTextInput.propTypes = {\n  id: PropTypes.string,\n  value: PropTypes.oneOfType([\n    PropTypes.string,\n    PropTypes.number\n  ]),\n  onChange: PropTypes.func,\n  placeholder: PropTypes.string,\n  required: PropTypes.bool,\n  type: PropTypes.oneOf([\"password\", \"text\", \"number\"]),\n  tabIndex: PropTypes.number,\n  disabled: PropTypes.bool,\n  label: PropTypes.string,\n  className: PropTypes.string,\n  onBlur: PropTypes.func,\n  error: PropTypes.oneOfType([\n    PropTypes.string,\n    PropTypes.bool\n  ]),\n  rows: PropTypes.number,\n  variant: PropTypes.oneOf([\"standard\", \"filled\", \"outlined\"])\n};\n","import TextInput from \"./TextInput\";\nexport default TextInput;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nimport React, { Component } from \"react\";\nfunction serviceInterface(ServiceComponent, options) {\n  class ServiceInterfaceClient extends Component {\n    constructor(props) {\n      super(props);\n      this.state = {\n        success: void 0,\n        data: {},\n        messages: {\n          errors: [],\n          notices: [],\n          alerts: []\n        }\n      };\n      this.parseResponse = this.parseResponse.bind(this);\n    }\n    parseResponse(response) {\n      const { messages, data, success } = response;\n      this.setState({ messages, data, success });\n    }\n    render() {\n      const { messages, data, success } = this.state;\n      return /* @__PURE__ */ React.createElement(\n        ServiceComponent,\n        __spreadValues({\n          messages,\n          response_data: data || {},\n          success,\n          parseResponse: this.parseResponse\n        }, this.props)\n      );\n    }\n  }\n  return ServiceInterfaceClient;\n}\nexport default serviceInterface;\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nimport queryString from \"query-string\";\nimport \"whatwg-fetch\";\nconst BASE_URL = \"/admin/api/\";\nclass Api {\n  constructor() {\n    __publicField(this, \"handleResponse\", (response) => {\n      if (response.ok) return response.json();\n      return response.json().then((error) => {\n        error.code = response.status;\n        throw error;\n      });\n    });\n    __publicField(this, \"get\", (path, params = {}, headers = {}) => fetch(`${BASE_URL}${path}?${queryString.stringify(params, { arrayFormat: \"bracket\" })}`, {\n      headers: this.getHeaders(headers)\n    }).then((r) => this.handleResponse(r)));\n    __publicField(this, \"post\", (path, params = {}, headers = {}) => fetch(`${BASE_URL}${path}`, {\n      headers: this.getHeaders(headers),\n      method: \"POST\",\n      body: JSON.stringify(params)\n    }).then((r) => this.handleResponse(r)));\n    __publicField(this, \"delete\", (path, params = {}, headers = {}) => fetch(`${BASE_URL}${path}`, {\n      headers: this.getHeaders(headers),\n      method: \"DELETE\",\n      body: JSON.stringify(params)\n    }).then((r) => this.handleResponse(r)));\n    __publicField(this, \"getDashboard\", () => this.get(\"v1/dashboard\"));\n    __publicField(this, \"getDashboardSettings\", () => this.get(\"v1/dashboard/settings\"));\n    __publicField(this, \"saveDashboardSettings\", (settings) => this.post(\"v1/dashboard/settings\", { settings }));\n    __publicField(this, \"getActivities\", (beforeId) => this.get(\"v1/dashboard/activities_feed\", { before_id: beforeId }));\n  }\n  //public authToken = '';\n  getHeaders(headers) {\n    return Object.assign({}, {\n      \"Accept\": \"application/json\",\n      \"Content-Type\": \"application/json\"\n      //'Authorization': `Bearer: ${this.authToken}`,\n    }, headers);\n  }\n}\nexport default new Api();\n","var componentRequireContext = require.context(\"components\", true);\nvar ReactRailsUJS = require(\"react_ujs\");\nReactRailsUJS.useContext(componentRequireContext);\n","\"use strict\";\nexport const DELAYS_IN_SECONDS = [1, 0.2, 0.4];\n","\"use strict\";\nexport const classes = {\n  systemMessage: {\n    backgroundColor: \"#FFFFFF\",\n    color: \"#2D388D\",\n    fontWeight: \"400\",\n    width: \"fit-content\",\n    margin: \"10px 0\",\n    maxWidth: \"100%\",\n    borderRadius: \"20px\",\n    border: \"1.5px solid #2D388D\",\n    display: \"flex\",\n    alignItems: \"baseline\",\n    fontSize: \"18px !important\",\n    padding: \"6px 24px !important\",\n    \"&& ul li\": {\n      fontWeight: \"600 !important\",\n      color: \"#2D388D !important\"\n    }\n  },\n  responseMessageContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"flex-start\",\n    marginBottom: \"20px\",\n    position: \"relative\"\n  },\n  responseMessageContent: {\n    padding: \"10px\",\n    border: \"1px solid #ccc\",\n    borderRadius: \"5px\",\n    backgroundColor: \"#f9f9f9\"\n  },\n  closeIcon: {\n    padding: 0,\n    alignSelf: \"flex-end\"\n  }\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { defaultJobDetails } from \"./config\";\nexport const initialAIStudioState = {\n  open: false,\n  currentStep: 0,\n  optionalInputType: \"\",\n  welcomeHeader: \"\",\n  showCaret: true,\n  buttonHovered: false,\n  jobDetails: defaultJobDetails,\n  generatedTone: \"neutral\",\n  sendEmail: false,\n  generatedResponse: \"\",\n  generationError: false,\n  questionType: \"general\",\n  generationType: \"description\",\n  navbarIsCollapsed: false,\n  confirmCancelIsOpen: false,\n  notificationData: [],\n  notificationModalOpen: false,\n  aiStudioFrenchEnabled: false,\n  document: void 0\n};\nexport const aiStudioReducer = (state, action) => {\n  switch (action.type) {\n    case \"CLEAR_ALL_JOB_DETAILS\":\n      return __spreadProps(__spreadValues({}, state), {\n        jobDetails: defaultJobDetails,\n        generatedTone: \"neutral\",\n        sendEmail: false\n      });\n    case \"INIT_NEW_JOB_FLOW\":\n      return __spreadProps(__spreadValues({}, state), {\n        jobDetails: __spreadProps(__spreadValues({}, defaultJobDetails), {\n          position_title: action.payload.title,\n          position_location: action.payload.country\n        }),\n        currentStep: 1,\n        generationType: \"description\"\n      });\n    case \"CLOSE_MODAL\":\n      return initialAIStudioState;\n    case \"OPEN_MODAL\":\n      return __spreadProps(__spreadValues({}, state), { open: true });\n    case \"SET_CURRENT_STEP\":\n      return __spreadProps(__spreadValues({}, state), { currentStep: action.payload });\n    case \"GO_TO_LOADING_STEP\":\n      return __spreadProps(__spreadValues({}, state), { currentStep: 3 });\n    case \"GO_TO_ERROR_STEP\":\n      return __spreadProps(__spreadValues({}, state), { currentStep: 4 });\n    case \"GO_TO_HOME_STEP\":\n      return __spreadProps(__spreadValues({}, state), { currentStep: 0 });\n    case \"SELECT_WRITE_TLP\":\n      return __spreadProps(__spreadValues({}, state), { currentStep: 1, generationType: \"description\" });\n    case \"SELECT_WRITE_SCREENING_QUESTION\":\n      return __spreadProps(__spreadValues({}, state), { currentStep: 5, generationType: \"questions\" });\n    case \"SELECT_OPTIONAL_INPUT\":\n      return __spreadProps(__spreadValues({}, state), { optionalInputType: action.payload, currentStep: 2 });\n    case \"ADD_TO_WELCOME_HEADER\":\n      return __spreadProps(__spreadValues({}, state), { welcomeHeader: state.welcomeHeader + action.payload });\n    case \"CLEAR_WELCOME_HEADER\":\n      return __spreadProps(__spreadValues({}, state), { welcomeHeader: \"\" });\n    case \"SET_SHOW_CARET\":\n      return __spreadProps(__spreadValues({}, state), { showCaret: action.payload });\n    case \"SET_BUTTON_HOVERED\":\n      return __spreadProps(__spreadValues({}, state), { buttonHovered: action.payload });\n    case \"SET_DOCUMENT\":\n      return __spreadProps(__spreadValues({}, state), { document: action.payload });\n    case \"SET_JOB_DETAILS\":\n      return __spreadProps(__spreadValues({}, state), {\n        jobDetails: __spreadProps(__spreadValues({}, state.jobDetails), {\n          [action.fieldName]: action.payload\n        })\n      });\n    case \"SET_GENERATED_TONE\":\n      return __spreadProps(__spreadValues({}, state), { generatedTone: action.payload });\n    case \"SET_SEND_EMAIL\":\n      return __spreadProps(__spreadValues({}, state), { sendEmail: action.payload });\n    case \"SET_GENERATED_RESPONSE\":\n      return __spreadProps(__spreadValues({}, state), { generatedResponse: action.payload });\n    case \"SET_GENERATION_ERROR\":\n      return __spreadProps(__spreadValues({}, state), { generationError: action.payload });\n    case \"SET_QUESTION_TYPE\":\n      return __spreadProps(__spreadValues({}, state), { questionType: action.payload });\n    case \"SET_NAVBAR_IS_COLLAPSED\":\n      return __spreadProps(__spreadValues({}, state), { navbarIsCollapsed: action.payload });\n    case \"SET_CONFIRM_CANCEL_IS_OPEN\":\n      return __spreadProps(__spreadValues({}, state), { confirmCancelIsOpen: action.payload });\n    case \"SET_NOTIFICATIONS\":\n      return __spreadProps(__spreadValues({}, state), { notificationData: action.payload });\n    case \"SET_RECEIVED_NOTIFICATION\":\n      if (!state.notificationModalOpen) {\n        return __spreadProps(__spreadValues({}, state), {\n          notificationData: [...state.notificationData, action.payload]\n        });\n      } else {\n        const tempNotificationData = [...state.notificationData];\n        tempNotificationData.splice(1, 0, action.payload);\n        return __spreadProps(__spreadValues({}, state), {\n          notificationData: tempNotificationData\n        });\n      }\n    case \"DISMISS_NOTIFICATION\":\n      return __spreadProps(__spreadValues({}, state), {\n        notificationData: state.notificationData.slice(1),\n        notificationModalOpen: false\n      });\n    case \"VIEW_NOTIFICATION\":\n      return __spreadProps(__spreadValues({}, state), { notificationModalOpen: true });\n    case \"SET_DISMISSED_NOTIFICATION\":\n      if (state.notificationModalOpen) return state;\n      return __spreadProps(__spreadValues({}, state), {\n        notificationData: state.notificationData.filter(\n          (notification) => notification.id !== action.payload\n        )\n      });\n    case \"TOGGLE_FRENCH\":\n      return __spreadProps(__spreadValues({}, state), { aiStudioFrenchEnabled: !state.aiStudioFrenchEnabled });\n    default:\n      return state;\n  }\n};\n","\"use strict\";\nimport { closeIcon } from \"../../NewUI/shared/styleClasses\";\nexport const classes = {\n  buttonContainer: {\n    position: \"fixed\",\n    bottom: \"80px\",\n    left: \"28px\",\n    cursor: \"pointer\",\n    \"& svg\": {\n      transition: \"transform 0.7s\"\n    }\n  },\n  newNavbarButtonContainer: {\n    bottom: \"32px\",\n    left: \"38px\"\n  },\n  collapsedNavbar: {\n    left: \"7.5px\",\n    transform: \"scale(0.87)\"\n  },\n  newNavbarCollapsed: {\n    left: \"20px\",\n    bottom: \"80px\"\n  },\n  button: {\n    textTransform: \"none\",\n    backgroundColor: \"#FFFFFF\",\n    color: \"#4E4EC7\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"16px\",\n    fontWeight: \"700\",\n    padding: \"8px 0px\",\n    paddingRight: \"22px\",\n    paddingLeft: \"56px\",\n    borderRadius: \"22px\",\n    \"&:hover\": {\n      backgroundColor: \"#FFFFFF\",\n      color: \"#4E4EC7\"\n    }\n  },\n  avatarContainer: {\n    width: \"44px\",\n    height: \"44px\",\n    borderRadius: \"50%\",\n    zIndex: 1,\n    position: \"absolute\",\n    top: \"0px\",\n    left: \"-1px\",\n    background: \"linear-gradient(225.64deg, #E548FF -23.43%, #084D6D 140.57%, #084D6D 140.58%, #5BC4C0 140.6%)\",\n    boxShadow: \"0px 4px 4px rgba(36, 36, 36, 0.18)\"\n  },\n  hoverAnimation: {\n    \"& svg\": {\n      transform: \"scale(1.11) translate(2px, -5px) !important\",\n      transition: \"transform 0.7s\"\n    }\n  },\n  notificationAnimation: {\n    \"& svg\": {\n      transform: \"scale(2.5) translate(0px, -14.5px) !important\",\n      transition: \"transform 0.7s\"\n    }\n  },\n  notificationPopperContainer: {\n    transform: \"translate(40px, -90px)\"\n  },\n  notificationsBadge: {\n    \"& .MuiBadge-badge\": {\n      backgroundColor: \"#E37D7A\",\n      color: \"#FFF\",\n      fontWeight: \"700\",\n      width: \"28px\",\n      height: \"28px\",\n      borderRadius: \"50%\",\n      fontSize: \"16px\"\n    }\n  },\n  notificationPopper: {\n    position: \"relative\",\n    backgroundColor: \"#FFFFFF\",\n    borderRadius: \"24px\",\n    width: \"345px\",\n    height: \"150px\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    rowGap: \"16px\"\n  },\n  notificationHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"24px\",\n    fontWeight: \"700\",\n    lineHeight: \"1.2\",\n    color: \"#4E4EC7\",\n    width: \"87%\"\n  },\n  notificationButtons: {\n    width: \"87%\",\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    columnGap: \"8px\"\n  },\n  notificationViewButton: {\n    textTransform: \"none\",\n    backgroundColor: \"#7A8EF1\",\n    color: \"#FFFFFF\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"700\",\n    borderRadius: \"22px\",\n    padding: \"2px 20px\",\n    \"&:hover\": {\n      backgroundColor: \"#7A8EF1CC\",\n      color: \"#FFFFFF\"\n    }\n  },\n  notificationCloseButton: {\n    textTransform: \"none\",\n    backgroundColor: \"#FFFFFF\",\n    color: \"#4E4EC7\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"400\",\n    borderRadius: \"22px\",\n    padding: \"2px 20px\",\n    textDecoration: \"underline\",\n    \"&:hover\": {\n      backgroundColor: \"#FFFFFF\",\n      color: \"#4E4EC7\",\n      textDecoration: \"none\"\n    }\n  },\n  borderBox: {\n    position: \"absolute\",\n    top: \"-8px\",\n    bottom: \"-8px\",\n    left: \"-8px\",\n    right: \"-8px\",\n    content: \"''\",\n    zIndex: -1,\n    borderRadius: \"30px\",\n    \"@property --angle\": {\n      syntax: \"'<angle>'\",\n      initialValue: \"0deg\",\n      inherits: \"false\"\n    },\n    \"@keyframes rotate\": { to: { \"--angle\": \"360deg\" } },\n    background: \"conic-gradient(from var(--angle), #A24AD3 0 30%, #594CA2 40% 70%, #A24AD3 100%)\",\n    animation: \"3.5s rotate linear infinite\"\n  },\n  betaPill: {\n    position: \"absolute\",\n    top: \"-8px\",\n    right: \"2px\",\n    zIndex: 1,\n    backgroundColor: \"#5BC4C0\",\n    color: \"#FFFFFF\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"9.5px\",\n    fontWeight: \"700\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    height: \"16px\",\n    width: \"30px\",\n    borderRadius: \"8px\"\n  },\n  modal: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    padding: \"60px\",\n    maxWidth: \"1200px\",\n    width: \"100%\",\n    height: \"94vh\",\n    maxHeight: \"844px\",\n    borderRadius: \"6px\",\n    dropShadow: \"0px 2px 14px #305A6F29\",\n    position: \"absolute\",\n    background: \"#FFFFFF\",\n    top: \"50%\",\n    left: \"50%\",\n    transform: \"translate(-50%, -50%)\"\n  },\n  notificationModalContent: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    width: \"90%\",\n    height: \"100%\",\n    rowGap: \"36px\",\n    marginTop: \"34px\"\n  },\n  felixContainer: {\n    marginTop: \"20px\"\n  },\n  previewModal: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    maxWidth: \"680px\",\n    width: \"100%\",\n    height: \"94vh\",\n    maxHeight: \"730px\",\n    borderRadius: \"6px\",\n    dropShadow: \"0px 2px 14px #305A6F29\",\n    position: \"absolute\",\n    background: \"#FFFFFF\",\n    top: \"50%\",\n    left: \"50%\",\n    transform: \"translate(-50%, -50%)\"\n  },\n  teaserContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    width: \"500px\",\n    rowGap: \"26px\"\n  },\n  teaserHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"34px\",\n    fontWeight: \"700\",\n    color: \"#2D388D\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    columnGap: \"12px\",\n    position: \"relative\",\n    paddingTop: \"12px\"\n  },\n  teaserPill: {\n    height: \"18px\",\n    width: \"36px\",\n    backgroundColor: \"#5BC4BF\",\n    color: \"#FFFFFF\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"10px\",\n    fontWeight: \"700\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    borderRadius: \"12px\",\n    position: \"absolute\",\n    top: \"-4px\",\n    right: \"-28px\"\n  },\n  featureList: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    flexWrap: \"wrap\",\n    alignItems: \"flex-start\",\n    justifyContent: \"center\",\n    rowGap: \"12px\",\n    width: \"460px\"\n  },\n  featureListItem: {\n    width: \"210px\",\n    display: \"flex\",\n    alignItems: \"flex-start\",\n    columnGap: \"16px\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"16px\",\n    fontWeight: \"400\",\n    color: \"#000000\"\n  },\n  featureListItemIcon: {\n    fontSize: \"22px\",\n    color: \"#798DF0\"\n  },\n  teaserText: {\n    textAlign: \"center\"\n  },\n  teaserButton: {\n    textTransform: \"none\",\n    backgroundColor: \"#7A8EF1\",\n    color: \"#FFFFFF\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"20px\",\n    fontWeight: \"700\",\n    width: \"320px\",\n    height: \"44px\",\n    borderRadius: \"22px\",\n    \"&:hover\": {\n      backgroundColor: \"#798DF0\"\n    }\n  },\n  teaserCloseButton: {\n    position: \"absolute\",\n    bottom: \"20px\",\n    right: \"8px\",\n    textTransform: \"none\",\n    textDecoration: \"underline\",\n    height: \"22px\",\n    paddingInline: \"18px\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"12px\",\n    fontWeight: \"600\",\n    color: \"#CCCCCC\",\n    backgroundColor: \"#FFFFFF\",\n    borderRadius: \"20px\",\n    border: \"none\"\n  },\n  welcomeContainer: {\n    width: \"100%\",\n    height: \"100%\",\n    display: \"flex\",\n    columnGap: \"112px\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    overflowY: \"auto\"\n  },\n  descriptionContainer: {\n    paddingTop: \"30px\",\n    rowGap: \"42px\",\n    width: \"90%\",\n    height: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    overflowY: \"auto\"\n  },\n  generatedContainer: {\n    width: \"90%\",\n    height: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"flex-start\",\n    paddingTop: \"20px\",\n    overflowY: \"auto\"\n  },\n  headersAndOptionsContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    width: \"474px\"\n  },\n  header: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"68px\",\n    fontWeight: \"700\",\n    color: \"#2D388D\",\n    marginBottom: \"26px\",\n    \"@keyframes caret\": {\n      \"50%\": {\n        borderColor: \"transparent\"\n      }\n    },\n    \"& span\": {\n      lineHeight: \"1\",\n      borderRight: \".05em solid\",\n      animation: \"caret 0.9s ease-in-out infinite\"\n    }\n  },\n  subHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"26px\",\n    fontWeight: \"600\",\n    color: \"#2D388D\",\n    marginLeft: \"4px\"\n  },\n  optionsContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    rowGap: \"22px\",\n    marginTop: \"42px\"\n  },\n  option: {\n    width: \"366px\",\n    height: \"46px\",\n    textTransform: \"none\",\n    backgroundColor: \"#FFFFFF\",\n    fontFamily: \"Source Sans Pro\",\n    color: \"#2D388D\",\n    border: \"2px solid #2D388D\",\n    fontSize: \"17px\",\n    fontWeight: \"700\",\n    borderRadius: \"23px\",\n    \"&:hover\": {\n      color: \"#AFBCFF\",\n      border: \"2px solid #AFBCFF\"\n    }\n  },\n  genericContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"flex-start\",\n    width: \"100%\"\n  },\n  fieldHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"38px\",\n    fontWeight: \"700\",\n    color: \"#2D388D\",\n    marginBottom: \"36px\"\n  },\n  fieldSubHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\",\n    fontWeight: \"600\",\n    color: \"#2D388D\",\n    marginBottom: \"16px\"\n  },\n  optionalInformationContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    marginBlock: \"20px\"\n  },\n  pillsContainer: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    gap: \"18px\",\n    flexWrap: \"wrap\",\n    marginTop: \"8px\"\n  },\n  pill: {\n    textTransform: \"none\",\n    height: \"36px\",\n    width: \"auto\",\n    paddingInline: \"17px\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"15px\",\n    fontWeight: \"700\",\n    color: \"#AFBCFF\",\n    border: \"1px solid #AFBCFF\",\n    borderRadius: \"18px\"\n  },\n  filledPill: {\n    textTransform: \"none\",\n    height: \"36px\",\n    width: \"auto\",\n    paddingInline: \"17px\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"15px\",\n    fontWeight: \"700\",\n    color: \"#AFBCFF\",\n    border: \"1px solid #2D388D\",\n    backgroundColor: \"#2D388D\",\n    borderRadius: \"18px\",\n    \"&:hover\": {\n      borderColor: \"#AFBCFF\"\n    }\n  },\n  fieldInput: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\",\n    fontWeight: \"regular\",\n    borderRadius: \"6px\",\n    height: \"42px\",\n    width: \"100%\",\n    \"& legend\": {\n      display: \"none\"\n    },\n    \"& input\": {\n      padding: \"0px 20px 3.5px 20px\",\n      color: \"#333333\"\n    },\n    \"& fieldset\": {\n      borderColor: \"#DDDDDD\"\n    },\n    \"&:hover\": {\n      \"& fieldset\": {\n        borderColor: \"#DADADA !important\"\n      }\n    }\n  },\n  footerContainer: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    width: \"100%\",\n    marginTop: \"auto\",\n    paddingTop: \"30px\"\n  },\n  felixMessageContainer: {\n    display: \"flex\",\n    columnGap: \"26px\",\n    alignItems: \"center\"\n  },\n  felixMessage: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\",\n    fontWeight: \"600\",\n    color: \"#2D388D\",\n    maxWidth: \"310px\",\n    \"& span\": {\n      color: \"#AFBCFF\"\n    },\n    \"@media (max-width: 1024px)\": {\n      fontSize: \"14px\",\n      width: \"220px\"\n    }\n  },\n  footerButtonsContainer: {\n    display: \"flex\",\n    columnGap: \"32px\"\n  },\n  footerContinueButton: {\n    textTransform: \"none\",\n    height: \"40px\",\n    paddingInline: \"18px\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\",\n    fontWeight: \"700\",\n    color: \"#FFFFFF\",\n    backgroundColor: \"#7A8EF1\",\n    borderRadius: \"20px\",\n    \"&:hover\": {\n      backgroundColor: \"#2D388D\"\n    },\n    \"&:disabled\": {\n      backgroundColor: \"#CCCCCC\",\n      color: \"#DDDDDD\"\n    }\n  },\n  footerBackButton: {\n    textTransform: \"none\",\n    textDecoration: \"underline\",\n    height: \"40px\",\n    paddingInline: \"18px\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\",\n    fontWeight: \"600\",\n    color: \"#CCCCCC\",\n    backgroundColor: \"#FFFFFF\",\n    borderRadius: \"20px\",\n    border: \"none\"\n  },\n  descriptionHeader: {\n    marginBottom: \"36px\",\n    width: \"100%\",\n    display: \"flex\",\n    flexDirection: \"row\",\n    justifyContent: \"space-between\"\n  },\n  descriptionHeaderText: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"38px\",\n    fontWeight: \"700\",\n    color: \"#2D388D\"\n  },\n  generatedResponseContainer: {\n    fontFamily: \"Source Sans Pro\",\n    width: \"100%\",\n    height: \"500px\",\n    overflowY: \"auto\",\n    padding: \"18px\",\n    paddingTop: \"4px\",\n    border: \"1px solid #DDDDDD\",\n    borderRadius: \"6px\",\n    \"& h2\": {\n      fontFamily: \"Source Sans Pro\",\n      fontWeight: \"bold\",\n      color: \"#666666\",\n      fontSize: \"18px\"\n    },\n    \"& h3\": {\n      fontFamily: \"Source Sans Pro\",\n      fontWeight: \"bold\",\n      color: \"#666666\",\n      fontSize: \"16px\"\n    },\n    \"& p\": {\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"14px\",\n      fontWeight: \"normal\"\n    },\n    \"& ul\": {\n      fontFamily: \"Source Sans Pro\",\n      fontWeight: \"bold\",\n      fontSize: \"14px\",\n      listStyleType: \"circle\",\n      marginLeft: \"30px\",\n      marginTop: \"16px\",\n      marginBottom: \"8px\"\n    },\n    \"& ol\": {\n      fontFamily: \"Source Sans Pro\",\n      color: \"#666666\",\n      fontSize: \"16px\",\n      marginLeft: \"30px\",\n      marginTop: \"16px\",\n      marginBottom: \"8px\",\n      listStyle: \"decimal\",\n      \"& li\": {\n        marginBottom: \"12px\",\n        paddingLeft: \"10px\"\n      }\n    }\n  },\n  footerRestartButton: {\n    textTransform: \"none\",\n    height: \"40px\",\n    paddingInline: \"18px\",\n    minWidth: \"130px\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\",\n    fontWeight: \"700\",\n    color: \"#FFFFFF\",\n    backgroundColor: \"#AFBCFF\",\n    borderRadius: \"20px\",\n    \"&:hover\": {\n      backgroundColor: \"#2D388D\"\n    }\n  },\n  questionsContainer: {\n    display: \"flex\",\n    width: \"100%\",\n    flexDirection: \"column\",\n    rowGap: \"30px\",\n    overflowY: \"auto\",\n    marginBottom: \"34px\"\n  },\n  question: {\n    width: \"100%\",\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    columnGap: \"26px\",\n    padding: \"20px\",\n    background: \"rgba(122, 142, 241, 0.12)\",\n    borderRadius: \"6px\",\n    color: \"#2D388D\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\"\n  },\n  closeIcon,\n  checkbox: {\n    color: \"#939393 !important\",\n    \"& .MuiSvgIcon-root\": {\n      fontSize: \"24px\"\n    },\n    \"&.Mui-checked\": {\n      color: \"#939393 !important\"\n    }\n  },\n  formContainer: {\n    display: \"flex\",\n    alignItems: \"center\",\n    columnGap: \"24px\",\n    width: \"100%\"\n  },\n  formLabel: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\",\n    fontWeight: 600,\n    color: \"#2D388D\",\n    paddingTop: \"2px\"\n  },\n  toggleButton: {\n    padding: \"4px 17px !important\",\n    fontFamily: \"Source Sans Pro\",\n    color: \"#AAAAAA\",\n    fontSize: \"15px\",\n    fontWeight: \"bold\",\n    borderRadius: \"12px\",\n    backgroundColor: \"#F9F9F9\",\n    textTransform: \"none\",\n    border: \"none\",\n    \"&.Mui-selected\": {\n      backgroundColor: \"#7A8EF1 !important\",\n      color: \"#FFFFFF !important\"\n    },\n    \"&:focus\": {\n      outline: \"none\"\n    },\n    \"&:hover\": {\n      border: \"none\"\n    }\n  },\n  sideBySideContainer: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    width: \"100%\",\n    columnGap: \"44px\"\n  }\n};\n","\"use strict\";\nimport { closeIcon } from \"../../NewUI/shared/styleClasses\";\nexport const classes = {\n  aiModal: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    padding: \"60px\",\n    maxWidth: \"1200px\",\n    width: \"100%\",\n    height: \"94vh\",\n    maxHeight: \"844px\",\n    borderRadius: \"6px\",\n    dropShadow: \"0px 2px 14px #305A6F29\",\n    position: \"absolute\",\n    background: \"#FFFFFF\",\n    top: \"50%\",\n    left: \"50%\",\n    transform: \"translate(-50%, -50%)\"\n  },\n  closeIcon,\n  aiQuestionsContainer: {\n    paddingTop: \"30px\",\n    width: \"90%\",\n    height: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    overflowY: \"auto\"\n  },\n  genericContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"flex-start\",\n    width: \"100%\"\n  },\n  fieldHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"38px\",\n    fontWeight: \"700\",\n    color: \"#2D388D\",\n    marginBottom: \"36px\"\n  },\n  fieldSubHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\",\n    fontWeight: \"600\",\n    color: \"#2D388D\",\n    marginBottom: \"16px\"\n  },\n  fieldInput: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\",\n    fontWeight: \"regular\",\n    borderRadius: \"6px\",\n    height: \"42px\",\n    width: \"100%\",\n    \"& legend\": {\n      display: \"none\"\n    },\n    \"& input\": {\n      padding: \"0px 20px 3.5px 20px\",\n      color: \"#333333\"\n    },\n    \"& fieldset\": {\n      borderColor: \"#DDDDDD\"\n    },\n    \"&:hover\": {\n      \"& fieldset\": {\n        borderColor: \"#DADADA !important\"\n      }\n    }\n  },\n  footerContainer: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    width: \"100%\",\n    marginTop: \"auto\"\n  },\n  felixMessageContainer: {\n    display: \"flex\",\n    columnGap: \"26px\",\n    alignItems: \"center\"\n  },\n  felixMessage: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\",\n    fontWeight: \"600\",\n    color: \"#2D388D\",\n    maxWidth: \"340px\",\n    \"& span\": {\n      color: \"#AFBCFF\"\n    }\n  },\n  footerButtonsContainer: {\n    display: \"flex\",\n    columnGap: \"32px\"\n  },\n  footerContinueButton: {\n    textTransform: \"none\",\n    height: \"40px\",\n    paddingInline: \"18px\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\",\n    fontWeight: \"700\",\n    color: \"#FFFFFF\",\n    backgroundColor: \"#7A8EF1\",\n    borderRadius: \"20px\",\n    \"&:hover\": {\n      backgroundColor: \"#2D388D\"\n    },\n    \"&:disabled\": {\n      backgroundColor: \"#CCCCCC\",\n      color: \"#DDDDDD\"\n    }\n  },\n  descriptionHeader: {\n    marginBottom: \"30px\",\n    width: \"100%\",\n    display: \"flex\",\n    flexDirection: \"row\",\n    justifyContent: \"space-between\"\n  },\n  descriptionHeaderText: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"38px\",\n    fontWeight: \"700\",\n    color: \"#2D388D\"\n  },\n  question: {\n    width: \"100%\",\n    display: \"flex\",\n    columnGap: \"26px\",\n    padding: \"20px\",\n    background: \"rgba(122, 142, 241, 0.12)\",\n    borderRadius: \"6px\",\n    color: \"#2D388D\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\"\n  },\n  footerAddButton: {\n    textTransform: \"none\",\n    height: \"40px\",\n    minWidth: \"97px\",\n    paddingInline: \"18px\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\",\n    fontWeight: \"700\",\n    color: \"#FFFFFF\",\n    backgroundColor: \"#7A8EF1\",\n    borderRadius: \"20px\",\n    \"&:hover\": {\n      backgroundColor: \"#2D388D\"\n    },\n    \"&:disabled\": {\n      backgroundColor: \"#CCCCCC\",\n      color: \"#DDDDDD\"\n    }\n  },\n  footerBackButton: {\n    textTransform: \"none\",\n    textDecoration: \"underline\",\n    height: \"40px\",\n    paddingInline: \"18px\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\",\n    fontWeight: \"600\",\n    color: \"#CCCCCC\",\n    backgroundColor: \"#FFFFFF\",\n    borderRadius: \"20px\",\n    border: \"none\"\n  },\n  pill: {\n    textTransform: \"none\",\n    height: \"36px\",\n    width: \"auto\",\n    paddingInline: \"17px\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"15px\",\n    fontWeight: \"700\",\n    color: \"#AFBCFF\",\n    border: \"1px solid #AFBCFF\",\n    borderRadius: \"18px\"\n  },\n  checkbox: {\n    color: \"#939393 !important\",\n    \"& .MuiSvgIcon-root\": {\n      fontSize: \"24px\"\n    },\n    \"&.Mui-checked\": {\n      color: \"#939393 !important\"\n    }\n  },\n  questionsContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    marginBottom: \"24px\",\n    rowGap: \"28px\",\n    width: \"100%\",\n    position: \"relative\",\n    overflow: \"auto\",\n    \"&::-webkit-scrollbar\": {\n      display: \"none\"\n    }\n  }\n};\n","\"use strict\";\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nexport const fetchSummary = (jobDescription, adType, positionTitle, customDescription, tone, signal) => __async(void 0, null, function* () {\n  const res = yield fetch(\"/api/v4/ai_studio\", {\n    signal,\n    method: \"POST\",\n    headers: {\n      \"Content-Type\": \"application/json\"\n    },\n    body: JSON.stringify({\n      ai_studio: {\n        type: \"advertisement\",\n        job_description: jobDescription,\n        ad_type: adType,\n        job_details: { position_title: positionTitle },\n        use_custom_description: customDescription,\n        tone\n      }\n    })\n  });\n  return yield res.json();\n});\nexport const fetchKeyPoints = (jobDescription, positionTitle) => __async(void 0, null, function* () {\n  const res = yield fetch(\"/api/v4/ai_studio\", {\n    method: \"POST\",\n    headers: {\n      \"Content-Type\": \"application/json\"\n    },\n    body: JSON.stringify({\n      ai_studio: {\n        type: \"keypoints\",\n        job_description: jobDescription,\n        job_details: { position_title: positionTitle }\n      }\n    })\n  });\n  return yield res.json();\n});\nexport const fetchSocial = (jobDescription, positionTitle, customDescription, includeHashtags, tone, length, signal) => __async(void 0, null, function* () {\n  const res = yield fetch(\"/api/v4/ai_studio\", {\n    signal,\n    method: \"POST\",\n    headers: {\n      \"Content-Type\": \"application/json\"\n    },\n    body: JSON.stringify({\n      ai_studio: {\n        type: \"social\",\n        job_description: jobDescription,\n        job_details: { position_title: positionTitle },\n        use_custom_description: customDescription,\n        include_hashtags: includeHashtags,\n        tone,\n        summary_length: length\n      }\n    })\n  });\n  return yield res.json();\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nexport const initialSmartShareState = {\n  open: false,\n  buttonHovered: false,\n  currentStep: 0,\n  generationTone: \"excited\",\n  useCustomDescription: \"description\",\n  includeHashtags: false,\n  includeKeyPoints: false,\n  summaryLength: \"medium\",\n  generationJobDescription: \"\",\n  generationJobTitle: \"\",\n  adType: \"dot points\",\n  generatedResponse: \"\",\n  generatedKeyPoints: [],\n  copied: false,\n  confirmCancelIsOpen: false,\n  generationType: \"social\",\n  generationError: false\n};\nexport const smartShareReducer = (state, action) => {\n  switch (action.type) {\n    case \"OPEN_MODAL\":\n      return __spreadProps(__spreadValues({}, state), { open: true, generationJobTitle: action.payload });\n    case \"CLOSE_MODAL\":\n      return initialSmartShareState;\n    case \"SET_CONFIRM_CANCEL_IS_OPEN\":\n      return __spreadProps(__spreadValues({}, state), { confirmCancelIsOpen: action.payload });\n    case \"SET_COPIED\":\n      return __spreadProps(__spreadValues({}, state), { copied: action.payload });\n    case \"SET_CURRENT_STEP\":\n      return __spreadProps(__spreadValues({}, state), { currentStep: action.payload });\n    case \"SET_GENERATED_RESPONSE\":\n      return __spreadProps(__spreadValues({}, state), { generatedResponse: action.payload });\n    case \"SET_GENERATED_KEY_POINTS\":\n      return __spreadProps(__spreadValues({}, state), { generatedKeyPoints: action.payload });\n    case \"SET_GENERATION_ERROR\":\n      return __spreadProps(__spreadValues({}, state), { generationError: action.payload });\n    case \"SET_BUTTON_HOVERED\":\n      return __spreadProps(__spreadValues({}, state), { buttonHovered: action.payload });\n    case \"SELECT_SOCIAL\":\n      return __spreadProps(__spreadValues({}, state), { generationType: \"social\", generationTone: \"excited\", currentStep: 1 });\n    case \"SELECT_JOB_AD\":\n      return __spreadProps(__spreadValues({}, state), {\n        generationType: \"advertisement\",\n        generationTone: \"excited\",\n        currentStep: 4\n      });\n    case \"SET_USE_CUSTOM_DESCRIPTION\":\n      return __spreadProps(__spreadValues({}, state), { useCustomDescription: action.payload });\n    case \"SET_GENERATION_JOB_DESCRIPTION\":\n      return __spreadProps(__spreadValues({}, state), { generationJobDescription: action.payload });\n    case \"SET_GENERATION_JOB_TITLE\":\n      return __spreadProps(__spreadValues({}, state), { generationJobTitle: action.payload });\n    case \"SET_GENERATION_TONE\":\n      return __spreadProps(__spreadValues({}, state), { generationTone: action.payload });\n    case \"SET_SUMMARY_LENGTH\":\n      return __spreadProps(__spreadValues({}, state), { summaryLength: action.payload });\n    case \"SET_INCLUDE_HASHTAGS\":\n      return __spreadProps(__spreadValues({}, state), { includeHashtags: action.payload });\n    case \"SET_INCLUDE_KEY_POINTS\":\n      return __spreadProps(__spreadValues({}, state), { includeKeyPoints: action.payload });\n    case \"SET_AD_TYPE\":\n      return __spreadProps(__spreadValues({}, state), { adType: action.payload });\n    default:\n      return state;\n  }\n};\n","\"use strict\";\nimport { closeIcon } from \"../../NewUI/shared/styleClasses\";\nexport const classes = {\n  buttonContainer: {\n    position: \"relative\",\n    cursor: \"pointer\",\n    transform: \"scale(0.77)\"\n  },\n  button: {\n    textTransform: \"none\",\n    backgroundColor: \"#F2F2F2\",\n    color: \"#4E4EC7\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"16px\",\n    fontWeight: \"700\",\n    padding: \"8px 0px\",\n    paddingRight: \"20px\",\n    paddingLeft: \"54px\",\n    borderRadius: \"22px\",\n    \"&:hover\": {\n      backgroundColor: \"#F2F2F2\",\n      color: \"#4E4EC7\"\n    }\n  },\n  avatarContainer: {\n    width: \"44px\",\n    height: \"44px\",\n    borderRadius: \"50%\",\n    zIndex: 1,\n    position: \"absolute\",\n    top: \"0px\",\n    left: \"-1px\",\n    background: \"linear-gradient(225.64deg, #E548FF -23.43%, #084D6D 140.57%, #084D6D 140.58%, #5BC4C0 140.6%)\",\n    boxShadow: \"2px 3px 4px rgba(36, 36, 36, 0.18)\"\n  },\n  hoverAnimation: {\n    \"@keyframes grow\": {\n      \"0%\": {\n        transform: \"scale(1) translate(2px, -3px)\"\n      },\n      \"100%\": {\n        transform: \"scale(1.11) translate(2px, -5px)\"\n      }\n    },\n    \"& svg\": {\n      animation: \"grow 0.7s forwards\"\n    }\n  },\n  unhoverAnimation: {\n    \"@keyframes shrink\": {\n      \"0%\": {\n        transform: \"scale(1.11) translate(2px, -5px)\"\n      },\n      \"100%\": {\n        transform: \"scale(1) translate(2px, -3px)\"\n      }\n    },\n    \"& svg\": {\n      animation: \"shrink 0.7s forwards\"\n    }\n  },\n  betaPill: {\n    position: \"absolute\",\n    top: \"-8px\",\n    right: \"2px\",\n    zIndex: 1,\n    backgroundColor: \"#5BC4C0\",\n    color: \"#FFFFFF\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"9.5px\",\n    fontWeight: \"700\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    height: \"16px\",\n    width: \"30px\",\n    borderRadius: \"8px\"\n  },\n  modal: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    padding: \"60px\",\n    maxWidth: \"1200px\",\n    width: \"100%\",\n    height: \"94vh\",\n    maxHeight: \"844px\",\n    borderRadius: \"6px\",\n    dropShadow: \"0px 2px 14px #305A6F29\",\n    position: \"absolute\",\n    background: \"#FFFFFF\",\n    top: \"50%\",\n    left: \"50%\",\n    transform: \"translate(-50%, -50%)\",\n    rowGap: \"16px\"\n  },\n  footerContainer: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    width: \"90%\",\n    marginTop: \"auto\",\n    paddingTop: \"16px\"\n  },\n  felixMessageContainer: {\n    display: \"flex\",\n    columnGap: \"26px\",\n    alignItems: \"center\"\n  },\n  felixMessage: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\",\n    fontWeight: \"600\",\n    color: \"#2D388D\",\n    maxWidth: \"330px\",\n    \"& span\": {\n      color: \"#AFBCFF\"\n    }\n  },\n  footerButtonsContainer: {\n    display: \"flex\",\n    columnGap: \"32px\"\n  },\n  footerContinueButton: {\n    textTransform: \"none\",\n    height: \"40px\",\n    paddingInline: \"18px\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\",\n    fontWeight: \"700\",\n    color: \"#FFFFFF\",\n    backgroundColor: \"#7A8EF1\",\n    borderRadius: \"20px\",\n    \"&:hover\": {\n      backgroundColor: \"#2D388D\"\n    },\n    \"&:disabled\": {\n      backgroundColor: \"#CCCCCC\",\n      color: \"#DDDDDD\"\n    }\n  },\n  footerBackButton: {\n    textTransform: \"none\",\n    textDecoration: \"underline\",\n    height: \"40px\",\n    paddingInline: \"18px\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\",\n    fontWeight: \"600\",\n    color: \"#CCCCCC\",\n    backgroundColor: \"#FFFFFF\",\n    borderRadius: \"20px\",\n    border: \"none\"\n  },\n  closeIcon,\n  inputStepContainer: {\n    paddingTop: \"30px\",\n    width: \"90%\",\n    height: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    overflowY: \"auto\"\n  },\n  genericContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"flex-start\",\n    width: \"100%\"\n  },\n  sideBySideContainer: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    width: \"100%\",\n    columnGap: \"44px\"\n  },\n  fieldHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"38px\",\n    fontWeight: \"700\",\n    color: \"#2D388D\",\n    marginBottom: \"36px\"\n  },\n  fieldSubHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\",\n    fontWeight: \"600\",\n    color: \"#2D388D\",\n    marginBottom: \"16px\"\n  },\n  fieldInput: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\",\n    fontWeight: \"regular\",\n    borderRadius: \"6px\",\n    height: \"42px\",\n    width: \"100%\",\n    \"& legend\": {\n      display: \"none\"\n    },\n    \"& input\": {\n      padding: \"0px 20px 3.5px 20px\",\n      color: \"#333333\"\n    },\n    \"& fieldset\": {\n      borderColor: \"#DDDDDD\"\n    },\n    \"&:hover\": {\n      \"& fieldset\": {\n        borderColor: \"#DADADA !important\"\n      }\n    }\n  },\n  checkboxContainer: {\n    display: \"flex\",\n    alignItems: \"center\",\n    marginTop: \"40px\",\n    columnGap: \"6px\"\n  },\n  checkbox: {\n    color: \"#939393 !important\",\n    \"& .MuiSvgIcon-root\": {\n      fontSize: \"24px\"\n    },\n    \"&.Mui-checked\": {\n      color: \"#939393 !important\"\n    }\n  },\n  checkboxLabel: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\",\n    fontWeight: 600,\n    color: \"#2D388D\",\n    paddingTop: \"2px\"\n  },\n  socialResponseContainer: {\n    display: \"flex\",\n    width: \"90%\",\n    overflowY: \"auto\"\n  },\n  socialCard: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    borderRadius: \"12px\",\n    border: \"1px solid #DDDDDD\",\n    padding: \"20px\",\n    width: \"100%\",\n    height: \"fit-content\",\n    boxShadow: \"3px 3px 4px #dddddd\"\n  },\n  socialCardHeader: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    maxWidth: \"864px\",\n    paddingRight: \"30px\",\n    fontSize: \"15px\"\n  },\n  socialCardPreview: {\n    width: \"400px\",\n    padding: \"13px\",\n    backgroundColor: \"#f8f8f8\",\n    borderRadius: \"12px\",\n    marginTop: \"10px\"\n  },\n  skeleton: {\n    borderRadius: \"12px\",\n    width: \"400px\",\n    height: \"200px\"\n  },\n  responseHeader: {\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    width: \"90%\",\n    marginBottom: \"20px\",\n    lineHeight: \"1\"\n  },\n  responseHeaderText: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"38px\",\n    fontWeight: \"700\",\n    color: \"#2D388D\"\n  },\n  previewImage: {\n    width: \"100%\",\n    height: \"200px\",\n    backgroundSize: \"cover\",\n    borderRadius: \"6px 6px 0px 0px\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\"\n  },\n  noImageIcon: {\n    fontSize: 80,\n    color: \"#AAAAAA\"\n  },\n  previewTitle: {\n    fontWeight: \"bold\",\n    marginTop: \"8px\",\n    fontSize: \"14px\"\n  },\n  previewDescription: {\n    fontSize: \"12px\"\n  },\n  previewLink: {\n    fontSize: \"11px\"\n  },\n  pill: {\n    textTransform: \"none\",\n    height: \"36px\",\n    width: \"auto\",\n    paddingInline: \"17px\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"15px\",\n    fontWeight: \"700\",\n    color: \"#AFBCFF\",\n    border: \"1px solid #AFBCFF\",\n    borderRadius: \"18px\"\n  },\n  centeredBiggerMargin: {\n    alignItems: \"center\",\n    marginBlock: \"40px\"\n  },\n  welcomePageSelections: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    flexWrap: \"wrap\",\n    gap: \"96px\",\n    width: \"90%\",\n    justifyContent: \"center\",\n    marginTop: \"70px\",\n    overflowY: \"auto\"\n  },\n  socialSelection: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    width: \"336px\",\n    height: \"400px\",\n    padding: \"52px 32px 0px 52px\",\n    borderRadius: \"10px\",\n    border: \"3px solid #AFBCFF\",\n    color: \"#AFBCFF\",\n    transition: \"all 0.45s ease-in-out\",\n    cursor: \"pointer\",\n    \"& span\": {\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"16px\",\n      color: \"#000000\",\n      transition: \"all 0.45s ease-in-out\"\n    },\n    \"&:hover\": {\n      color: \"#FFFFFF\",\n      backgroundColor: \"#AFBCFF\",\n      \"& span\": {\n        color: \"#FFFFFF\"\n      }\n    }\n  },\n  advertisementSelection: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    width: \"336px\",\n    height: \"400px\",\n    padding: \"52px 32px 0px 52px\",\n    borderRadius: \"10px\",\n    border: \"3px solid #5656DB\",\n    color: \"#5656DB\",\n    transition: \"all 0.45s ease-in-out\",\n    cursor: \"pointer\",\n    \"& span\": {\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"16px\",\n      color: \"#000000\",\n      transition: \"all 0.45s ease-in-out\"\n    },\n    \"&:hover\": {\n      color: \"#FFFFFF\",\n      backgroundColor: \"#5656DB\",\n      \"& span\": {\n        color: \"#FFFFFF\"\n      }\n    }\n  },\n  welcomePageSelectionHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"24px\",\n    fontWeight: \"700\",\n    margin: \"40px 0px 16px 0px\"\n  },\n  generatedResponseContainer: {\n    fontFamily: \"Source Sans Pro\",\n    width: \"90%\",\n    height: \"100%\",\n    overflowY: \"auto\",\n    padding: \"18px\",\n    paddingTop: \"4px\",\n    border: \"1px solid #DDDDDD\",\n    borderRadius: \"6px\",\n    \"& h2\": {\n      fontFamily: \"Source Sans Pro\",\n      fontWeight: \"bold\",\n      color: \"#666666\",\n      fontSize: \"18px\"\n    },\n    \"& h3\": {\n      fontFamily: \"Source Sans Pro\",\n      fontWeight: \"bold\",\n      color: \"#666666\",\n      fontSize: \"16px\"\n    },\n    \"& p\": {\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"14px\",\n      fontWeight: \"normal\"\n    },\n    \"& ul\": {\n      fontFamily: \"Source Sans Pro\",\n      fontWeight: \"bold\",\n      fontSize: \"14px\",\n      listStyleType: \"circle\",\n      marginLeft: \"30px\",\n      marginTop: \"16px\",\n      marginBottom: \"8px\"\n    },\n    \"& ol\": {\n      fontFamily: \"Source Sans Pro\",\n      color: \"#666666\",\n      fontSize: \"16px\",\n      marginLeft: \"30px\",\n      marginTop: \"16px\",\n      marginBottom: \"8px\",\n      listStyle: \"decimal\",\n      \"& li\": {\n        marginBottom: \"12px\",\n        paddingLeft: \"10px\"\n      }\n    }\n  },\n  characterCounter: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    color: \"#666666\",\n    position: \"absolute\",\n    top: \"10px\",\n    right: \"10px\"\n  },\n  keyPoint: {\n    backgroundColor: \"#E3E8FF\",\n    borderRadius: \"6px\",\n    padding: \"6px 14px 6px 14px\",\n    margin: \"8px 6px\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    columnGap: \"12px\",\n    fontWeight: \"600\",\n    color: \"#2D388D\"\n  },\n  copyIcon: {\n    color: \"#2D388D\",\n    \"& svg\": {\n      fontSize: \"18px\"\n    }\n  }\n};\n","\"use strict\";\nexport const defaultInclusions = {\n  resume: {\n    label: \"Resume\",\n    value: true\n  },\n  answers: {\n    label: \"Answers to screening questions\",\n    value: true\n  },\n  suitability_comment: {\n    label: \"Suitability comments\",\n    value: true\n  }\n};\nexport const defaultFormats = [\"Paragraphs\", \"Dot points\", \"Mixed\"];\nexport const emailTones = [\n  \"Professional\",\n  \"Friendly\",\n  \"Informative\",\n  \"Encouraging\",\n  \"Enthusiastic\",\n  \"Respectful\"\n];\n","\"use strict\";\nimport { closeIcon } from \"../../NewUI/shared/styleClasses\";\nimport { theme } from \"../../ThemeContext/ThemeObject\";\nexport const classes = {\n  summaryPopper: {\n    zIndex: 12\n  },\n  summaryPopover: {\n    position: \"relative\",\n    width: \"440px\",\n    maxHeight: \"500px\",\n    overflow: \"auto\",\n    padding: \"32px 36px 24px 46px\",\n    filter: \"drop-shadow(0px 2px 14px rgb(48, 90, 111, 0.16))\",\n    borderRadius: \"19px\",\n    backgroundColor: \"#FFFFFF\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14.5px\",\n    transform: \"translateX(14px)\",\n    \"& li\": {\n      position: \"relative\",\n      marginBottom: \"6px\",\n      \"&::before\": {\n        content: '\"\"',\n        position: \"absolute\",\n        width: \"8px\",\n        height: \"8px\",\n        backgroundColor: \"#2D388D\",\n        left: \"-18px\",\n        top: \"8px\",\n        borderRadius: \"50%\"\n      }\n    },\n    \"&::before\": {\n      content: '\"\"',\n      position: \"absolute\",\n      width: \"36px\",\n      height: \"36px\",\n      transform: \"rotate(45deg)\",\n      backgroundColor: \"#FFFFFF\",\n      left: \"-17px\",\n      top: \"calc(50% - 18px)\",\n      clipPath: \"polygon(0 0, 0 100%, 100% 100%, 100% 100%, 0% 0)\"\n    }\n  },\n  expandIcon: {\n    fontSize: \"18px\",\n    position: \"absolute\",\n    top: \"12px\",\n    right: \"12px\",\n    cursor: \"pointer\",\n    color: \"#2D388D\"\n  },\n  modal: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    padding: \"60px\",\n    maxWidth: \"1200px\",\n    width: \"100%\",\n    height: \"94vh\",\n    maxHeight: \"844px\",\n    borderRadius: \"6px\",\n    dropShadow: \"0px 2px 14px #305A6F29\",\n    position: \"absolute\",\n    background: \"#FFFFFF\",\n    top: \"50%\",\n    left: \"50%\",\n    transform: \"translate(-50%, -50%)\"\n  },\n  aiModalContent: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    width: \"90%\",\n    height: \"100%\",\n    rowGap: \"40px\",\n    marginTop: \"34px\",\n    paddingTop: \"2px\"\n  },\n  closeIcon,\n  summaryContainer: {\n    width: \"100%\",\n    height: \"100%\",\n    display: \"flex\",\n    columnGap: \"112px\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    overflowY: \"auto\"\n  },\n  applicantNameHeader: {\n    width: \"100%\",\n    marginBottom: \"-12px\",\n    \"& a\": {\n      color: \"#2D388D\",\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"22px\",\n      fontWeight: \"700\"\n    }\n  },\n  header: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"38px\",\n    fontWeight: \"700\",\n    color: \"#2D388D\",\n    width: \"100%\"\n  },\n  responseHeader: {\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    width: \"100%\",\n    height: \"38px\"\n  },\n  fieldSubHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\",\n    fontWeight: \"600\",\n    color: \"#2D388D\",\n    marginBottom: \"16px\"\n  },\n  aiRow: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    width: \"100%\"\n  },\n  inclusionsContainer: {\n    display: \"flex\",\n    columnGap: \"28px\",\n    width: \"100%\",\n    justifyContent: \"flex-start\",\n    alignItems: \"center\"\n  },\n  checkboxGroup: {\n    display: \"flex\",\n    alignItems: \"center\",\n    columnGap: \"6px\"\n  },\n  inclusionsLabel: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\",\n    fontWeight: 600,\n    color: \"#2D388D\",\n    paddingTop: \"2px\"\n  },\n  inclusionsCheckbox: {\n    color: \"#7A8EF1 !important\",\n    \"& .MuiSvgIcon-root\": {\n      fontSize: \"24px\"\n    },\n    \"&.Mui-checked\": {\n      color: \"#2D388D !important\"\n    }\n  },\n  applicantsContainer: {\n    display: \"flex\",\n    columnGap: \"24px\",\n    width: \"100%\"\n  },\n  applicant: {\n    position: \"relative\"\n  },\n  applicantInitials: {\n    width: \"45px\",\n    height: \"45px\",\n    borderRadius: \"50%\",\n    backgroundColor: \"#CDD7F2\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\",\n    fontWeight: \"700\",\n    color: \"#2D388D\",\n    cursor: \"default\"\n  },\n  applicantName: {\n    position: \"absolute\",\n    width: \"max-content\",\n    top: \"35px\",\n    left: \"15px\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"12px\",\n    fontWeight: \"700\",\n    color: \"#666666\",\n    backgroundColor: \"#FFFFFF\",\n    padding: \"4px 10px\",\n    borderRadius: \"6px\",\n    boxShadow: \"0px 2px 14px rgba(48, 90, 111, 0.16)\",\n    zIndex: 2\n  },\n  removeApplicant: {\n    position: \"absolute\",\n    top: \"-3px\",\n    right: \"0px\",\n    cursor: \"pointer\",\n    backgroundColor: \"#798DF0\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    width: \"16px\",\n    height: \"16px\",\n    borderRadius: \"50%\",\n    \"& svg\": {\n      color: \"#FFFFFF\",\n      fontSize: \"12px\"\n    },\n    zIndex: 2\n  },\n  pillButton: {\n    textTransform: \"none\",\n    height: \"36px\",\n    minWidth: \"fit-content\",\n    paddingInline: \"17px\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"15px\",\n    fontWeight: \"700\",\n    color: \"#AFBCFF\",\n    border: \"1px solid #AFBCFF\",\n    borderRadius: \"18px\"\n  },\n  noSummary: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"16px\",\n    fontWeight: \"600\",\n    color: \"#999999\",\n    width: \"100%\",\n    textAlign: \"center\"\n  },\n  noSummaryFelix: {\n    maxWidth: \"100px\",\n    margin: \"0px auto 20px auto\",\n    textAlign: \"center\"\n  },\n  noSummaryGenerate: {\n    width: \"100%\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    marginTop: \"20px\",\n    marginBottom: \"6px\"\n  },\n  noSavedQuestions: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"20px\",\n    fontWeight: \"600\",\n    color: \"#999999\",\n    width: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    marginTop: \"20px\"\n  },\n  questionSkeleton: {\n    width: \"100%\",\n    height: \"200px\",\n    borderRadius: \"6px\",\n    transformOrigin: \"unset\",\n    transform: \"unset\"\n  },\n  fieldInput: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\",\n    fontWeight: \"regular\",\n    borderRadius: \"6px\",\n    height: \"42px\",\n    width: \"100%\",\n    \"& legend\": {\n      display: \"none\"\n    },\n    \"& input\": {\n      padding: \"0px 20px 3.5px 20px\",\n      color: \"#333333\"\n    },\n    \"& fieldset\": {\n      borderColor: \"#DDDDDD\"\n    },\n    \"&:hover\": {\n      \"& fieldset\": {\n        borderColor: \"#DADADA !important\"\n      }\n    }\n  },\n  emailQuestionsContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    width: \"100%\",\n    height: \"100%\",\n    rowGap: \"40px\",\n    paddingTop: \"2px\"\n  },\n  suitabilityCommentWarning: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"600\",\n    color: theme.palette.error.main,\n    paddingTop: \"12px\"\n  }\n};\n","\"use strict\";\nexport const classes = {\n  rootContainer: {\n    display: \"flex\",\n    flexDirection: \"column\"\n  },\n  aiHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"28px\",\n    fontWeight: \"bold\",\n    color: \"#727272\",\n    marginBottom: \"1.2rem\",\n    marginTop: \".7rem\"\n  },\n  buttonsContainer: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    columnGap: \"1.5rem\",\n    rowGap: \"1rem\",\n    marginTop: \"0.5rem\"\n  },\n  aiButton: {\n    textTransform: \"none\",\n    height: \"36px\",\n    width: \"auto\",\n    paddingInline: \"17px\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"15px\",\n    fontWeight: \"700\",\n    color: \"#AFBCFF\",\n    border: \"1px solid #AFBCFF\",\n    borderRadius: \"18px\",\n    minWidth: \"268px\"\n  },\n  aiButtonFilled: {\n    textTransform: \"none\",\n    height: \"36px\",\n    width: \"auto\",\n    paddingInline: \"17px\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"15px\",\n    fontWeight: \"700\",\n    color: \"#AFBCFF\",\n    border: \"1px solid #2D388D\",\n    backgroundColor: \"#2D388D\",\n    borderRadius: \"18px\",\n    minWidth: \"268px\",\n    \"&:hover\": {\n      borderColor: \"#AFBCFF\",\n      backgroundColor: \"#2D388D\"\n    }\n  },\n  previewContainer: {\n    marginTop: \"1rem\",\n    \"& h3\": {\n      marginBottom: \"1rem\",\n      marginTop: \".3rem\",\n      color: \"#727272\",\n      fontSize: \"16px\"\n    }\n  },\n  tlpPreview: {\n    fontFamily: \"Source Sans Pro\",\n    width: \"100%\",\n    padding: \"18px\",\n    paddingTop: \"4px\",\n    border: \"1px solid #DDDDDD\",\n    borderRadius: \"6px\",\n    \"& h2\": {\n      fontFamily: \"Source Sans Pro\",\n      fontWeight: \"bold\",\n      color: \"#666666\",\n      fontSize: \"18px\"\n    },\n    \"& h3\": {\n      fontFamily: \"Source Sans Pro\",\n      fontWeight: \"bold\",\n      color: \"#666666\",\n      fontSize: \"16px\"\n    },\n    \"& p\": {\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"14px\",\n      fontWeight: \"normal\"\n    },\n    \"& ul\": {\n      fontFamily: \"Source Sans Pro\",\n      fontWeight: \"bold\",\n      fontSize: \"14px\",\n      listStyleType: \"circle\",\n      marginLeft: \"30px\",\n      marginTop: \"16px\",\n      marginBottom: \"8px\"\n    },\n    \"& ol\": {\n      fontFamily: \"Source Sans Pro\",\n      color: \"#666666\",\n      fontSize: \"16px\",\n      marginLeft: \"30px\",\n      marginTop: \"16px\",\n      marginBottom: \"8px\",\n      listStyle: \"decimal\",\n      \"& li\": {\n        marginBottom: \"12px\",\n        paddingLeft: \"10px\"\n      }\n    }\n  },\n  toggleTlpPreview: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"600\",\n    color: \"#2D388D\",\n    textDecoration: \"underline\",\n    cursor: \"pointer\"\n  },\n  questionsContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    marginTop: \"1rem\",\n    marginBottom: \"24px\",\n    rowGap: \"28px\",\n    width: \"100%\",\n    position: \"relative\",\n    overflow: \"auto\",\n    \"&::-webkit-scrollbar\": {\n      display: \"none\"\n    }\n  },\n  question: {\n    width: \"100%\",\n    display: \"flex\",\n    columnGap: \"26px\",\n    padding: \"12px 24px\",\n    background: \"rgba(122, 142, 241, 0.12)\",\n    borderRadius: \"6px\",\n    color: \"#2D388D\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"16px\"\n  },\n  deleteQuestionButton: {\n    textTransform: \"none\",\n    height: \"28px\",\n    width: \"auto\",\n    paddingInline: \"12px\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"13px\",\n    fontWeight: \"700\",\n    color: \"#AFBCFF\",\n    border: \"1px solid #AFBCFF\",\n    borderRadius: \"18px\",\n    marginLeft: \"auto\",\n    \"& svg\": {\n      fontSize: \"18px !important\",\n      color: \"#E37D7A99\"\n    }\n  }\n};\n","\"use strict\";\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nexport const dismissNotification = (historyId, onError) => __async(void 0, null, function* () {\n  try {\n    yield fetch(`/api/v4/ai_generation_histories/${historyId}/dismiss`, {\n      method: \"PUT\",\n      headers: { \"Content-Type\": \"application/json\" }\n    });\n  } catch (error) {\n    onError ? onError() : console.error(error);\n  }\n});\n","\"use strict\";\nimport { LIST_ITEMS_REGEX } from \"../sharedConfig\";\nexport const questionStringToArray = (questionString) => {\n  if (questionString.split(\"**\").length > 1) {\n    return questionString.replace(LIST_ITEMS_REGEX, \"\").replace(/\\n/g, \"\").split(\"**\").slice(0, -1).map((item, index) => ({\n      id: index,\n      text: item,\n      copied: false,\n      selected: false,\n      status: \"notSent\"\n    }));\n  } else {\n    return [\n      {\n        id: 0,\n        text: questionString,\n        copied: false,\n        selected: false,\n        status: \"notSent\"\n      }\n    ];\n  }\n};\nexport const formatQuestionArray = (questionArray) => {\n  return questionArray.map((item, index) => ({\n    id: index,\n    text: item,\n    copied: false,\n    selected: false,\n    status: \"notSent\"\n  }));\n};\n","\"use strict\";\nexport const classes = {\n  errorContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    width: \"100%\",\n    height: \"100%\",\n    fontFamily: \"Source Sans Pro\",\n    color: \"#2D388D\",\n    \"& p\": {\n      marginTop: \"5px\"\n    }\n  },\n  felixErrorContainer: {\n    width: \"200px\"\n  },\n  errorMessageContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    marginBlock: \"22px\",\n    alignItems: \"center\",\n    justifyContent: \"center\"\n  },\n  errorButtons: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    justifyContent: \"center\",\n    columnGap: \"32px\"\n  },\n  pill: {\n    textTransform: \"none\",\n    height: \"36px\",\n    width: \"auto\",\n    paddingInline: \"17px\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"15px\",\n    fontWeight: \"700\",\n    color: \"#AFBCFF\",\n    border: \"1px solid #AFBCFF\",\n    borderRadius: \"18px\",\n    minWidth: \"160px\"\n  },\n  descriptionContainer: {\n    paddingTop: \"30px\",\n    rowGap: \"42px\",\n    width: \"90%\",\n    height: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    overflowY: \"auto\"\n  },\n  loadingContainer: {\n    rowGap: \"54px\",\n    height: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    overflowY: \"auto\"\n  },\n  loadingMessage: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"22px\",\n    fontWeight: \"700\",\n    color: \"#2D388D\",\n    width: \"100%\",\n    textAlign: \"center\",\n    \"@keyframes pulse\": {\n      \"50%\": {\n        opacity: 0.58\n      }\n    },\n    animation: \"pulse 1.8s ease-in-out infinite\"\n  },\n  fieldInput: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\",\n    fontWeight: \"regular\",\n    borderRadius: \"6px\",\n    height: \"42px\",\n    width: \"100%\",\n    \"& legend\": {\n      display: \"none\"\n    },\n    \"& input\": {\n      padding: \"0px 20px 3.5px 20px\",\n      color: \"#333333\"\n    },\n    \"& fieldset\": {\n      borderColor: \"#DDDDDD\"\n    },\n    \"&:hover\": {\n      \"& fieldset\": {\n        borderColor: \"#DADADA !important\"\n      }\n    }\n  },\n  footerContainer: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    width: \"100%\",\n    marginTop: \"auto\"\n  },\n  felixMessageContainer: {\n    display: \"flex\",\n    columnGap: \"26px\",\n    alignItems: \"center\"\n  },\n  felixMessage: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\",\n    fontWeight: \"600\",\n    color: \"#2D388D\",\n    maxWidth: \"310px\",\n    \"& span\": {\n      color: \"#AFBCFF\"\n    }\n  },\n  footerButtonsContainer: {\n    display: \"flex\",\n    columnGap: \"32px\"\n  },\n  footerContinueButton: {\n    textTransform: \"none\",\n    height: \"40px\",\n    paddingInline: \"18px\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\",\n    fontWeight: \"700\",\n    color: \"#FFFFFF\",\n    backgroundColor: \"#7A8EF1\",\n    borderRadius: \"20px\",\n    \"&:hover\": {\n      backgroundColor: \"#2D388D\"\n    },\n    \"&:disabled\": {\n      backgroundColor: \"#CCCCCC\",\n      color: \"#DDDDDD\"\n    }\n  },\n  footerBackButton: {\n    textTransform: \"none\",\n    textDecoration: \"underline\",\n    height: \"40px\",\n    paddingInline: \"18px\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\",\n    fontWeight: \"600\",\n    color: \"#CCCCCC\",\n    backgroundColor: \"#FFFFFF\",\n    borderRadius: \"20px\",\n    border: \"none\"\n  },\n  altFooterSecondaryButton: {\n    textTransform: \"none\",\n    height: \"40px\",\n    paddingInline: \"18px\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\",\n    fontWeight: \"700\",\n    color: \"#FFFFFF\",\n    backgroundColor: \"#AFBCFF\",\n    borderRadius: \"20px\",\n    border: \"none\",\n    \"&:hover\": {\n      backgroundColor: \"#7A8EF1\"\n    },\n    \"&:disabled\": {\n      backgroundColor: \"#CCCCCC\",\n      color: \"#DDDDDD\"\n    }\n  },\n  copyButton: {\n    width: \"115px\",\n    textTransform: \"none\",\n    height: \"36px\",\n    paddingInline: \"17px\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"15px\",\n    fontWeight: \"700\",\n    color: \"#AFBCFF\",\n    border: \"1px solid #AFBCFF\",\n    borderRadius: \"18px\"\n  },\n  questionsContainer: {\n    display: \"flex\",\n    width: \"100%\",\n    flexDirection: \"column\",\n    rowGap: \"30px\",\n    overflowY: \"auto\"\n  },\n  question: {\n    width: \"100%\",\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    columnGap: \"26px\",\n    padding: \"20px\",\n    background: \"rgba(122, 142, 241, 0.12)\",\n    borderRadius: \"6px\",\n    color: \"#2D388D\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\"\n  },\n  floatingActionButton: {\n    position: \"absolute\",\n    width: \"30px\",\n    height: \"30px\",\n    borderRadius: \"50%\",\n    backgroundColor: \"#2D388D\",\n    boxShadow: \"0px 3px 12px 2px rgba(166, 166, 166, 0.5)\",\n    bottom: \"24px\",\n    right: \"30px\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    transition: \"all 0.3s ease\",\n    cursor: \"pointer\",\n    \"&:hover\": {\n      transform: \"scale(1.1)\"\n    },\n    \"& svg\": {\n      color: \"#FFFFFF\",\n      fontSize: \"18px\"\n    }\n  },\n  viewOnlyHTMLParent: {\n    position: \"relative\",\n    width: \"100%\",\n    height: \"50vh\",\n    maxHeight: \"500px\"\n  },\n  emailInputButton: {\n    backgroundColor: \"#798DF0\",\n    bottom: \"80px\"\n  },\n  emailInputContainer: {\n    position: \"absolute\",\n    top: \"0px\",\n    bottom: \"0px\",\n    left: \"0px\",\n    right: \"0px\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"flex-end\",\n    alignItems: \"center\",\n    background: \"linear-gradient(#F0F0F086, #D6D6D686)\"\n  },\n  emailInput: {\n    marginBottom: \"22px\",\n    padding: \"16px 20px\",\n    borderRadius: \"8px\",\n    width: \"96%\",\n    backgroundColor: \"#FFFFFF\"\n  },\n  sendEmailButton: {\n    position: \"absolute\",\n    bottom: \"34px\",\n    right: \"36px\",\n    textTransform: \"none\",\n    height: \"26px\",\n    width: \"62px\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    color: \"#FFFFFF\",\n    backgroundColor: \"#7A8EF1\",\n    borderRadius: \"28px\",\n    border: \"none\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"700\",\n    \"&:hover\": {\n      backgroundColor: \"#2D388D\"\n    },\n    \"&:disabled\": {\n      backgroundColor: \"#CCCCCC\",\n      color: \"#DDDDDD\"\n    }\n  },\n  labelStyles: {\n    color: \"#2D388D\",\n    fontSize: \"18px\",\n    fontWeight: \"600\",\n    fontFamily: \"Source Sans Pro\",\n    marginBottom: \"8px\",\n    marginLeft: \"3px\"\n  },\n  inputStyles: {\n    border: \"none\"\n  },\n  helperTextStyles: {\n    marginTop: \"12px\",\n    marginLeft: \"3px\"\n  },\n  inputOpen: {\n    bottom: \"154px\",\n    right: \"3px\"\n  },\n  viewOnlyHTML: {\n    fontFamily: \"Source Sans Pro\",\n    width: \"100%\",\n    height: \"100%\",\n    overflowY: \"auto\",\n    padding: \"4px 74px 20px 20px\",\n    border: \"1px solid #DDDDDD\",\n    borderRadius: \"6px\",\n    \"& p\": {\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"15px\",\n      fontWeight: \"normal\"\n    },\n    \"& ul\": {\n      fontFamily: \"Source Sans Pro\",\n      fontWeight: \"bold\",\n      fontSize: \"15px\",\n      listStyleType: \"circle\",\n      marginLeft: \"15px\",\n      marginTop: \"16px\",\n      marginBottom: \"8px\",\n      \"& li\": {\n        marginBottom: \"6px\"\n      }\n    }\n  },\n  toggleDescriptionPreview: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"600\",\n    color: \"#2D388D\",\n    textDecoration: \"underline\",\n    cursor: \"pointer\"\n  },\n  descriptionPreview: {\n    fontFamily: \"Source Sans Pro\",\n    width: \"100%\",\n    padding: \"18px\",\n    paddingTop: \"4px\",\n    border: \"1px solid #DDDDDD\",\n    borderRadius: \"6px\",\n    \"& h2\": {\n      fontFamily: \"Source Sans Pro\",\n      fontWeight: \"bold\",\n      color: \"#666666\",\n      fontSize: \"18px\"\n    },\n    \"& h3\": {\n      fontFamily: \"Source Sans Pro\",\n      fontWeight: \"bold\",\n      color: \"#666666\",\n      fontSize: \"16px\"\n    },\n    \"& p\": {\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"14px\",\n      fontWeight: \"normal\"\n    },\n    \"& ul\": {\n      fontFamily: \"Source Sans Pro\",\n      fontWeight: \"bold\",\n      fontSize: \"14px\",\n      listStyleType: \"circle\",\n      marginLeft: \"30px\",\n      marginTop: \"16px\",\n      marginBottom: \"8px\"\n    },\n    \"& ol\": {\n      fontFamily: \"Source Sans Pro\",\n      color: \"#666666\",\n      fontSize: \"16px\",\n      marginLeft: \"30px\",\n      marginTop: \"16px\",\n      marginBottom: \"8px\",\n      listStyle: \"decimal\",\n      \"& li\": {\n        marginBottom: \"12px\",\n        paddingLeft: \"10px\"\n      }\n    }\n  },\n  toggleButton: {\n    padding: \"4px 17px !important\",\n    fontFamily: \"Source Sans Pro\",\n    color: \"#AAAAAA\",\n    fontSize: \"15px\",\n    fontWeight: \"bold\",\n    borderRadius: \"12px\",\n    backgroundColor: \"#F9F9F9\",\n    textTransform: \"none\",\n    border: \"none\",\n    \"&.Mui-selected\": {\n      backgroundColor: \"#7A8EF1 !important\",\n      color: \"#FFFFFF !important\"\n    },\n    \"&:focus\": {\n      outline: \"none\"\n    },\n    \"&:hover\": {\n      border: \"none\"\n    }\n  },\n  socketsMessage: {\n    display: \"flex\",\n    alignItems: \"center\",\n    columnGap: \"15px\",\n    backgroundColor: \"#E3E8FF\",\n    borderRadius: \"6px\",\n    padding: \"12px 22px 12px 20px\",\n    fontFamily: \"Source Sans Pro\",\n    fontWeight: \"600\",\n    fontSize: \"17px\",\n    color: \"#2D388D\",\n    opacity: \"0\",\n    transition: \"all 0.3s ease\"\n  },\n  socketsInfoIcon: {\n    fontSize: \"20px\",\n    marginTop: \"1px\"\n  },\n  switch: {\n    \"& .MuiSwitch-thumb\": {\n      color: \"#FFFFFF\"\n    },\n    \"& .Mui-disabled\": {\n      color: \"#BBBBBB !important\",\n      \"& .Mui-checked+.MuiSwitch-track\": {\n        backgroundColor: \"#DDDDDD !important\",\n        opacity: \"1 !important\"\n      },\n      \"& .MuiSwitch-thumb\": {\n        color: \"#BBBBBB !important\"\n      },\n      \"& .MuiSwitch-track\": {\n        color: \"#BBBBBB !important\",\n        \"& :hover\": {\n          backgroundColor: \"#BBBBBB !important\"\n        }\n      },\n      \"& :hover\": {\n        backgroundColor: \"#BBBBBB !important\"\n      }\n    },\n    \"& :hover\": {\n      \"& .MuiSwitch-track\": {\n        backgroundColor: \"#000 !important\"\n      }\n    }\n  },\n  aiSwitchActive: {\n    \"& .Mui-checked+.MuiSwitch-track\": {\n      backgroundColor: \"#7A8EF13D !important\",\n      opacity: \"1 !important\"\n    },\n    \"& .MuiSwitch-thumb\": {\n      color: \"#2D388D\"\n    },\n    \"& .Mui-disabled\": {\n      color: \"#BBBBBB !important\",\n      \"& .Mui-checked+.MuiSwitch-track\": {\n        backgroundColor: \"#DDDDDD !important\",\n        opacity: \"1 !important\"\n      },\n      \"& .MuiSwitch-thumb\": {\n        color: \"#BBBBBB !important\"\n      },\n      \"& .MuiSwitch-track\": {\n        color: \"#BBBBBB !important\",\n        \"& :hover\": {\n          backgroundColor: \"#BBBBBB !important\"\n        }\n      },\n      \"& :hover\": {\n        backgroundColor: \"#BBBBBB !important\"\n      }\n    }\n  },\n  switchLabels: {\n    justifyContent: \"start\",\n    width: \"120px\",\n    \"& .MuiFormControlLabel-label\": {\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"14px\",\n      color: \"#000000\"\n    },\n    \"& .MuiSwitch-track\": {\n      backgroundColor: \"rgba(0,0,0,0.38)\",\n      opacity: \"1\"\n    },\n    \"& .Mui-checked+.MuiSwitch-track\": {\n      backgroundColor: \"rgb(91, 196, 191, 0.17) !important\",\n      opacity: \"1 !important\"\n    },\n    \"& .Mui-checked\": {\n      color: \"rgb(91, 196, 191, 0.5) !important\"\n    }\n  },\n  labelActive: {\n    \"& .MuiFormControlLabel-label\": {\n      color: \"#CCCCCC\",\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"14px\"\n    }\n  },\n  checkboxContainer: {\n    color: \"#2D388D\",\n    width: \"42px\",\n    textAlign: \"center\"\n  },\n  checkbox: {\n    color: \"#939393 !important\",\n    \"& .MuiSvgIcon-root\": {\n      fontSize: \"24px\"\n    },\n    \"&.Mui-checked\": {\n      color: \"#939393 !important\"\n    }\n  }\n};\n","\"use strict\";\nimport queryString from \"query-string\";\nclass Api {\n  constructor() {\n    this.handleResponse = (response) => {\n      if (response.ok) return response.json();\n      return response.json().then((error) => {\n        error.code = response.status;\n        throw error;\n      });\n    };\n    this.get = (path, params = {}, headers = {}) => fetch(`${path}?${queryString.stringify(params, { arrayFormat: \"bracket\" })}`, {\n      headers: this.getHeaders(headers)\n    }).then((r) => this.handleResponse(r));\n    this.post = (path, params = {}, headers = {}) => fetch(`${path}`, {\n      headers: this.getHeaders(headers),\n      method: \"POST\",\n      body: JSON.stringify(params)\n    }).then((r) => this.handleResponse(r));\n    this.put = (path, params = {}, headers = {}) => fetch(`${path}`, {\n      headers: this.getHeaders(headers),\n      method: \"PUT\",\n      body: JSON.stringify(params)\n    }).then((r) => this.handleResponse(r));\n    this.delete = (path, params = {}, headers = {}) => fetch(`${path}`, {\n      headers: this.getHeaders(headers),\n      method: \"DELETE\",\n      body: JSON.stringify(params)\n    }).then((r) => this.handleResponse(r));\n    this.custom_get = (path, params = {}, headers = {}) => fetch(`${path}${queryString.stringify(params, { arrayFormat: \"bracket\" })}`, {\n      headers: this.getHeaders(headers)\n    }).then((r) => this.handleResponse(r));\n    this.getEventOptions = () => this.custom_get(\"/api/calendar/event_options\");\n    this.getJobApplications = (id, apiKey) => this.get(`/api/calendly/jobs/${id}/applications`);\n    this.getEmailTemplates = () => this.get(\"/api/calendar/email_templates\");\n    this.getCalendlyEmailTemplates = () => this.get(\"/api/calendar/email_templates\", { calendly: 1 });\n    this.sendInvitations = (id, body) => this.post(`/api/calendly/jobs/${id}/invitations`, body);\n    this.addToEvent = (id, body) => this.post(`/api/calendly/jobs/${id}/invitations/add_to_event`, body);\n  }\n  getHeaders(headers) {\n    return Object.assign({}, {\n      \"Accept\": \"application/json\",\n      \"Content-Type\": \"application/json\",\n      \"X-api-authenticate\": localStorage.getItem(\"userKey\")\n    }, headers);\n  }\n}\nexport default new Api();\n","\"use strict\";\nimport { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n  root: {\n    display: \"flex\",\n    backgroundColor: \"white\",\n    flexDirection: \"column\",\n    width: \"100%\",\n    padding: \"50px 60px 20px 60px\",\n    minHeight: 630,\n    maxHeight: 630,\n    height: 630,\n    \"& h4\": {\n      marginTop: 0,\n      color: \"#004E70\",\n      fontSize: 26,\n      fontWeight: 700,\n      marginBottom: 30\n    }\n  },\n  buttonContainer: {\n    marginTop: \"auto\",\n    paddingTop: 30,\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    \"& button\": {\n      padding: \"12px 26px\",\n      color: \"#FFF\",\n      minHeight: 50,\n      \"&:last-child\": {\n        marginLeft: 12\n      }\n    },\n    \"&.move-z\": {\n      marginBottom: -20,\n      paddingBottom: 20,\n      zIndex: 2,\n      background: \"linear-gradient(rgba(255,255,255,0), rgba(255,255,255,0.5), rgba(255,255,255,1), rgba(255,255,255,1))\"\n    }\n  },\n  buttonIcon: {\n    fontSize: \"1.7rem\",\n    width: \"0.8rem\"\n  },\n  recContainer: {\n    display: \"flex\"\n  },\n  recImage: {\n    borderRadius: \"100%\",\n    width: 45,\n    height: 45,\n    maxHeight: 45,\n    maxWidth: 45,\n    background: \"#DDDDDD\",\n    color: \"#000\",\n    fontSize: 16,\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\"\n  },\n  recDetails: {\n    marginLeft: 14,\n    display: \"flex\",\n    flexDirection: \"column\",\n    \"& h4\": {\n      fontSize: 15,\n      color: \"#000000\",\n      fontWeight: 400,\n      marginBottom: 4\n    },\n    \"& a\": {\n      fontWeight: \"600\",\n      color: theme.palette.primary.main,\n      textDecoration: \"none\",\n      fontSize: 14,\n      lineHeight: \"14px\"\n    }\n  },\n  meetingContainer: {\n    marginTop: 30,\n    paddingTop: 10,\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    justifyContent: \"flex-start\",\n    overflow: \"scroll\",\n    marginLeft: \"-1%\",\n    marginRight: \"-1%\"\n  },\n  container: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    width: \"31%\",\n    maxWidth: \"31%\",\n    borderRadius: 6,\n    marginBottom: 30,\n    marginLeft: \"1%\",\n    marginRight: \"1%\",\n    boxShadow: \"0px 0px 6px 0px rgba(0,0,0,0.16)\",\n    \"&:hover\": {\n      cursor: \"pointer\",\n      transform: \"translateY(-2px)\",\n      boxShadow: \"0px 0px 6px 2px rgba(0,0,0,0.16)\"\n    },\n    \"&:active\": {\n      transform: \"translateY(-1px)\",\n      boxShadow: \"0px 0px 6px 0px rgba(0,0,0,0.14)\"\n    }\n  },\n  content: {\n    display: \"flex\",\n    flexGrow: 1,\n    flexDirection: \"column\",\n    padding: \"40px 20px\",\n    alignItems: \"flex-start\",\n    borderRadius: 6,\n    borderTopWidth: 6,\n    borderStyle: \"solid\",\n    borderTopColor: \"#DDD\"\n  },\n  name: {\n    fontSize: 21,\n    color: \"#000\",\n    userSelect: \"none\"\n  },\n  details: {\n    color: \"#939393\",\n    fontSize: 16,\n    marginBottom: 8,\n    userSelect: \"none\"\n  },\n  booking: {\n    fontWeight: 600,\n    color: `${theme.palette.secondary.main} !important`,\n    fontSize: 14,\n    userSelect: \"none\"\n  },\n  footer: {\n    borderTop: \"1px solid #DDDDDD\",\n    padding: \"10px 26px\",\n    display: \"flex\",\n    justifyContent: \"space-between\"\n  },\n  copyButton: {\n    fontWeight: 400,\n    fontSize: 10,\n    padding: \"4px 10px !important\"\n  },\n  editButton: {\n    fontWeight: 400,\n    border: `1px solid ${theme.palette.secondary.main}`,\n    borderRadius: 20,\n    fontSize: 10,\n    background: \"#FFF\",\n    padding: \"4px 10px !important\"\n  },\n  shadow: {\n    boxShadow: \"rgb(0 0 0 / 55%) -4px -33px 15px -45px inset\"\n  },\n  loading: {\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    height: \"100%\"\n  },\n  noEvents: {\n    color: \"#999\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    flex: 1\n  }\n}));\n","\"use strict\";\nimport { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n  root: {\n    display: \"flex\",\n    backgroundColor: \"white\",\n    flexDirection: \"column\",\n    width: \"100%\",\n    padding: \"50px 60px\",\n    alignItems: \"center\",\n    \"& svg\": {\n      fontSize: 68,\n      marginBottom: 20\n    },\n    \"& h4\": {\n      fontSize: 32,\n      color: \"#666666\",\n      paddingBottom: 20,\n      width: \"100%\",\n      textAlign: \"center\",\n      borderBottom: \"1px solid #DDDDDD\",\n      marginTop: 0,\n      marginBottom: 20\n    }\n  },\n  text: {\n    fontSize: 20,\n    color: \"#000\",\n    marginBottom: 40\n  }\n}));\n","\"use strict\";\nimport { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n  autocompleteField: {\n    flexBasis: \"60%\",\n    marginRight: 20\n  },\n  autoCompleteInput: {\n    paddingLeft: 15\n  },\n  endAdornment: {\n    marginRight: 10\n  },\n  searchContainer: {\n    display: \"flex\",\n    flexDirection: \"row\"\n  },\n  inputBase: {\n    flexBasis: \"25%\"\n  },\n  dialogPaper: {\n    transform: \"translateY(59px) !important\"\n  },\n  chipContainer: {\n    paddingTop: 14\n  },\n  chipItem: {\n    margin: \"4px 8px 4px 0\",\n    color: \"#666\",\n    \"& span\": {\n      color: \"#666\",\n      padding: \"0 16px\",\n      fontSize: 12\n    }\n  },\n  table: {\n    marginTop: 20,\n    width: \"100%\",\n    height: \"100%\",\n    overflow: \"scroll\",\n    display: \"flex\",\n    flexDirection: \"column\"\n  },\n  row: {\n    margin: 0,\n    display: \"flex\",\n    \"& div\": {\n      display: \"flex\",\n      alignItems: \"center\"\n    },\n    \"& button\": {\n      display: \"block\",\n      marginLeft: \"auto\",\n      opacity: 0,\n      marginRight: 12,\n      transition: \"opacity 0.24s ease-in-out\",\n      padding: 7,\n      \"&:focus\": {\n        outline: 0\n      }\n    },\n    \"&:hover button\": {\n      opacity: 1\n    }\n  },\n  noApplicants: {\n    color: \"#999\",\n    display: \"block\",\n    marginTop: 7\n  },\n  tableHeader: {\n    fontSize: 16,\n    fontWeight: 600,\n    paddingBottom: 10,\n    paddingTop: 15,\n    color: theme.palette.primary.main\n  },\n  tableLg: {\n    width: \"35%\",\n    minWidth: \"35%\",\n    maxWidth: \"35%\",\n    userSelect: \"none\"\n  },\n  tableMd: {\n    width: \"20%\",\n    minWidth: \"20%\",\n    maxWidth: \"20%\",\n    userSelect: \"none\"\n  },\n  shadow: {\n    boxShadow: \"rgb(0 0 0 / 55%) -4px -33px 15px -45px inset\"\n  },\n  loading: {\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    height: \"100%\",\n    padding: \"8px 0\",\n    \"& svg\": {\n      color: theme.palette.primary.main\n    }\n  },\n  noData: {\n    paddingInline: \"10px\",\n    textAlign: \"center\"\n  }\n}));\n","\"use strict\";\nimport { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n  recContainer: {\n    display: \"flex\"\n  },\n  recImage: {\n    borderRadius: \"100%\",\n    width: 45,\n    height: 45,\n    maxHeight: 45,\n    maxWidth: 45,\n    background: \"#DDDDDD\",\n    color: \"#000\",\n    fontSize: 16,\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\"\n  },\n  recDetails: {\n    marginLeft: 14,\n    display: \"flex\",\n    flexDirection: \"column\",\n    \"& h4\": {\n      fontSize: 15,\n      color: \"#000000\",\n      fontWeight: 400,\n      marginBottom: 4\n    },\n    \"& a\": {\n      fontWeight: \"600\",\n      color: theme.palette.primary.main,\n      textDecoration: \"none\",\n      fontSize: 14,\n      lineHeight: \"14px\"\n    }\n  },\n  meetingContainer: {\n    marginTop: 30,\n    paddingTop: 10,\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    justifyContent: \"flex-start\",\n    overflow: \"scroll\",\n    marginLeft: \"-1%\",\n    marginRight: \"-1%\"\n  },\n  container: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    width: \"31%\",\n    maxWidth: \"31%\",\n    borderRadius: 6,\n    marginBottom: 30,\n    marginLeft: \"1%\",\n    marginRight: \"1%\",\n    boxShadow: \"0px 0px 6px 0px rgba(0,0,0,0.16)\",\n    \"&:hover\": {\n      cursor: \"pointer\",\n      transform: \"translateY(-2px)\",\n      boxShadow: \"0px 0px 6px 2px rgba(0,0,0,0.16)\"\n    },\n    \"&:active\": {\n      transform: \"translateY(-1px)\",\n      boxShadow: \"0px 0px 6px 0px rgba(0,0,0,0.14)\"\n    }\n  },\n  content: {\n    display: \"flex\",\n    flexGrow: 1,\n    flexDirection: \"column\",\n    padding: \"40px 20px\",\n    alignItems: \"flex-start\",\n    borderRadius: 6,\n    borderTopWidth: 6,\n    borderStyle: \"solid\",\n    borderTopColor: \"#DDD\"\n  },\n  name: {\n    fontSize: 21,\n    color: \"#000\",\n    userSelect: \"none\"\n  },\n  details: {\n    color: \"#939393\",\n    fontSize: 16,\n    marginBottom: 8,\n    userSelect: \"none\"\n  },\n  booking: {\n    fontWeight: 600,\n    color: `${theme.palette.secondary.main} !important`,\n    fontSize: 14,\n    userSelect: \"none\"\n  },\n  footer: {\n    borderTop: \"1px solid #DDDDDD\",\n    padding: \"10px 26px\",\n    display: \"flex\",\n    justifyContent: \"space-between\"\n  },\n  copyButton: {\n    fontWeight: 400,\n    fontSize: 10,\n    padding: \"4px 10px !important\"\n  },\n  editButton: {\n    fontWeight: 400,\n    border: `1px solid ${theme.palette.secondary.main}`,\n    borderRadius: 20,\n    fontSize: 10,\n    background: \"#FFF\",\n    padding: \"4px 10px !important\"\n  },\n  shadow: {\n    boxShadow: \"rgb(0 0 0 / 55%) -4px -33px 15px -45px inset\"\n  },\n  loading: {\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    height: \"100%\"\n  },\n  noEvents: {\n    color: \"#999\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    flex: 1\n  }\n}));\n","\"use strict\";\nimport { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n  container: {\n    display: \"flex\",\n    width: \"100%\",\n    height: \"100%\",\n    paddingBottom: 8,\n    \"& > div\": {\n      width: \"50%\",\n      display: \"flex\",\n      flexDirection: \"column\",\n      \"&:first-child\": {\n        borderRight: \"1px solid #EBF1F3\",\n        zIndex: 3\n      }\n    }\n  },\n  templateContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    overflowY: \"scroll\",\n    \"& > div\": {\n      fontSize: 16,\n      padding: \"16px 60px\",\n      \"&:hover\": {\n        background: \"#F4F8F9\",\n        cursor: \"pointer\",\n        userSelect: \"none\"\n      }\n    }\n  },\n  noTemplates: {\n    color: \"#999\",\n    paddingRight: \"60px\",\n    \"& span\": {\n      color: theme.palette.primary.main,\n      fontWeight: 600\n    }\n  },\n  noPreview: {\n    margin: \"auto\",\n    color: \"#cdcdcd\",\n    fontWeight: 600,\n    fontSize: \"20px\"\n  },\n  selected: {\n    background: \"#EBF1F3\",\n    fontWeight: 600,\n    color: theme.palette.primary.main\n  },\n  templateView: {\n    overflowY: \"scroll\",\n    padding: \"10px 0px 0px 40px\"\n  },\n  loading: {\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    height: \"100%\",\n    padding: \"8px 0\",\n    \"& svg\": {\n      color: theme.palette.primary.main\n    }\n  },\n  formLabelWrapper: {\n    marginTop: 27,\n    marginBottom: 8,\n    color: \"#939393\",\n    fontSize: \"14\",\n    display: \"flex\"\n  },\n  textEditor: {\n    borderRadius: 6,\n    border: \"1px solid #DDDDDD\",\n    overflowY: \"scroll\"\n  },\n  textEditorToolbar: {\n    position: \"sticky\",\n    top: 0,\n    display: \"flex\",\n    flexDirection: \"row\",\n    background: \"#DDDDDD\",\n    padding: \"10px 15px 6px\",\n    \"& .rdw-inline-wrapper\": {\n      display: \"flex\",\n      flexDirection: \"row\"\n    },\n    \"& .rdw-list-wrapper\": {\n      display: \"flex\",\n      flexDirection: \"row\"\n    },\n    \"& .rdw-text-align-wrapper\": {\n      display: \"flex\",\n      flexDirection: \"row\"\n    },\n    \"& .rdw-link-wrapper\": {\n      display: \"flex\",\n      flexDirection: \"row\",\n      position: \"relative\",\n      \"& .rdw-link-modal\": {\n        display: \"grid\",\n        position: \"absolute\",\n        background: \"lightgrey\",\n        padding: \"10px\",\n        marginTop: \"1.75rem\",\n        \"& label\": {\n          padding: \"10px 0\"\n        },\n        \"& button\": {\n          marginRight: \"1rem\"\n        },\n        \"& #openLinkInNewWindow\": {\n          marginRight: \"0.5rem\"\n        }\n      }\n    },\n    \"& .rdw-image-wrapper\": {\n      flexDirection: \"row\",\n      position: \"relative\",\n      \"& .rdw-image-modal\": {\n        display: \"grid\",\n        position: \"absolute\",\n        background: \"lightgrey\",\n        padding: \"10px\",\n        marginTop: \"1.75rem\",\n        minWidth: 200,\n        \"& label\": {\n          padding: \"10px 0\"\n        },\n        \"& button\": {\n          marginRight: \"1rem\"\n        },\n        \"& .rdw-image-modal-url-input\": {\n          width: \"calc(100% - 20px)\"\n        },\n        \"& .rdw-image-modal-size\": {\n          marginTop: 10,\n          marginBottom: 10\n        },\n        \"& .rdw-image-modal-size-input\": {\n          width: 60\n        }\n      }\n    },\n    \"& .rdw-option-wrapper\": {\n      padding: \"5px 5px 5px 5px\",\n      height: \"1.75rem\",\n      backgroundColor: \"transparent\",\n      cursor: \"pointer\"\n    },\n    \"& .rdw-option-active \": {\n      backgroundColor: \"darkgrey\"\n    }\n  },\n  textEditorBody: {\n    height: 300,\n    padding: 20,\n    \"&:hover\": {\n      cursor: \"text\"\n    },\n    \"& ul\": {\n      paddingLeft: 20\n    },\n    \"& li\": {\n      listStyle: \"disc\"\n    },\n    \"& .rdw-center-aligned-block *\": {\n      textAlign: \"center !important\"\n    },\n    \"& .rdw-left-aligned-block *\": {\n      textAlign: \"left !important\"\n    },\n    \"& .rdw-right-aligned-block *\": {\n      textAlign: \"right !important\"\n    }\n  }\n}));\n","\"use strict\";\nimport { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n  recContainer: {\n    display: \"flex\"\n  },\n  recImage: {\n    borderRadius: \"100%\",\n    width: 45,\n    height: 45,\n    maxHeight: 45,\n    maxWidth: 45,\n    background: \"#DDDDDD\",\n    color: \"#000\",\n    fontSize: 16,\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\"\n  },\n  recDetails: {\n    marginLeft: 14,\n    display: \"flex\",\n    flexDirection: \"column\",\n    \"& h4\": {\n      fontSize: 15,\n      color: \"#000000\",\n      fontWeight: 400,\n      marginBottom: 4\n    },\n    \"& a\": {\n      fontWeight: \"600\",\n      color: theme.palette.primary.main,\n      textDecoration: \"none\",\n      fontSize: 14,\n      lineHeight: \"14px\"\n    }\n  },\n  overviewContainer: {\n    display: \"flex\",\n    justifyContent: \"space-around\",\n    alignItems: \"baseline\",\n    paddingTop: \"10%\"\n  },\n  overviewItem: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    maxWidth: \"26%\",\n    minWidth: \"26%\",\n    height: \"100%\",\n    \"& svg\": {\n      color: theme.palette.primary.main,\n      height: 36,\n      width: 36,\n      marginBottom: 14\n    }\n  },\n  overviewTitle: {\n    fontSize: 24,\n    marginBottom: 8\n  },\n  overviewDescription: {\n    color: \"#939393\",\n    fontSize: 18,\n    marginBottom: 10\n  },\n  overviewLink: {\n    color: theme.palette.secondary.main,\n    fontWeight: 600,\n    marginTop: \"auto\",\n    \"&:hover\": {\n      cursor: \"pointer\",\n      userSelect: \"none\"\n    }\n  }\n}));\n","\"use strict\";\nimport Modal from \"./Modal\";\nexport default Modal;\n","\"use strict\";\nimport { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n  root: {\n    display: \"flex\",\n    backgroundColor: \"white\",\n    flexDirection: \"column\",\n    width: \"100%\",\n    padding: \"50px 60px 20px 60px\",\n    minHeight: 630,\n    maxHeight: 630,\n    height: 630,\n    \"& h4\": {\n      marginTop: 0,\n      color: \"#004E70\",\n      fontSize: 26,\n      fontWeight: 700,\n      marginBottom: 30\n    }\n  },\n  buttonContainer: {\n    marginTop: \"auto\",\n    paddingTop: 30,\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    \"& button\": {\n      padding: \"12px 26px\",\n      color: \"#FFF\",\n      minHeight: 50,\n      marginLeft: 12\n    },\n    \"&.move-z\": {\n      marginBottom: -20,\n      paddingBottom: 20,\n      zIndex: 2,\n      background: \"linear-gradient(rgba(255,255,255,0), rgba(255,255,255,0.5), rgba(255,255,255,1), rgba(255,255,255,1))\"\n    }\n  },\n  progressBar: {\n    transition: \"width 0.2s ease-in-out\",\n    height: 8,\n    backgroundColor: theme.palette.secondary.main\n  }\n}));\n","\"use strict\";\nimport { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n  root: {\n    backgroundColor: \"#FFF\"\n  },\n  container: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    width: \"100%\",\n    padding: \"30px 0\",\n    margin: \"30px 0\",\n    position: \"relative\",\n    fontSize: 16,\n    \"&:not(:last-child) > div:after\": {\n      content: '\"\"',\n      display: \"block\",\n      position: \"absolute\",\n      width: \"200%\",\n      height: 1,\n      backgroundColor: \"#DDD\",\n      bottom: 0\n    },\n    \"&:last-child > div\": {\n      marginBottom: 5\n    }\n  },\n  detailsTop: {\n    display: \"flex\",\n    alignItems: \"center\",\n    \"& > div\": {\n      flexBasis: \"25%\"\n    }\n  },\n  date: {\n    display: \"flex\",\n    maxWidth: \"30%\"\n  },\n  dateDot: {\n    width: 26,\n    height: 26,\n    backgroundColor: theme.palette.primary.main,\n    borderRadius: \"100%\",\n    marginRight: 20\n  },\n  details: {\n    fontSize: 15,\n    \"& h4\": {\n      marginTop: 0,\n      fontSize: 15\n    },\n    \"& > div\": {\n      display: \"flex\",\n      \"& span:last-child\": {\n        marginLeft: 6,\n        fontWeight: 600\n      }\n    }\n  },\n  detailsButton: {\n    display: \"flex\",\n    cursor: \"pointer\",\n    userSelect: \"none\"\n  },\n  detailsBottom: {\n    display: \"flex\",\n    marginTop: 20,\n    \"& > div\": {\n      flexBasis: \"25%\",\n      \"&:first-child\": {\n        display: \"flex\",\n        flexDirection: \"column\",\n        padding: \"0 6% 0 20px\",\n        \"& button\": {\n          margin: \"6px 15px\"\n        }\n      },\n      \"& > span\": {\n        marginTop: 40,\n        display: \"block\",\n        color: \"#939393\"\n      }\n    }\n  },\n  buttonRedLight: {\n    padding: \"14px 30px\",\n    background: theme.palette.error.light,\n    color: theme.palette.error.main,\n    \"&:hover\": {\n      background: \"#fffafa\"\n    }\n  },\n  divider: {\n    height: 1,\n    width: \"100%\",\n    backgroundColor: \"#E5E7EB\",\n    margin: \"20px 0\",\n    \"& ~ button\": {\n      margin: \"6px 0 !important\"\n    }\n  },\n  buttonOutline: {\n    backgroundColor: \"#FFF\",\n    border: \"1px solid #E5E7EB\",\n    color: \"#666666\",\n    \"&:hover\": {\n      backgroundColor: \"#fbfbfb\"\n    }\n  },\n  expandDetailItem: {\n    paddingBottom: 15,\n    \"& div\": {\n      color: \"#939393\",\n      marginBottom: 4\n    }\n  }\n}));\n","\"use strict\";\nexport const TYPES = [\"Upcoming\", \"Past\", \"Date Range\"];\nexport const FILTERS = [{\n  key: \"status\",\n  name: \"Status\",\n  default_text: \"Active\"\n}];\n","\"use strict\";\nimport ScheduledEvents from \"./ScheduledEvents\";\nexport default ScheduledEvents;\n","\"use strict\";\nimport { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n  root: {\n    backgroundColor: \"#FFF\",\n    borderRadius: 8,\n    padding: \"70px 80px\",\n    paddingBottom: 0,\n    height: \"88vh\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    position: \"relative\"\n  },\n  header: {\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    \"& h4\": {\n      fontSize: 34,\n      color: \"#666666\",\n      fontWeight: \"700\",\n      marginTop: 0\n    }\n  },\n  actions: {\n    display: \"flex\",\n    fontSize: 16,\n    alignItems: \"flex-end\",\n    marginTop: 30,\n    borderBottom: \"1px solid #EEEEEE\"\n  },\n  type: {\n    color: \"#DDDDDD\",\n    position: \"relative\",\n    display: \"flex\",\n    alignItems: \"center\",\n    height: 60,\n    columnGap: 40,\n    \"& > span\": {\n      display: \"flex\",\n      alignItems: \"center\",\n      cursor: \"pointer\",\n      \"&:hover\": {\n        userSelect: \"none\"\n      }\n    }\n  },\n  datePopover: {\n    marginTop: 10,\n    padding: 20,\n    display: \"flex\",\n    alignItems: \"center\",\n    flexDirection: \"column\",\n    \"& .DayPicker-Weekday abbr\": {\n      fontSize: \"0.85rem\",\n      color: \"#939393\",\n      textDecoration: \"none\"\n    },\n    \"& .DayPicker-Caption\": {\n      color: \"#004665\",\n      fontWeight: \"600\",\n      marginBottom: 15,\n      fontSize: 17\n    },\n    \"& .DayPicker-Day\": {\n      borderRadius: 100,\n      padding: 0,\n      border: 0,\n      width: 40,\n      height: 40\n    },\n    \" & .DayPicker-Month\": {\n      display: \"block !important\"\n    },\n    \"& .DayPicker-Day--event\": {\n      backgroundColor: \"#EEFBFB\"\n    },\n    \"& .DayPicker-Day--highlighted\": {\n      backgroundColor: \"#EEFBFB\",\n      color: \"#15C7C0\"\n    },\n    \"& .DayPicker-Day--today\": {\n      color: \"black\"\n    },\n    \"& .DayPicker-Day--selected\": {\n      backgroundColor: \"#15C7C0 !important\",\n      color: \"white !important\"\n    },\n    \"& .DayPicker-wrapper\": {\n      paddingTop: \"0.5rem\",\n      fontSize: \"0.85rem\",\n      paddingBottom: \"0\",\n      \"& .DayPicker-NavButton\": {\n        width: \"1rem\",\n        height: \"1rem\"\n      },\n      \"& .DayPicker-Day--disabled\": {\n        backgroundColor: \"white\",\n        pointerEvents: \"none\"\n      }\n    },\n    \"& .DayPicker-Day--outside\": {\n      opacity: 0\n    },\n    \"& .DayPicker-Day--selected:not(.DayPicker-Day--start):not(.DayPicker-Day--end):not(.DayPicker-Day--outside)\": {\n      backgroundColor: `${theme.palette.secondary.light} !important`,\n      color: `${theme.palette.secondary.main} !important`\n    }\n  },\n  dateSelect: {\n    color: \"#084d6d\",\n    borderWidth: 2,\n    borderStyle: \"solid\",\n    borderColor: \"#E5E7EB\",\n    padding: \"6px 16px\",\n    fontSize: \"14px\",\n    fontWeight: 600,\n    marginLeft: \"-12px\",\n    borderRadius: 10,\n    letterSpacing: \"0.1px\",\n    opacity: 0,\n    transition: \"opacity 0.25s cubic-bezier(.6,.36,.25,1), transform 0.25s cubic-bezier(.6,.36,.25,1)\",\n    transform: \"translateX(-30px)\",\n    \"& em\": {\n      color: \"#babdc3\"\n    },\n    \"&.visible\": {\n      transform: \"translateX(0px)\",\n      opacity: 1\n    },\n    \"&.active\": {\n      borderColor: theme.palette.secondary.main\n    },\n    \"&:hover\": {\n      borderColor: \"#d9dce3\",\n      cursor: \"pointer\",\n      userSelect: \"none\"\n    }\n  },\n  typeUnderline: {\n    position: \"absolute\",\n    height: 3,\n    borderRadius: 3,\n    backgroundColor: theme.palette.secondary.main,\n    bottom: -1.5,\n    transition: \"left 0.25s cubic-bezier(.6,.36,.25,1), width 0.25s cubic-bezier(.6,.36,.25,1)\"\n  },\n  activeType: {\n    color: theme.palette.primary.main,\n    fontWeight: 600\n  },\n  moreActions: {\n    marginLeft: \"auto\",\n    marginBottom: 6,\n    \"& button\": {\n      fontWeight: 400,\n      fontSize: 17,\n      \"& svg\": {\n        marginleft: 4,\n        width: \"1.2rem\"\n      }\n    }\n  },\n  eventPagination: {\n    marginTop: \"auto\",\n    alignSelf: \"flex-end\",\n    paddingRight: 90,\n    paddingBottom: 90,\n    position: \"absolute\",\n    bottom: 0,\n    right: 0,\n    zIndex: 10,\n    \"& button\": {\n      \"&:last-child\": {\n        marginLeft: 15\n      },\n      \"& svg\": {\n        width: \"0.8em\",\n        height: \"0.8em\"\n      }\n    }\n  },\n  eventHeader: {\n    fontWeight: 900,\n    fontSize: 19,\n    margin: \"60px 0 -15px\"\n  },\n  noEvents: {\n    marginTop: 30,\n    color: \"#999\",\n    fontSize: 20\n  },\n  eventContainer: {\n    overflowX: \"hidden\",\n    overflowY: \"scroll\",\n    flexBasis: \"100%\"\n  },\n  filters: {\n    marginTop: 20,\n    display: \"flex\",\n    \"& > div\": {\n      marginRight: 40,\n      cursor: \"pointer\",\n      userSelect: \"none\",\n      \"& > span\": {\n        color: \"#939393\"\n      },\n      \"& > div\": {\n        color: theme.palette.secondary.main,\n        marginTop: 6\n      }\n    }\n  },\n  loading: {\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    height: \"100%\",\n    padding: \"8px 0\"\n  },\n  filterWrapper: {\n    \"& .MuiInputBase-root\": {\n      height: \"3rem\",\n      borderRadius: \"0.3rem\",\n      border: \"1px solid grey\"\n    },\n    \"& .MuiInput-underline:before\": {\n      borderBottom: \"none !important\"\n    },\n    \"& .MuiInput-underline:after\": {\n      border: \"none !important\"\n    }\n  },\n  badAPIModalInner: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    position: \"absolute\",\n    top: \"50%\",\n    left: \"50%\",\n    transform: \"translate(-50%, -50%)\",\n    width: \"500px\",\n    height: \"400px\",\n    backgroundColor: \"white\",\n    borderRadius: \"8px\",\n    boxShadow: \"0px 0px 16px rgba(0, 0, 0, 0.2)\",\n    \"& h1\": {\n      fontSize: \"26px\",\n      color: \"rgb(102, 102, 102)\",\n      marginTop: \"0.5rem\"\n    }\n  }\n}));\n","\"use strict\";\nimport { theme } from \"../ThemeContext/ThemeObject\";\nexport const classes = {\n  subWidget: {\n    flex: \"40%\",\n    borderRadius: \"3px\",\n    height: \"120px\",\n    minWidth: \"524px\"\n  },\n  widgetBlockContainer: {\n    display: \"flex\",\n    height: \"100%\",\n    width: \"100%\",\n    columnGap: \"50px\"\n  },\n  widgetBlock: {\n    border: \"1px solid #E3E3E3\",\n    borderRadius: \"3px\",\n    position: \"relative\",\n    display: \"flex\",\n    justifyContent: \"flex-start\",\n    alignItems: \"center\",\n    paddingLeft: \"4%\",\n    width: \"50%\",\n    height: \"100%\"\n  },\n  widgetBlockText: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    alignItems: \"flex-start\",\n    rowGap: \"3px\",\n    marginLeft: \"25px\"\n  },\n  blockCount: {\n    fontSize: \"24px\",\n    color: theme.palette.primary.main,\n    fontWeight: \"bold\"\n  },\n  blockTitle: {\n    fontSize: \"16px\",\n    fontWeight: \"600\",\n    color: \"#333333\"\n  },\n  widgetBlockIcon: {\n    backgroundColor: \"#EDF2F5\",\n    padding: \"12px\",\n    borderRadius: \"16px\",\n    \"& svg\": {\n      color: theme.palette.primary.main,\n      fontSize: \"28px\"\n    }\n  }\n};\n","\"use strict\";\nfunction detectOperator(group) {\n  if (group.includes(\"AND\")) {\n    return \"AND\";\n  }\n  return \"OR\";\n}\nexport const booleanQueryToEditableArray = (booleanQuery) => {\n  const baseOperatorsRegex = /\\b(AND|OR|NOT)\\b/g;\n  const parenthesisContentRegex = new RegExp(\"(?<=\\\\().*?(?=\\\\))\", \"g\");\n  const matches = [...booleanQuery.match(parenthesisContentRegex) || []];\n  if (matches.length === 0) {\n    throw new Error(\"No valid groups found in the booleanQuery string\");\n  }\n  const baseOperators = [];\n  baseOperators.push(\"ROOT\");\n  const onlyBaseOperators = booleanQuery.replace(parenthesisContentRegex, \"\");\n  let match = baseOperatorsRegex.exec(onlyBaseOperators);\n  while (match !== null) {\n    baseOperators.push(match[0]);\n    match = baseOperatorsRegex.exec(onlyBaseOperators);\n  }\n  return matches.map((match2, index) => {\n    const group = match2.trim();\n    const operator = detectOperator(group);\n    const queryValues = group.split(new RegExp(`\\\\b${operator}\\\\b`, \"g\")).map((value) => value.trim());\n    return {\n      id: index,\n      baseOperator: baseOperators[index].trim(),\n      operator,\n      queryValues\n    };\n  });\n};\nexport const editableBooleanArrayToBooleanQuery = (editableBooleanArray) => {\n  return editableBooleanArray.map((obj, index) => {\n    const queryPart = `(${obj.queryValues.join(` ${obj.operator} `)})`;\n    if (index === 0) {\n      return queryPart;\n    }\n    return `${obj.baseOperator} ${queryPart}`;\n  }).join(\" \");\n};\n","\"use strict\";\nimport { searchInput } from \"../../NewUI/shared/styleClasses\";\nexport const classes = {\n  searchContainer: {\n    width: \"100%\",\n    position: \"relative\"\n  },\n  searchInput,\n  searchAdornment: {\n    padding: \"0px 0px 0px 14px\"\n  },\n  editBooleanIcon: {\n    zIndex: 2,\n    cursor: \"pointer\",\n    border: \"1px solid rgba(0, 0, 0, 0.26)\",\n    borderRadius: \"0px 6px 6px 0px\",\n    backgroundColor: \"#FFFFFF\",\n    width: \"69px\",\n    height: \"59.5px\",\n    transform: \"translate(14px, -2.5px)\",\n    \"& svg\": {\n      fontSize: \"30px\",\n      color: \"#084D6D\"\n    },\n    \"&:hover\": {\n      backgroundColor: \"rgb(245 245 245)\",\n      borderColor: \"#DADEE0\"\n    },\n    \"&:focus\": {\n      outline: \"none\"\n    }\n  },\n  tlpMatch: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\",\n    fontWeight: 700,\n    color: \"#4E4EC7\",\n    backgroundColor: \"#dfdff6\",\n    width: \"200px\",\n    borderRadius: \"4.8px 0px 0px 4.8px\",\n    height: \"57.5px\",\n    textTransform: \"none\",\n    zIndex: 2,\n    transform: \"translate(-13px, -2.5px)\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    cursor: \"pointer\",\n    \"&:hover\": {\n      backgroundColor: \"#e6e6f7\"\n    },\n    \"&:focus\": {\n      outline: \"none\",\n      backgroundColor: \"#e6e6f7\"\n    }\n  },\n  searchTooltip: {\n    position: \"absolute\",\n    top: \"-22px\",\n    left: \"8px\",\n    backgroundColor: \"#FFFFFF\",\n    color: \"#000000\",\n    border: \"1px solid #DDDDDD\",\n    borderRadius: \"6px\",\n    padding: \"4px 10px\",\n    fontSize: \"14px\",\n    fontFamily: \"Source Sans Pro\"\n  },\n  booleanEditorContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    width: \"100%\",\n    rowGap: \"36px\",\n    padding: \"0 0 20px 20px\"\n  },\n  booleanEditorRow: {\n    display: \"flex\",\n    position: \"relative\",\n    border: \"2px solid #DDDDDD\",\n    borderRadius: \"6px\",\n    padding: \"10px\"\n  },\n  booleanEditorValuesContainer: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    alignItems: \"center\",\n    height: \"100%\",\n    width: \"100%\",\n    gap: \"20px\"\n  },\n  booleanEditorValue: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"16px\",\n    fontWeight: 700,\n    color: \"#AFBCFF\",\n    backgroundColor: \"#2D388D\",\n    height: \"33px\",\n    width: \"fit-content\",\n    borderRadius: \"28px\",\n    display: \"flex\",\n    alignItems: \"center\",\n    padding: \"0 2px 0 16px\"\n  },\n  booleanEditorRemoveValueButton: {\n    color: \"#AFBCFF\",\n    \"& svg\": {\n      fontSize: \"16px\"\n    },\n    \"&:focus\": {\n      outline: \"none\"\n    }\n  },\n  booleanEditorAddButton: {\n    backgroundColor: \"#FFFFFF\",\n    color: \"#2D388D\",\n    border: \"1px solid #2D388D\",\n    borderRadius: \"6px\",\n    width: \"50px\",\n    height: \"33px\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\"\n  },\n  booleanEditorRemoveRowButtonContainer: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    height: \"100%\"\n  },\n  booleanEditorRemoveRowButton: {\n    color: \"#2D388D\"\n  },\n  booleanEditorOperatorContainer: {\n    position: \"absolute\",\n    left: \"-12px\",\n    top: \"-26px\"\n  },\n  booleanEditorOperatorGroup: {\n    \"& .MuiToggleButton-root.Mui-selected\": {\n      backgroundColor: \"#2D388D\",\n      color: \"#AFBCFF\",\n      \"&:hover\": {\n        backgroundColor: \"#2D388D\"\n      }\n    }\n  },\n  booleanEditorOperatorButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"16px\",\n    fontWeight: 700,\n    color: \"#BBBBBB\",\n    backgroundColor: \"#FFFFFF\",\n    height: \"30px\",\n    width: \"45px\",\n    display: \"flex\",\n    alignItems: \"center\",\n    padding: \"0 6px 0 6px\",\n    borderRadius: \"6px\",\n    \"&:hover\": {\n      backgroundColor: \"#EFEFEF\",\n      color: \"#AFBCFF\"\n    }\n  },\n  booleanEditorValueInput: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"16px\",\n    fontWeight: 700,\n    color: \"#2D388D\",\n    backgroundColor: \"#FFFFFF\",\n    height: \"30px\",\n    minWidth: \"40px\",\n    display: \"flex\",\n    alignItems: \"center\",\n    paddingLeft: \"12px\",\n    borderRadius: \"28px\",\n    border: \"1px solid #2D388D\"\n  }\n};\n","\"use strict\";\nimport { theme } from \"../ThemeContext/ThemeObject\";\nexport function getStatusColor(priority) {\n  switch (priority) {\n    case \"Sent\":\n      return [theme.palette.success.main, theme.palette.opaque.green];\n    case \"Failed\":\n      return [theme.palette.error.main, theme.palette.opaque.red];\n    case \"Delivered\":\n      return [theme.palette.secondary.medium, theme.palette.opaque.blue];\n    case \"Not Yet Delivered\":\n      return [theme.palette.secondary.yellow, theme.palette.opaque.yellow];\n    case \"Opened\":\n      return [theme.palette.secondary.purple, theme.palette.opaque.purple];\n    case \"Clicked\":\n      return [theme.palette.secondary.pink, theme.palette.opaque.pink];\n    case \"Bounced\":\n      return [theme.palette.error.main, theme.palette.opaque.red];\n    case \"Unsubscribed\":\n      return [theme.palette.secondary.darkBlue, theme.palette.opaque.darkBlue];\n    default:\n      return [theme.palette.success.main, theme.palette.opaque.green];\n  }\n}\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { searchTableColumns, actionDrawerModals } from \"./config\";\nimport { initialSearchFilters } from \"./AISearch/SearchFilters\";\nimport {\n  addSelected,\n  removeSelected,\n  addAllPageItems,\n  removeAllPageItems\n} from \"../NewUI/Components/GenericTable/tableHelper\";\nimport moment from \"moment\";\nexport const initialEngageState = {\n  selectedTab: 0,\n  indicatorWidth: 0,\n  snackbarState: {\n    message: \"\",\n    state: \"success\"\n  },\n  searchQuery: \"\",\n  booleanQuery: null,\n  searchType: \"none\",\n  searchSettings: {\n    page: 1,\n    limit: 10,\n    sort: \"last_applied_on\",\n    sort_order: \"desc\"\n  },\n  searchFilters: {},\n  tempSearchFilters: initialSearchFilters,\n  searchTable: {\n    canScroll: [false, true],\n    tableHovered: false,\n    density: \"Default\",\n    columns: searchTableColumns,\n    selectedItemIds: [],\n    selectedItems: [],\n    actions: {\n      selectedItem: null,\n      anchorEl: null,\n      isOpen: {\n        addNote: false,\n        viewAttachments: false,\n        moreOptions: false,\n        email: false,\n        candidatePool: false\n      }\n    },\n    modalsOpen: actionDrawerModals.reduce((acc, { id }) => {\n      acc[id] = false;\n      return __spreadProps(__spreadValues({}, acc), { exportCsv: false, addSearch: false, candidatePool: false });\n    }, {})\n  },\n  dateFieldRange: {\n    from: null,\n    to: null\n  },\n  tlpMatchModalState: {\n    open: false,\n    step: \"select\",\n    isEditing: false,\n    editableBooleanQuery: \"\",\n    selectedTLP: {\n      id: -1,\n      name: \"\",\n      html: \"\"\n    },\n    jobsList: {\n      data: [],\n      isLoading: false\n    }\n  }\n};\nexport const engageReducer = (state, action) => {\n  switch (action.type) {\n    case \"SET_SELECTED_TAB\":\n      return __spreadProps(__spreadValues({}, state), {\n        selectedTab: action.payload\n      });\n    case \"SET_INDICATOR_WIDTH\": {\n      if (action.payload === void 0) {\n        return state;\n      } else {\n        return __spreadProps(__spreadValues({}, state), {\n          indicatorWidth: action.payload - (state.indicatorWidth ? 32 : 37)\n        });\n      }\n    }\n    case \"SET_SNACKBAR\":\n      return __spreadProps(__spreadValues({}, state), {\n        snackbarState: action.payload\n      });\n    case \"SET_SEARCH_QUERY\":\n      return __spreadProps(__spreadValues({}, state), {\n        searchQuery: action.payload\n      });\n    case \"EDIT_BOOLEAN_QUERY\":\n      return __spreadProps(__spreadValues({}, state), {\n        tlpMatchModalState: __spreadProps(__spreadValues({}, state.tlpMatchModalState), {\n          isEditing: true,\n          open: true,\n          editableBooleanQuery: state.booleanQuery,\n          step: \"edit\"\n        })\n      });\n    case \"CANCEL_EDIT_BOOLEAN_QUERY\":\n      return __spreadProps(__spreadValues({}, state), {\n        tlpMatchModalState: __spreadProps(__spreadValues({}, state.tlpMatchModalState), {\n          isEditing: false,\n          open: false,\n          editableBooleanQuery: \"\"\n        })\n      });\n    case \"SET_EDITABLE_BOOLEAN_QUERY\":\n      return __spreadProps(__spreadValues({}, state), {\n        tlpMatchModalState: __spreadProps(__spreadValues({}, state.tlpMatchModalState), {\n          editableBooleanQuery: action.payload\n        })\n      });\n    case \"CONFIRM_STRING_MATCH_SEARCH\":\n      return __spreadProps(__spreadValues({}, state), {\n        booleanQuery: action.payload,\n        searchType: \"string_match\"\n      });\n    case \"CONFIRM_EDIT_BOOLEAN_QUERY\":\n      return __spreadProps(__spreadValues({}, state), {\n        booleanQuery: action.payload,\n        searchType: state.tlpMatchModalState.isEditing ? state.searchType : \"tlp_match\",\n        tlpMatchModalState: __spreadProps(__spreadValues({}, state.tlpMatchModalState), {\n          open: false,\n          isEditing: false\n        })\n      });\n    case \"CLEAR_SEARCH\":\n      return __spreadProps(__spreadValues({}, state), {\n        booleanQuery: null,\n        searchType: \"none\",\n        searchQuery: \"\"\n      });\n    case \"SET_CAN_SCROLL\":\n      return __spreadProps(__spreadValues({}, state), {\n        searchTable: __spreadProps(__spreadValues({}, state.searchTable), {\n          canScroll: action.payload\n        })\n      });\n    case \"SET_TABLE_HOVERED\":\n      return __spreadProps(__spreadValues({}, state), {\n        searchTable: __spreadProps(__spreadValues({}, state.searchTable), {\n          tableHovered: action.payload\n        })\n      });\n    case \"OPEN_TLP_MATCH_MODAL\":\n      return __spreadProps(__spreadValues({}, state), {\n        tlpMatchModalState: __spreadProps(__spreadValues({}, initialEngageState.tlpMatchModalState), {\n          step: \"select\",\n          open: true\n        })\n      });\n    case \"CLOSE_TLP_MATCH_MODAL\":\n      return __spreadProps(__spreadValues({}, state), {\n        tlpMatchModalState: __spreadProps(__spreadValues({}, state.tlpMatchModalState), {\n          open: false\n        })\n      });\n    case \"SET_TLP_MATCH_MODAL_STEP\":\n      return __spreadProps(__spreadValues({}, state), {\n        tlpMatchModalState: __spreadProps(__spreadValues({}, state.tlpMatchModalState), {\n          step: action.payload\n        })\n      });\n    case \"SET_JOBS_LIST_LOADING\":\n      return __spreadProps(__spreadValues({}, state), {\n        tlpMatchModalState: __spreadProps(__spreadValues({}, state.tlpMatchModalState), {\n          jobsList: __spreadProps(__spreadValues({}, state.tlpMatchModalState.jobsList), {\n            isLoading: true\n          })\n        })\n      });\n    case \"SET_JOBS_LIST\":\n      return __spreadProps(__spreadValues({}, state), {\n        tlpMatchModalState: __spreadProps(__spreadValues({}, state.tlpMatchModalState), {\n          jobsList: __spreadProps(__spreadValues({}, state.tlpMatchModalState.jobsList), {\n            isLoading: false,\n            data: action.payload\n          })\n        })\n      });\n    case \"SET_SELECTED_TLP\":\n      return __spreadProps(__spreadValues({}, state), {\n        tlpMatchModalState: __spreadProps(__spreadValues({}, state.tlpMatchModalState), {\n          selectedTLP: action.payload\n        })\n      });\n    case \"ADD_SELECTED_ITEM\":\n      return __spreadProps(__spreadValues({}, state), {\n        searchTable: __spreadValues(__spreadValues({}, state.searchTable), addSelected(\n          state.searchTable.selectedItems,\n          state.searchTable.selectedItemIds,\n          action.payload\n        ))\n      });\n    case \"REMOVE_SELECTED_ITEM\":\n      return __spreadProps(__spreadValues({}, state), {\n        searchTable: __spreadValues(__spreadValues({}, state.searchTable), removeSelected(\n          state.searchTable.selectedItems,\n          state.searchTable.selectedItemIds,\n          action.payload\n        ))\n      });\n    case \"ADD_ALL_PAGE_ITEMS\":\n      return __spreadProps(__spreadValues({}, state), {\n        searchTable: __spreadValues(__spreadValues({}, state.searchTable), addAllPageItems(state.searchTable.selectedItems, action.payload))\n      });\n    case \"REMOVE_ALL_SELECTED_ITEMS\":\n      return __spreadProps(__spreadValues({}, state), {\n        searchTable: __spreadProps(__spreadValues({}, state.searchTable), {\n          selectedItemIds: [],\n          selectedItems: []\n        })\n      });\n    case \"REMOVE_ALL_PAGE_ITEMS\":\n      return __spreadProps(__spreadValues({}, state), {\n        searchTable: __spreadValues(__spreadValues({}, state.searchTable), removeAllPageItems(state.searchTable.selectedItems, action.payload))\n      });\n    case \"SELECT_ALL_ITEMS\":\n      return __spreadProps(__spreadValues({}, state), {\n        searchTable: __spreadProps(__spreadValues({}, state.searchTable), {\n          selectedItemIds: action.payload\n        })\n      });\n    case \"SET_COUNTRIES_DATA\":\n      return __spreadProps(__spreadValues({}, state), {\n        countriesData: action.payload\n      });\n    case \"SET_DENSITY\":\n      return __spreadProps(__spreadValues({}, state), {\n        searchTable: __spreadProps(__spreadValues({}, state.searchTable), {\n          density: action.payload\n        })\n      });\n    case \"SET_SORT\":\n      return __spreadProps(__spreadValues({}, state), {\n        searchSettings: __spreadProps(__spreadValues({}, state.searchSettings), {\n          sort: action.payload.sortBy,\n          sort_order: action.payload.sortOrder\n        })\n      });\n    case \"SET_COLUMNS\":\n      return __spreadProps(__spreadValues({}, state), {\n        searchTable: __spreadProps(__spreadValues({}, state.searchTable), {\n          columns: action.payload\n        })\n      });\n    case \"SET_PAGE\":\n      return __spreadProps(__spreadValues({}, state), {\n        searchSettings: __spreadProps(__spreadValues({}, state.searchSettings), {\n          page: action.payload\n        })\n      });\n    case \"SET_LIMIT\":\n      return __spreadProps(__spreadValues({}, state), {\n        searchSettings: __spreadProps(__spreadValues({}, state.searchSettings), {\n          limit: action.payload\n        })\n      });\n    case \"SET_TEMP_FILTERS\":\n      return __spreadProps(__spreadValues({}, state), {\n        tempSearchFilters: __spreadValues(__spreadValues({}, state.tempSearchFilters), action.payload)\n      });\n    case \"SET_DATE_RANGE_TEMP_FILTER\":\n      return __spreadProps(__spreadValues({}, state), {\n        tempSearchFilters: __spreadProps(__spreadValues({}, state.tempSearchFilters), {\n          date1: action.payload.from,\n          date2: action.payload.to\n        })\n      });\n    case \"SET_DATE_FIELD_RANGE\":\n      return __spreadProps(__spreadValues({}, state), {\n        dateFieldRange: action.payload\n      });\n    case \"SET_FILTERS\": {\n      const convertedFilters = Object.entries(state.tempSearchFilters).reduce(\n        (acc, [key, value]) => {\n          if (Array.isArray(value)) {\n            if (value.length > 0) {\n              if (key === \"country\" || key === \"state\") {\n                acc[key] = value.map((f) => f.name);\n              } else {\n                acc[key] = value[0].id ? value.map((f) => f.id) : value;\n              }\n            }\n          } else if (value) {\n            if (key === \"date1\" || key === \"date2\") {\n              acc[key] = moment(value).format(\"YYYY-MM-DD\");\n            } else {\n              acc[key] = value;\n            }\n          }\n          return acc;\n        },\n        {}\n      );\n      return __spreadProps(__spreadValues({}, state), {\n        searchFilters: convertedFilters\n      });\n    }\n    case \"RESET_FILTERS\":\n      return __spreadProps(__spreadValues({}, state), {\n        searchFilters: {},\n        tempSearchFilters: initialSearchFilters,\n        dateFieldRange: {\n          from: null,\n          to: null\n        }\n      });\n    case \"SELECT_ACTION_ITEM\":\n      return __spreadProps(__spreadValues({}, state), {\n        searchTable: __spreadProps(__spreadValues({}, state.searchTable), {\n          actions: __spreadProps(__spreadValues({}, state.searchTable.actions), {\n            selectedItem: action.payload.item,\n            anchorEl: action.payload.anchorEl,\n            isOpen: __spreadProps(__spreadValues({}, state.searchTable.actions.isOpen), {\n              [action.payload.name]: true\n            })\n          })\n        })\n      });\n    case \"CLOSE_ACTION_ITEM\":\n      return __spreadProps(__spreadValues({}, state), {\n        searchTable: __spreadProps(__spreadValues({}, state.searchTable), {\n          actions: __spreadProps(__spreadValues({}, state.searchTable.actions), {\n            selectedItem: null,\n            isOpen: __spreadProps(__spreadValues({}, state.searchTable.actions.isOpen), {\n              [action.payload]: false\n            })\n          })\n        })\n      });\n    case \"SET_ACTION_MODAL_OPEN\":\n      return __spreadProps(__spreadValues({}, state), {\n        searchTable: __spreadProps(__spreadValues({}, state.searchTable), {\n          modalsOpen: __spreadProps(__spreadValues({}, state.searchTable.modalsOpen), {\n            [action.payload.name]: action.payload.isOpen\n          })\n        })\n      });\n    default:\n      return state;\n  }\n};\n","\"use strict\";\nimport { theme } from \"../ThemeContext/ThemeObject\";\nexport const classes = {\n  pageContainer: {\n    fontFamily: theme.typography.fontFamily,\n    backgroundColor: \"#FFFFFF\",\n    padding: \"40px\"\n  },\n  pageHeader: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    width: \"100%\",\n    padding: \"0px 16px 26px 16px\",\n    \"& h1\": {\n      fontFamily: \"Source Sans Pro\",\n      fontWeight: \"bold\",\n      fontSize: \"38px\",\n      color: \"#666666\",\n      marginTop: \"0\"\n    }\n  },\n  tabsContainer: {\n    borderBottom: 1,\n    borderColor: \"#EEEEEE\",\n    margin: \"25px 0\"\n  },\n  tabs: {\n    \"& button\": {\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"18px\",\n      letterSpacing: \"0\",\n      color: \"#939393\",\n      textTransform: \"none\",\n      minWidth: \"unset\",\n      \"&:hover\": {\n        color: \"#737373\"\n      },\n      \"&:focus\": {\n        outline: \"none\"\n      }\n    },\n    \"& button.Mui-selected\": {\n      fontWeight: \"600\",\n      color: \"#084D6D\"\n    }\n  },\n  tabIndicator: {\n    backgroundColor: \"#5BC4BF\",\n    margin: \"0 16px\"\n  },\n  searchAndFiltersRow: {\n    display: \"flex\",\n    alignItems: \"flex-end\",\n    justifyContent: \"space-between\",\n    paddingBottom: \"30px\",\n    columnGap: \"17px\"\n  },\n  tlpMatchButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"16px\",\n    fontWeight: 700,\n    color: \"#4E4EC7\",\n    backgroundColor: \"rgba(78, 78, 199, 0.18)\",\n    width: \"146px\",\n    borderRadius: \"6px\",\n    height: \"60px\",\n    textTransform: \"none\",\n    \"&:hover\": {\n      backgroundColor: \"rgba(78, 78, 199, 0.14)\"\n    },\n    \"&:focus\": {\n      outline: \"none\",\n      backgroundColor: \"rgba(78, 78, 199, 0.14)\"\n    }\n  },\n  modal: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    padding: \"60px\",\n    maxWidth: \"1100px\",\n    width: \"100%\",\n    height: \"94vh\",\n    maxHeight: \"844px\",\n    borderRadius: \"6px\",\n    dropShadow: \"0px 2px 14px #305A6F29\",\n    position: \"absolute\",\n    background: \"#FFFFFF\",\n    top: \"50%\",\n    left: \"50%\",\n    transform: \"translate(-50%, -50%)\"\n  },\n  modalHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"38px\",\n    fontWeight: \"700\",\n    color: \"#2D388D\",\n    width: \"100%\",\n    paddingBottom: \"40px\"\n  },\n  modalFieldSubHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\",\n    fontWeight: \"600\",\n    color: \"#2D388D\",\n    marginBottom: \"16px\"\n  },\n  modalRow: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    width: \"100%\"\n  },\n  modalMainContentContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    width: \"100%\",\n    height: \"100%\",\n    rowGap: \"40px\",\n    overflowY: \"auto\"\n  },\n  autocomplete: {\n    \"& .MuiOutlinedInput-root\": {\n      borderRadius: \"6px\",\n      backgroundColor: \"#FFFFFF\",\n      color: \"#333333\",\n      border: \"1px solid #DDDDDD\",\n      fontSize: \"18px\",\n      padding: \"0 10px 0 10px !important\",\n      height: \"42px\",\n      width: \"80%\",\n      fontFamily: \"Source Sans Pro, sans-serif\",\n      textTransform: \"capitalize\",\n      \"&:focus\": {\n        borderColor: \"#2D388D\"\n      }\n    },\n    \"& .MuiOutlineInput-root:focus\": {\n      backgroundColor: \"#ffffff\",\n      borderRadius: \"6px\"\n    },\n    \"& fieldset\": {\n      display: \"none\"\n    },\n    \"& .MuiAutocomplete-popupIndicator\": {\n      color: \"#AAAAAA\",\n      marginRight: \"10px\",\n      transition: \"all 0.16s ease-in-out\"\n    }\n  },\n  selectJobPlaceholder: {\n    height: \"100%\",\n    width: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    rowGap: \"22px\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    \"& span\": {\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"20px\",\n      fontWeight: \"700\",\n      color: \"#AAAAAA\",\n      paddingBottom: \"100px\"\n    }\n  },\n  editBooleanStepHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"26px\",\n    fontWeight: \"600\",\n    color: \"#2D388D\",\n    paddingLeft: \"20px\",\n    width: \"100%\"\n  },\n  filtersContainer: {\n    paddingTop: \"4px\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    width: \"100%\",\n    rowGap: \"20px\"\n  },\n  toggleButton: {\n    padding: \"0px 14px !important\",\n    fontWeight: \"700\",\n    fontFamily: \"Source Sans Pro\",\n    color: \"#AAAAAA\",\n    fontSize: \"12px\",\n    borderRadius: \"12px\",\n    backgroundColor: \"#FFFFFF\",\n    textTransform: \"none\",\n    \"&.Mui-selected\": {\n      backgroundColor: `${theme.palette.primary.main} !important`,\n      color: `${theme.palette.action.main} !important`\n    },\n    \"&:focus\": {\n      outline: \"none\"\n    }\n  },\n  bigToggleButton: {\n    fontSize: \"18px\",\n    borderRadius: \"18px\"\n  },\n  widgetBlockIcon: {\n    backgroundColor: \"#EDF2F5\",\n    padding: \"12px\",\n    borderRadius: \"16px\",\n    \"& svg\": {\n      color: theme.palette.primary.main,\n      fontSize: \"28px\"\n    }\n  },\n  blockCount: {\n    fontSize: \"19px\",\n    color: theme.palette.primary.main,\n    fontWeight: \"bold\"\n  },\n  rowWidget: {\n    border: \"1px solid #E3E3E3\",\n    borderRadius: \"3px\",\n    position: \"relative\",\n    display: \"flex\",\n    justifyContent: \"flex-start\",\n    alignItems: \"center\",\n    paddingLeft: \"4%\"\n  },\n  widgetTextSubTitle: {\n    fontSize: \"16px\",\n    color: theme.palette.primary.main\n  },\n  widgetContentGridWrapper: {\n    margin: \"auto\",\n    padding: \"0 4% 0 8%\"\n  },\n  statusStatsWrapper: {\n    margin: \"0.5rem\",\n    padding: \"1.5rem\"\n  },\n  statusStatsWrapperMetrics: {\n    fontSize: \"18px\",\n    fontWeight: \"bold\"\n  }\n};\n","\"use strict\";\nconst BASE_URL = window.location.origin;\nimport { stringify } from \"query-string\";\nclass Api {\n  constructor() {\n    // handleResponse = (response) => {\n    //   if (response.ok) return response.text().then((data) => {\n    //     resolve(data ? JSON.parse(data) : {})\n    //   });\n    //   return response.text().then((error) => {\n    //     error.code = response.status;\n    //     throw error;\n    //   });\n    // }\n    this.get = (path, params = {}, headers = {}) => fetch(`${BASE_URL}${path}?${stringify(params || {})}`, {\n      headers: this.getHeaders(headers)\n    }).then((response) => {\n      return response.text();\n    }).then((data) => {\n      return data ? JSON.parse(data) : {};\n    });\n    this.post = (path, params = {}, headers = {}) => fetch(`${BASE_URL}${path}`, {\n      headers: this.getHeaders(headers),\n      method: \"POST\",\n      body: JSON.stringify(params)\n    }).then((response) => {\n      return response.text();\n    }).then((data) => {\n      return data ? JSON.parse(data) : {};\n    });\n    this.put = (path, params = {}, headers = {}) => fetch(`${BASE_URL}${path}`, {\n      headers: this.getHeaders(headers),\n      method: \"PUT\",\n      body: JSON.stringify(params)\n    }).then((response) => {\n      return response.text();\n    }).then((data) => {\n      return data ? JSON.parse(data) : {};\n    });\n    this.postLogin = (params) => this.post(`/api/v4/login`, params);\n    this.sendTwoFactor = () => this.post(`/api/v4/two_factor_auth/send_2fa_code`);\n    this.postTwoFactor = (param) => this.get(`/api/v4/two_factor_auth/authorize`, param);\n    this.postResetPassword = (params) => this.post(`/api/v4/reset_password`, params);\n    this.postSSOLogin = (params) => this.post(`/api/v4/sso`, params);\n    this.putUpdatePassword = (token, params) => this.put(`/api/v4/update_password/${token}`, params);\n  }\n  getHeaders(headers) {\n    return Object.assign({}, {\n      \"Content-Type\": \"application/json\"\n    }, headers);\n  }\n}\nexport default new Api();\n","\"use strict\";\nimport { theme } from \"../ThemeContext/ThemeObject\";\nexport const classes = {\n  pageContainer: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    width: \"100vw\",\n    height: \"100dvh\",\n    overflow: \"hidden\",\n    fontFamily: \"Source Sans Pro\"\n  },\n  loginFormContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    width: \"40vw\",\n    \"@media  screen and (max-width: 1024px)\": {\n      width: \"80%\",\n      height: \"50%\",\n      position: \"absolute\",\n      bottom: \"0px\",\n      background: \"white\",\n      borderRadius: \"25vw 0 25vw 0\",\n      zIndex: \"1\",\n      \"@media  screen and (max-width: 430px)\": {\n        width: \"100%\",\n        \"@media  screen and (max-height: 700px)\": {\n          height: \"60%\"\n        }\n      }\n    }\n  },\n  loginForm: {\n    position: \"relative\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    width: \"60%\",\n    \"& h1\": {\n      fontSize: \"38px\",\n      fontWeight: \"bold\",\n      color: theme.palette.primary.main,\n      marginBottom: \"28px\"\n    },\n    \"@media  screen and (max-width: 1024px)\": {\n      width: \"50%\",\n      height: \"90%\",\n      \"& h1\": {\n        fontSize: \"48px\"\n      },\n      \"@media  screen and (max-width: 430px)\": {\n        height: \"85%\",\n        width: \"65%\",\n        fontSize: \"14px\",\n        \"& h1\": {\n          fontSize: \"16px\",\n          marginBottom: \"14px\"\n        }\n      }\n    }\n  },\n  description: {\n    display: \"block\",\n    marginTop: \"20px\",\n    marginBottom: \"20px\",\n    \"& > span\": {\n      color: \"#999\"\n    }\n  },\n  errorMessage: {\n    position: \"relative\",\n    fontSize: \"16px\",\n    fontWeight: \"600\",\n    color: theme.palette.error.main,\n    padding: \"10px\",\n    transition: \"height 0.4s ease-in-out\",\n    \"@media  screen and (max-width: 430px)\": {\n      fontSize: \"12px\"\n    }\n  },\n  fadeIn: {\n    width: \"100%\",\n    position: \"absolute\",\n    visibility: \"visible\",\n    opacity: \"1\",\n    transition: \"visibility 0s linear 0s, opacity 500ms\",\n    zIndex: \"100\"\n  },\n  fadeOut: {\n    width: \"100%\",\n    position: \"absolute\",\n    visibility: \"hidden\",\n    opacity: \"0\",\n    transition: \"visibility 0s linear 300ms, opacity 500ms\"\n  },\n  errorIcon: {\n    color: theme.palette.error.main,\n    fontSize: \"14px\"\n  },\n  inputIcons: {\n    color: theme.palette.primary.main,\n    marginLeft: \"10px\",\n    \"@media  screen and (max-width: 430px)\": {\n      fontSize: \"20px\",\n      marginLeft: \"0\"\n    }\n  },\n  forgotPassword: {\n    width: \"100%\",\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    fontSize: \"12px\",\n    zIndex: 1e3,\n    color: theme.palette.primary.main,\n    \"@media  screen and (max-width: 430px)\": {\n      margin: \"8px 0px\"\n    }\n  },\n  loginButton: {\n    display: \"flex\",\n    gap: \"10px\",\n    fontFamily: \"Source Sans Pro\",\n    width: \"100%\",\n    height: \"56px\",\n    backgroundColor: theme.palette.action.main,\n    color: \"#ffffff\",\n    fontSize: \"16px\",\n    fontWeight: \"bold\",\n    textTransform: \"none\",\n    transition: \"all 250ms ease-in-out\",\n    margin: \"20px 0\",\n    \"&:hover\": {\n      filter: \"brightness(0.9)\",\n      backgroundColor: theme.palette.action.main,\n      color: \"#ffffff\"\n    },\n    \"&:disabled\": {\n      backgroundColor: \"#EEEEEE\",\n      color: \"#BBBBBB\",\n      transition: \"all 250ms ease-in-out\"\n    },\n    \"@media  screen and (max-width: 1024px)\": {\n      margin: \"0\",\n      \"@media  screen and (max-width: 430px)\": {\n        height: \"40px\"\n      }\n    }\n  },\n  singleSignOn: {\n    display: \"flex\",\n    justifyContent: \"center\",\n    width: \"100%\",\n    color: theme.palette.action.main,\n    marginTop: \"14px\",\n    fontSize: \"16px\",\n    fontWeight: \"bold\"\n  },\n  imageAndBlurbContainer: {\n    position: \"relative\",\n    width: \"60vw\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    backgroundRepeat: \"no-repeat\",\n    backgroundSize: \"cover\",\n    backgroundPosition: \"center\",\n    \"@media screen and (max-width: 1024px)\": {\n      width: \"100vw\",\n      zIndex: \"-2\"\n    }\n  },\n  blurb: {\n    maxWidth: \"65%\",\n    fontSize: \"54px\",\n    fontWeight: \"bold\",\n    color: \"#ffffff\",\n    paddingLeft: \"30px\",\n    paddingBottom: \"5vh\",\n    \"@media screen and (max-width: 1024px)\": {\n      visibility: \"hidden\"\n    }\n  },\n  infoPanel: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    position: \"absolute\",\n    bottom: \"0\",\n    left: \"38vw\",\n    borderRadius: \"6vw 0 6vw 0\",\n    width: \"36vw\",\n    height: \"30vh\",\n    fontSize: \"3vh\",\n    fontWeight: \"500\",\n    color: \"#ffffff\",\n    \"@media screen and (max-width: 1024px)\": {\n      position: \"absolute\",\n      bottom: \"auto\",\n      top: \"39dvh\",\n      left: \"auto\",\n      right: \"0\",\n      borderRadius: \"10vw 0 10vw 0\",\n      width: \"45vw\",\n      height: \"15vh\",\n      zIndex: \"3\",\n      \"@media  screen and (max-width: 430px)\": {\n        width: \"70vw\",\n        borderRadius: \"25vw 0 0 25vw\",\n        \"@media  screen and (max-height: 700px)\": {\n          top: \"30dvh\"\n        }\n      }\n    }\n  },\n  infoPanelText: {\n    maxWidth: \"24vw\",\n    \"@media screen and (max-width: 1024px)\": {\n      maxWidth: \"30vw\",\n      maxHeight: \"12vh\",\n      fontSize: \"1.8vh\",\n      \"@media  screen and (max-width: 430px)\": {\n        maxWidth: \"45vw\"\n      }\n    }\n  },\n  inputs: {\n    margin: \"16px 0px\",\n    \"@media  screen and (max-width: 430px)\": {\n      margin: \"8px 0px\"\n    },\n    \"& legend\": {\n      display: \"none\"\n    },\n    \"& fieldset\": {\n      top: \"-2px\"\n    },\n    \"& input\": {\n      paddingLeft: \"10px\",\n      \"@media  screen and (max-width: 430px)\": {\n        paddingLeft: \"0\"\n      }\n    }\n  },\n  inputLabel: {\n    left: \"45px\",\n    backgroundColor: \"#ffffff\",\n    padding: \"0 8px\",\n    color: theme.palette.primary.main,\n    fontFamily: \"Source Sans Pro\",\n    fontWeight: \"bold\",\n    \"& .Mui-focused\": {\n      color: theme.palette.primary.main\n    },\n    \"@media  screen and (max-width: 430px)\": {\n      left: \"25px\",\n      fontSize: \"14px\"\n    }\n  },\n  logoContainer: {\n    position: \"absolute\",\n    top: \"40px\",\n    left: \"40px\",\n    \"& img\": {\n      width: \"100px\",\n      \"@media  screen and (max-width: 1024px)\": {\n        width: \"40%\",\n        \"@media  screen and (max-width: 430px)\": {\n          width: \"20%\"\n        }\n      }\n    }\n  },\n  link: {\n    cursor: \"pointer\",\n    \"@media  screen and (max-width: 430px)\": {\n      fontSize: \"12px\"\n    },\n    \"& > div\": {\n      position: \"absolute\",\n      right: \"-26px\"\n    }\n  },\n  alert: {\n    position: \"absolute\",\n    top: \"-70px\",\n    maxWidth: \"300px\",\n    borderRadius: \"6px\",\n    backgroundColor: \"#FAFAFA\",\n    color: theme.palette.primary.main,\n    fontFamily: \"Source Sans Pro\",\n    \"& svg\": {\n      color: theme.palette.action.main\n    },\n    \"@media  screen and (max-width: 1024px)\": {\n      top: \"-200px\",\n      \"@media  screen and (max-width: 430px)\": {\n        top: \"-300px\",\n        \"@media  screen and (max-height: 700px)\": {\n          top: \"-200px\"\n        }\n      }\n    }\n  },\n  helpContainer: {\n    position: \"absolute\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    bottom: \"20px\",\n    left: \"40px\",\n    width: \"max-content\",\n    fontSize: \"15px\",\n    fontWeight: \"bold\",\n    cursor: \"pointer\",\n    color: theme.palette.primary.main,\n    zIndex: \"2\",\n    \"@media  screen and (max-width: 430px)\": {\n      left: \"30px\"\n    }\n  },\n  helpIcon: {\n    color: theme.palette.primary.main,\n    fontSize: \"20px\",\n    marginRight: \"8px\",\n    paddingBottom: \"1px\",\n    \"@media screen and (max-width: 1024px)\": {\n      fontSize: \"40px\",\n      \"@media  screen and (max-width: 430px)\": {\n        fontSize: \"20px\"\n      }\n    }\n  },\n  helpText: {\n    \"@media screen and (max-width: 1024px)\": {\n      visibility: \"hidden\"\n    }\n  }\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nimport RecruitApiClient from \"../../RecruitApiClient\";\nimport dayjs from \"dayjs\";\nclass Api {\n  constructor() {\n    this.getApplicationData = (jobId, applicationId, index) => RecruitApiClient.get(`/api/v4/jobs/${jobId}/applications/${applicationId}?i=${index}`, null);\n    this.getApplicationStatuses = (jobId) => RecruitApiClient.get(`/api/v4/jobs/${jobId}/job_application_statuses`, null);\n    this.updateApplicationStatus = (jobId, applicationId, statusId) => RecruitApiClient.put(\n      `/api/v4/jobs/${jobId}/applications/${applicationId}/application_status/${statusId}`\n    );\n    this.updateCandidateLinkedInURL = (candidateId, linkedInURL) => RecruitApiClient.put(`/api/v4/candidates/${candidateId}`, {\n      candidate: { linkedin_url: linkedInURL }\n    });\n    this.getJobsOptions = (jobId) => RecruitApiClient.get(`/api/v4/jobs/${jobId}/bulk_move_applications`, null);\n    this.moveApplication = (jobId, param) => RecruitApiClient.post(`/api/v4/jobs/${jobId}/bulk_move_applications`, param);\n    this.trashApplication = (jobId, applicationId) => RecruitApiClient.delete(`/api/v4/jobs/${jobId}/applications`, {\n      application_ids: [applicationId]\n    });\n    this.updateApplicationNotepad = (jobId, applicationId, note) => RecruitApiClient.put(`/api/v4/jobs/${jobId}/applications/${applicationId}/update_notepad`, {\n      suitability_comment: note\n    });\n    this.sendApplicationSummary = (jobId, applicationId, emails) => RecruitApiClient.post(\n      `/api/v4/jobs/${jobId}/applications/${applicationId}/send_individual_summary`,\n      { emails }\n    );\n    this.updateSummary = (jobId, applicationId) => RecruitApiClient.post(\n      `/api/v4/jobs/${jobId}/applications/${applicationId}/application_summary`\n    );\n    this.getHrQuestions = (jobId, applicationId) => RecruitApiClient.get(`/api/v4/jobs/${jobId}/applications/${applicationId}/hr_answers`);\n    this.saveHrQuestion = (jobId, applicationId, questionId, params) => RecruitApiClient.put(\n      `/api/v4/jobs/${jobId}/applications/${applicationId}/hr_answers/${questionId}`,\n      { hr_answer_set: params }\n    );\n    this.getRatingSetForApplication = (jobId, applicationId) => RecruitApiClient.get(`/api/v4/jobs/${jobId}/applications/${applicationId}/rating_set`);\n    this.resetRatingForApplication = (jobId, applicationId) => RecruitApiClient.post(`/api/v4/jobs/${jobId}/applications/${applicationId}/reset_rating`);\n    this.rateResponses = (jobId, applicationId, params) => RecruitApiClient.post(`/api/v4/jobs/${jobId}/applications/${applicationId}/rating_sets`, {\n      rating_set: params\n    });\n    this.cloneApplication = (jobId, application_id, param) => {\n      return RecruitApiClient.post(\n        `/api/v4/jobs/${jobId}/applications/${application_id}/clone_application`,\n        param\n      );\n    };\n    this.resendApplication = (jobId, applicationId) => RecruitApiClient.post(`/api/v4/jobs/${jobId}/applications/${applicationId}/resend_application`);\n    this.deleteApplication = (jobId, applicationId) => RecruitApiClient.delete(`/api/v4/jobs/${jobId}/applications/${applicationId}`);\n    this.getSearchIndex = (jobId, applicationId) => RecruitApiClient.get(`/api/v4/jobs/${jobId}/applications/${applicationId}/search_index`, null);\n    this.updateSearchIndex = (jobId, applicationId) => RecruitApiClient.put(`/api/v4/jobs/${jobId}/applications/${applicationId}/search_index`, {});\n    this.deleteSearchIndex = (jobId, applicationId) => RecruitApiClient.delete(`/api/v4/jobs/${jobId}/applications/${applicationId}/search_index`);\n    this.updateApplicationRating = (jobId, applicationId, param) => {\n      return RecruitApiClient.put(`/api/v4/jobs/${jobId}/applications/${applicationId}`, param);\n    };\n    this.updateUiPreferences = (param) => {\n      return RecruitApiClient.post(`/api/v4/ui_preferences`, { ui_preference: param });\n    };\n    this.getUiPreferences = () => RecruitApiClient.get(`/api/v4/ui_preferences?source=application`, null);\n    this.addRecord = (jobId, applicationId, params) => RecruitApiClient.post(`/api/v4/jobs/${jobId}/applications/${applicationId}/permanent_record`, {\n      note: params\n    });\n    this.getEvents = (apiKey, params) => RecruitApiClient.get(\"/api/v4/calendar/events\", params, { \"X-api-authenticate\": apiKey });\n    this.getSmsTemplates = () => RecruitApiClient.get(\"/api/v4/sms_templates\", {});\n    this.getSmsTemplatePlaceholders = (kind) => RecruitApiClient.get(\"/api/v4/sms_templates/placeholders\", { kind });\n    this.saveSmsTemplate = (smsTemplateName, smsMessage) => RecruitApiClient.post(`/api/v4/sms_templates`, {\n      sms_template: { title: smsTemplateName, body: smsMessage }\n    });\n    this.getSubEntityGroupedEmailTemplates = (apiKey, jobId, params) => RecruitApiClient.get(`/api/v4/jobs/${jobId}/email_templates`, params, {\n      \"X-api-authenticate\": apiKey\n    });\n    this.getEmailLetterheadGroupedEmailTemplates = (apiKey, type) => RecruitApiClient.get(\n      `/api/v4/calendar/email_templates/grouped_email_templates`,\n      { type },\n      { \"X-api-authenticate\": apiKey }\n    );\n    this.getEmailTemplateFromCalendar = (apiKey, templateId) => RecruitApiClient.get(\n      `/api/v4/calendar/email_templates/${templateId}`,\n      {},\n      { \"X-api-authenticate\": apiKey }\n    );\n    this.getEmailTemplateFromJob = (apiKey, templateId, jobId) => RecruitApiClient.get(\n      `/api/v4/jobs/${jobId}/email_templates/${templateId}`,\n      {},\n      { \"X-api-authenticate\": apiKey }\n    );\n    this.addToEventSms = (jobId, eventId, applicationIds, content, smsTemplateId) => RecruitApiClient.post(`/api/v4/jobs/${jobId}/applications/bulk_sms/add_to_event`, {\n      event_id: eventId,\n      applications_ids: applicationIds,\n      content,\n      sms_template_id: smsTemplateId,\n      added: true\n    });\n    this.sendInviteSms = (jobId, eventTypeId, applicationIds, content, smsTemplateId) => RecruitApiClient.post(`/api/v4/jobs/${jobId}/applications/bulk_sms/invite_to_timeslot`, {\n      event_type_id: eventTypeId,\n      applications_ids: applicationIds,\n      content,\n      sms_template_id: smsTemplateId,\n      invited: true\n    });\n    this.sendEmail = (jobId, eventId, emailTemplateId, content, applicationIds) => RecruitApiClient.post(`/api/v4/jobs/${jobId}/applications/email`, {\n      email: {\n        event_id: eventId,\n        email_template_id: emailTemplateId,\n        content,\n        application_ids: applicationIds\n      }\n    });\n    this.getApplicationActivities = (jobId, applicationId) => RecruitApiClient.get(`/api/v4/jobs/${jobId}/applications/${applicationId}/activities`, {\n      override_limit: true,\n      limit: 100\n    });\n    this.getApprovalTemplates = () => RecruitApiClient.get(`/api/v4/requisition_forms/enabled_for_applications`);\n    this.sendExternalEmails = (jobId, params) => RecruitApiClient.post(`/api/v4/jobs/${jobId}/applications/bulk_external_email`, params);\n    this.getSmartForms = (params) => RecruitApiClient.get(`/api/v4/smart_forms`, params);\n    this.getFormQuestions = (params) => RecruitApiClient.get(`/api/v4/fields`, params);\n    this.addForm = (jobId, applicationId, formId, params) => RecruitApiClient.post(`/api/v4/jobs/${jobId}/applications/${applicationId}/form_responses`, {\n      form_id: formId,\n      form_response: { answers_attributes: params }\n    });\n    this.sms = (jobId, applicationId, params) => RecruitApiClient.post(`/api/v4/jobs/${jobId}/applications/${applicationId}/sms`, {\n      sms: params\n    });\n    this.sendForm = (jobId, applicationId, params) => RecruitApiClient.post(`/api/v4/jobs/${jobId}/applications/${applicationId}/send_form`, {\n      send_form: params\n    });\n    this.sendFormBySMS = (jobId, applicationId, params) => RecruitApiClient.post(`/api/v4/jobs/${jobId}/applications/${applicationId}/send_sms_form`, {\n      send_sms_form: params\n    });\n    this.getCareAdvantageEvents = (jobId) => RecruitApiClient.get(`/api/v4/jobs/${jobId}/auto_emails/care_advantage_events`);\n    this.getApplicationAttachments = (jobId, applicationId) => RecruitApiClient.get(`/api/v4/jobs/${jobId}/applications/${applicationId}/attachments`, null);\n    this.deleteAttachment = (jobId, applicationId, attachmentId) => RecruitApiClient.delete(\n      `/api/v4/jobs/${jobId}/applications/${applicationId}/attachments/${attachmentId}`\n    );\n    this.getRecruiters = (apiKey) => RecruitApiClient.get(\"/api/v4/calendar/users\", {}, { \"X-api-authenticate\": apiKey });\n    this.getEventTypes = () => RecruitApiClient.get(\"/api/v4/calendar/event_types\", {});\n    this.inviteByEmail = (apiKey, params) => RecruitApiClient.post(`/api/v4/calendar/invitations`, params, { \"X-api-authenticate\": apiKey });\n    this.previewAttachment = (jobId, applicationId, attachmentId, index) => RecruitApiClient.get(\n      `/api/v4/jobs/${jobId}/applications/${applicationId}/attachments/${attachmentId}`,\n      { index }\n    );\n    this.getVideoTimestamps = (assetId) => RecruitApiClient.get(`/api/v4/video_timestamp`, { asset_id: assetId });\n    this.createVideoTimestamp = (assetId, timestampName, timestampValue) => RecruitApiClient.post(`/api/v4/video_timestamp`, {\n      asset_id: assetId,\n      timestamp: { name: timestampName, value: timestampValue }\n    });\n    this.updateVideoTimestamp = (assetId, timestampId, timestampName, timestampValue) => RecruitApiClient.put(`/api/v4/video_timestamp/${timestampId}`, {\n      asset_id: assetId,\n      timestamp: { name: timestampName, value: timestampValue }\n    });\n    this.deleteVideoTimestamp = (assetId, timestampId) => RecruitApiClient.delete(`/api/v4/video_timestamp/${timestampId}`, { asset_id: assetId });\n    this.getApplicationTasks = (jobId, applicationId) => RecruitApiClient.get(`/api/v4/jobs/${jobId}/applications/${applicationId}/tasks`);\n    this.updateApplicationTask = (jobId, applicationId, taskId, params) => RecruitApiClient.put(`/api/v4/jobs/${jobId}/applications/${applicationId}/tasks/${taskId}`, {\n      task: params\n    });\n    this.getWorkflows = (applicationId) => RecruitApiClient.get(`/api/v4/workflows?application_id=${applicationId}`);\n    this.getAssignableUsers = () => RecruitApiClient.get(`/api/v4/tasks/assignable_users`);\n    this.assignWorkflow = (applicationId, params) => RecruitApiClient.post(`/api/v4/workflows?application_id=${applicationId}`, params);\n    this.addTask = (jobId, applicationId, params) => RecruitApiClient.post(`/api/v4/jobs/${jobId}/applications/${applicationId}/tasks`, {\n      task: params\n    });\n    this.deleteTask = (jobId, applicationId, taskId) => RecruitApiClient.delete(`/api/v4/jobs/${jobId}/applications/${applicationId}/tasks/${taskId}`);\n    this.getApplicationEvents = (jobId, applicationId) => RecruitApiClient.get(`/api/v4/jobs/${jobId}/applications/${applicationId}/events`);\n    this.getFormResponses = (jobId, applicationId) => RecruitApiClient.get(\n      `/api/v4/jobs/${jobId}/applications/${applicationId}/form_responses`,\n      null\n    );\n    this.showFormResponse = (jobId, applicationId, formResponseId) => RecruitApiClient.get(\n      `/api/v4/jobs/${jobId}/applications/${applicationId}/form_responses/${formResponseId}`\n    );\n    this.editFormResponse = (jobId, applicationId, formResponseId, params) => RecruitApiClient.put(\n      `/api/v4/jobs/${jobId}/applications/${applicationId}/form_responses/${formResponseId}`,\n      {\n        form_response: { answers_attributes: params }\n      }\n    );\n    this.deleteFormResponse = (jobId, applicationId, formResponseId) => RecruitApiClient.delete(\n      `/api/v4/jobs/${jobId}/applications/${applicationId}/form_responses/${formResponseId}`\n    );\n    this.getVideoInterview = (ApplicationId) => RecruitApiClient.get(`/api/v4/video_interviews/${ApplicationId}`);\n    this.deleteVideoInterview = (ApplicationId) => RecruitApiClient.delete(`/api/v4/video_interviews/${ApplicationId}`);\n    this.getVideoInterviewBookmarks = (ApplicationId) => RecruitApiClient.get(`/api/v4/video_interviews/${ApplicationId}/bookmarks`);\n    this.deleteVideoInterviewBookmark = (ApplicationId, id) => {\n      return RecruitApiClient.delete(`/api/v4/video_interviews/${ApplicationId}/bookmarks/${id}`);\n    };\n    this.createVideoInterviewBookmark = (ApplicationId, name, value) => {\n      return RecruitApiClient.post(`/api/v4/video_interviews/${ApplicationId}/bookmarks`, {\n        name,\n        value\n      });\n    };\n    this.updateVideoInterviewBookmark = (ApplicationId, id, name, value) => {\n      return RecruitApiClient.put(`/api/v4/video_interviews/${ApplicationId}/bookmarks/${id}`, {\n        name,\n        value\n      });\n    };\n    this.exportToOnboard = (jobId, applicationId, startDate) => {\n      return RecruitApiClient.post(`/api/v4/jobs/${jobId}/scout_onboard_exports`, {\n        start_date: dayjs(startDate).format(\"YYYY-MM-DD\"),\n        application_ids: [applicationId]\n      });\n    };\n    this.getRevolveData = (applicationId) => RecruitApiClient.get(`/api/v4/integrations/revolve_exports`, { application_id: applicationId });\n    this.revolveExport = (applicationId, params) => {\n      return RecruitApiClient.post(`/api/v4/integrations/revolve_exports`, {\n        application_id: applicationId,\n        revolve_record: params\n      });\n    };\n    this.getXrefPackages = (applicationId) => RecruitApiClient.get(`/api/v4/integrations/xref/packages`, { application_id: applicationId });\n    this.xRefExport = (applicationId, params) => {\n      return RecruitApiClient.post(`/api/v4/integrations/xref`, __spreadValues({\n        application_id: applicationId\n      }, params));\n    };\n    this.getIntegrationsData = (applicationId) => RecruitApiClient.get(`/api/v4/integrations`, { application_id: applicationId });\n    this.resolveUnusualActivity = (applicationId, params) => {\n      return RecruitApiClient.post(`/api/v4/integrations/xref/resolve_unusual_activity`, __spreadValues({\n        application_id: applicationId\n      }, params));\n    };\n    this.getCountriesStates = () => RecruitApiClient.get(\"/api/v4/countries\");\n    this.getMvsData = (applicationId) => RecruitApiClient.get(`/api/v4/integrations/mvs`, { application_id: applicationId });\n    this.mvsExport = (applicationId, params) => {\n      return RecruitApiClient.post(`/api/v4/integrations/mvs`, __spreadValues({\n        application_id: applicationId\n      }, params));\n    };\n    this.getReferooData = (applicationId) => RecruitApiClient.get(`/api/v4/integrations/referoo`, { application_id: applicationId });\n    this.referooExport = (applicationId, params) => {\n      return RecruitApiClient.post(`/api/v4/integrations/referoo`, __spreadValues({\n        application_id: applicationId\n      }, params));\n    };\n    this.foundUExport = (applicationId, params) => {\n      return RecruitApiClient.post(`/api/v4/integrations/foundu`, __spreadValues({\n        application_id: applicationId\n      }, params));\n    };\n    this.getTestGridPackages = (applicationId) => RecruitApiClient.get(`/api/v4/integrations/test_grids/packages`, {\n      application_id: applicationId\n    });\n    this.testGridExport = (applicationId, packageId) => {\n      return RecruitApiClient.post(`/api/v4/integrations/test_grids`, {\n        application_id: applicationId,\n        package_id: packageId\n      });\n    };\n    this.getHronboardData = (applicationId) => RecruitApiClient.get(`/api/v4/integrations/hro_exports`, { application_id: applicationId });\n    this.hronboardExport = (applicationId, params) => {\n      return RecruitApiClient.post(`/api/v4/integrations/hro_exports`, {\n        application_id: applicationId,\n        hro_record: params\n      });\n    };\n    this.roublerExport = (applicationId, params) => {\n      return RecruitApiClient.post(`/api/v4/integrations/roubler_exports`, {\n        application_id: applicationId,\n        roubler_record: params\n      });\n    };\n    this.getFit2WorkData = (applicationId) => RecruitApiClient.get(`/api/v4/integrations/fit2work`, { application_id: applicationId });\n    this.fit2WorkExport = (applicationId, params) => {\n      return RecruitApiClient.post(`/api/v4/integrations/fit2work`, __spreadValues({\n        application_id: applicationId\n      }, params));\n    };\n    this.getSparkHireData = (applicationId) => RecruitApiClient.get(`/api/v4/integrations/sparkhire_exports`, {\n      application_id: applicationId\n    });\n    this.sparkHireExport = (applicationId, params) => {\n      return RecruitApiClient.post(`/api/v4/integrations/sparkhire_exports`, {\n        application_id: applicationId,\n        sparkhire_record: params\n      });\n    };\n    this.getAlayaCareData = (applicationId) => RecruitApiClient.get(`/api/v4/integrations/alayacare`, { application_id: applicationId });\n    this.alayaCareExport = (params) => {\n      return RecruitApiClient.post(`/api/v4/integrations/alayacare`, params);\n    };\n    this.updateFit2WorkStatus = (applicationId, referenceId) => RecruitApiClient.get(`/api/v4/integrations/fit2work/${referenceId}/update_status`, {\n      application_id: applicationId\n    });\n    this.getCognologyData = (applicationId) => RecruitApiClient.get(`/api/v4/integrations/cognology_exports`, {\n      application_id: applicationId\n    });\n    this.cognologyExport = (params) => {\n      return RecruitApiClient.post(`/api/v4/integrations/cognology_exports`, {\n        cognology_record: params\n      });\n    };\n    this.exportToCognology = (applicationId) => {\n      return RecruitApiClient.post(`/api/v4/integrations/cognology_exports/export`, {\n        application_id: applicationId\n      });\n    };\n  }\n}\nexport default new Api();\n","\"use strict\";\nconst integrations = (enabled) => ({\n  revolve: {\n    permissionKey: \"Export To Revolve Onboard\"\n  },\n  scoutOnboard: {\n    permissionKey: \"Export To SCOUT Onboard\"\n  },\n  xref: {\n    permissionKey: \"Xref (Export)\",\n    applicationKey: \"xref\"\n  },\n  mvs: {\n    newIntegrationEnabled: enabled,\n    permissionKey: \"My Verification Service (MVS)\",\n    applicationKey: \"mvs\"\n  },\n  referoo: {\n    permissionKey: \"Referoo\",\n    applicationKey: \"referoo\"\n  },\n  foundU: {\n    newIntegrationEnabled: enabled,\n    permissionKey: \"foundU\",\n    applicationKey: \"foundu\"\n  },\n  testGrid: {\n    permissionKey: \"TestGrid\",\n    applicationKey: \"test_grid\"\n  },\n  hro: {\n    newIntegrationEnabled: enabled,\n    permissionKey: \"Export To HR Onboard\"\n  },\n  cognology: {\n    newIntegrationEnabled: enabled,\n    permissionKey: \"Export To Cognology\",\n    applicationKey: \"cognology\"\n  },\n  roubler: {\n    newIntegrationEnabled: enabled,\n    permissionKey: \"Roubler Integration\",\n    applicationKey: \"roubler\"\n  },\n  sparkhire: {\n    newIntegrationEnabled: enabled,\n    permissionKey: \"Export To Sparkhire\",\n    applicationKey: \"sparkhire\"\n  },\n  fit2work: {\n    newIntegrationEnabled: enabled,\n    permissionKey: \"Fit2Work\",\n    applicationKey: \"fit2_work\"\n  },\n  alayacare: {\n    newIntegrationEnabled: enabled,\n    permissionKey: \"AlayaCare Integration\",\n    applicationKey: \"alayacare\"\n  }\n});\nconst isIntegrationAvailable = (integrationName, newIntegrationEnabled, permissions, application) => {\n  var _a, _b, _c, _d;\n  const integrationConfig = integrations(newIntegrationEnabled)[integrationName];\n  if (!integrationConfig) {\n    console.warn(`Integration not found: ${integrationName}`);\n    return false;\n  }\n  const hasPermission = integrationConfig.permissionKey ? (_b = (_a = permissions == null ? void 0 : permissions.Integrations) == null ? void 0 : _a[integrationConfig.permissionKey]) != null ? _b : false : true;\n  const isEnabled = (_c = integrationConfig.newIntegrationEnabled) != null ? _c : true;\n  const hasApplicationKey = integrationConfig.applicationKey ? !!((_d = application == null ? void 0 : application.integrations) == null ? void 0 : _d[integrationConfig.applicationKey]) : true;\n  return hasPermission && isEnabled && hasApplicationKey;\n};\nexport { integrations, isIntegrationAvailable };\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { theme } from \"../../../../components/ThemeContext/ThemeObject\";\nimport { styles as sharedClasses } from \"../Modals/styles\";\nexport const styles = __spreadProps(__spreadValues({}, sharedClasses), {\n  integrationCard: {\n    border: \"1px solid #DDDDDD\",\n    borderRadius: \"6px\",\n    padding: 2,\n    rowGap: 1,\n    width: \"150px\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\"\n  },\n  integrationCardImageContainer: {\n    padding: \"16px 0px\"\n  },\n  exportButton: {\n    border: \"1px solid #DDDDDD\",\n    borderRadius: \"6px\",\n    padding: \"8px 16px\",\n    width: \"fit-content\",\n    color: \"#333333\",\n    fontWeight: 600,\n    cursor: \"pointer\"\n  },\n  modalDoubleColumn: {\n    flexDirection: \"row\",\n    columnGap: 3\n  },\n  alreadyExportedModal: {\n    padding: \"48px 32px\",\n    width: \"450px\",\n    alignItems: \"center\",\n    rowGap: 2\n  },\n  integrationDetails: {\n    padding: 3,\n    borderRadius: \"6px\",\n    border: \"1px solid #E3E3E3\",\n    rowGap: 1\n  },\n  integrationDetailsTable: {\n    \"&.responsive\": { tableLayout: \"auto\" },\n    \"& .MuiTableCell-root\": {\n      fontFamily: \"Source Sans Pro\",\n      padding: \"4px 16px 16px 0px\",\n      border: \"none\",\n      fontWeight: 600\n    }\n  },\n  integrationDetailsTableHeader: {\n    color: theme.palette.primary.main,\n    textTransform: \"capitalize\",\n    background: \"white\"\n  },\n  verifyActivityButtonsContainer: {\n    flexDirection: \"row\",\n    borderRadius: \"6px\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    width: \"fit-content\"\n  },\n  verifyActivityButton: {\n    padding: \"6px\",\n    width: \"100px\",\n    alignItems: \"center\",\n    cursor: \"pointer\",\n    borderRadius: \"6px\"\n  },\n  cognologySectionTitle: {\n    fontWeight: \"bold\",\n    color: \"#666666\",\n    fontSize: \"18px\"\n  },\n  cognologyCategoriesContainer: {\n    flexDirection: \"row\",\n    flexWrap: \"wrap\",\n    rowGap: 2,\n    columnGap: 2,\n    paddingBottom: 1\n  },\n  cognologyAttachmentContainer: {\n    flexDirection: \"row\",\n    columnGap: 1,\n    width: \"48%\",\n    alignItems: \"center\"\n  }\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport { styles as sharedClasses } from \"../styles\";\nexport const styles = __spreadProps(__spreadValues({}, sharedClasses), {\n  modalInfoStyle: {\n    color: \"#939393\",\n    fontFamily: \"Source Sans Pro\",\n    fontStyle: \"italic\",\n    fontWeight: 400,\n    lineHeight: \"normal\"\n  },\n  modalStyleOverrides: {\n    height: \"auto\",\n    maxHeight: \"84vh\",\n    width: \"700px\",\n    padding: \"40px\"\n  },\n  modalContainer: {\n    width: \"100%\",\n    height: \"100%\",\n    rowGap: 3,\n    overflow: \"auto\"\n  },\n  errorMessage: {\n    marginLeft: 0.5,\n    color: \"#E37D7A\",\n    fontSize: \"12px\"\n  },\n  autoCompleteTextfield: {\n    \"& .MuiInputBase-root\": { margin: \"unset\", marginTop: 1 },\n    \"& .MuiFormHelperText-root\": {\n      margin: 0.5,\n      fontSize: \"12px\",\n      fontFamily: \"inherit\",\n      color: theme.palette.error.main\n    }\n  },\n  loaderContainer: {\n    flexGrow: 1,\n    rowGap: 3,\n    fontWeight: \"bold\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    color: theme.palette.action.main,\n    fontSize: \"18px\"\n  },\n  wideModal: { width: \"904px\", maxWidth: \"90vw\", minWidth: \"650px\" },\n  subWidget: {\n    marginTop: \"24px\",\n    flex: \"40%\",\n    borderRadius: \"3px\",\n    height: \"100px\",\n    minWidth: \"240px\"\n  },\n  widgetBlockContainer: {\n    display: \"flex\",\n    height: \"100%\",\n    width: \"100%\",\n    columnGap: \"50px\"\n  },\n  widgetBlock: {\n    border: \"1px solid #E3E3E3\",\n    borderRadius: \"3px\",\n    position: \"relative\",\n    display: \"flex\",\n    justifyContent: \"flex-start\",\n    paddingX: \"16px\",\n    alignItems: \"center\",\n    width: \"50%\",\n    height: \"100%\"\n  },\n  widgetBlockText: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    alignItems: \"flex-start\",\n    marginLeft: \"12px\"\n  },\n  widgetBlockHeading: {\n    color: theme.palette.primary.main\n  },\n  widgetBlockBody: {\n    fontSize: \"14px\",\n    color: \"#333333\"\n  },\n  widgetBlockIcon: {\n    backgroundColor: \"#EDF2F5\",\n    padding: \"12px\",\n    borderRadius: \"8px\",\n    color: theme.palette.primary.main\n  }\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nexport const getAnswerAttributes = (question, index, answers, ratings, formResponse) => {\n  var _a, _b, _c, _d, _e, _f;\n  switch (question.type) {\n    case \"RadioButtonField\":\n    case \"SelectField\":\n      return __spreadValues({\n        field_id: question.id,\n        field_choice_id: answers[question.id],\n        rating_value: ratings[question.id]\n      }, formResponse && ((_a = formResponse[index]) == null ? void 0 : _a.id) && { id: (_b = formResponse[index]) == null ? void 0 : _b.id });\n    case \"CheckBoxField\":\n      return __spreadValues({\n        field_id: question.id,\n        field_choice_ids: answers[question.id] && Object.entries(answers[question.id]).filter(([_, value]) => value).map(([id]) => id),\n        rating_value: ratings[question.id]\n      }, formResponse && ((_c = formResponse[index]) == null ? void 0 : _c.id) && { id: (_d = formResponse[index]) == null ? void 0 : _d.id });\n    default:\n      return __spreadValues({\n        field_id: question.id,\n        data: answers[question.id],\n        rating_value: ratings[question.id]\n      }, formResponse && ((_e = formResponse[index]) == null ? void 0 : _e.id) && { id: (_f = formResponse[index]) == null ? void 0 : _f.id });\n  }\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nexport const getAnswerValue = (question, questionIndex, formResponse) => {\n  var _a;\n  switch (question.type) {\n    case \"RadioButtonField\":\n    case \"SelectField\":\n      return formResponse[questionIndex].field_choice_ids.length > 0 ? formResponse[questionIndex].field_choice_ids[0].toString() : {};\n    case \"RankField\":\n      return formResponse[questionIndex].field_choice_ids ? formResponse[questionIndex].field_choice_ids.reduce(\n        (acc, curr, i) => __spreadProps(__spreadValues({}, acc), { [curr]: (i + 1).toString() }),\n        {}\n      ) : {};\n    case \"CheckBoxField\":\n      return formResponse[questionIndex].field_choices.reduce(\n        (acc, curr) => {\n          acc[curr.id] = formResponse[questionIndex].field_choice_ids.includes(curr.id);\n          return acc;\n        },\n        {}\n      );\n    default:\n      return (_a = formResponse[questionIndex]) == null ? void 0 : _a.answer;\n  }\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { containsDuplicates } from \"../../ApprovalForms/NewApproval/NewApproval\";\nexport function validateForm(questions, answers, setQuestionErrors, questionsRef) {\n  var _a;\n  if (!questionsRef.current) return;\n  let isValid = true;\n  let questionError = void 0;\n  questions.forEach((question, index) => {\n    let tempErrorMessage = \"\";\n    if (question.type === \"CheckBoxField\") {\n      const isChecked = answers[question.id] && Object.values(answers[question.id]).some((value) => value === true);\n      if (question.required && !isChecked) {\n        tempErrorMessage = \"Must select at least one option\";\n        if (questionError === void 0) {\n          questionError = index;\n        }\n        isValid = false;\n      }\n    } else if (question.type === \"RankField\") {\n      const duplicates = answers[question.id] && containsDuplicates(Object.values(answers[question.id]));\n      if (duplicates) {\n        tempErrorMessage = \"Ranked choices must be unique\";\n        if (questionError === void 0) {\n          questionError = index;\n        }\n        isValid = false;\n      }\n    } else if (question.required && !answers[question.id]) {\n      tempErrorMessage = question.type !== \"RadioButtonField\" ? \"This field is required\" : \"Must select an option\";\n      if (questionError === void 0) {\n        questionError = index;\n      }\n      isValid = false;\n    }\n    setQuestionErrors((prev) => __spreadProps(__spreadValues({}, prev), {\n      [question.id]: tempErrorMessage\n    }));\n  });\n  if (questionError !== void 0 && questionsRef.current && questionsRef.current[questionError]) {\n    (_a = questionsRef.current[questionError]) == null ? void 0 : _a.scrollIntoView({ behavior: \"smooth\", block: \"center\" });\n  }\n  return isValid;\n}\n","\"use strict\";\nimport dayjs from \"dayjs\";\nimport { getAttachmentType } from \"../utils/attachment-type\";\nexport var ModalType = /* @__PURE__ */ ((ModalType2) => {\n  ModalType2[\"MOVE\"] = \"move\";\n  ModalType2[\"CLONE\"] = \"clone\";\n  ModalType2[\"TRASH\"] = \"trash\";\n  ModalType2[\"RESEND\"] = \"resend\";\n  ModalType2[\"DELETE\"] = \"delete\";\n  ModalType2[\"ADD_RECORD\"] = \"add record\";\n  ModalType2[\"ADD_TO_EVENT\"] = \"add to event\";\n  ModalType2[\"SEARCH\"] = \"search\";\n  ModalType2[\"CREATE_APPROVAL\"] = \"create approval\";\n  ModalType2[\"EMAIL_EXTERNAL\"] = \"email external\";\n  ModalType2[\"ADD_FORM\"] = \"add form\";\n  ModalType2[\"SEND_SMS\"] = \"send sms\";\n  ModalType2[\"SEND_FORM\"] = \"send form\";\n  ModalType2[\"SEND_EMAIL\"] = \"send email\";\n  ModalType2[\"INVITE_TO_TIMESLOT\"] = \"invite to timeslot\";\n  ModalType2[\"ADD_EDIT_TASK\"] = \"add edit task\";\n  ModalType2[\"TASK_WORKFLOW\"] = \"task workflow\";\n  ModalType2[\"EXPORT_TO_ONBOARD\"] = \"export to onboard\";\n  ModalType2[\"ONBOARD_EXPRESS\"] = \"onboard express\";\n  ModalType2[\"XREF\"] = \"xref\";\n  ModalType2[\"UNUSUAL_ACTIVITY\"] = \"unusual activity\";\n  ModalType2[\"COGNOLOGY\"] = \"cognology\";\n  ModalType2[\"EDIT_COGNOLOGY\"] = \"edit cognology\";\n  ModalType2[\"COGNOLOGY_WAITING_FOR_APPROVAL\"] = \"cognology waiting for approval\";\n  ModalType2[\"COGNOLOGY_APPROVED\"] = \"cognology approved\";\n  ModalType2[\"MVS\"] = \"mvs\";\n  ModalType2[\"REFEROO\"] = \"referoo\";\n  ModalType2[\"FOUNDU\"] = \"foundu\";\n  ModalType2[\"TESTGRID\"] = \"testgrid\";\n  ModalType2[\"HRONBOARD\"] = \"hronboard\";\n  ModalType2[\"ROUBLER\"] = \"roubler\";\n  ModalType2[\"SPARKHIRE\"] = \"sparkhire\";\n  ModalType2[\"FIT2WORK\"] = \"fit2work\";\n  ModalType2[\"ALAYACARE\"] = \"alayacare\";\n  return ModalType2;\n})(ModalType || {});\nexport const cognologyExportPreference = [\n  {\n    label: \"Quick\",\n    value: \"quick\"\n  },\n  {\n    label: \"Full\",\n    value: \"full\"\n  }\n];\nexport var SectionName = /* @__PURE__ */ ((SectionName2) => {\n  SectionName2[\"CandidateTags\"] = \"Candidate Tags\";\n  SectionName2[\"FelixAISummary\"] = \"Felix AI Summary\";\n  SectionName2[\"Responses\"] = \"Responses\";\n  SectionName2[\"Notepad\"] = \"Notepad\";\n  SectionName2[\"Actions\"] = \"Actions\";\n  SectionName2[\"ApplicationQuestionnaire\"] = \"Application questionnaire\";\n  SectionName2[\"Attachments\"] = \"Attachments\";\n  return SectionName2;\n})(SectionName || {});\nexport var AttachmentType = /* @__PURE__ */ ((AttachmentType2) => {\n  AttachmentType2[\"Image\"] = \"image\";\n  AttachmentType2[\"Video\"] = \"video\";\n  AttachmentType2[\"Audio\"] = \"audio\";\n  AttachmentType2[\"Text\"] = \"text\";\n  AttachmentType2[\"Pdf\"] = \"pdf\";\n  AttachmentType2[\"Word\"] = \"word\";\n  return AttachmentType2;\n})(AttachmentType || {});\nexport const defaultSections = [\n  \"Candidate Tags\",\n  \"Felix AI Summary\",\n  \"Responses\",\n  \"Notepad\",\n  \"Actions\",\n  \"Attachments\",\n  \"Application questionnaire\"\n];\nexport const getApplicationRatingColor = (rating) => {\n  if (rating === null) return { color: \"#666666\", background: \"#E5E5E5\" };\n  if (rating <= 34) {\n    return { color: \"rgba(227,125,122)\", background: \"rgba(227,125,122,0.12)\" };\n  } else if (rating <= 49) {\n    return { color: \"rgba(229,153,92)\", background: \"rgba(229,153,92,0.12)\" };\n  } else if (rating <= 74) {\n    return { color: \"rgba(254,213,0)\", background: \"rgba(254,213,0,0.12)\" };\n  } else if (rating <= 90) {\n    return { color: \"rgba(140,207,149)\", background: \"rgba(140,207,149,0.12)\" };\n  } else if (rating <= 100) {\n    return { color: \"rgba(62,170,62)\", background: \"rgba(62,170,62,0.12)\" };\n  }\n};\nexport const timeStringToSeconds = (time) => {\n  const [hour, minute, second] = time.split(\":\").map((t) => parseInt(t));\n  return dayjs.duration({ hours: hour, minutes: minute, seconds: second }).asSeconds();\n};\nexport const secondsToTimeString = (seconds) => {\n  return dayjs.duration(seconds, \"seconds\").format(\"HH:mm:ss\");\n};\nexport const checkMissingPlaceholders = (placeholders, body) => {\n  const missingPlaceholders = placeholders.filter((placeholder) => !body.includes(placeholder));\n  return !!missingPlaceholders.length;\n};\nexport const InitialTimeStampState = {\n  hasTyped: false,\n  timestampError: { nameMessage: \"\", valueMessage: \"\", id: null }\n};\nexport const categorizeAttachments = (attachments) => {\n  return attachments.reduce(\n    (acc, attachment) => {\n      const selectedAttachment = getAttachmentType(attachment);\n      if (selectedAttachment === \"video\" /* Video */) {\n        acc.videos.push(attachment);\n      } else {\n        acc.files.push(attachment);\n      }\n      return acc;\n    },\n    { files: [], videos: [] }\n  );\n};\nexport const VIDEO_INTERVIEW_SOURCE_INDEX = 1;\nexport const VIDEO_INTERVIEW_DISPLAY_NAME = \"Video Interview\";\nexport const LINKEDIN_URL_REGEX = /^(https:\\/\\/)(|www\\.|[a-z]{2}\\.)?linkedin.com\\/in\\/([a-zA-Z0-9-]*)/gm;\nexport const ADD_FORM_PLACEHOLDER = \"{FORM}\";\nexport const INVITE_TO_TIMESLOT_PLACEHOLDER = \"{INTERVIEW_URL}\";\n","\"use strict\";\nexport const MAX_SCALE = 200;\nexport const ZOOM_STEP = 5;\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nimport { useEffect, useState } from \"react\";\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport Api from \"./API\";\nimport { secondsToTimeString, timeStringToSeconds } from \"./config\";\nexport function useGetEmailTemplate({\n  apiKey,\n  selectedEmailTemplate,\n  setBody,\n  dispatch,\n  setSubject,\n  setTemplateAttachments,\n  endpoint\n}) {\n  useQuery({\n    queryKey: [selectedEmailTemplate],\n    queryFn: () => __async(this, null, function* () {\n      if (!selectedEmailTemplate) return;\n      const { res } = yield endpoint || Api.getEmailTemplateFromCalendar(apiKey, Number(selectedEmailTemplate.split(\" -\")[0]));\n      return res;\n    }),\n    onSuccess: (emailTemplate) => {\n      setSubject && setSubject(emailTemplate.subject);\n      setTemplateAttachments && setTemplateAttachments(emailTemplate.email_attachments);\n      setBody(emailTemplate.body);\n    },\n    onError: (error) => dispatch({\n      type: \"SET_SNACKBAR\",\n      payload: { message: error.errors.join(\", \"), state: \"error\" }\n    }),\n    enabled: !!selectedEmailTemplate\n  });\n}\nexport function useGetEvents({\n  apiKey,\n  dispatch,\n  eventTypeId,\n  enabled = true\n}) {\n  const { data: events, isLoading: loadingEvents } = useQuery({\n    queryKey: [\"events\", eventTypeId],\n    queryFn: () => __async(this, null, function* () {\n      const { res } = yield Api.getEvents(apiKey, {\n        date: /* @__PURE__ */ new Date(),\n        override_limit: true,\n        event_type_id: eventTypeId\n      });\n      return res.events;\n    }),\n    onError: (error) => dispatch({\n      type: \"SET_SNACKBAR\",\n      payload: { message: error.errors.join(\", \"), state: \"error\" }\n    }),\n    enabled\n  });\n  return { events, loadingEvents };\n}\nexport function useGetIntegrationsData({\n  applicationId,\n  dispatch\n}) {\n  const {\n    data: integrationsData,\n    refetch: refetchIntegrationsData,\n    isRefetching: refetchingIntegrationsData,\n    isLoading: loadingIntegrationsData\n  } = useQuery({\n    queryKey: [\"integrations\"],\n    queryFn: () => __async(this, null, function* () {\n      if (applicationId) {\n        const { res } = yield Api.getIntegrationsData(applicationId);\n        return res;\n      }\n    }),\n    onError: (error) => {\n      dispatch({\n        type: \"SET_SNACKBAR\",\n        payload: {\n          message: `There was an error getting integrations data, ${error}`,\n          state: \"error\"\n        }\n      });\n    }\n  });\n  return {\n    integrationsData,\n    refetchIntegrationsData,\n    refetchingIntegrationsData,\n    loadingIntegrationsData\n  };\n}\nexport function useGetCognologyData({\n  applicationId,\n  dispatch,\n  setRecord,\n  setCategories,\n  setAttachments,\n  enabled = true\n}) {\n  const { data: cognologyData, isLoading: loadingCognologyData } = useQuery({\n    queryKey: [\"cognology data\"],\n    queryFn: () => __async(this, null, function* () {\n      if (!applicationId) return;\n      const { res } = yield Api.getCognologyData(applicationId);\n      return res;\n    }),\n    onSuccess: (res) => {\n      if (res && setRecord && setCategories && setAttachments) {\n        res.record.candidate_gender === \"Unspecified\" ? setRecord(__spreadProps(__spreadValues({}, res.record), { candidate_gender: null })) : setRecord(res.record);\n        if (res.record.categories) {\n          Object.keys(res.record.categories).forEach((key) => {\n            var _a;\n            let savedCategoryValue = null;\n            const savedCategory = (_a = res.record.categories) == null ? void 0 : _a[key];\n            if (savedCategory) {\n              savedCategoryValue = [\n                savedCategory.name || savedCategory.new_value || \"\",\n                savedCategory.id || 0\n              ];\n            }\n            setCategories((prev) => __spreadProps(__spreadValues({}, prev), { [key]: savedCategoryValue }));\n          });\n        } else {\n          res.categories.forEach((category) => {\n            setCategories((prev) => __spreadProps(__spreadValues({}, prev), { [category.id]: null }));\n          });\n        }\n        res.record.assets ? setAttachments(res.record.assets) : res.application_assets.forEach((asset) => {\n          setAttachments((prev) => __spreadProps(__spreadValues({}, prev), { [asset.id]: null }));\n        });\n      }\n    },\n    onError: (error) => dispatch({\n      type: \"SET_SNACKBAR\",\n      payload: { message: `There was an error getting cognology data, ${error}`, state: \"error\" }\n    }),\n    enabled\n  });\n  return { cognologyData, loadingCognologyData };\n}\nexport function useGetSmsTemplatePlaceholders({\n  kind,\n  dispatch\n}) {\n  const { data: placeholders } = useQuery({\n    queryKey: [\"sms placeholders\"],\n    queryFn: () => __async(this, null, function* () {\n      const { res } = yield Api.getSmsTemplatePlaceholders(kind);\n      return res.placeholders;\n    }),\n    onError: (error) => dispatch({\n      type: \"SET_SNACKBAR\",\n      payload: { message: error.errors.join(\", \"), state: \"error\" }\n    }),\n    initialData: []\n  });\n  return { placeholders };\n}\nexport function useGetAssignableUsers({ dispatch }) {\n  const { data: assignableUsers, isLoading: loadingAssignableUsers } = useQuery({\n    queryKey: [\"assignable users\"],\n    queryFn: () => __async(this, null, function* () {\n      const { res } = yield Api.getAssignableUsers();\n      return res.assignable_users;\n    }),\n    onError: (error) => dispatch({\n      type: \"SET_SNACKBAR\",\n      payload: {\n        message: `There was an error getting assignable users data, ${error}`,\n        state: \"error\"\n      }\n    })\n  });\n  return { assignableUsers, loadingAssignableUsers };\n}\nexport function useFormQuestions({\n  application,\n  selectedFormId,\n  dispatch,\n  formResponseId\n}) {\n  const { data: formQuestions, isLoading: loadingFormQuestions } = useQuery({\n    queryKey: [\"formQuestions\", selectedFormId, formResponseId],\n    queryFn: () => __async(this, null, function* () {\n      if (!application || !selectedFormId) return;\n      const { res } = yield Api.getFormQuestions({\n        form_id: selectedFormId,\n        form_response_id: formResponseId\n      });\n      return res.fields;\n    }),\n    onError: (error) => dispatch({\n      type: \"SET_SNACKBAR\",\n      payload: { message: `There was an error getting form questions, ${error}`, state: \"error\" }\n    }),\n    enabled: !!application && !!selectedFormId && !!formResponseId\n  });\n  return { formQuestions, loadingFormQuestions };\n}\nexport function useFormResponse({\n  FormResponseId,\n  dispatch,\n  application\n}) {\n  return useQuery({\n    queryKey: [\"formQuestionAndAnswers\", FormResponseId],\n    queryFn: () => __async(this, null, function* () {\n      if (!application) return;\n      const { res } = yield Api.showFormResponse(\n        application.job.id,\n        application.id,\n        FormResponseId\n      );\n      return res.question_and_answers;\n    }),\n    onError: (error) => dispatch({\n      type: \"SET_SNACKBAR\",\n      payload: { message: `There was an error getting form response, ${error}`, state: \"error\" }\n    }),\n    enabled: !!application\n  });\n}\nexport function useTimestampData({\n  selectedAttachment,\n  dispatch,\n  listRef,\n  application,\n  newTimestamp,\n  setNewTimestamp\n}) {\n  var _a;\n  const queryClient = useQueryClient();\n  const [timestampAdded, setTimestampAdded] = useState(false);\n  const isVideoInterview = \"watch_interview_link\" in selectedAttachment;\n  const fetchTimestampsAPI = () => {\n    if ((selectedAttachment == null ? void 0 : selectedAttachment.id) && application && !isVideoInterview) {\n      return Api.getVideoTimestamps(selectedAttachment.id);\n    }\n    if (isVideoInterview && application) {\n      return Api.getVideoInterviewBookmarks(application.id);\n    }\n  };\n  const { data: timestampData, isLoading: loadingTimestampData } = useQuery({\n    queryKey: [\"timestamp_data\", selectedAttachment],\n    queryFn: () => __async(this, null, function* () {\n      if (fetchTimestampsAPI) {\n        const response = yield fetchTimestampsAPI();\n        if (response) {\n          const { res } = response;\n          if (isVideoInterview && \"bookmarks\" in res) {\n            res.bookmarks = res.bookmarks.map((bookmark) => __spreadProps(__spreadValues({}, bookmark), {\n              value: secondsToTimeString(bookmark.value)\n            }));\n          }\n          return res;\n        }\n      }\n    }),\n    onSettled: () => {\n      var _a2;\n      if (timestampAdded) {\n        (_a2 = listRef.current) == null ? void 0 : _a2.scrollTo(0, listRef.current.scrollHeight);\n        setTimestampAdded(false);\n      }\n    },\n    onError: (error) => dispatch({\n      type: \"SET_SNACKBAR\",\n      payload: { message: `There was an error getting timestamp data, ${error}`, state: \"error\" }\n    }),\n    enabled: !isVideoInterview && ((_a = selectedAttachment == null ? void 0 : selectedAttachment.attached_content_type) == null ? void 0 : _a.includes(\"video\")) || isVideoInterview\n  });\n  const updateTimestampApi = () => {\n    if (!selectedAttachment || !timestampData || !newTimestamp.id || !application) return;\n    if (isVideoInterview) {\n      return Api.updateVideoInterviewBookmark(\n        application.id,\n        newTimestamp.id,\n        newTimestamp.name,\n        timeStringToSeconds(newTimestamp.value)\n      );\n    } else {\n      return Api.updateVideoTimestamp(\n        selectedAttachment.id,\n        newTimestamp.id,\n        newTimestamp.name,\n        newTimestamp.value\n      );\n    }\n  };\n  const { mutate: updateTimestamp, isLoading: updatingTimestamp } = useMutation({\n    mutationFn: () => __async(this, null, function* () {\n      const { res } = yield updateTimestampApi();\n      return res;\n    }),\n    onSuccess: () => __async(this, null, function* () {\n      dispatch({\n        type: \"SET_SNACKBAR\",\n        payload: { message: \"Timestamp updated successfully\", state: \"success\" }\n      });\n      setNewTimestamp({ id: null, name: \"\", value: \"\" });\n      yield queryClient.invalidateQueries([\"timestamp_data\", selectedAttachment]);\n    }),\n    onError: (error) => {\n      dispatch({\n        type: \"SET_SNACKBAR\",\n        payload: { message: `Error updating task: ${error}`, state: \"error\" }\n      });\n    }\n  });\n  const createTimestampApi = () => {\n    if (!selectedAttachment || !timestampData || !application) return;\n    if (isVideoInterview) {\n      return Api.createVideoInterviewBookmark(\n        application.id,\n        newTimestamp.name,\n        timeStringToSeconds(newTimestamp.value)\n      );\n    } else {\n      return Api.createVideoTimestamp(\n        selectedAttachment.id,\n        newTimestamp.name,\n        newTimestamp.value\n      );\n    }\n  };\n  const { mutate: addTimestamp } = useMutation({\n    mutationFn: () => __async(this, null, function* () {\n      const { res } = yield createTimestampApi();\n      return res;\n    }),\n    onSuccess: () => __async(this, null, function* () {\n      dispatch({\n        type: \"SET_SNACKBAR\",\n        payload: { message: \"Timestamp added successfully\", state: \"success\" }\n      });\n      setNewTimestamp(__spreadProps(__spreadValues({}, newTimestamp), { name: \"\", value: \"\" }));\n      dispatch({ type: \"RESET_TIMESTAMP_STATE\" });\n      yield queryClient.invalidateQueries([\"timestamp_data\", selectedAttachment]);\n      setTimestampAdded(true);\n    }),\n    onError: (error) => {\n      dispatch({\n        type: \"SET_SNACKBAR\",\n        payload: { message: `Error adding timestamp: ${error}`, state: \"error\" }\n      });\n    }\n  });\n  const deleteTimestampApi = (id) => {\n    if (!selectedAttachment || !timestampData || !application) return;\n    if (isVideoInterview) {\n      return Api.deleteVideoInterviewBookmark(application == null ? void 0 : application.id, id);\n    } else {\n      return Api.deleteVideoTimestamp(selectedAttachment.id, id);\n    }\n  };\n  const { mutate: deleteTimestamp } = useMutation({\n    mutationFn: (id) => __async(this, null, function* () {\n      deleteTimestampApi(id);\n    }),\n    onSuccess: () => __async(this, null, function* () {\n      dispatch({\n        type: \"SET_SNACKBAR\",\n        payload: { message: \"Timestamp deleted successfully\", state: \"success\" }\n      });\n      yield queryClient.invalidateQueries([\"timestamp_data\", selectedAttachment]);\n    }),\n    onError: (error) => {\n      dispatch({\n        type: \"SET_SNACKBAR\",\n        payload: { message: `Error deleting timestamp: ${error}`, state: \"error\" }\n      });\n    }\n  });\n  return {\n    timestampData,\n    loadingTimestampData,\n    updateTimestamp,\n    updatingTimestamp,\n    addTimestamp,\n    deleteTimestamp\n  };\n}\nexport function useCurrentTime(videoRef, setCurrentTime) {\n  useEffect(() => {\n    const videoElement = videoRef.current;\n    const getCurrentTime = () => {\n      if (videoRef.current) {\n        setCurrentTime(secondsToTimeString(videoRef.current.currentTime));\n      }\n    };\n    if (videoElement) {\n      videoElement.addEventListener(\"timeupdate\", getCurrentTime);\n      videoElement.addEventListener(\"pause\", getCurrentTime);\n    }\n    return () => {\n      if (videoElement) {\n        videoElement.removeEventListener(\"timeupdate\", getCurrentTime);\n        videoElement.removeEventListener(\"pause\", getCurrentTime);\n      }\n    };\n  }, [videoRef]);\n}\nexport const useNotepadUpdater = ({\n  application,\n  dispatch\n}) => {\n  const queryClient = useQueryClient();\n  const { isLoading, mutate } = useMutation({\n    mutationFn: (note) => __async(void 0, null, function* () {\n      if (application) {\n        const { res } = yield Api.updateApplicationNotepad(\n          application.job.id,\n          application.id,\n          note\n        );\n        return res;\n      }\n    }),\n    onSuccess: () => {\n      dispatch({\n        type: \"SET_SNACKBAR\",\n        payload: { message: \"Notepad updated successfully\", state: \"success\" }\n      });\n      dispatch({\n        type: \"SET_OVERVIEW_TAB\",\n        payload: { hasUnsavedChanges: false }\n      });\n      queryClient.invalidateQueries([\"application\"], { exact: true });\n    },\n    onError: (error) => {\n      dispatch({\n        type: \"SET_SNACKBAR\",\n        payload: {\n          message: `There was an error in updating application notepad, ${error.error}`,\n          state: \"error\"\n        }\n      });\n    }\n  });\n  return {\n    isLoading,\n    mutate\n  };\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { defaultSections, InitialTimeStampState } from \"./config\";\nexport const InitialApplicationState = {\n  apiKey: \"\",\n  snackbar: {\n    message: \"\",\n    state: \"success\"\n  },\n  modalsOpen: null,\n  actions: {\n    anchorEl: null\n  },\n  sortableSections: defaultSections,\n  emailPlaceholders: \"\",\n  editedTask: null,\n  selectedAttachmentAction: {\n    preview: null,\n    delete: null\n  },\n  selectedFormResponseAction: {\n    edit: null,\n    delete: null\n  },\n  timeStampState: InitialTimeStampState,\n  isAdminUser: false,\n  userTimeZone: \"\",\n  focused: false,\n  userEmail: \"\",\n  overviewTab: { note: \"\", hasUnsavedChanges: false },\n  referenceId: null,\n  selectedReferee: null\n};\nexport const ApplicationReducer = (state, action) => {\n  switch (action.type) {\n    case \"SET_USER_DATA\":\n      return __spreadProps(__spreadValues({}, state), {\n        apiKey: action.payload.apiKey,\n        isAdminUser: action.payload.isAdminUser,\n        userTimeZone: action.payload.userTimeZone,\n        userEmail: action.payload.userEmail\n      });\n    case \"SET_SNACKBAR\":\n      return __spreadProps(__spreadValues({}, state), { snackbar: action.payload });\n    case \"SET_MODALS_OPEN\":\n      return __spreadProps(__spreadValues({}, state), { modalsOpen: action.payload });\n    case \"SET_ACTIONS\":\n      return __spreadProps(__spreadValues({}, state), { actions: action.payload });\n    case \"SET_SORTABLE_SECTIONS\":\n      return __spreadProps(__spreadValues({}, state), { sortableSections: action.payload });\n    case \"SET_EMAIL_PLACEHOLDERS\":\n      return __spreadProps(__spreadValues({}, state), { emailPlaceholders: action.payload });\n    case \"SET_EDITED_TASK\":\n      return __spreadProps(__spreadValues({}, state), { editedTask: action.payload });\n    case \"SET_SELECTED_ATTACHMENT_ACTION\":\n      return __spreadProps(__spreadValues({}, state), { selectedAttachmentAction: action.payload });\n    case \"SET_SELECTED_FORM_RESPONSE_ACTION\":\n      return __spreadProps(__spreadValues({}, state), { selectedFormResponseAction: action.payload });\n    case \"SET_TIMESTAMP_STATE\":\n      return __spreadProps(__spreadValues({}, state), {\n        timeStampState: __spreadProps(__spreadValues({}, state.timeStampState), { [action.payload.name]: action.payload.value })\n      });\n    case \"RESET_TIMESTAMP_STATE\":\n      return __spreadProps(__spreadValues({}, state), { timeStampState: InitialTimeStampState });\n    case \"SET_FOCUSED\":\n      return __spreadProps(__spreadValues({}, state), { focused: action.payload });\n    case \"SET_OVERVIEW_TAB\":\n      return __spreadProps(__spreadValues({}, state), {\n        overviewTab: __spreadValues(__spreadValues({}, state.overviewTab), action.payload)\n      });\n    case \"SET_UNUSUAL_ACTIVITY_DATA\":\n      return __spreadProps(__spreadValues({}, state), {\n        referenceId: action.payload.referenceId,\n        selectedReferee: action.payload.selectedReferee\n      });\n    default:\n      return state;\n  }\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { theme } from \"../../ThemeContext/ThemeObject\";\nimport { actionsMenuPaperCommonStyles } from \"../shared/commonStyles\";\nexport const styles = {\n  applicationStatusDropdownStyle: {\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    borderRadius: \"6px\",\n    color: \"#333333\",\n    border: \"1px solid #DDDDDD\",\n    fontSize: \"12px\",\n    marginTop: 1,\n    padding: \"6px 10px\",\n    height: \"38px\"\n  },\n  applicationStatusPopoverStyle: {\n    \"& .MuiPaper-root\": {\n      minWidth: \"150px\",\n      maxHeight: \"200px\",\n      overflow: \"auto\",\n      borderRadius: \"6px\",\n      marginTop: 1\n    }\n  },\n  actionsMenu: {\n    \"& .MuiPaper-root\": __spreadProps(__spreadValues({}, actionsMenuPaperCommonStyles), {\n      rowGap: \"11px\",\n      minWidth: \"153px\",\n      marginTop: \"6px\"\n    })\n  },\n  actionsItem: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    color: \"#939393\",\n    cursor: \"pointer\",\n    \"&:hover\": {\n      color: theme.palette.primary.main\n    }\n  },\n  linkedInURLInput: {\n    \".MuiInputBase-input\": {\n      height: \"10px\",\n      margin: \"unset\",\n      padding: \"4px 6px\",\n      fontSize: \"11px\",\n      minWidth: \"150px\",\n      borderRadius: \"4px\",\n      \"&::placeholder\": {\n        fontStyle: \"italic\"\n      }\n    }\n  },\n  timeStampInput: {\n    \".MuiInputBase-input\": {\n      height: \"16px\",\n      padding: \"4px 6px\",\n      fontSize: \"11px\",\n      minWidth: \"50px\",\n      borderRadius: \"4px\",\n      \"&::placeholder\": {\n        fontStyle: \"italic\"\n      }\n    }\n  },\n  timeStampItem: {\n    cursor: \"pointer\",\n    color: theme.palette.primary.dark,\n    fontFamily: \"Source Sans Pro\",\n    fontWeight: 600,\n    height: \"16px\",\n    margin: \"unset\",\n    padding: \"4px 6px\",\n    fontSize: \"14px\",\n    minWidth: \"50px\"\n  },\n  linkedInURLLink: {\n    cursor: \"pointer\",\n    maxWidth: \"200px\",\n    whiteSpace: \"nowrap\",\n    overflow: \"hidden\",\n    textOverflow: \"ellipsis\",\n    color: \"#084D6D\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    \"&:hover\": { textDecoration: \"underline\" }\n  },\n  modalTitle: {\n    fontWeight: \"bold\",\n    color: \"#084D6D\",\n    fontSize: \"25px\"\n  },\n  clickableGreyIcon: {\n    cursor: \"pointer\",\n    color: \"#666666\"\n  },\n  scoutNavyIcon: {\n    color: \"#084D6D\",\n    fontSize: \"20px\"\n  },\n  smallGreyIcon: {\n    cursor: \"pointer\",\n    color: \"#666666\",\n    fontSize: \"16px\"\n  },\n  applicationHeaderItems: {\n    flexDirection: \"row\",\n    columnGap: 1,\n    alignItems: \"center\",\n    fontSize: \"14px\",\n    color: \"#333333\"\n  },\n  applicationHeaderActionsContainer: {\n    flexDirection: \"row\",\n    columnGap: 2,\n    justifyContent: \"end\",\n    flexGrow: 1\n  },\n  surroundingApplications: {\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    borderRadius: \"8px\",\n    columnGap: 1,\n    color: \"#939393\"\n  },\n  surroundingApplicationsButton: {\n    border: \"1px solid #E3E3E3\",\n    borderRadius: \"6px\",\n    padding: \"2px 6px\",\n    cursor: \"pointer\"\n  },\n  additionalInfoContainer: {\n    padding: \"24px 0px\",\n    borderRadius: \"6px\",\n    border: \"1px solid #E3E3E3\",\n    flexDirection: \"row\",\n    columnGap: 2,\n    justifyContent: \"space-around\"\n  },\n  AISummaryContainer: {\n    padding: 3,\n    borderRadius: \"6px\",\n    border: \"1px solid #E3E3E3\",\n    rowGap: 1\n  },\n  AISummaryHeader: {\n    svg: { width: \"40px\", height: \"40px\" },\n    flexDirection: \"row\",\n    columnGap: 1,\n    alignItems: \"center\"\n  },\n  AISummaryMessage: {\n    fontWeight: 600,\n    color: \"#2D388D\",\n    span: { color: \"#AFBCFF\" }\n  },\n  AISummaryButton: {\n    background: \"#7A8EF1\",\n    color: \"white\",\n    padding: \"6px 24px\",\n    borderRadius: \"16px\",\n    fontWeight: \"bold\",\n    cursor: \"pointer\"\n  },\n  generateSummaryButton: {\n    flexDirection: \"row\",\n    color: \"#AFBCFF\",\n    padding: \"6px 16px\",\n    borderRadius: \"16px\",\n    fontWeight: \"bold\",\n    cursor: \"pointer\",\n    border: \"2px solid #AFBCFF\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    minWidth: \"170px\"\n  },\n  summaryLastUpdated: {\n    flexDirection: \"row\",\n    columnGap: \"4px\",\n    alignItems: \"center\",\n    color: \"#939393\",\n    fontStyle: \"italic\",\n    fontSize: \"12px\"\n  },\n  ratingCell: {\n    textAlign: \"center\",\n    padding: \"4px 12px\",\n    borderRadius: \"4px\",\n    width: \"60px\",\n    fontWeight: \"400\"\n  },\n  ratingInfoContainer: {\n    padding: \"6px 16px\",\n    margin: 1,\n    border: \"1px solid #5BC4C0\",\n    borderRadius: \"10px\"\n  },\n  ratingInfoClickable: {\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    svg: { color: \"#5BC4C0\" },\n    cursor: \"pointer\"\n  },\n  ratingButton: {\n    border: \"1px solid #E3E3E3\",\n    borderRadius: \"3px\",\n    padding: \"6px 10px\",\n    color: \"#939393\",\n    cursor: \"pointer\",\n    fontWeight: 600,\n    fontSize: \"14px\"\n  },\n  ratingColor: {\n    1: {\n      color: \"#E37D7A\",\n      background: \"#FCEFEF\",\n      borderColor: \"#FCEFEF\"\n    },\n    2: {\n      color: \"#E58F66\",\n      background: \"rgba(229, 143, 102, 0.12)\",\n      borderColor: \"rgba(229, 143, 102, 0.12)\"\n    },\n    3: {\n      color: \"#E6A052\",\n      background: \"#FCF4EA\",\n      borderColor: \"#FCF4EA\"\n    },\n    4: {\n      color: \"#9BB974\",\n      background: \"rgba(155, 185, 116, 0.12)\",\n      borderColor: \"rgba(155, 185, 116, 0.12)\"\n    },\n    5: {\n      color: \"#8CCF95\",\n      background: \"#EFFDF3\",\n      borderColor: \"#EFFDF3\"\n    }\n  },\n  questionnaireContainer: {\n    padding: 3,\n    borderRadius: \"6px\",\n    border: \"1px solid #E3E3E3\",\n    rowGap: 2\n  },\n  attachmentsContainer: {\n    padding: 3,\n    borderRadius: \"6px\",\n    border: \"1px solid #E3E3E3\",\n    rowGap: 2\n  },\n  ratingCard: {\n    flexDirection: \"row\",\n    fontSize: \"14px\",\n    borderRadius: \"3px\",\n    minWidth: \"170px\",\n    width: \"22%\",\n    padding: \"8px 16px\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    svg: { fontSize: \"14px\" }\n  },\n  editRating: {\n    \".MuiInputBase-input\": {\n      height: \"8px\",\n      borderRadius: \"3px\",\n      padding: 0.5,\n      fontSize: \"12px\",\n      fontWeight: \"bold\",\n      margin: \"unset\"\n    },\n    \"& input::placeholder\": {\n      fontSize: \"10px\"\n    }\n  },\n  editableRatings: {\n    \".MuiFormControl-root\": { width: \"45px\" },\n    \".MuiStack-root\": { marginTop: \"unset\" }\n  },\n  sortableSectionsButton: {\n    border: \"1px solid #EAEEF0\",\n    borderRadius: \"6px\",\n    padding: \"6px 14px\",\n    height: \"min-content\",\n    cursor: \"pointer\",\n    \"& svg\": {\n      fontSize: \"30px\",\n      color: \"#084D6D\"\n    }\n  },\n  sortableSectionsHeader: {\n    flexDirection: \"row\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    marginBottom: 1\n  },\n  timeslotAvailabilityButton: {\n    padding: \"6px 24px\",\n    borderRadius: \"6px\",\n    alignItems: \"center\",\n    fontWeight: \"bold\",\n    width: \"min-content\"\n  },\n  preview: {\n    color: \"#666666\",\n    fontSize: \"medium\",\n    \"&:hover\": {\n      cursor: \"pointer\"\n    }\n  },\n  fileIconContainer: {\n    display: \"flex\",\n    alignItems: \"center\"\n  },\n  fileIcon: {\n    cursor: \"pointer\",\n    width: \"50px\",\n    height: \"50px\",\n    borderRadius: \"3px\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    marginRight: \"20px\",\n    backgroundColor: \"#084D6D10\",\n    \"& svg\": {\n      color: theme.palette.primary.main,\n      margin: \"0px 2px 2px 0px\"\n    }\n  },\n  fileName: {\n    color: theme.palette.primary.main,\n    fontSize: \"15px\",\n    fontWeight: \"bold\",\n    cursor: \"pointer\"\n  },\n  fileDate: {\n    color: \"#999999\"\n  },\n  fileAttachedBy: {\n    color: \"#333333\",\n    fontSize: \"15px\"\n  },\n  noAttachments: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    width: \"100%\",\n    margin: \"24px 0px\"\n  },\n  tableWrapper: {\n    tableLayout: \"auto !important\",\n    border: \"none\",\n    \"td, th, tr, thead\": {\n      fontFamily: \"Source Sans Pro, sans-serif\",\n      border: \"none\",\n      backgroundColor: \"#FFFFFF\",\n      textTransform: \"none\",\n      padding: \"12px 0px\",\n      cursor: \"inherit\"\n    },\n    th: {\n      color: theme.palette.primary.main,\n      fontWeight: \"bold\",\n      paddingBottom: \"16px\",\n      \"& .Mui-active\": {\n        color: theme.palette.primary.main\n      }\n    }\n  },\n  tableActionIcon: {\n    \"&:focus\": {\n      outline: \"none\"\n    }\n  },\n  timeslotsContainer: {\n    flexDirection: \"row\",\n    width: \"100%\",\n    maxHeight: \"290px\",\n    columnGap: 2,\n    rowGap: 2,\n    flexFlow: \"wrap\",\n    overflow: \"auto\",\n    \"&::-webkit-scrollbar\": {\n      display: \"none\"\n    }\n  },\n  timeslot: {\n    border: `1px solid #DDDDDD`,\n    borderRadius: \"6px\",\n    padding: \"8px 16px\",\n    fontWeight: \"bold\",\n    width: \"125px\"\n  },\n  timeslotSubject: {\n    fontSize: \"12px\",\n    overflow: \"hidden\",\n    whiteSpace: \"nowrap\",\n    textOverflow: \"ellipsis\"\n  },\n  noTimeslotMessage: {\n    padding: 9,\n    fontSize: \"20px\",\n    fontWeight: \"bold\",\n    color: theme.palette.common.grey\n  },\n  emptyStateContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    width: \"100%\",\n    margin: \"100px 0px\"\n  },\n  emptyStateText: {\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    color: \"#DDDDDD\",\n    fontSize: \"18px\",\n    fontWeight: \"bold\",\n    margin: \"32px 0px\"\n  },\n  applicationPageStickyHeader: {\n    position: \"sticky\",\n    top: \"0px\",\n    zIndex: 10,\n    background: \"white\",\n    rowGap: 3,\n    paddingBottom: 3\n  },\n  emptyStateIcon: { fontSize: \"5rem\", color: \"#EAEAEA\" },\n  emptyStateMessage: { color: \"#DDDDDD\", fontWeight: \"bold\" },\n  smartFormsAnswersPreviewContainer: {\n    \"& > div > div:first-of-type\": {\n      color: theme.palette.primary.dark,\n      fontWeight: \"bold\"\n    },\n    \"& > div > div:not(:first-of-type)\": {\n      color: \"#333333\"\n    },\n    \"& > div\": {\n      paddingLeft: 0\n    }\n  },\n  smartFormsTableContainer: {\n    tableLayout: \"auto !important\",\n    border: \"none\",\n    th: {\n      color: theme.palette.primary.main,\n      fontWeight: \"bold\",\n      paddingBottom: \"16px\",\n      \"& .Mui-active\": {\n        color: theme.palette.primary.main\n      }\n    },\n    \"td, th, tr, thead\": {\n      fontFamily: \"Source Sans Pro, sans-serif\",\n      border: \"none\",\n      backgroundColor: \"#FFFFFF\",\n      textTransform: \"none\",\n      padding: \"24px\"\n    },\n    \"& thead > tr\": { borderBottom: \"1px solid #E5E5E5\" },\n    \"& tbody > tr:nth-of-type(2n)\": {\n      borderBottom: \"1px solid #E5E5E5\"\n    }\n  },\n  ratingInput: { flexDirection: \"row\", alignItems: \"center\", columnGap: 0.5 },\n  questionsAndRatingsContainer: {\n    overflow: \"auto\",\n    rowGap: 2,\n    flexGrow: 1\n  },\n  betaButtonTooltipContainer: {\n    width: \"430px\",\n    height: \"400px\",\n    color: \"#333333\",\n    fontFamily: \"Source Sans Pro\",\n    rowGap: 2,\n    padding: 2\n  },\n  candidateLink: {\n    color: \"#084D6D\",\n    fontSize: \"20px\",\n    fontWeight: \"bold\",\n    width: \"fit-content\"\n  }\n};\n","\"use strict\";\nimport RecruitApiClient from \"../../RecruitApiClient\";\nconst BASE_URL = \"/api/v4\";\nclass Api {\n  constructor() {\n    this.getEntityApprovers = () => RecruitApiClient.get(`${BASE_URL}/requisition_managers/entity_default_approvers`);\n    this.getApprovalManagers = (params) => RecruitApiClient.get(`${BASE_URL}/requisition_managers`, params);\n    this.createApprovalManager = (params) => RecruitApiClient.post(`${BASE_URL}/requisition_managers`, params);\n    this.deleteApprovalManager = (approvalManagerId) => RecruitApiClient.delete(`${BASE_URL}/requisition_managers/${approvalManagerId}`);\n    this.deleteApprovalManagers = (params) => RecruitApiClient.delete(`${BASE_URL}/requisition_managers/bulk_destroy`, params);\n    this.updateApprovalManager = (params, approvalManagerId) => RecruitApiClient.put(`${BASE_URL}/requisition_managers/${approvalManagerId}`, params);\n    this.getEmailTemplates = () => RecruitApiClient.get(`${BASE_URL}/requisition_forms/email_templates`);\n    this.getEnabledApprovalTemplates = () => RecruitApiClient.get(`${BASE_URL}/requisition_forms/enabled_for_applications`);\n    this.createApprovalTemplate = (params) => RecruitApiClient.post(`${BASE_URL}/requisition_forms`, params);\n    this.updateApprovalTemplate = (approvalTemplateId, params) => RecruitApiClient.put(`${BASE_URL}/requisition_forms/${approvalTemplateId}`, params);\n    this.cloneApprovalTemplate = (approvalTemplateId, params) => RecruitApiClient.post(`${BASE_URL}/requisition_forms/${approvalTemplateId}/clone`, params);\n    this.getApprovalTemplate = (approvalTemplateId) => RecruitApiClient.get(`${BASE_URL}/requisition_forms/${approvalTemplateId}`);\n    this.getApprovalTemplates = (params) => RecruitApiClient.get(`${BASE_URL}/requisition_forms`, params);\n    this.getApprovalForms = (params) => RecruitApiClient.get(`${BASE_URL}/requisitions`, params);\n    this.getApprovalForm = (approvalFormId) => RecruitApiClient.get(`${BASE_URL}/requisitions/${approvalFormId}`);\n    this.putApprovalForm = (approvalFormId, params) => RecruitApiClient.put(`${BASE_URL}/requisitions/${approvalFormId}`, params);\n    this.postResendEmail = (approvalFormId, params) => RecruitApiClient.post(`${BASE_URL}/requisitions/${approvalFormId}/resend_email`, params);\n    this.cloneApprovalForm = (approvalFormId) => RecruitApiClient.post(`${BASE_URL}/requisitions/${approvalFormId}/clone`);\n    this.generateBulkPdf = (approvalFormId) => RecruitApiClient.post(`${BASE_URL}/requisitions/${approvalFormId}/bulk_pdf`);\n    this.getTargetEntities = () => RecruitApiClient.get(`${BASE_URL}/target_entities`);\n    this.moveApprovalTemplate = (approvalTemplateId, entityId) => RecruitApiClient.post(\n      `${BASE_URL}/requisition_forms/${approvalTemplateId}/move?requisition_form[entity_id]=${entityId}`\n    );\n    this.getCreators = () => RecruitApiClient.get(`${BASE_URL}/requisition_forms/creators`);\n    this.getApprovalPublicLinks = (params) => RecruitApiClient.get(`${BASE_URL}/requisition_public_links`, params);\n    this.createApprovalPublicLink = (params) => RecruitApiClient.post(`${BASE_URL}/requisition_public_links`, params);\n    this.updateApprovalPublicLink = (publicLinkId, params) => RecruitApiClient.put(`${BASE_URL}/requisition_public_links/${publicLinkId}`, params);\n    this.deleteApprovalPublicLinks = (params) => RecruitApiClient.delete(`${BASE_URL}/requisition_public_links/bulk_destroy`, params);\n    this.newField = (approvalTemplateId, params) => RecruitApiClient.post(`${BASE_URL}/fields?requisition_form_id=${approvalTemplateId}`, params);\n    this.addSystemField = (approvalTemplateId, systemFieldId) => RecruitApiClient.post(\n      `${BASE_URL}/system_fields?requisition_form_id=${approvalTemplateId}&system_field_id=${systemFieldId}`\n    );\n    this.getQuestions = (params) => RecruitApiClient.get(`${BASE_URL}/fields`, params);\n    this.deleteQuestion = (id, approvalTemplateId) => RecruitApiClient.delete(`${BASE_URL}/fields/${id}?requisition_form_id=${approvalTemplateId}`);\n    this.cloneQuestion = (id, approvalTemplateId) => RecruitApiClient.post(\n      `${BASE_URL}/fields/${id}/clone?requisition_form_id=${approvalTemplateId}`\n    );\n    this.putQuestion = (id, approvalTemplateId, params) => RecruitApiClient.put(\n      `${BASE_URL}/fields/${id}?requisition_form_id=${approvalTemplateId}`,\n      params\n    );\n    this.postArchiveApprovalForms = (params) => RecruitApiClient.post(`${BASE_URL}/requisitions/bulk_archive`, params);\n    this.postUnarchiveApprovalForms = (params) => RecruitApiClient.post(`${BASE_URL}/requisitions/bulk_unarchive`, params);\n    this.deleteTrashApprovalForms = (params) => RecruitApiClient.delete(`${BASE_URL}/requisitions/bulk_destroy`, params);\n    this.postArchiveApprovalTemplates = (params) => RecruitApiClient.post(`${BASE_URL}/requisition_forms/bulk_archive`, params);\n    this.postUnarchiveApprovalTemplates = (params) => RecruitApiClient.post(`${BASE_URL}/requisition_forms/bulk_unarchive`, params);\n    this.deleteTrashApprovalTemplates = (params) => RecruitApiClient.delete(`${BASE_URL}/requisition_forms/bulk_destroy`, params);\n    this.getAssignableUsers = () => RecruitApiClient.get(`${BASE_URL}/assignable_users`);\n    this.getCSVData = (questionId, positionId) => RecruitApiClient.get(`${BASE_URL}/system_fields/${questionId}/remote`, {\n      position_id: positionId,\n      new_position: false\n    });\n    this.getJobs = () => RecruitApiClient.get(`${BASE_URL}/jobs/jobs_for_requisitions`);\n    this.getApplications = (jobId) => RecruitApiClient.get(`${BASE_URL}/jobs/${jobId}/applications_for_requisition`);\n    this.getFilters = (url, params) => RecruitApiClient.get(`${BASE_URL}/requisitions/${url}`, params);\n  }\n}\nexport default new Api();\n","\"use strict\";\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nexport const styles = {\n  noticeContainer: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    justifyContent: \"center\",\n    padding: \"9px 16px\",\n    border: `1px solid ${theme.palette.error.main}`,\n    borderRadius: \"8px\",\n    color: theme.palette.error.main,\n    fontSize: \"16px\",\n    margin: \"16px\",\n    rowGap: \"1px\"\n  },\n  noticeIcon: {\n    color: theme.palette.error.main,\n    marginTop: \"4px\",\n    fontSize: \"16px\"\n  },\n  toggleButtonsContainer: {\n    display: \"flex\",\n    justifyContent: \"center\",\n    marginTop: \"20px\",\n    width: \"100%\",\n    marginBottom: \"40px\",\n    padding: \"0px 16px\"\n  },\n  toggleButton: {\n    \"&.MuiToggleButtonGroup-grouped\": {\n      borderRadius: \"0px !important\"\n    },\n    width: \"180px\",\n    padding: \"4px 17px !important\",\n    fontFamily: \"Source Sans Pro\",\n    color: \"#666666\",\n    fontSize: \"15px\",\n    fontWeight: \"bold\",\n    borderRadius: \"12px\",\n    backgroundColor: \"#E5E5E5\",\n    textTransform: \"none\",\n    \"&:focus\": {\n      outline: \"none\"\n    }\n  },\n  label: {\n    color: \"#333333 !important\",\n    fontSize: \"16px\",\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    marginBottom: \"6px\",\n    overflowWrap: \"anywhere\"\n  }\n};\n","\"use strict\";\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nexport const styles = {\n  actionsModal: {\n    display: \"flex\",\n    width: \"818px\",\n    borderRadius: \"6px\",\n    fontFamily: \"Source Sans Pro\",\n    dropShadow: \"0px 2px 14px #305A6F29\",\n    position: \"absolute\",\n    background: \"#FFFFFF\",\n    top: \"50%\",\n    left: \"50%\",\n    transform: \"translate(-50%, -50%)\"\n  },\n  modalTabsContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    padding: \"30px 0\",\n    minWidth: \"255px\"\n  },\n  modalFormContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    flexWrap: \"wrap\",\n    flexGrow: 1,\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    padding: \"20px\"\n  },\n  closeIconContainer: {\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    width: \"100%\"\n  },\n  modalActions: {\n    display: \"flex\",\n    width: \"100%\",\n    padding: \"8px 16px\",\n    justifyContent: \"flex-end\",\n    \"& a\": {\n      \"&:hover\": {\n        textDecoration: \"none\"\n      }\n    }\n  },\n  closeIcon: {\n    cursor: \"pointer\",\n    color: \"#DDDDDD\"\n  },\n  modalHeader: {\n    fontSize: \"25px\",\n    fontWeight: \"bold\",\n    padding: \"20px 40px\",\n    color: theme.palette.primary.main\n  },\n  tabTitle: {\n    fontSize: \"18px\",\n    padding: \"15px 40px\",\n    flexDirection: \"row\"\n  },\n  hoverTabTitle: {\n    \"&:hover\": {\n      cursor: \"pointer\"\n    }\n  },\n  tabContent: {\n    flexGrow: 1,\n    width: \"100%\",\n    paddingBottom: 2,\n    height: \"400px\",\n    overflow: \"auto\",\n    \"&::-webkit-scrollbar\": {\n      display: \"none\"\n    }\n  },\n  tabContentTitle: {\n    fontWeight: \"bold\",\n    fontSize: \"22px\",\n    color: \"#666666\",\n    padding: 2,\n    paddingTop: 1\n  },\n  tabContentBody: {\n    fontSize: \"14px\",\n    color: \"#939393\",\n    padding: \"8px 16px\",\n    borderRadius: \"4px\"\n  },\n  tabContentError: {\n    color: theme.palette.error.main,\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    fontSize: \"13px\"\n  },\n  emailItemList: {\n    display: \"flex\",\n    marginTop: 3,\n    justifyContent: \"space-between\",\n    alignItems: \"center\"\n  },\n  modalSaveButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontWeight: \"bold\",\n    textTransform: \"none\",\n    color: \"#FFF\",\n    background: \"rgb(91,196,191)\",\n    borderRadius: \"6px\",\n    padding: \"8px 14px\",\n    boxShadow: \"none\",\n    \":focus\": {\n      outline: \"none\"\n    },\n    \"&:hover\": {\n      backgroundColor: \"#4da8a4\",\n      boxShadow: \"none\"\n    }\n  },\n  selectButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontWeight: \"bold\",\n    textTransform: \"none\",\n    color: \"#FFFFFF\",\n    backgroundColor: \"#5BC4BF\",\n    borderRadius: \"6px\",\n    padding: \"8px 14px\",\n    boxShadow: \"none\",\n    \":focus\": {\n      outline: \"none\"\n    },\n    \"&:hover\": {\n      backgroundColor: \"#5BC4BF\"\n    }\n  },\n  iconGrey: {\n    color: \"#666666\",\n    fontSize: \"28px\"\n  },\n  questionListItem: {\n    display: \"flex\",\n    fontSize: \"14px\",\n    color: \"#939393\",\n    padding: \"8px 16px\",\n    borderRadius: \"4px\",\n    justifyContent: \"space-between\",\n    \"& button\": {\n      display: \"none\"\n    },\n    \"&:hover\": {\n      backgroundColor: \"rgba(8,77,109,0.07)\",\n      color: \"#000000\",\n      \"& button\": {\n        display: \"inline-block\"\n      }\n    }\n  },\n  questionListItemSelected: {\n    display: \"flex\",\n    fontSize: \"14px\",\n    color: \"#939393\",\n    padding: \"8px 16px\",\n    borderRadius: \"4px\",\n    justifyContent: \"space-between\",\n    backgroundColor: \"rgba(8,77,109,0.07)\"\n  }\n};\n","\"use strict\";\nexport const defaultFilters = {\n  created_by: []\n};\nexport const dropdownSetting = {\n  name: true,\n  updated_at: true,\n  created_by: true,\n  note: false\n};\nexport const dropdownOptions = [\n  {\n    name: \"updated_at\",\n    label: \"Updated At\"\n  },\n  {\n    name: \"created_by\",\n    label: \"Created By\"\n  },\n  {\n    name: \"note\",\n    label: \"Note\"\n  }\n];\nexport const approvalTemplateHeaders = [\n  {\n    name: \"name\",\n    label: \"Title\",\n    sortable: true\n  },\n  {\n    name: \"updated_at\",\n    label: \"Updated At\",\n    sortable: true\n  },\n  {\n    name: \"created_by\",\n    label: \"Created By\",\n    sortable: true\n  },\n  {\n    name: \"note\",\n    label: \"Note\",\n    sortable: false\n  }\n];\n","\"use strict\";\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport { actionsModalReducedPaddingCommonStyles } from \"../../shared/commonStyles\";\nimport { closeIcon } from \"../../shared/styleClasses\";\nexport const classes = {\n  modalActions: {\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    marginTop: \"auto\",\n    marginBottom: \"30px\",\n    width: \"100%\",\n    columnGap: \"16px\",\n    \"& a\": {\n      \"&:hover\": {\n        textDecoration: \"none\"\n      }\n    }\n  },\n  buttonRedLight: {\n    color: \"#E37D7A\",\n    fontFamily: \"Source Sans Pro\",\n    textTransform: \"capitalize\",\n    padding: \"8px 18px\",\n    fontWeight: \"bold\",\n    fontSize: \"14px\",\n    textDecoration: \"underline\",\n    backgroundColor: \"#ffffff\",\n    \"&:hover\": {\n      color: \"#d74742\",\n      backgroundColor: \"#ffffff\"\n    }\n  },\n  revertloadButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"15px\",\n    fontWeight: \"bold\",\n    textTransform: \"none\",\n    color: \"#FFFFFF\",\n    backgroundColor: \"#5BC4BF\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    padding: \"8px 18px\",\n    \"&:hover\": {\n      backgroundColor: \"#4da8a4\",\n      boxShadow: \"none\"\n    }\n  },\n  closeIcon,\n  actionsModal: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    padding: \"60px\",\n    maxWidth: \"800px\",\n    width: \"90%\",\n    height: \"95%\",\n    maxHeight: \"328px\",\n    borderRadius: \"6px\",\n    dropShadow: \"0px 2px 14px #305A6F29\",\n    position: \"absolute\",\n    background: \"#FFFFFF\",\n    top: \"50%\",\n    left: \"50%\",\n    transform: \"translate(-50%, -50%)\"\n  },\n  actionsModalReducedPadding: actionsModalReducedPaddingCommonStyles,\n  modalContent: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    height: \"100%\",\n    overflowY: \"scroll\",\n    overflowX: \"hidden\",\n    margin: \"46px 0px\"\n  },\n  modalHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"30px\",\n    fontWeight: \"bold\",\n    color: theme.palette.primary.main,\n    display: \"flex\",\n    flexDirection: \"column\"\n  },\n  modalEditButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"15px\",\n    fontWeight: \"bold\",\n    textTransform: \"none\",\n    color: \"#FFFFFF\",\n    backgroundColor: \"#5BC4BF\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    padding: \"8px 18px\",\n    \"&:hover\": {\n      backgroundColor: \"#4da8a4\",\n      boxShadow: \"none\"\n    }\n  },\n  iconGrey: {\n    color: \"#666666\",\n    fontSize: \"28px\"\n  },\n  tabs: {\n    \"& button\": {\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"18px\",\n      letterSpacing: \"0\",\n      color: \"#939393\",\n      textTransform: \"none\",\n      minWidth: \"unset\",\n      \"&:hover\": {\n        color: \"#737373\"\n      },\n      \"&:focus\": {\n        outline: \"none\"\n      }\n    },\n    \"& button.Mui-selected\": {\n      fontWeight: \"600\",\n      color: \"#084D6D\"\n    }\n  },\n  tabsContainer: {\n    borderBottom: 1,\n    borderColor: \"#EEEEEE\",\n    marginBottom: \"25px\"\n  },\n  tabIndicator: {\n    backgroundColor: \"#5BC4BF\",\n    margin: \"0 16px\"\n  },\n  modalFormLine: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    flexDirection: \"row\",\n    columnGap: \"50px\",\n    rowGap: \"26px\",\n    alignItems: \"center\",\n    marginBottom: \"30px\",\n    width: \"100%\"\n  },\n  jobPageContainer: {\n    backgroundColor: \"#FFFFFF\",\n    padding: \"40px\"\n  },\n  jobPageHeader: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    width: \"100%\",\n    marginBottom: \"26px\",\n    padding: \"0px 16px\",\n    \"& h1\": {\n      fontFamily: \"Source Sans Pro\",\n      fontWeight: \"bold\",\n      fontSize: \"38px\",\n      color: \"#666666\",\n      marginTop: \"0\"\n    }\n  },\n  backToJobButton: {\n    marginBottom: \"20px\",\n    fontSize: \"16px\",\n    color: \"#eee\",\n    opacity: \"0.8\",\n    display: \"flex\",\n    alignItems: \"center\",\n    \"& div\": {\n      fontWeight: \"600\",\n      color: \"#666666\",\n      \":hover\": {\n        color: \"#545454\",\n        cursor: \"pointer\"\n      }\n    }\n  },\n  draftButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    textTransform: \"none\",\n    color: \"rgb(91,196,191)\",\n    background: \"rgb(91,196,191,0.12)\",\n    height: \"41px\",\n    margin: \"8px 0\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    padding: \"8px 14px\",\n    \"&:hover\": {\n      backgroundColor: \"#5BC4BF\",\n      color: \"#FFFFFF\",\n      boxShadow: \"none\"\n    }\n  },\n  cancelButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    width: \"70px\",\n    textTransform: \"none\",\n    textDecoration: \"underline\",\n    color: theme.palette.error.main,\n    backgroundColor: \"#FFFFFF\",\n    height: \"41px\",\n    margin: \"8px 0\",\n    marginRight: \"auto\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    padding: \"5px 0px\",\n    \"&:hover\": {\n      backgroundColor: \"#FFFFFF\",\n      textDecoration: \"none\",\n      boxShadow: \"none\"\n    }\n  },\n  footerButtons: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    padding: \"1em\",\n    justifyContent: \"flex-end\",\n    columnGap: \"20px\"\n  },\n  sectionHeader: {\n    fontSize: \"18px\",\n    fontWeight: \"bold\",\n    color: \"#666666\",\n    padding: \"8px 4px\"\n  },\n  sectionSubtitle: {\n    color: \"#838383\",\n    fontFamily: \"Source Sans Pro\",\n    paddingInline: \"4px\"\n  },\n  approversContainer: {\n    display: \"flex\",\n    marginTop: 3,\n    alignItems: \"center\",\n    padding: \"8px 0\"\n  },\n  fileContainer: {\n    display: \"flex\",\n    alignItems: \"center\",\n    padding: \"5px 0\"\n  },\n  fileIconContainer: {\n    display: \"flex\",\n    alignItems: \"center\"\n  },\n  fileIcon: {\n    width: \"50px\",\n    height: \"50px\",\n    borderRadius: \"3px\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    marginRight: \"20px\",\n    backgroundColor: \"#084D6D10\",\n    \"& svg\": {\n      color: theme.palette.primary.main\n    }\n  },\n  fileName: {\n    color: theme.palette.primary.main,\n    fontSize: \"15px\",\n    fontWeight: \"bold\",\n    overflow: \"hidden\",\n    whiteSpace: \"nowrap\",\n    textOverflow: \"ellipsis\",\n    maxWidth: \"350px\"\n  },\n  fileSize: {\n    color: \"#999999\"\n  }\n};\n","\"use strict\";\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport { closeIcon } from \"../../shared/styleClasses\";\nexport const classes = {\n  modalActions: {\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    marginTop: \"auto\",\n    marginBottom: \"30px\",\n    width: \"100%\",\n    columnGap: \"16px\",\n    \"& a\": {\n      \"&:hover\": {\n        textDecoration: \"none\"\n      }\n    }\n  },\n  buttonRedLight: {\n    color: \"#E37D7A\",\n    fontFamily: \"Source Sans Pro\",\n    textTransform: \"capitalize\",\n    padding: \"8px 18px\",\n    fontWeight: \"bold\",\n    fontSize: \"14px\",\n    textDecoration: \"underline\",\n    backgroundColor: \"#ffffff\",\n    \"&:hover\": {\n      color: \"#d74742\",\n      backgroundColor: \"#ffffff\"\n    }\n  },\n  closeIcon,\n  actionsModal: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    padding: \"40px 60px\",\n    maxWidth: \"800px\",\n    width: \"90%\",\n    height: \"95%\",\n    maxHeight: \"400px\",\n    borderRadius: \"6px\",\n    dropShadow: \"0px 2px 14px #305A6F29\",\n    position: \"absolute\",\n    background: \"#FFFFFF\",\n    top: \"50%\",\n    left: \"50%\",\n    transform: \"translate(-50%, -50%)\"\n  },\n  modalHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"30px\",\n    fontWeight: \"bold\",\n    color: theme.palette.primary.main,\n    display: \"flex\",\n    flexDirection: \"column\"\n  },\n  modalEditButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"15px\",\n    fontWeight: \"bold\",\n    textTransform: \"none\",\n    color: \"#FFFFFF\",\n    backgroundColor: \"#5BC4BF\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    padding: \"8px 18px\",\n    \"&:hover\": {\n      backgroundColor: \"#4da8a4\",\n      boxShadow: \"none\"\n    }\n  },\n  iconGrey: {\n    color: \"#666666\",\n    fontSize: \"28px\"\n  },\n  modalFormLine: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    flexDirection: \"row\",\n    columnGap: \"50px\",\n    rowGap: \"26px\",\n    alignItems: \"center\",\n    marginBottom: \"30px\",\n    width: \"100%\"\n  },\n  autocompleteListboxStyle: {\n    fontFamily: \"Source Sans Pro\",\n    color: \"#333333\",\n    maxHeight: \"200px\"\n  },\n  checkboxLabel: {\n    color: \"#939393\",\n    paddingLeft: \"4px\"\n  },\n  checkbox: {\n    color: \"#DDDDDD\",\n    \"&.Mui-checked\": {\n      color: \"#5BC4BF\"\n    }\n  }\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport { actionsModalReducedPaddingCommonStyles } from \"../../shared/commonStyles\";\nimport {\n  actionButton,\n  actionModalFormLine,\n  closeIcon,\n  modalCreateButton\n} from \"../../shared/styleClasses\";\nexport const classes = {\n  questionsPageContainer: {\n    paddingTop: \"6px\",\n    width: \"100%\"\n  },\n  pageHeader: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    width: \"100%\",\n    padding: \"0px 16px\",\n    \"& h2\": {\n      fontWeight: \"bold\",\n      fontSize: \"20px\",\n      lineHeight: \"1.2em\",\n      color: \"#666666\",\n      marginTop: \"0\",\n      \"@media (max-width: 1450px)\": {\n        fontSize: \"20px\"\n      },\n      \"@media (max-width: 1260px)\": {\n        fontSize: \"14px\"\n      }\n    }\n  },\n  modalWrapper: {\n    height: \"100%\",\n    position: \"relative\",\n    display: \"contents\"\n  },\n  questionsContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    rowGap: \"30px\",\n    padding: 2,\n    minWidth: \"700px\",\n    position: \"relative\"\n  },\n  questionsHeader: {\n    fontSize: \"18px\",\n    fontWeight: \"600\",\n    color: \"#084D6D\"\n  },\n  noQuestionsContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    width: \"100%\"\n  },\n  noQuestionsText: {\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    color: \"#DDDDDD\",\n    fontSize: \"18px\",\n    fontWeight: \"bold\",\n    margin: \"32px 0px\",\n    textAlign: \"center\"\n  },\n  actionsContianer: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    justifyContent: \"space-between\",\n    gap: \"22px\",\n    margin: \"30px 0 30px 0\",\n    padding: \"0px 16px\"\n  },\n  actionButton,\n  settingButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    color: theme.palette.action.main,\n    backgroundColor: \"#5BC4BF1F\",\n    padding: \"10px 24px\",\n    borderRadius: \"6px\",\n    textTransform: \"none\",\n    \"&:hover\": {\n      backgroundColor: theme.palette.action.main,\n      color: theme.palette.common.white\n    }\n  },\n  actionsModalReducedPadding: __spreadProps(__spreadValues({}, actionsModalReducedPaddingCommonStyles), {\n    paddingBottom: 0\n  }),\n  closeIcon,\n  actionModalHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"28px\",\n    fontWeight: \"bold\",\n    color: theme.palette.primary.main,\n    marginLeft: \"15px\"\n  },\n  modalContent: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    height: \"100%\",\n    overflow: \"auto\",\n    margin: \"24px 0 0 0\",\n    \"&::-webkit-scrollbar\": {\n      display: \"none\"\n    }\n  },\n  modalFormLine: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    flexDirection: \"row\",\n    columnGap: \"50px\",\n    rowGap: \"26px\",\n    alignItems: \"center\",\n    marginBottom: \"20px\",\n    width: \"100%\"\n  },\n  actionModalFormLine,\n  modalFooter: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    width: \"100%\",\n    justifyContent: \"flex-end\",\n    columnGap: \"20px\",\n    marginTop: \"auto\",\n    marginBottom: \"40px\"\n  },\n  modalFooterSmallerSection: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    width: \"100%\",\n    justifyContent: \"flex-end\",\n    columnGap: \"20px\",\n    marginBottom: \"40px\"\n  },\n  modalCancelButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    width: \"100px\",\n    textTransform: \"none\",\n    textDecoration: \"underline\",\n    color: theme.palette.error.main,\n    backgroundColor: \"#FFFFFF\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    padding: \"5px 0px\",\n    \"&:hover\": {\n      backgroundColor: \"#FFFFFF\",\n      textDecoration: \"none\",\n      boxShadow: \"none\"\n    }\n  },\n  modalCreateButton,\n  formError: {\n    color: theme.palette.error.main,\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    fontSize: \"13px\",\n    position: \"absolute\",\n    top: \"-24px\",\n    left: \"4px\"\n  },\n  inlineError: {\n    color: theme.palette.error.main,\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    fontSize: \"13px\",\n    left: \"4px\"\n  },\n  checkboxContainer: {\n    display: \"flex\",\n    marginLeft: \"19px\"\n  },\n  switchLabels: {\n    justifyContent: \"start\",\n    width: \"120px\",\n    \"& .MuiFormControlLabel-label\": {\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"14px\",\n      color: \"#000000\"\n    },\n    \"& .MuiSwitch-track\": {\n      backgroundColor: \"rgba(0,0,0,0.38)\",\n      opacity: \"1\"\n    },\n    \"& .Mui-checked+.MuiSwitch-track\": {\n      backgroundColor: \"rgb(91, 196, 191, 0.17) !important\",\n      opacity: \"1 !important\"\n    },\n    \"& .Mui-checked\": {\n      color: \"rgb(91, 196, 191, 0.5) !important\"\n    }\n  },\n  switch: {\n    \"& .MuiSwitch-thumb\": {\n      color: \"#FFFFFF\"\n    },\n    \"& .Mui-disabled\": {\n      color: \"#BBBBBB !important\",\n      \"& .Mui-checked+.MuiSwitch-track\": {\n        backgroundColor: \"#DDDDDD !important\",\n        opacity: \"1 !important\"\n      },\n      \"& .MuiSwitch-thumb\": {\n        color: \"#BBBBBB !important\"\n      },\n      \"& .MuiSwitch-track\": {\n        color: \"#BBBBBB !important\",\n        \"& :hover\": {\n          backgroundColor: \"#BBBBBB !important\"\n        }\n      },\n      \"& :hover\": {\n        backgroundColor: \"#BBBBBB !important\"\n      }\n    },\n    \"& :hover\": {\n      \"& .MuiSwitch-track\": {\n        backgroundColor: \"#000 !important\"\n      }\n    }\n  },\n  switchActive: {\n    \"& .Mui-checked+.MuiSwitch-track\": {\n      backgroundColor: \"rgb(91, 196, 191, 0.17) !important\",\n      opacity: \"1 !important\"\n    },\n    \"& .MuiSwitch-thumb\": {\n      color: \"#5BC4BF\"\n    },\n    \"& .Mui-disabled\": {\n      color: \"#BBBBBB !important\",\n      \"& .Mui-checked+.MuiSwitch-track\": {\n        backgroundColor: \"#DDDDDD !important\",\n        opacity: \"1 !important\"\n      },\n      \"& .MuiSwitch-thumb\": {\n        color: \"#BBBBBB !important\"\n      },\n      \"& .MuiSwitch-track\": {\n        color: \"#BBBBBB !important\",\n        \"& :hover\": {\n          backgroundColor: \"#BBBBBB !important\"\n        }\n      },\n      \"& :hover\": {\n        backgroundColor: \"#BBBBBB !important\"\n      }\n    }\n  },\n  labelActive: {\n    \"& .MuiFormControlLabel-label\": {\n      color: \"#CCCCCC\",\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"14px\"\n    }\n  },\n  addChoiceContainer: {\n    padding: \"20px 15px\"\n  },\n  addChoiceHead: {\n    display: \"flex\",\n    alignItems: \"baseline\"\n  },\n  addChoiceLabel: {\n    color: \"#838383\",\n    paddingLeft: \"4px\"\n  },\n  modalAddChoiceButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"12px\",\n    fontWeight: \"bold\",\n    textTransform: \"none\",\n    color: \"#5BC4BF\",\n    backgroundColor: \"#5BC4BF12\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    marginTop: \"10px\",\n    marginLeft: \"20px\",\n    \"&:hover\": {\n      backgroundColor: \"#4da8a412\",\n      boxShadow: \"none\"\n    }\n  },\n  choice: {\n    marginTop: \"15px\",\n    display: \"flex\",\n    alignItems: \"center\"\n  },\n  availabilityContainer: {\n    padding: \"20px 15px\"\n  },\n  config: {\n    marginTop: \"15px\",\n    display: \"flex\",\n    flexDirection: \"column\"\n  },\n  questionsWrapper: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    padding: 2,\n    background: \"#F3F3F3\",\n    borderRadius: \"6px\"\n  },\n  questionInput: {\n    \"& span\": {\n      fontSize: \"14px !Important\"\n    }\n  },\n  questionsTitle: {\n    color: theme.palette.primary.main,\n    fontSize: \"13px\",\n    fontWeight: \"bold\",\n    paddingBottom: \"5px\",\n    width: \"70px\",\n    padding: \"0 6px\"\n  },\n  iconGreen: {\n    color: theme.palette.success.main,\n    fontSize: \"1.25rem\",\n    margin: \"auto\",\n    display: \"flex\"\n  },\n  iconRed: {\n    color: theme.palette.error.main,\n    fontSize: \"1.25rem\",\n    margin: \"auto\",\n    display: \"flex\"\n  },\n  weightValue: {\n    fontSize: \"13px\",\n    textAlign: \"center\"\n  },\n  noticeContainer: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    justifyContent: \"left\",\n    padding: \"9px 16px\",\n    border: `1px solid ${theme.palette.action.main}`,\n    borderRadius: \"8px\",\n    color: \"#939393\",\n    fontSize: \"16px\",\n    margin: \"16px\",\n    rowGap: \"1px\"\n  },\n  noticeIcon: {\n    color: theme.palette.error.main,\n    marginTop: \"4px\",\n    fontSize: \"16px\"\n  },\n  dragHandle: {\n    color: \"#939393\",\n    fontSize: 30,\n    padding: \"6px\",\n    marginRight: \"10px\",\n    \"&:hover\": {\n      borderRadius: \"8px\",\n      backgroundColor: \"#DDDDDD\"\n    },\n    outline: \"none\"\n  },\n  sortableItemSwitchContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    padding: \"0 6px\",\n    marginBlock: \"auto\",\n    minWidth: \"120px\"\n  },\n  availabilityTableHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontWeight: \"bold\",\n    color: \"#084D6D\",\n    textTransform: \"capitalize\",\n    border: \"unset\",\n    padding: \"0px 8px\",\n    background: \"inherit\"\n  },\n  availabilityTableBody: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"12px\",\n    border: \"unset\",\n    padding: \"2px 8px\"\n  },\n  tableTextfield: {\n    minWidth: \"80px\",\n    \"& .MuiInputBase-input\": {\n      height: \"18px\",\n      margin: \"unset\"\n    }\n  },\n  tableTimeTextfield: {\n    \"& .MuiInputBase-input\": {\n      fontSize: \"12px\",\n      height: \"18px\",\n      margin: \"unset\"\n    }\n  },\n  tableDivider: {\n    padding: \"4px 0px\",\n    border: \"unset\"\n  },\n  infoIcon: {\n    color: theme.palette.action.main,\n    marginTop: \"4px\",\n    fontSize: \"16px\"\n  },\n  toggleButtonsContainer: {\n    marginTop: \"40px\",\n    marginBottom: \"40px\",\n    padding: \"0px 16px\"\n  }\n};\n","\"use strict\";\nexport const approvalTemplateFormOptions = [\n  {\n    id: \"hide_position_title\",\n    name: \"Hide Position Title\",\n    tip: \"Ticking this box will hide the Job 'Position Title' field when viewing or editing an Approval Form which has been created from this template.\"\n  },\n  {\n    id: \"hide_approval_administrator\",\n    name: \"Hide approval administrator\",\n    tip: \"The Approval administrator receives a notification email when all approvers have approved or declined the approval form. You will not be able to select an Approval Administrator if \\u2018Hide Approval Administrator\\u2019 is ticked. \"\n  },\n  {\n    id: \"hide_assigned_user\",\n    name: \"Hide assigned user\",\n    tip: \"The Assigned user will be shown within an Assigned user column on the approvals homepage. This column will not display if 'hide assigned user' is selected\"\n  },\n  {\n    id: \"enable_approval_template_for_applications\",\n    name: \"Enable Approval Template for Applications\"\n  },\n  {\n    id: \"hide_email_template\",\n    name: \"Hide email template selection from approval form\"\n  }\n];\nexport const optionsBooleanValues = (options) => {\n  if (!options) return;\n  return {\n    hide_position_title: Number(options.hide_position_title) === 1 ? true : false,\n    hide_approval_administrator: Number(options.hide_approval_administrator) === 1 ? true : false,\n    hide_assigned_user: Number(options.hide_assigned_user) === 1 ? true : false,\n    enable_approval_template_for_applications: Number(options.enable_approval_template_for_applications) === 1 ? true : false,\n    hide_email_template: Number(options.hide_email_template) === 1 ? true : false,\n    enable_declaration_of_conflict_of_interest: Number(options.enable_declaration_of_conflict_of_interest) === 1 ? true : false\n  };\n};\nexport const optionsNumericValues = (options) => {\n  return {\n    hide_position_title: (options == null ? void 0 : options.hide_position_title) ? 1 : 0,\n    hide_approval_administrator: (options == null ? void 0 : options.hide_approval_administrator) ? 1 : 0,\n    hide_assigned_user: (options == null ? void 0 : options.hide_assigned_user) ? 1 : 0,\n    enable_approval_template_for_applications: (options == null ? void 0 : options.enable_approval_template_for_applications) ? 1 : 0,\n    hide_email_template: (options == null ? void 0 : options.hide_email_template) ? 1 : 0,\n    enable_declaration_of_conflict_of_interest: (options == null ? void 0 : options.enable_declaration_of_conflict_of_interest) ? 1 : 0\n  };\n};\nexport const defaultFilters = {\n  state: [],\n  entity_ids: [],\n  assigned_user_ids: [],\n  requested_by_users: []\n};\nexport const dropdownOptions = [\n  {\n    name: \"created_at\",\n    label: \"Created At\"\n  },\n  {\n    name: \"updated_at\",\n    label: \"Updated At\"\n  },\n  {\n    name: \"requested_by\",\n    label: \"Requested By\"\n  },\n  {\n    name: \"state\",\n    label: \"State\"\n  },\n  {\n    name: \"entity\",\n    label: \"Entity\"\n  },\n  {\n    name: \"form_template\",\n    label: \"Form Template\"\n  },\n  {\n    name: \"assigned_user\",\n    label: \"Assigned User\"\n  },\n  {\n    name: \"note\",\n    label: \"Notes\"\n  }\n];\nexport const defaultFilterOptions = {\n  state: [\n    {\n      value: \"pending\",\n      name: \"Pending\"\n    },\n    {\n      value: \"approved\",\n      name: \"Approved\"\n    },\n    {\n      value: \"draft\",\n      name: \"Draft\"\n    },\n    {\n      value: \"declined\",\n      name: \"Declined\"\n    }\n  ]\n};\nexport const sortableColumnsDefaults = [\n  {\n    id: \"id\",\n    label: \"ID\",\n    sortable: true,\n    canToggle: false,\n    enabled: true\n  },\n  {\n    id: \"position_title\",\n    label: \"Title\",\n    sortable: true,\n    canToggle: false,\n    enabled: true\n  },\n  {\n    id: \"created_at\",\n    label: \"Created At\",\n    sortable: true,\n    canToggle: true,\n    enabled: true\n  },\n  {\n    id: \"updated_at\",\n    label: \"Updated At\",\n    sortable: true,\n    canToggle: true,\n    enabled: true\n  },\n  {\n    id: \"requested_by\",\n    label: \"Requested By\",\n    sortable: true,\n    canToggle: true,\n    enabled: true\n  },\n  {\n    id: \"state\",\n    label: \"State\",\n    sortable: true,\n    canToggle: true,\n    enabled: true\n  },\n  {\n    id: \"entity\",\n    label: \"Entity\",\n    sortable: true,\n    canToggle: true,\n    enabled: true\n  },\n  {\n    id: \"form_template\",\n    label: \"Form Template\",\n    sortable: true,\n    canToggle: true,\n    enabled: true\n  },\n  {\n    id: \"assigned_user\",\n    label: \"Assigned User\",\n    sortable: true,\n    canToggle: true,\n    enabled: true\n  },\n  {\n    id: \"note\",\n    label: \"Notes\",\n    sortable: false,\n    canToggle: true,\n    enabled: false\n  }\n];\nexport const settingTabs = [\n  \"Approval template title\",\n  \"Default approvers\",\n  \"Advanced\",\n  \"Approval form title\"\n];\nexport const approvalManagersTableHeaders = [\n  {\n    name: \"name\",\n    label: \"Name\",\n    sortable: true\n  },\n  {\n    name: \"email\",\n    label: \"Email\",\n    sortable: true\n  }\n];\nexport const approvalPublicLinkHeaders = [\n  {\n    name: \"name\",\n    label: \"Name\",\n    sortable: true\n  },\n  {\n    name: \"public_link\",\n    label: \"Public Links\",\n    sortable: false\n  },\n  {\n    name: \"approval_template_name\",\n    label: \"Approval Template Name\",\n    sortable: true\n  },\n  {\n    name: \"created_by\",\n    label: \"Created By\",\n    sortable: true\n  }\n];\n","\"use strict\";\nexport function isPermittedOption(id, userPermissions) {\n  var _a, _b;\n  switch (id) {\n    case \"assigned_user\":\n      return !!((_a = userPermissions == null ? void 0 : userPermissions[\"Approval Forms\"]) == null ? void 0 : _a[\"Assign User To Requisition\"]);\n    case \"note\":\n      return !!((_b = userPermissions == null ? void 0 : userPermissions[\"Approval Forms\"]) == null ? void 0 : _b[\"Manage Approval Form Notes\"]);\n    default:\n      return true;\n  }\n}\n","\"use strict\";\nimport ApprovalForms from \"./ApprovalForms\";\nexport default ApprovalForms;\n","\"use strict\";\nimport { theme } from \"../../ThemeContext/ThemeObject\";\nimport { filterPopoverHeaderCommonStyles } from \"../shared/commonStyles\";\nimport {\n  searchInput,\n  actionsMenu,\n  sortableSwitchLabels,\n  closeIcon,\n  switchLabels,\n  clearButton,\n  applyButton\n} from \"../shared/styleClasses\";\nexport const styles = {\n  tabs: {\n    \"& button\": {\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"18px\",\n      letterSpacing: \"0\",\n      color: \"#939393\",\n      textTransform: \"none\",\n      minWidth: \"unset\",\n      \"&:hover\": {\n        color: \"#737373\"\n      },\n      \"&:focus\": {\n        outline: \"none\"\n      }\n    },\n    \"& button.Mui-selected\": {\n      fontWeight: \"600\",\n      color: \"#084D6D\"\n    }\n  },\n  tabIndicator: {\n    backgroundColor: \"#5BC4BF\",\n    margin: \"0 16px\"\n  },\n  filtersRow: {\n    display: \"flex\",\n    alignItems: \"flex-end\",\n    justifyContent: \"space-between\",\n    marginBottom: \"30px\",\n    columnGap: \"17px\"\n  },\n  jobPageContainer: {\n    backgroundColor: \"#FFFFFF\",\n    padding: \"40px\"\n  },\n  tabsContainer: {\n    borderBottom: 1,\n    borderColor: \"#EEEEEE\",\n    margin: \"25px 0\"\n  },\n  searchInput,\n  jobPageHeader: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    width: \"100%\",\n    marginBottom: \"26px\",\n    padding: \"0px 16px\",\n    \"& h1\": {\n      fontFamily: \"Source Sans Pro\",\n      fontWeight: \"bold\",\n      fontSize: \"38px\",\n      color: \"#666666\",\n      marginTop: \"0\"\n    }\n  },\n  multiposterContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    rowGap: \"40px\"\n  },\n  iconButton: {\n    border: \"1px solid #EAEEF0\",\n    backgroundColor: \"#FFFFFF\",\n    borderRadius: \"6px\",\n    width: \"69px\",\n    height: \"60px\",\n    \"& svg\": {\n      fontSize: \"30px\",\n      color: \"#084D6D\",\n      transform: \"translateY(1px)\"\n    }\n  },\n  iconButtonOpen: {\n    backgroundColor: \"rgba(8,77,109,0.121)\"\n  },\n  popover: {\n    zIndex: 12,\n    background: \"inherit\"\n  },\n  filterPopoverContent: {\n    width: \"272px\",\n    height: \"auto\",\n    overflowY: \"visible\",\n    boxShadow: \"0px 2px 14px rgba(48,90,111,0.16)\",\n    marginTop: 2,\n    msOverflowStyle: \"none\",\n    scrollbarWidth: \"none\",\n    position: \"relative\",\n    \"&::-webkit-scrollbar\": {\n      display: \"none\"\n    }\n  },\n  scrollableFilters: {\n    height: \"fit-content\",\n    padding: \"26px\",\n    paddingTop: \"0px\"\n  },\n  filterPopoverHeader: filterPopoverHeaderCommonStyles,\n  clearButton,\n  applyButton,\n  filterOptionContainer: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    color: \"#084D6D\",\n    marginBottom: \"12px\"\n  },\n  popoverContent: {\n    width: \"272px\",\n    padding: \"22px 0px 22px 24px\",\n    boxShadow: \"0px 2px 14px rgba(48,90,111,0.16)\",\n    marginTop: 2\n  },\n  switchLabels,\n  labelActive: {\n    \"& .MuiFormControlLabel-label\": {\n      color: \"#CCCCCC\",\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"14px\",\n      fontWeight: \"bold\"\n    }\n  },\n  switch: {\n    \"& .MuiSwitch-thumb\": {\n      color: \"#FFFFFF\"\n    },\n    \"& .Mui-disabled\": {\n      color: \"#BBBBBB !important\",\n      \"& .Mui-checked+.MuiSwitch-track\": {\n        backgroundColor: \"#DDDDDD !important\",\n        opacity: \"1 !important\"\n      },\n      \"& .MuiSwitch-thumb\": {\n        color: \"#BBBBBB !important\"\n      },\n      \"& .MuiSwitch-track\": {\n        color: \"#BBBBBB !important\",\n        \"& :hover\": {\n          backgroundColor: \"#BBBBBB !important\"\n        }\n      },\n      \"& :hover\": {\n        backgroundColor: \"#BBBBBB !important\"\n      }\n    },\n    \"& :hover\": {\n      \"& .MuiSwitch-track\": {\n        backgroundColor: \"#000 !important\"\n      }\n    }\n  },\n  switchActive: {\n    \"& .Mui-checked+.MuiSwitch-track\": {\n      backgroundColor: \"rgb(91, 196, 191, 0.17) !important\",\n      opacity: \"1 !important\"\n    },\n    \"& .MuiSwitch-thumb\": {\n      color: \"#5BC4BF\"\n    },\n    \"& .Mui-disabled\": {\n      color: \"#BBBBBB !important\",\n      \"& .Mui-checked+.MuiSwitch-track\": {\n        backgroundColor: \"#DDDDDD !important\",\n        opacity: \"1 !important\"\n      },\n      \"& .MuiSwitch-thumb\": {\n        color: \"#BBBBBB !important\"\n      },\n      \"& .MuiSwitch-track\": {\n        color: \"#BBBBBB !important\",\n        \"& :hover\": {\n          backgroundColor: \"#BBBBBB !important\"\n        }\n      },\n      \"& :hover\": {\n        backgroundColor: \"#BBBBBB !important\"\n      }\n    }\n  },\n  iconButtonSelected: {\n    backgroundColor: \"rgba(8,77,109,0.121)\"\n  },\n  modalActions: {\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    marginTop: \"auto\",\n    marginBottom: \"30px\",\n    width: \"100%\",\n    columnGap: \"16px\",\n    \"& a\": {\n      \"&:hover\": {\n        textDecoration: \"none\"\n      }\n    }\n  },\n  buttonRedLight: {\n    color: \"#E37D7A\",\n    fontFamily: \"Source Sans Pro\",\n    textTransform: \"capitalize\",\n    padding: \"8px 18px\",\n    fontWeight: \"bold\",\n    fontSize: \"14px\",\n    textDecoration: \"underline\",\n    backgroundColor: \"#ffffff\",\n    \"&:hover\": {\n      color: \"#d74742\",\n      backgroundColor: \"#ffffff\"\n    }\n  },\n  normalButton: {\n    color: \"#000000\",\n    fontFamily: \"Source Sans Pro\",\n    textTransform: \"capitalize\",\n    padding: \"8px 18px\",\n    fontSize: \"14px\",\n    textDecoration: \"underline\",\n    backgroundColor: \"#ffffff\",\n    \"&:hover\": {\n      backgroundColor: \"#ffffff\"\n    }\n  },\n  revertloadButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"15px\",\n    fontWeight: \"bold\",\n    textTransform: \"none\",\n    color: \"#FFFFFF\",\n    backgroundColor: \"#5BC4BF\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    padding: \"8px 18px\",\n    \"&:hover\": {\n      backgroundColor: \"#4da8a4\",\n      boxShadow: \"none\"\n    }\n  },\n  closeIcon,\n  actionsModal: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    padding: \"20px 60px\",\n    maxWidth: \"800px\",\n    width: \"90%\",\n    maxHeight: \"700px\",\n    borderRadius: \"6px\",\n    dropShadow: \"0px 2px 14px #305A6F29\",\n    position: \"absolute\",\n    background: \"#FFFFFF\",\n    top: \"50%\",\n    left: \"50%\",\n    transform: \"translate(-50%, -50%)\",\n    overflow: \"auto\"\n  },\n  modalHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"28px\",\n    fontWeight: \"bold\",\n    color: theme.palette.primary.main\n  },\n  approversHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\",\n    fontWeight: \"bold\",\n    color: \"#666666\"\n  },\n  modalEditButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    textTransform: \"none\",\n    color: \"rgb(91,196,191)\",\n    background: \"rgb(91,196,191,0.12)\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    padding: \"8px 14px\",\n    \"&:hover\": {\n      backgroundColor: \"#5BC4BF\",\n      color: \"#FFFFFF\",\n      boxShadow: \"none\"\n    }\n  },\n  iconGrey: {\n    color: \"#666666\",\n    fontSize: \"28px\"\n  },\n  modalFormLine: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    flexDirection: \"row\",\n    columnGap: \"50px\",\n    rowGap: \"26px\",\n    alignItems: \"center\",\n    marginBottom: 2,\n    width: \"100%\"\n  },\n  backButton: {\n    marginLeft: 1,\n    fontSize: \"16px\",\n    color: \"#eee\",\n    opacity: \"0.8\",\n    display: \"flex\",\n    alignItems: \"center\",\n    \"& div\": {\n      fontWeight: \"600\",\n      color: \"#666666\",\n      \":hover\": {\n        color: \"#545454\",\n        cursor: \"pointer\"\n      }\n    }\n  },\n  modalSaveButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontWeight: \"bold\",\n    textTransform: \"none\",\n    color: \"rgb(91,196,191)\",\n    background: \"rgb(91,196,191,0.12)\",\n    borderRadius: \"6px\",\n    padding: \"8px 14px\",\n    \"&:hover\": {\n      backgroundColor: \"#5BC4BF\",\n      color: \"#FFFFFF\",\n      boxShadow: \"none\"\n    }\n  },\n  approverItemList: {\n    display: \"flex\",\n    marginTop: 3,\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    columnGap: 2\n  },\n  tableSettingsHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"16px\",\n    fontWeight: \"bold\",\n    paddingBottom: 1,\n    paddingLeft: \"4px\"\n  },\n  statusContainer: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    columnGap: \"20px\",\n    padding: \"8px 16px\"\n  },\n  backToApprovalFormsButton: {\n    marginBottom: \"20px\",\n    fontSize: \"16px\",\n    color: \"#eee\",\n    opacity: \"0.8\",\n    display: \"flex\",\n    alignItems: \"center\",\n    \"& div\": {\n      fontWeight: \"600\",\n      color: \"#666666\",\n      \":hover\": {\n        color: \"#545454\",\n        cursor: \"pointer\"\n      }\n    }\n  },\n  approvalFormSubtitle: {\n    color: \"#939393\",\n    paddingLeft: 2,\n    paddingBottom: 2,\n    fontSize: \"16px\"\n  },\n  approved: {\n    color: \"#8CCF95\",\n    backgroundColor: \"RGBA(140, 207, 149, 0.12)\"\n  },\n  draft: {\n    color: \"#FFFFFF\",\n    backgroundColor: \"#CCCCCC\"\n  },\n  pending: {\n    color: \"#E6A052\",\n    backgroundColor: \"RGBA(230, 160, 82, 0.12)\"\n  },\n  declined: {\n    color: \"#D6827D\",\n    backgroundColor: \"RGBA(214, 130, 125, 0.12)\"\n  },\n  approverTableStateButton: {\n    alignItems: \"center\",\n    fontWeight: \"bold\",\n    fontFamily: \"Source Sans Pro\",\n    width: \"105px\",\n    padding: \"2px 12px\",\n    borderRadius: \"6px\",\n    textTransform: \"uppercase\"\n  },\n  questionLabel: {\n    color: \"#939393\",\n    fontSize: \"14px\",\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    paddingBottom: 1,\n    overflowWrap: \"anywhere\"\n  },\n  sectionHeader: {\n    fontSize: \"18px\",\n    fontWeight: \"bold\",\n    color: \"#666666\",\n    padding: \"8px 0px\"\n  },\n  approversTableHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontWeight: \"bold\",\n    color: \"#084D6D\",\n    border: \"unset\",\n    backgroundColor: \"#FFFFFF\",\n    textTransform: \"capitalize\",\n    padding: 1\n  },\n  approversTableCell: {\n    border: \"unset\",\n    padding: 1\n  },\n  coiColumn: {\n    height: `50px`,\n    margin: \"0 auto\",\n    overflow: \"hidden\",\n    textOverflow: \"ellipsis\"\n  },\n  link: {\n    marginTop: \"5px\",\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    cursor: \"pointer\",\n    color: theme.palette.primary.main\n  },\n  actionGroup: {\n    display: \"flex\",\n    alignItems: \"center\"\n  },\n  availabilityTableBody: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    border: \"unset\",\n    padding: 1\n  },\n  availabilityTableHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontWeight: \"bold\",\n    color: \"#084D6D\",\n    textTransform: \"capitalize\",\n    border: \"unset\",\n    backgroundColor: \"inherit\",\n    padding: \"2px 8px\"\n  },\n  fileIcon: {\n    width: \"50px\",\n    height: \"50px\",\n    borderRadius: \"3px\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    marginRight: \"20px\",\n    backgroundColor: \"#084D6D10\",\n    \"& svg\": {\n      color: theme.palette.primary.main,\n      margin: \"0px 2px 2px 0px\"\n    }\n  },\n  fileName: {\n    color: theme.palette.primary.main,\n    fontSize: \"16px\",\n    fontWeight: \"bold\"\n  },\n  automationContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    marginBottom: \"40px\",\n    h2: {\n      fontSize: \"20px\",\n      fontWeight: \"bold\",\n      color: \"#666666\",\n      marginBottom: \"24px\"\n    }\n  },\n  toggleButtonsContainer: {\n    marginTop: \"20px\",\n    marginBottom: \"40px\"\n  },\n  actionsMenu,\n  applicationIcon: {\n    fontSize: \"24px\",\n    \"& svg\": { color: theme.palette.primary.main }\n  },\n  approvalFormIconsContainer: {\n    flexGrow: 1,\n    flexDirection: \"row\",\n    justifyContent: \"end\",\n    columnGap: 1,\n    marginTop: 1\n  },\n  mandatoryLabel: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"16px\",\n    marginLeft: 1\n  },\n  sortableField: {\n    display: \"flex\",\n    alignItems: \"center\",\n    width: \"204px\"\n  },\n  sortableSwitchLabels\n};\n","\"use strict\";\nimport RecruitApiClient from \"../../RecruitApiClient\";\nclass Api {\n  constructor() {\n    this.getCandidateData = (candidateId) => RecruitApiClient.get(`/api/v4/candidates/${candidateId}`, null);\n    this.updateCandidateTags = (candidateId, tags) => RecruitApiClient.post(`/api/v4/candidates/${candidateId}/update_tags`, { tags });\n    this.getCandidateApplications = (candidateId, params) => RecruitApiClient.get(`/api/v4/candidates/${candidateId}/applications`, params);\n    this.getCandidateTasks = (candidateId) => RecruitApiClient.get(`/api/v4/candidates/${candidateId}/tasks`);\n    this.getAssignableUsers = () => RecruitApiClient.get(`/api/v4/tasks/assignable_users`);\n    this.createCandidateTask = (candidateId, params) => RecruitApiClient.post(`/api/v4/candidates/${candidateId}/tasks`, params);\n    this.deleteCandidateTask = (candidateId, taskId) => RecruitApiClient.delete(`/api/v4/candidates/${candidateId}/tasks/${taskId}`);\n    this.updateCandidateTask = (candidateId, taskId, params) => RecruitApiClient.put(`/api/v4/candidates/${candidateId}/tasks/${taskId}`, params);\n    this.getWorkflows = (candidateId) => RecruitApiClient.get(`/api/v4/workflows?candidate_id=${candidateId}`);\n    this.assignWorkflow = (candidateId, params) => RecruitApiClient.post(`/api/v4/workflows?candidate_id=${candidateId}`, params);\n    this.getCandidateActivities = (candidateId) => RecruitApiClient.get(`/api/v4/candidates/${candidateId}/activities`);\n    this.addCandidateNote = (candidateId, params) => RecruitApiClient.post(`/api/v4/candidates/${candidateId}/add_note`, { note: params });\n    this.mergeCandidates = (candidateId) => RecruitApiClient.post(`/api/v4/candidates/${candidateId}/merge`);\n    this.getUserPermissions = () => RecruitApiClient.get(`/api/v4/user_permissions`);\n    this.updateCandidateNotepad = (candidateId, body) => RecruitApiClient.put(`/api/v4/candidates/${candidateId}/update_notepad`, { body });\n  }\n}\nexport default new Api();\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { candidateApplicationsTableColumn } from \"./config\";\nexport const InitialCandidateState = {\n  snackbar: {\n    message: \"\",\n    state: \"success\"\n  },\n  candidateApplicationsTableState: {\n    canScroll: [false, true],\n    tableHovered: false,\n    density: \"Default\",\n    columns: candidateApplicationsTableColumn,\n    selectedItemIds: [],\n    selectedItems: [],\n    actions: {\n      selectedItem: null,\n      anchorEl: null,\n      isOpen: {\n        delete: false,\n        edit: false\n      }\n    },\n    modalsOpen: { edit: false }\n  },\n  candidateApplicationsTableSettings: {\n    page: 1,\n    limit: 10,\n    sort: \"created_at\",\n    sort_order: \"desc\"\n  },\n  candidateTaskModalIsOpen: false,\n  editedTask: null,\n  taskWorkflowModalIsOpen: false,\n  openEditModal: false,\n  openDeleteModal: false,\n  focused: false\n};\nexport const CandidateReducer = (state, action) => {\n  switch (action.type) {\n    case \"SET_SNACKBAR\":\n      return __spreadProps(__spreadValues({}, state), { snackbar: action.payload });\n    case \"SET_CAN_SCROLL\":\n      return __spreadProps(__spreadValues({}, state), {\n        candidateApplicationsTableState: __spreadProps(__spreadValues({}, state.candidateApplicationsTableState), {\n          canScroll: action.payload\n        })\n      });\n    case \"SET_TABLE_HOVERED\":\n      return __spreadProps(__spreadValues({}, state), {\n        candidateApplicationsTableState: __spreadProps(__spreadValues({}, state.candidateApplicationsTableState), {\n          tableHovered: action.payload\n        })\n      });\n    case \"SET_SORT\":\n      return __spreadProps(__spreadValues({}, state), {\n        candidateApplicationsTableSettings: __spreadProps(__spreadValues({}, state.candidateApplicationsTableSettings), {\n          sort: action.payload.sortBy,\n          sort_order: action.payload.sortOrder\n        })\n      });\n    case \"SET_PAGE\":\n      return __spreadProps(__spreadValues({}, state), {\n        candidateApplicationsTableSettings: __spreadProps(__spreadValues({}, state.candidateApplicationsTableSettings), {\n          page: action.payload\n        })\n      });\n    case \"SET_LIMIT\":\n      return __spreadProps(__spreadValues({}, state), {\n        candidateApplicationsTableSettings: __spreadProps(__spreadValues({}, state.candidateApplicationsTableSettings), {\n          limit: action.payload\n        })\n      });\n    case \"OPEN_TASK_MODAL\":\n      return __spreadProps(__spreadValues({}, state), { candidateTaskModalIsOpen: action.payload });\n    case \"SET_EDITED_TASK\":\n      return __spreadProps(__spreadValues({}, state), { editedTask: action.payload });\n    case \"OPEN_TASK_WORKFLOW_MODAL\":\n      return __spreadProps(__spreadValues({}, state), { taskWorkflowModalIsOpen: action.payload });\n    case \"OPEN_EDIT_MODAL\":\n      return __spreadProps(__spreadValues({}, state), { openEditModal: action.payload });\n    case \"OPEN_DELETE_MODAL\":\n      return __spreadProps(__spreadValues({}, state), { openDeleteModal: action.payload });\n    case \"SET_FOCUSED\":\n      return __spreadProps(__spreadValues({}, state), { focused: action.payload });\n    default:\n      return state;\n  }\n};\n","\"use strict\";\nexport const styles = {\n  candidateHeaderContainer: {\n    flexDirection: \"row\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    paddingBottom: 2\n  },\n  candidateNameHeader: {\n    fontSize: \"35px\",\n    fontWeight: \"bold\",\n    color: \"#666666\"\n  },\n  candidateActionIconsContainer: {\n    flexDirection: \"row\",\n    color: \"#666666\",\n    columnGap: 3,\n    \"& svg\": {\n      cursor: \"pointer\"\n    }\n  },\n  candidateTabs: {\n    \"& .MuiTabs-flexContainer\": { columnGap: 2 },\n    \"& button\": {\n      fontFamily: \"Source Sans Pro\",\n      fontWeight: 500,\n      fontSize: \"16px\",\n      textTransform: \"capitalize\",\n      color: \"#939393\",\n      minWidth: \"unset\",\n      padding: \"12px 8px\",\n      \"&:focus\": { outline: \"none\" }\n    },\n    \"& button.Mui-selected\": { color: \"#084D6D\", fontWeight: 600 }\n  },\n  candidateTabIndicator: {\n    backgroundColor: \"#5BC4C0\",\n    marginLeft: \"0.5em\"\n  },\n  candidateProfileDetails: {\n    flexDirection: \"row\",\n    columnGap: 2,\n    alignItems: \"center\"\n  },\n  candidateProfileAddress: {\n    flexDirection: \"row\",\n    columnGap: 2,\n    alignItems: \"start\",\n    width: \"75%\"\n  },\n  candidateApplicationsTableLink: {\n    \"& a\": {\n      color: \"#000000\"\n    }\n  },\n  candidateApplicationsTableStatusContainer: {\n    border: \"1px solid #E3E3E3\",\n    borderRadius: \"6px\",\n    flexDirection: \"row\",\n    columnGap: 1,\n    padding: 1,\n    alignItems: \"center\"\n  },\n  High: {\n    background: \"rgba(227, 125, 122, 0.12)\",\n    color: \"#E37D7A\"\n  },\n  Normal: {\n    background: \"rgba(230, 160, 82, 0.12)\",\n    color: \"#E6A052\"\n  },\n  Low: {\n    background: \"rgba(140, 207, 149, 0.12)\",\n    color: \"#8CCF95\"\n  },\n  candidateTaskChip: {\n    padding: \"0px 8px\",\n    fontWeight: 600,\n    fontSize: \"12px\",\n    height: \"25px\",\n    maxWidth: \"220px\"\n  },\n  modalContainer: {\n    maxHeight: \"unset\",\n    width: \"800px\",\n    padding: \"40px\",\n    height: \"auto\"\n  },\n  modalContent: {\n    width: \"100%\",\n    height: \"100%\",\n    rowGap: 3,\n    overflow: \"auto\"\n  },\n  modalTitle: {\n    fontWeight: \"bold\",\n    color: \"#084D6D\",\n    fontSize: \"25px\"\n  },\n  modalCandidateName: {\n    color: \"#666666\",\n    fontWeight: \"bold\"\n  },\n  prioritySelectStyling: {\n    width: \"250px\",\n    \"& .MuiInputBase-input\": {\n      margin: \"unset\",\n      marginTop: \"1px\",\n      padding: \"7px 16px\"\n    }\n  },\n  listboxProps: {\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    color: \"#333333\",\n    maxHeight: \"200px\"\n  },\n  autoCompleteTextfield: {\n    \"& .MuiFormHelperText-root.Mui-error\": {\n      color: \"#E37D7A\",\n      margin: \"0px 3px\",\n      fontFamily: \"inherit\"\n    }\n  },\n  showNoteContainer: {\n    padding: 3,\n    borderRadius: \"6px\",\n    boxShadow: \"0px 0px 30px -18px #0000004D inset\",\n    rowGap: 1,\n    maxHeight: \"480px\"\n  },\n  htmlEditor: {\n    \"& .tox-editor-header, .tox-statusbar\": { display: \"none !important\" },\n    \"& .tox-tinymce\": { border: \"unset\" },\n    \"& .mce-content-body\": { fontFamily: \"Source Sans Pro\" }\n  },\n  candidateSectionContainer: {\n    padding: 3,\n    border: \"1px solid #E3E3E3\",\n    borderRadius: \"6px\"\n  },\n  candidateSectionHeader: { fontSize: \"16px\", fontWeight: 600, color: \"#333333\" },\n  candidateApplicationsRating: {\n    fontWeight: 600,\n    borderRadius: \"3px\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    height: \"25px\"\n  },\n  candidateNameContainer: {\n    flexDirection: \"row\",\n    fontSize: \"20px\",\n    fontWeight: \"bold\",\n    color: \"#084D6D\",\n    columnGap: 1\n  },\n  linkedInButton: {\n    padding: \"3px\",\n    minWidth: \"unset\",\n    border: \"1px solid #E3E3E3\",\n    borderRadius: \"6px\",\n    \"&:focus\": {\n      outline: \"none\"\n    },\n    \"&:hover\": {\n      outline: \"none\",\n      borderColor: \"#E3E3E3\",\n      background: \"transparent\"\n    }\n  },\n  timestamp: {\n    minWidth: \"60px\",\n    alignItems: \"end\",\n    color: \"#939393\",\n    fontWeight: 600\n  },\n  emailStatus: {\n    fontWeight: \"bold\",\n    borderRadius: \"6px\",\n    textTransform: \"uppercase\",\n    width: \"min-content\",\n    padding: \"4px 20px\",\n    margin: \"8px 0px\"\n  },\n  listStyle: {\n    maxHeight: \"144px\",\n    overflow: \"auto\"\n  }\n};\n","\"use strict\";\nimport RecruitApiClient from \"../../RecruitApiClient\";\nclass Api {\n  constructor() {\n    this.getCandidates = (params) => RecruitApiClient.get(`/api/v4/candidates`, params);\n    this.getPreferences = () => RecruitApiClient.get(`/api/v4/ui_preferences?source=candidates`);\n    this.getDensityPreferences = () => RecruitApiClient.get(`/api/v4/ui_preferences?source=universal`);\n    this.postUserPreferences = (params) => RecruitApiClient.post(`/api/v4/ui_preferences`, {\n      ui_preference: {\n        row_count: params.limit,\n        sorting: {\n          sortBy: params.sort,\n          sortOrder: params.sortOrder\n        },\n        source: `candidates`\n      }\n    });\n    this.deleteCandidate = (candidateId) => RecruitApiClient.delete(`/api/v4/candidates/${candidateId}`);\n    this.updateCandidate = (candidateId, params) => RecruitApiClient.put(`/api/v4/candidates/${candidateId}`, { candidate: params });\n    this.getCountriesStates = () => RecruitApiClient.get(\"/api/system/v1/countries_states.json\");\n    this.getUserPermissions = () => RecruitApiClient.get(`/api/v4/user_permissions`);\n  }\n}\nexport default new Api();\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { candidatesTableColumn } from \"./config\";\nexport const InitialCandidatesState = {\n  snackbar: {\n    message: \"\",\n    state: \"success\"\n  },\n  candidatesTableState: {\n    canScroll: [false, true],\n    tableHovered: false,\n    density: \"Default\",\n    columns: candidatesTableColumn,\n    selectedItemIds: [],\n    selectedItems: [],\n    actions: {\n      selectedItem: null,\n      anchorEl: null,\n      isOpen: {\n        delete: false,\n        edit: false\n      }\n    },\n    modalsOpen: { edit: false }\n  },\n  candidatesTableSettings: {\n    page: Number(sessionStorage.getItem(`candidatesTablePage`)) || 1,\n    limit: 10,\n    sort: \"firstname\",\n    sort_order: \"asc\"\n  },\n  searchQuery: \"\"\n};\nexport const CandidatesReducer = (state, action) => {\n  switch (action.type) {\n    case \"SET_SNACKBAR\":\n      return __spreadProps(__spreadValues({}, state), { snackbar: action.payload });\n    case \"SET_SEARCH_QUERY\":\n      return __spreadProps(__spreadValues({}, state), {\n        candidatesTableSettings: __spreadProps(__spreadValues({}, state.candidatesTableSettings), { page: 1 }),\n        searchQuery: action.payload\n      });\n    case \"SET_DENSITY\":\n      return __spreadProps(__spreadValues({}, state), {\n        candidatesTableState: __spreadProps(__spreadValues({}, state.candidatesTableState), {\n          density: action.payload\n        })\n      });\n    case \"SET_CAN_SCROLL\":\n      return __spreadProps(__spreadValues({}, state), {\n        candidatesTableState: __spreadProps(__spreadValues({}, state.candidatesTableState), {\n          canScroll: action.payload\n        })\n      });\n    case \"SET_TABLE_HOVERED\":\n      return __spreadProps(__spreadValues({}, state), {\n        candidatesTableState: __spreadProps(__spreadValues({}, state.candidatesTableState), {\n          tableHovered: action.payload\n        })\n      });\n    case \"SET_SORT\":\n      return __spreadProps(__spreadValues({}, state), {\n        candidatesTableSettings: __spreadProps(__spreadValues({}, state.candidatesTableSettings), {\n          sort: action.payload.sortBy,\n          sort_order: action.payload.sortOrder\n        })\n      });\n    case \"SET_PAGE\":\n      return __spreadProps(__spreadValues({}, state), {\n        candidatesTableSettings: __spreadProps(__spreadValues({}, state.candidatesTableSettings), {\n          page: action.payload\n        })\n      });\n    case \"SET_LIMIT\":\n      return __spreadProps(__spreadValues({}, state), {\n        candidatesTableSettings: __spreadProps(__spreadValues({}, state.candidatesTableSettings), {\n          limit: action.payload\n        })\n      });\n    case \"SELECT_ACTION_ITEM\":\n      return __spreadProps(__spreadValues({}, state), {\n        candidatesTableState: __spreadProps(__spreadValues({}, state.candidatesTableState), {\n          actions: __spreadProps(__spreadValues({}, state.candidatesTableState.actions), {\n            selectedItem: action.payload.item,\n            anchorEl: action.payload.anchorEl,\n            isOpen: __spreadProps(__spreadValues({}, state.candidatesTableState.actions.isOpen), {\n              [action.payload.name]: true\n            })\n          })\n        })\n      });\n    case \"CLOSE_ACTION_ITEM\":\n      return __spreadProps(__spreadValues({}, state), {\n        candidatesTableState: __spreadProps(__spreadValues({}, state.candidatesTableState), {\n          actions: __spreadProps(__spreadValues({}, state.candidatesTableState.actions), {\n            selectedItem: null,\n            isOpen: __spreadProps(__spreadValues({}, state.candidatesTableState.actions.isOpen), {\n              [action.payload]: false\n            }),\n            anchorEl: null\n          })\n        })\n      });\n    default:\n      return state;\n  }\n};\n","\"use strict\";\nimport { theme } from \"../../ThemeContext/ThemeObject\";\nexport const styles = {\n  candidatesPageContainer: {\n    backgroundColor: theme.palette.common.white,\n    padding: \"40px\",\n    rowGap: 4\n  },\n  candidatesPageHeader: {\n    fontWeight: \"bold\",\n    fontSize: \"38px\",\n    color: \"#666666\"\n  },\n  editCandidateModalDetailsHeader: {\n    fontWeight: \"bold\",\n    color: \"#666666\",\n    fontSize: \"18px\"\n  },\n  editCandidateModalContent: {\n    rowGap: 4,\n    overflow: \"auto\",\n    \"&::-webkit-scrollbar\": {\n      display: \"none\"\n    }\n  },\n  editCandidateModalDetailsRows: {\n    flexDirection: \"row\",\n    columnGap: 4\n  },\n  editCandidateListboxStyle: {\n    fontFamily: \"Source Sans Pro\",\n    color: \"#333333\",\n    maxHeight: \"200px\"\n  },\n  editCandidateAutocompleteTextfield: {\n    input: { \"&::placeholder\": { opacity: 1, color: \"#838383\" } },\n    \"& .MuiFormHelperText-root.Mui-error\": {\n      color: \"#E37D7A\",\n      margin: \"0px 3px\",\n      fontFamily: \"inherit\"\n    }\n  },\n  streetTypesAutocomplete: {\n    width: \"100%\",\n    paddingTop: 3,\n    \".MuiInputBase-root\": {\n      margin: \"3px 0px\",\n      \"& .MuiAutocomplete-input\": {\n        padding: \"6px 4px 6px 11px\"\n      }\n    }\n  }\n};\n","\"use strict\";\nimport dayjs from \"dayjs\";\nimport utc from \"dayjs/plugin/utc\";\nimport timezone from \"dayjs/plugin/timezone\";\ndayjs.extend(utc);\ndayjs.extend(timezone);\nconst browserTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone;\nexport const startOfDay = (date, userTimezone) => {\n  return dayjs.utc(date).startOf(\"day\").tz(userTimezone || browserTimezone);\n};\nexport const endOfDay = (date, userTimezone) => {\n  return dayjs.utc(date).endOf(\"day\").tz(userTimezone || browserTimezone);\n};\n","\"use strict\";\nexport const styles = {\n  label: {\n    fontFamily: \"Source Sans Pro\",\n    fontWeight: \"bold\",\n    fontSize: \"13px\",\n    color: \"#666666\",\n    width: \"fit-content\",\n    height: \"24px\"\n  },\n  chipContainer: {\n    width: \"min-content\",\n    zIndex: 0,\n    position: \"relative\"\n  },\n  tagContent: {\n    backgroundColor: \"rgba(0, 0, 0, 0.08)\",\n    width: \"40px\",\n    display: \"flex\",\n    position: \"relative\",\n    alignItems: \"center\",\n    marginLeft: \"-10px\",\n    borderRadius: \"16px\",\n    fontFamily: \"Source Sans Pro\",\n    fontWeight: \"bold\",\n    height: \"24px\"\n  },\n  styledChip: {\n    position: \"absolute\",\n    width: \"30%\",\n    backgroundColor: \"rgb(255, 255, 255)\",\n    left: -3,\n    height: \"100%\",\n    borderBottomRightRadius: \"16px\",\n    borderTopRightRadius: \"16px\"\n  },\n  styledChipLabel: {\n    marginLeft: \"15px\",\n    textTransform: \"none\",\n    display: \"flex\",\n    alignItems: \"center\"\n  }\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { alpha } from \"@mui/material/styles\";\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport { actionModalFormLine, checkboxLabel, closeIcon } from \"../../shared/styleClasses\";\nimport { modalConfirmationButtonCommonStyles } from \"../../shared/commonStyles\";\nexport const sharedClasses = {\n  formAutocomplete: {\n    \"& .MuiAutocomplete-root\": {\n      \"& .MuiOutlinedInput-root\": {\n        padding: \"0px\"\n      }\n    },\n    \"& .MuiOutlinedInput-root\": {\n      borderRadius: \"6px\",\n      position: \"relative\",\n      backgroundColor: \"#FFFFFF\",\n      color: \"#333333\",\n      border: \"1px solid #DDDDDD\",\n      fontSize: \"16px\",\n      padding: \"0px\",\n      margin: \"3px\",\n      fontFamily: \"Source Sans Pro, sans-serif\",\n      transition: \"all 0.16s ease-in-out\",\n      \"& .MuiAutocomplete-input\": {\n        padding: \"7.5px 4px 7.5px 11px\"\n      }\n    },\n    \"& fieldset\": {\n      display: \"none\"\n    },\n    \"& label\": {\n      color: \"#838383 !important\",\n      fontSize: \"21px\",\n      fontFamily: \"Source Sans Pro, sans-serif\",\n      paddingLeft: \"4px\",\n      left: \"-13px\",\n      top: \"-15px\",\n      \"& .MuiFormLabel-asterisk\": {\n        color: theme.palette.error.main\n      }\n    },\n    \"& .MuiAutocomplete-popupIndicator\": {\n      transition: \"all 0.25s ease-in-out\",\n      color: \"#AAAAAA\"\n    },\n    \"& .MuiInputBase-root\": {\n      \"&.Mui-disabled\": { backgroundColor: \"rgba(217, 217, 217, 0.23)\" }\n    }\n  },\n  formAutocompleteDisabled: {\n    \"& .MuiAutocomplete-root\": {\n      \"& .MuiOutlinedInput-root\": {\n        padding: \"0px\"\n      }\n    },\n    \"& .MuiOutlinedInput-root\": {\n      borderRadius: \"6px\",\n      position: \"relative\",\n      backgroundColor: \"#FFFFFF\",\n      color: \"#EEEEEE\",\n      border: \"1px solid #DDDDDD\",\n      fontSize: \"16px\",\n      padding: \"0px\",\n      margin: \"3px\",\n      fontFamily: \"Source Sans Pro, sans-serif\",\n      transition: \"all 0.16s ease-in-out\",\n      \"& .MuiAutocomplete-input\": {\n        padding: \"7.5px 4px 7.5px 11px\"\n      }\n    },\n    \"& fieldset\": {\n      display: \"none\"\n    },\n    \"& label\": {\n      color: \"#CCCCCC !important\",\n      fontSize: \"21px\",\n      fontFamily: \"Source Sans Pro, sans-serif\",\n      paddingLeft: \"4px\",\n      left: \"-13px\",\n      top: \"-15px\",\n      \"& .MuiFormLabel-asterisk\": {\n        color: theme.palette.error.light\n      }\n    },\n    \"& .MuiAutocomplete-popupIndicator\": {\n      transition: \"all 0.25s ease-in-out\",\n      color: \"#EEEEEE\"\n    }\n  },\n  inputLabel: {\n    color: \"#838383 !important\",\n    fontSize: \"21px\",\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    paddingLeft: \"4px\",\n    \"& span\": {\n      color: theme.palette.error.main,\n      marginLeft: \"2px\"\n    }\n  },\n  errorBox: {\n    color: theme.palette.error.main,\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    fontSize: \"12px\",\n    marginLeft: 0.5\n  },\n  fixedErrorBox: {\n    color: theme.palette.error.main,\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    fontSize: \"13px\",\n    marginLeft: \"4px\"\n  },\n  errorBoxCheckbox: {\n    color: theme.palette.error.main,\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    fontSize: \"13px\"\n  },\n  groupLabel: {\n    color: \"#838383 !important\",\n    fontSize: \"16px\",\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    paddingLeft: \"4px\",\n    marginBottom: \"12px\"\n  },\n  datePicker: {\n    fontFamily: \"Source Sans Pro\",\n    color: \"#666666\",\n    width: \"119px\",\n    \"& .MuiOutlinedInput-notchedOutline\": {\n      borderColor: \"#DDDDDD !important\"\n    },\n    \"& input\": {\n      padding: \"0px 4px 4px 10px\",\n      fontFamily: \"Source Sans Pro\"\n    },\n    \"& fieldset\": {\n      \"& legend\": {\n        display: \"none\"\n      }\n    },\n    \"& button\": {\n      padding: \"0px\",\n      transform: \"translate(-2px, -1.5px)\",\n      \"&:hover\": {\n        background: \"transparent\",\n        \"& svg\": {\n          color: \"#888888\"\n        }\n      }\n    },\n    \"& .MuiInputAdornment-root\": {\n      marginLeft: \"0px\"\n    },\n    \"& svg\": {\n      color: \"#AAAAAA\"\n    }\n  },\n  calendar: {\n    zIndex: 19e3,\n    paddingTop: 1,\n    \"& .PrivatePickersFadeTransitionGroup-root\": {\n      fontFamily: \"Source Sans Pro\"\n    },\n    \"& .MuiTypography-root\": {\n      fontFamily: \"Source Sans Pro\"\n    },\n    \"& .Mui-selected\": {\n      backgroundColor: `${theme.palette.action.main} !important`\n    },\n    \"& .PrivatePickersSlideTransition-root\": {\n      minHeight: \"242px !important\"\n    },\n    \"& .MuiMultiSectionDigitalClock-root\": {\n      ul: {\n        li: {\n          fontFamily: \"Source Sans Pro\"\n        },\n        \"&::-webkit-scrollbar\": {\n          display: \"none\"\n        },\n        \"&::after\": {\n          display: \"none\"\n        }\n      }\n    },\n    \"& .MuiDialogActions-root\": {\n      display: \"none !important\"\n    }\n  },\n  calendarHeader: {\n    \"& .MuiPickersFadeTransitionGroup-root\": {\n      display: \"flex\",\n      position: \"absolute\",\n      top: \"50%\",\n      left: \"50%\",\n      transform: \"translate(-50%, -50%)\",\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"18px\"\n    }\n  },\n  rankFieldOption: {\n    fontFamily: \"Source Sans Pro\",\n    color: \"#000000\",\n    display: \"flex\",\n    alignItems: \"center\",\n    columnGap: \"10px\",\n    marginLeft: \"12px\",\n    marginBottom: \"6px\",\n    marginTop: \"6px\"\n  },\n  rankFieldSelect: {\n    \"& .MuiInputBase-input\": {\n      fontSize: \"14px\"\n    },\n    \"& .MuiSvgIcon-root\": {\n      marginRight: 0\n    },\n    width: \"90%\",\n    marginRight: \"20px\"\n  },\n  snackbar: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    width: \"670px\",\n    height: \"84px\",\n    borderRadius: \"6px\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"17px\",\n    fontWeight: \"bold\",\n    paddingInline: \"34px\"\n  },\n  snackbarMessageIconContainer: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    columnGap: \"22px\"\n  },\n  snackbarMessage: {\n    textAlign: \"center\",\n    maxWidth: \"474px\"\n  },\n  snackbarSuccess: {\n    backgroundColor: \"#EFFDF3\",\n    color: \"#8CCF95\"\n  },\n  snackbarWarning: {\n    backgroundColor: \"#FCF4EA\",\n    color: \"#E6A052\"\n  },\n  snackbarError: {\n    backgroundColor: \"#FCEFEF\",\n    color: theme.palette.error.main\n  },\n  snackbarButton: {\n    fontFamily: \"Source Sans Pro\",\n    color: \"#666666\",\n    fontSize: \"12px\",\n    textDecoration: \"underline\",\n    padding: \"2px\"\n  },\n  textAndTagsWrapper: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    alignItems: \"center\",\n    justifyContent: \"flex-start\",\n    minHeight: \"46px\",\n    columnGap: \"8px\",\n    rowGap: \"8px\",\n    borderRadius: \"6px\",\n    position: \"relative\",\n    backgroundColor: \"#FFFFFF\",\n    color: \"#333333\",\n    border: \"1px solid #DDDDDD\",\n    fontSize: \"16px\",\n    padding: \"8px\",\n    margin: \"3px\",\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    transition: \"all 0.16s ease-in-out\",\n    cursor: \"text\"\n  },\n  focusedStyles: {\n    borderColor: theme.palette.primary.main,\n    boxShadow: `${alpha(theme.palette.primary.main, 0.25)} 0 0 0 2px`\n  },\n  textInput: {\n    backgroundColor: \"transparent\",\n    color: \"inherit\",\n    border: \"0\",\n    outline: \"0\",\n    marginLeft: \"0\"\n  },\n  tag: {\n    color: \"#000000\",\n    backgroundColor: \"#f1f1f1\",\n    borderRadius: \"6px\",\n    padding: \"2px 8px\",\n    paddingLeft: \"13px\",\n    fontSize: \"14px\"\n  },\n  tagIconButton: {\n    padding: \"2px\",\n    marginLeft: \"5px\",\n    marginBottom: \"2px\"\n  },\n  tagIcon: {\n    fontSize: \"12px\",\n    color: \"#000000\"\n  },\n  tagSelected: {\n    boxShadow: `${alpha(theme.palette.action.main, 0.5)} 0 0 0 2px`\n  },\n  multiTagLabel: {\n    fontSize: \"15.5px\",\n    color: \"#838383\",\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    marginBottom: \"6px\",\n    marginLeft: \"3px\",\n    span: { color: theme.palette.error.main, marginLeft: \"2px\" }\n  },\n  multiTagHelperText: {\n    marginLeft: \"4px\",\n    marginBottom: \"4px\",\n    fontStyle: \"italic\"\n  },\n  toggleButton: {\n    padding: \"4px 17px !important\",\n    fontFamily: \"Source Sans Pro\",\n    color: \"#AAAAAA\",\n    fontSize: \"15px\",\n    fontWeight: \"bold\",\n    borderRadius: \"12px\",\n    backgroundColor: \"#FFFFFF\",\n    textTransform: \"none\",\n    \"&.Mui-selected\": {\n      backgroundColor: `${theme.palette.primary.main} !important`,\n      color: `${theme.palette.action.main} !important`\n    },\n    \"&:focus\": {\n      outline: \"none\"\n    }\n  },\n  timePicker: {\n    marginTop: \"28px\",\n    \"& .time-picker\": {\n      width: \"117px\",\n      height: \"40px\",\n      border: \"1px solid #DDDDDD\",\n      color: \"#666666\",\n      borderRadius: \"6px\",\n      padding: \"8px\",\n      fontSize: \"16px\",\n      fontFamily: \"Source Sans Pro\"\n    },\n    '& input[type=\"time\"]::-webkit-calendar-picker-indicator': {\n      filter: \"invert(74%) sepia(0%) saturate(0%) hue-rotate(239deg) brightness(92%) contrast(89%)\",\n      transform: \"scale(1.37)\",\n      cursor: \"pointer\",\n      \"&:hover\": {\n        filter: \"invert(38%) sepia(34%) saturate(5%) hue-rotate(314deg) brightness(95%) contrast(90%)\"\n      }\n    },\n    '& input[type=\"time\"]::-webkit-datetime-edit-text': {\n      color: \"#666666\"\n    },\n    '& input[type=\"time\"]::-webkit-datetime-edit-hour-field': {\n      color: \"#666666\"\n    },\n    '& input[type=\"time\"]::-webkit-datetime-edit-minute-field': {\n      color: \"#666666\"\n    },\n    '& input[type=\"time\"]::-webkit-datetime-edit-ampm-field': {\n      color: \"#666666\"\n    }\n  },\n  dateSelect: {\n    color: \"#084d6d\",\n    border: \"1px solid #E5E7EB\",\n    padding: \"6px 16px\",\n    marginTop: \"auto\",\n    fontSize: \"14px\",\n    fontWeight: \"600\",\n    display: \"inline-flex\",\n    height: \"fit-content\",\n    borderRadius: \"6px\",\n    letterSpacing: \"0.1px\",\n    \"& em\": {\n      color: \"#babdc3\"\n    },\n    \"&.active\": {\n      borderColor: theme.palette.secondary.main\n    },\n    \"&:hover\": {\n      borderColor: \"#d9dce3\",\n      cursor: \"pointer\",\n      userSelect: \"none\"\n    }\n  },\n  autoCompleteListStyles: {\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    color: \"#333333\",\n    maxHeight: \"200px\"\n  },\n  autoCompleteTextfield: {\n    \"& .MuiInputBase-root\": { margin: \"unset\", marginTop: 1 },\n    \"& .MuiFormHelperText-root\": {\n      margin: 0.5,\n      fontSize: \"12px\",\n      fontFamily: \"inherit\",\n      color: theme.palette.error.main\n    }\n  },\n  autocomplete: {\n    width: \"205px\",\n    margin: \"24px 25px 0 0\",\n    \"& .MuiAutocomplete-root\": {\n      \"& .MuiOutlinedInput-root\": {\n        padding: \"0px\"\n      }\n    },\n    \"& .MuiOutlinedInput-root\": {\n      borderRadius: \"6px\",\n      position: \"relative\",\n      backgroundColor: \"#FFFFFF\",\n      color: \"#333333\",\n      border: \"1px solid #DDDDDD\",\n      fontSize: \"16px\",\n      padding: \"0px\",\n      fontFamily: \"Source Sans Pro, sans-serif\",\n      transition: \"all 0.16s ease-in-out\",\n      \"& .MuiAutocomplete-input\": {\n        padding: \"6px 4px 6px 11px\"\n      }\n    },\n    \"& fieldset\": {\n      display: \"none\"\n    },\n    \"& label\": {\n      color: \"#838383 !important\",\n      fontSize: \"21px\",\n      fontFamily: \"Source Sans Pro, sans-serif\",\n      paddingLeft: \"4px\",\n      lineHeight: \"inherit\",\n      \"& .MuiFormLabel-asterisk\": {\n        color: theme.palette.error.main\n      }\n    },\n    \"& .MuiAutocomplete-popupIndicator\": {\n      transition: \"all 0.25s ease-in-out\",\n      color: \"#AAAAAA\"\n    }\n  },\n  iconButton: {\n    border: \"1px solid #DDDDDD\",\n    backgroundColor: \"#FFFFFF\",\n    borderRadius: \"6px\",\n    width: \"40px\",\n    height: \"37px\",\n    \"& svg\": {\n      fontSize: \"20px\",\n      color: \"#084D6D\",\n      transform: \"translateY(1px)\"\n    }\n  },\n  tableHeaderRow: {\n    \"& td, th\": {\n      color: theme.palette.primary.main,\n      fontWeight: \"bold\",\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"14px\",\n      backgroundColor: \"white\",\n      \"& span\": {\n        color: theme.palette.primary.main,\n        \"&:hover\": {\n          color: \"#0c74a4\"\n        }\n      }\n    },\n    \"& .Mui-selected\": {\n      backgroundColor: \"#F2F2F2\"\n    },\n    \"& .Mui-active\": {\n      color: theme.palette.primary.main\n    },\n    \"& .MuiTableSortLabel-icon\": {\n      color: \"darkgrey !important\"\n    }\n  },\n  noContentWrapper: {\n    width: \"100%\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    color: \"#DDDDDD\",\n    fontSize: \"18px\",\n    fontWeight: \"bold\",\n    margin: \"32px 0px\"\n  },\n  genericButton: __spreadProps(__spreadValues({}, modalConfirmationButtonCommonStyles), {\n    padding: \"8px 21px !important\",\n    \"&:focus\": {\n      outline: \"none\"\n    }\n  }),\n  modalFooter: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    width: \"100%\",\n    justifyContent: \"flex-end\",\n    columnGap: \"20px\",\n    marginTop: \"auto\"\n  },\n  sectionHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"28px\",\n    fontWeight: \"bold\",\n    color: theme.palette.primary.main,\n    width: \"100%\"\n  },\n  sectionContent: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    width: \"100%\",\n    margin: \"46px 0px\",\n    padding: \"0 60px\"\n  },\n  modalBody: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    maxWidth: \"1000px\",\n    width: \"100%\",\n    minHeight: \"550px\",\n    maxHeight: \"1200px\",\n    borderRadius: \"6px\",\n    dropShadow: \"0px 2px 14px #305A6F29\",\n    position: \"absolute\",\n    background: \"#FFFFFF\",\n    top: \"50%\",\n    left: \"50%\",\n    transform: \"translate(-50%, -50%)\"\n  },\n  closeIcon,\n  sectionSubHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontWeight: \"600\",\n    fontSize: \"18px\"\n  },\n  pageHeader: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    width: \"100%\",\n    marginBottom: \"26px\",\n    \"& h1\": {\n      fontFamily: \"Source Sans Pro\",\n      fontWeight: \"bold\",\n      fontSize: \"38px\",\n      color: \"#666666\",\n      marginTop: \"0\"\n    }\n  },\n  genericButtonSecondary: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    textTransform: \"none\",\n    backgroundColor: \"#EBF8F7\",\n    color: theme.palette.action.main,\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    padding: \"8px 14px\",\n    \"& svg\": {\n      color: \"#5BC4BF\"\n    },\n    \"&:hover\": {\n      backgroundColor: \"#5BC4BF\",\n      color: \"#FFFFFF\",\n      \"& svg\": {\n        color: \"#FFFFFF\",\n        path: { fill: \"white\" }\n      }\n    },\n    \"&:focus\": {\n      outline: \"none\"\n    }\n  },\n  infoIcon: {\n    color: theme.palette.action.main,\n    marginTop: \"4px\",\n    fontSize: \"16px\"\n  },\n  materialTimePicker: {\n    // TODO migrating existing html tags of type 'time-picker' to material component\n    \"& .MuiOutlinedInput-notchedOutline\": {\n      legend: { display: \"none\" },\n      borderColor: \"#DDDDDD\",\n      borderRadius: \"6px\"\n    },\n    \"& .MuiOutlinedInput-root\": {\n      width: \"100%\",\n      height: \"35px\",\n      color: \"#666666\",\n      fontSize: \"16px\",\n      fontFamily: \"Source Sans Pro\",\n      paddingBottom: \"6px\",\n      \"&:hover .MuiOutlinedInput-notchedOutline\": {\n        borderColor: \"#DDDDDD\"\n      }\n    },\n    \"& .MuiInputAdornment-root\": {\n      \"& button\": {\n        \"&:hover\": {\n          backgroundColor: \"transparent\"\n        },\n        \"&:focus\": {\n          outline: \"none\"\n        }\n      }\n    }\n  },\n  ratingSlider: {\n    fontFamily: \"Source Sans Pro\",\n    color: theme.palette.action.main,\n    height: \"2px\",\n    \"& .MuiSlider-rail\": {\n      backgroundColor: \"#E0E0E0\"\n    },\n    \"& .MuiSlider-track\": {\n      backgroundColor: theme.palette.action.main\n    },\n    \"& .MuiSlider-thumb\": {\n      backgroundColor: theme.palette.action.main,\n      width: \"8px\",\n      height: \"8px\",\n      \"&:hover\": {\n        boxShadow: \"0px 0px 0px 5px\" + theme.palette.action.main + \"16\"\n      }\n    },\n    \"& .MuiSlider-thumb.Mui-active\": {\n      boxShadow: \"0px 0px 0px 7px\" + theme.palette.action.main + \"16\"\n    },\n    \"& .MuiSlider-valueLabel\": {\n      fontSize: \"11px\",\n      backgroundColor: \"transparent\",\n      color: theme.palette.primary.main,\n      top: \"36px\",\n      \"&::after\": {\n        display: \"none\"\n      }\n    }\n  },\n  datePickerCalendar: {\n    \"& .DayPicker-NavBar\": {\n      left: \"unset\",\n      right: \"unset\",\n      padding: \"0px\",\n      width: \"233px\"\n    },\n    \"& .DayPicker-Weekday\": {\n      padding: \"0px\",\n      width: \"32px\"\n    },\n    \"& .DayPicker-Weekday abbr\": {\n      color: \"#939393\",\n      textDecoration: \"none\",\n      textTransform: \"uppercase\",\n      fontSize: \"10px\"\n    },\n    \"& .DayPicker-Caption\": {\n      color: \"#004665\",\n      fontSize: \"12px\",\n      fontWeight: \"bold\"\n    },\n    \"& .DayPicker-Month\": {\n      margin: \"0px\"\n    },\n    \"& .DayPicker-Day\": {\n      border: \"none\",\n      fontSize: \"10px\",\n      padding: \"0px\",\n      height: \"32px\",\n      borderRadius: \"0\"\n    },\n    \"& .DayPicker-Day--outside\": {\n      backgroundColor: \"#FFFFFF !important\",\n      \"&::after\": {\n        display: \"none\"\n      }\n    },\n    \"& .DayPicker-Day--selected:not(.DayPicker-Day--start):not(.DayPicker-Day--end):not(.DayPicker-Day--outside)\": {\n      background: \"rgba(91, 196, 191, 0.27)\",\n      color: \"#000000\"\n    },\n    \"& .DayPicker-Day--start:not(.DayPicker-Day--outside)\": {\n      borderTopLeftRadius: \"50%\",\n      borderBottomLeftRadius: \"50%\",\n      background: \"rgba(91, 196, 191, 0.27) !important\",\n      position: \"relative\",\n      \"&::after\": {\n        content: '\"\"',\n        background: \"rgba(91, 196, 191)\",\n        width: \"32px\",\n        height: \"32px\",\n        borderRadius: \"100%\",\n        position: \"absolute\",\n        top: \"0\",\n        left: \"0\",\n        zIndex: \"-1\"\n      }\n    },\n    \"& .DayPicker-Day--end:not(.DayPicker-Day--outside)\": {\n      borderTopRightRadius: \"50%\",\n      borderBottomRightRadius: \"50%\",\n      background: \"rgba(91, 196, 191, 0.27) !important\",\n      position: \"relative\",\n      \"&::after\": {\n        content: '\"\"',\n        background: \"rgba(91, 196, 191)\",\n        width: \"32px\",\n        height: \"32px\",\n        borderRadius: \"100%\",\n        position: \"absolute\",\n        top: \"0\",\n        left: \"0\",\n        zIndex: \"-1\"\n      }\n    },\n    \"& .DayPicker-Day--today\": {\n      fontWeight: \"bold\",\n      color: \"black\"\n    },\n    \"& .DayPicker-wrapper\": {\n      zIndex: \"0\",\n      padding: \"9px 0px\",\n      \"& .DayPicker-NavButton\": {\n        width: \"10px\",\n        height: \"10px\"\n      },\n      \"& .DayPicker-Day--disabled\": {\n        backgroundColor: \"white\",\n        pointerEvents: \"none\"\n      }\n    }\n  },\n  onlyStartDate: {\n    \"& .DayPicker-Day--start\": {\n      borderRadius: \"100% !important\"\n    }\n  },\n  mainModalContent: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    width: \"100%\",\n    marginTop: \"40px\",\n    marginBottom: \"26px\",\n    overflowY: \"auto\",\n    overflowX: \"hidden\"\n  },\n  actionModalFormLine,\n  formCheckbox: {\n    color: \"#ddd !important\",\n    \"& .MuiSvgIcon-root\": {\n      fontSize: \"20px\"\n    },\n    \"&.Mui-checked\": {\n      color: \"#15C7C0 !important\"\n    }\n  },\n  checkboxLabel,\n  modalSection: {\n    marginLeft: \"15px\",\n    marginTop: \"15px\"\n  },\n  formLabel: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"16px\",\n    color: \"#838383\",\n    marginBottom: \"5px\"\n  },\n  placeholderText: {\n    fontFamily: \"Source Sans Pro\",\n    color: \"#838383\",\n    fontSize: \"11px\",\n    margin: \"6px 0px 20px 1px\"\n  },\n  emailAttachmentIcon: {\n    width: \"50px\",\n    height: \"50px\",\n    borderRadius: \"3px\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    marginRight: \"20px\",\n    backgroundColor: \"#084D6D10\",\n    \"& svg\": {\n      color: theme.palette.primary.main\n    }\n  },\n  emailAttachmentName: {\n    color: theme.palette.primary.main,\n    fontSize: \"15px\",\n    fontWeight: \"bold\",\n    overflow: \"hidden\",\n    whiteSpace: \"nowrap\",\n    textOverflow: \"ellipsis\",\n    maxWidth: \"196px\"\n  },\n  fileSize: {\n    color: \"#999999\"\n  },\n  emailAttachmentContainer: {\n    display: \"flex\",\n    alignItems: \"center\",\n    columnGap: \"10px\",\n    width: \"fit-content\"\n  },\n  emailAttachmentsList: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    rowGap: \"20px\"\n  },\n  noticeContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    padding: \"9px 16px\",\n    border: `1px solid ${theme.palette.action.main}`,\n    borderRadius: \"8px\",\n    color: \"#939393\",\n    fontSize: \"16px\",\n    margin: \"16px 0\",\n    rowGap: \"1px\"\n  },\n  noticeIcon: {\n    color: theme.palette.action.main,\n    margin: \"0 9px 3px 0\",\n    fontSize: \"16px\"\n  },\n  createButtonAction: {\n    position: \"relative\",\n    cursor: \"pointer\",\n    display: \"flex\",\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    \"& svg\": {\n      color: \"#666666\",\n      fontSize: \"40px\",\n      padding: \"4px\",\n      borderRadius: \"2rem\"\n    }\n  },\n  createButtonDiv: {\n    color: \"#666666\",\n    fontSize: \"16px\",\n    fontWeight: \"700\",\n    padding: \"6px 29px 6px 23px\",\n    backgroundColor: \"#F2F2F2\",\n    borderBottomRightRadius: \"10px 10px\",\n    borderTopRightRadius: \"10px 10px\"\n  },\n  addIcon: {\n    position: \"absolute\",\n    left: \"-20px\",\n    backgroundColor: \"#E5E5E5\"\n  },\n  dropdownIcon: {\n    transition: \"all .2s ease\",\n    position: \"absolute\",\n    right: \"-3px\"\n  },\n  genericRedButton: {\n    borderRadius: \"6px\",\n    fontFamily: \"Source Sans Pro\",\n    padding: \"6px 16px\",\n    textTransform: \"none\",\n    fontSize: \"14px\",\n    boxShadow: \"none\",\n    fontWeight: \"bold\",\n    background: \"#FCEFEF\",\n    color: theme.palette.error.main,\n    \"&:hover\": {\n      background: theme.palette.error.main,\n      color: \"white\",\n      boxShadow: \"none\"\n    },\n    \"&.Mui-disabled\": {\n      color: \"#FFFFFF\",\n      background: \"#DDDDDD\"\n    },\n    \"&:focus\": {\n      outline: \"none\"\n    }\n  },\n  pickersDay: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    \"&:focus\": { outline: \"none\", background: \"inherit\" }\n  },\n  multipleDatesPickerLabel: {\n    paddingBottom: \"13px\",\n    fontFamily: \"inherit\",\n    color: \"#838383\",\n    lineHeight: \"18px\",\n    paddingLeft: \"3px\",\n    display: \"flex\",\n    columnGap: \"2px\"\n  },\n  multipleDatesPickerInput: {\n    \"& legend\": { display: \"none\" },\n    height: \"35px\",\n    \"& .MuiOutlinedInput-notchedOutline\": {\n      borderRadius: \"6px\",\n      borderColor: \"#DDDDDD\"\n    },\n    paddingBottom: \"7px\",\n    fontFamily: \"Source Sans Pro\"\n  },\n  multipleDatesPickerExtraDates: {\n    paddingRight: 1,\n    fontSize: \"18px\",\n    color: \"#5BC4C0\",\n    fontWeight: \"bold\"\n  },\n  multipleDatesPickerStaticDatePicker: {\n    padding: 1,\n    \"& .MuiPickersLayout-contentWrapper\": { gridColumn: 1, gridRow: 1 },\n    \"& .MuiPickersDay-root\": {\n      margin: \"unset\"\n    },\n    \"& .MuiDayCalendar-weekDayLabel\": {\n      margin: \"unset\"\n    },\n    \"& .MuiDateCalendar-root\": {\n      width: \"300px\"\n    }\n  },\n  navigateBackButton: {\n    marginBottom: \"20px\",\n    fontSize: \"16px\",\n    color: \"#eee\",\n    opacity: \"0.8\",\n    display: \"flex\",\n    alignItems: \"center\",\n    \"& div\": {\n      fontWeight: \"600\",\n      color: \"#666666\",\n      \":hover\": {\n        color: \"#545454\",\n        cursor: \"pointer\"\n      }\n    }\n  },\n  errorText: {\n    color: theme.palette.error.main,\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    fontSize: \"12px\",\n    width: \"100%\",\n    margin: \"unset !important\"\n  },\n  toggleButtonsContainer: {\n    marginTop: \"60px\",\n    marginBottom: \"40px\",\n    padding: \"0px 16px\"\n  },\n  applicationBetaButton: {\n    padding: \"4px 12px\",\n    borderRadius: \"30px\",\n    backgroundColor: \"rgba(247, 161, 255, 0.2)\",\n    color: \"#F7A1FF\",\n    fontWeight: \"bold\",\n    boxShadow: \"0px 4px 4px rgba(0, 0, 0, 0.25)\",\n    fontSize: \"12px\"\n  },\n  errorMessage: {\n    fontFamily: \"inherit\",\n    color: theme.palette.error.main,\n    margin: \"4px\"\n  },\n  saveButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    textTransform: \"none\",\n    color: theme.palette.common.white,\n    backgroundColor: theme.palette.secondary.main,\n    width: \"91px\",\n    height: \"41px\",\n    margin: \"8px 0\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    padding: \"8px 14px\",\n    \"&:hover\": {\n      backgroundColor: \"#4da8a4\",\n      boxShadow: \"none\"\n    }\n  },\n  emptyStateText: {\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    color: \"#949494\",\n    fontSize: \"18px\",\n    fontWeight: \"bold\",\n    marginTop: \"8px\"\n  }\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport { modalConfirmationButtonCommonStyles } from \"../../shared/commonStyles\";\nimport { closeIcon } from \"../../shared/styleClasses\";\nexport const classes = {\n  modal: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    padding: \"60px\",\n    maxWidth: \"1100px\",\n    width: \"100%\",\n    height: \"94vh\",\n    maxHeight: \"844px\",\n    borderRadius: \"6px\",\n    dropShadow: \"0px 2px 14px #305A6F29\",\n    position: \"absolute\",\n    background: \"#FFFFFF\",\n    top: \"50%\",\n    left: \"50%\",\n    transform: \"translate(-50%, -50%)\"\n  },\n  closeIcon,\n  modalHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"38px\",\n    fontWeight: \"700\",\n    color: \"#2D388D\",\n    width: \"100%\",\n    height: \"40px\"\n  },\n  modalFooter: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    width: \"100%\",\n    justifyContent: \"flex-end\",\n    columnGap: \"20px\",\n    paddingTop: \"10px\"\n  },\n  modalButtonBase: __spreadProps(__spreadValues({}, modalConfirmationButtonCommonStyles), {\n    padding: \"8px 20px\",\n    \"&:focus\": {\n      outline: \"none\"\n    }\n  }),\n  modalSecondaryButton: {\n    textDecoration: \"underline\",\n    color: theme.palette.error.main,\n    backgroundColor: \"#FFFFFF\",\n    \"&:hover\": {\n      backgroundColor: \"#FFFFFF\",\n      textDecoration: \"none\",\n      boxShadow: \"none\"\n    }\n  }\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { filterPopoverHeaderCommonStyles } from \"../../../shared/commonStyles\";\nimport { applyButton, clearButton, sortableSwitchLabels, switchLabels } from \"../../../shared/styleClasses\";\nexport const classes = {\n  iconButtonSelected: {\n    backgroundColor: \"rgba(8,77,109,0.121)\"\n  },\n  iconButton: {\n    border: \"1px solid #EAEEF0\",\n    backgroundColor: \"#FFFFFF\",\n    borderRadius: \"6px\",\n    width: \"69px\",\n    height: \"60px\",\n    \"& svg\": {\n      fontSize: \"30px\",\n      color: \"#084D6D\",\n      transform: \"translateY(1px)\"\n    }\n  },\n  iconButtonOpen: {\n    backgroundColor: \"rgba(8,77,109,0.121)\"\n  },\n  sortableField: {\n    display: \"flex\",\n    alignItems: \"center\",\n    width: \"204px\"\n  },\n  sortableSwitchLabels,\n  labelActive: {\n    \"& .MuiFormControlLabel-label\": {\n      color: \"#CCCCCC\",\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"14px\",\n      fontWeight: \"bold\"\n    }\n  },\n  switchActive: {\n    \"& .Mui-checked+.MuiSwitch-track\": {\n      backgroundColor: \"rgb(91, 196, 191, 0.17) !important\",\n      opacity: \"1 !important\"\n    },\n    \"& .MuiSwitch-thumb\": {\n      color: \"#5BC4BF\"\n    },\n    \"& .Mui-disabled\": {\n      color: \"#BBBBBB !important\",\n      \"& .Mui-checked+.MuiSwitch-track\": {\n        backgroundColor: \"#DDDDDD !important\",\n        opacity: \"1 !important\"\n      },\n      \"& .MuiSwitch-thumb\": {\n        color: \"#BBBBBB !important\"\n      },\n      \"& .MuiSwitch-track\": {\n        color: \"#BBBBBB !important\",\n        \"& :hover\": {\n          backgroundColor: \"#BBBBBB !important\"\n        }\n      },\n      \"& :hover\": {\n        backgroundColor: \"#BBBBBB !important\"\n      }\n    }\n  },\n  switch: {\n    \"& .MuiSwitch-thumb\": {\n      color: \"#FFFFFF\"\n    },\n    \"& .Mui-disabled\": {\n      color: \"#BBBBBB !important\",\n      \"& .Mui-checked+.MuiSwitch-track\": {\n        backgroundColor: \"#DDDDDD !important\",\n        opacity: \"1 !important\"\n      },\n      \"& .MuiSwitch-thumb\": {\n        color: \"#BBBBBB !important\"\n      },\n      \"& .MuiSwitch-track\": {\n        color: \"#BBBBBB !important\",\n        \"& :hover\": {\n          backgroundColor: \"#BBBBBB !important\"\n        }\n      },\n      \"& :hover\": {\n        backgroundColor: \"#BBBBBB !important\"\n      }\n    },\n    \"& :hover\": {\n      \"& .MuiSwitch-track\": {\n        backgroundColor: \"#000 !important\"\n      }\n    }\n  },\n  switchLabels,\n  popover: {\n    zIndex: 12\n  },\n  popoverContent: {\n    width: \"272px\",\n    padding: \"22px 0px 22px 24px\",\n    boxShadow: \"0px 2px 14px rgba(48,90,111,0.16)\",\n    marginTop: 2,\n    background: \"white\",\n    borderRadius: \"4px\"\n  },\n  tableSettingsHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"16px\",\n    fontWeight: \"bold\",\n    paddingBottom: 1,\n    paddingLeft: \"4px\"\n  },\n  filterPopoverContent: {\n    background: \"white\",\n    width: \"272px\",\n    maxHeight: \"500px\",\n    overflowY: \"scroll\",\n    boxShadow: \"0px 2px 14px rgba(48,90,111,0.16)\",\n    msOverflowStyle: \"none\",\n    scrollbarWidth: \"none\",\n    marginTop: 2,\n    position: \"relative\",\n    borderRadius: \"4px\",\n    \"&::-webkit-scrollbar\": {\n      display: \"none\"\n    }\n  },\n  filterPopoverHeader: __spreadProps(__spreadValues({}, filterPopoverHeaderCommonStyles), {\n    top: \"0px\"\n  }),\n  scrollableFilters: {\n    height: \"fit-content\",\n    padding: \"26px\",\n    paddingTop: \"0px\"\n  },\n  clearButton,\n  applyButton\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport {\n  actionsMenuPaperCommonStyles,\n  actionsMenuSpanCommonStyles,\n  leftArrowStyles,\n  rightArrowStyles\n} from \"../../shared/commonStyles\";\nimport {\n  notesEditSaveButton,\n  notesCancelButton,\n  fileName,\n  editNotePopover,\n  rowSelect,\n  pagination,\n  actionButton,\n  paginationContainer,\n  selectedTooltip,\n  rowSelectContainer\n} from \"../../shared/styleClasses\";\nexport const classes = {\n  tableAndArrowsContainer: {\n    position: \"relative\"\n  },\n  tableWrapper: {\n    tableLayout: \"auto !important\",\n    minWidth: \"750px\",\n    border: \"none\",\n    \"td, th, tr, thead\": {\n      fontFamily: \"Source Sans Pro, sans-serif\",\n      border: \"none\",\n      backgroundColor: \"#FFFFFF\",\n      textTransform: \"none\"\n    },\n    th: {\n      color: theme.palette.primary.main,\n      fontWeight: \"bold\",\n      paddingBottom: \"16px\",\n      \"& .Mui-active\": {\n        color: theme.palette.primary.main\n      }\n    },\n    tr: {\n      fontSize: \"16px\",\n      borderBottom: \"1px solid #DDDDDD\"\n    }\n  },\n  checkbox: {\n    color: \"#aaa !important\",\n    \"& .MuiSvgIcon-root\": {\n      fontSize: \"20px\"\n    },\n    \"&.Mui-checked\": {\n      color: \"#15C7C0 !important\"\n    }\n  },\n  sortable: {\n    \"&:hover\": {\n      color: \"#0C74A4\"\n    },\n    \"& .MuiTableSortLabel-icon\": {\n      color: \"darkgrey !important\"\n    },\n    \"& svg\": {\n      fontSize: \"1.1rem\"\n    }\n  },\n  notSortable: {\n    \"& .MuiTableSortLabel-icon\": {\n      display: \"none\"\n    }\n  },\n  sticky: {\n    position: \"sticky\",\n    left: \"0px\",\n    background: \"white\",\n    zIndex: 2\n  },\n  stickyRight: {\n    position: \"sticky\",\n    right: \"0px\",\n    background: \"white\"\n  },\n  paginationParent: {\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    marginTop: \"20px\",\n    width: \"100%\"\n  },\n  rowSelectContainer,\n  paginationContainer,\n  pagination,\n  rowSelect,\n  paginationMenuItems: {\n    \"& li\": {\n      fontFamily: \"Source Sans Pro\"\n    }\n  },\n  actionsColumnHeader: {\n    zIndex: 4,\n    minWidth: \"86px\",\n    position: \"sticky\",\n    right: \"0px\",\n    background: \"white\",\n    \"&::after\": {\n      content: '\"\"',\n      background: \"#aaaaaa\",\n      width: \"2px\",\n      height: \"100%\",\n      filter: \"blur(2px)\",\n      position: \"absolute\",\n      top: \"0\",\n      left: \"-2px\",\n      opacity: \"0%\",\n      transition: \"opacity 0.17s linear\"\n    },\n    \"&::before\": {\n      content: '\"\"',\n      top: \"0\",\n      left: \"0\",\n      width: \"6px\",\n      height: \"100%\",\n      position: \"absolute\",\n      background: \"#ffffff\",\n      zIndex: \"2\"\n    }\n  },\n  scrollShadowVisible: {\n    \"&&::after\": {\n      opacity: \"20%\"\n    }\n  },\n  actionsCell: {\n    minWidth: \"86px\",\n    width: \"50px\",\n    \"& svg\": {\n      color: \"#666666\",\n      fontSize: \"18px\",\n      cursor: \"pointer\"\n    }\n  },\n  idTableCell: {\n    \"& a\": {\n      color: \"rgba(0, 0, 0, 0.87)\",\n      \"&:hover\": {\n        textDecoration: \"none\",\n        color: \"rgba(0, 0, 0, 0.87)\"\n      }\n    },\n    minWidth: \"80px\",\n    left: \"58px\"\n  },\n  itemTitleTableCell: {\n    minWidth: \"200px\",\n    left: \"138px\",\n    \"& a\": {\n      color: \"#666666\",\n      fontWeight: \"bold\",\n      \"&:hover\": {\n        textDecoration: \"none\"\n      }\n    },\n    \"&::after\": {\n      content: '\"\"',\n      background: \"#aaaaaa\",\n      width: \"2px\",\n      height: \"100%\",\n      filter: \"blur(2px)\",\n      position: \"absolute\",\n      top: \"0\",\n      right: \"-2px\",\n      opacity: \"0%\",\n      transition: \"opacity 0.17s linear\"\n    },\n    \"&::before\": {\n      content: '\"\"',\n      top: \"0\",\n      right: \"0\",\n      width: \"6px\",\n      height: \"100%\",\n      position: \"absolute\",\n      background: \"#ffffff\",\n      zIndex: \"2\"\n    }\n  },\n  actionsTableCell: {\n    minWidth: \"86px\",\n    width: \"50px\",\n    \"& svg\": {\n      color: \"#666666\",\n      fontSize: \"18px\",\n      cursor: \"pointer\"\n    },\n    \"&::after\": {\n      content: '\"\"',\n      background: \"#aaaaaa\",\n      width: \"2px\",\n      height: \"100%\",\n      filter: \"blur(2px)\",\n      position: \"absolute\",\n      top: \"0\",\n      left: \"-2px\",\n      opacity: \"0%\",\n      transition: \"opacity 0.17s linear\"\n    },\n    \"&::before\": {\n      content: '\"\"',\n      top: \"0\",\n      left: \"0\",\n      width: \"6px\",\n      height: \"100%\",\n      position: \"absolute\",\n      background: \"#ffffff\",\n      zIndex: \"2\"\n    }\n  },\n  actionItems: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\"\n  },\n  arrowsContainer: {\n    height: 0,\n    overflow: \"visible\",\n    position: \"sticky\",\n    top: \"200px\",\n    zIndex: \"10\",\n    transform: \"translateY(100px)\"\n  },\n  leftArrow: __spreadProps(__spreadValues({}, leftArrowStyles), {\n    position: \"absolute\",\n    zIndex: \"11\",\n    bottom: \"auto\"\n  }),\n  rightArrow: __spreadProps(__spreadValues({}, rightArrowStyles), {\n    position: \"absolute\",\n    zIndex: \"11\",\n    bottom: \"auto\"\n  }),\n  showArrows: {\n    display: \"flex\",\n    animation: \"$fadeIn linear 0.17s\"\n  },\n  \"@keyframes fadeIn\": {\n    \"0%\": { opacity: 0 },\n    \"100%\": { opacity: 0.9 }\n  },\n  noResultsContainer: {\n    width: \"100%\",\n    height: \"400px\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    rowGap: \"42px\",\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    color: \"#DDDDDD\",\n    fontSize: \"20px\",\n    fontWeight: \"bold\",\n    padding: \"32px 0px\"\n  },\n  noteContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    rowGap: \"4px\",\n    overflow: \"hidden\",\n    maxHeight: \"86px\",\n    textOverflow: \"ellipsis\"\n  },\n  noteSubject: {\n    fontWeight: \"bold\"\n  },\n  noteUser: {\n    padding: \"4px 0px 10px 0px\"\n  },\n  notesExpanded: {\n    maxHeight: \"unset\"\n  },\n  notesExpandContract: {\n    width: \"100%\",\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    color: theme.palette.primary.main,\n    cursor: \"pointer\"\n  },\n  attachmentItem: {\n    display: \"flex\",\n    alignItems: \"center\",\n    columnGap: \"10px\",\n    padding: \"14px\",\n    cursor: \"pointer\",\n    \"&:hover\": {\n      backgroundColor: \"#F5F5F5\"\n    }\n  },\n  fileIcon: {\n    color: theme.palette.primary.main\n  },\n  fileName,\n  notesTitle: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"16px\",\n    color: theme.palette.primary.main,\n    fontWeight: \"bold\",\n    marginBottom: \"12px\",\n    width: \"100%\"\n  },\n  editNotePopover,\n  noteBox: {\n    padding: \"10px 12px\",\n    width: \"100%\",\n    overflowWrap: \"break-word\"\n  },\n  noteInput: {\n    marginBottom: \"4px\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"12px\",\n    \"& input\": {\n      padding: \"9.5px 14px\"\n    }\n  },\n  notesButtonContainer: {\n    width: \"100%\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"flex-end\",\n    columnGap: \"10px\"\n  },\n  notesEditSaveButton,\n  notesCancelButton,\n  actionsContianer: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    gap: \"22px\",\n    paddingBottom: \"16px\"\n  },\n  actionButton,\n  fadeIn: {\n    visibility: \"visible\",\n    opacity: \"1\",\n    transform: \"translateX(0px)\",\n    transition: \"visibility 0s linear 0s, opacity 300ms, transform 300ms\"\n  },\n  fadeOut: {\n    visibility: \"hidden\",\n    opacity: \"0\",\n    transform: \"translateX(20px)\",\n    transition: \"visibility 0s linear 300ms, opacity 300ms, transform 300ms\"\n  },\n  selectedTooltip,\n  selectedTooltipText: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"20px\",\n    fontWeight: \"600\",\n    color: \"#666666\"\n  },\n  selectedAllTooltipText: {\n    color: \"#084D6D\",\n    fontWeight: \"700\",\n    textDecoration: \"underline\",\n    borderRadius: \"10px\",\n    padding: \"4px 12px\",\n    \"&:hover\": {\n      background: \"rgba(171, 205, 239, 0.3)\"\n    }\n  },\n  selectAllWithActionsTooltip: {\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    width: \"100%\",\n    paddingInline: \"20px\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"24px\",\n    fontWeight: \"bold\",\n    color: \"#666666\"\n  },\n  selectAllWithActionsTooltipButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"15px\",\n    fontWeight: \"600\",\n    color: \"#666666\",\n    backgroundColor: \"#9393931F\",\n    padding: \"10px 24px\",\n    borderRadius: \"6px\",\n    border: \"none\",\n    textTransform: \"none\",\n    \"&:hover\": {\n      backgroundColor: \"#93939335\",\n      border: \"none\"\n    }\n  },\n  actionsMenu: {\n    \"& .MuiPaper-root\": __spreadProps(__spreadValues({}, actionsMenuPaperCommonStyles), {\n      width: \"170px\",\n      marginTop: \"6px\"\n    }),\n    \"& span\": actionsMenuSpanCommonStyles\n  },\n  centerCellContent: {\n    display: \"flex\",\n    justifyContent: \"center\"\n  }\n};\n","\"use strict\";\nexport const handleSelectOne = (event, item, allItemIds, dispatch) => {\n  if (event.target.checked) {\n    dispatch({ type: \"ADD_SELECTED_ITEM\", payload: item });\n  } else {\n    dispatch({\n      type: \"REMOVE_SELECTED_ITEM\",\n      payload: item.id\n    });\n  }\n};\nexport const handleSelectAllOnPage = (event, allItems, dispatch) => {\n  if (event.target.checked) {\n    dispatch({ type: \"ADD_ALL_PAGE_ITEMS\", payload: allItems });\n  } else {\n    dispatch({ type: \"REMOVE_ALL_PAGE_ITEMS\", payload: allItems.map((i) => i.id) });\n  }\n};\nexport const handleScroll = (tableRef, dispatch) => {\n  if (!tableRef.current) return;\n  if (tableRef.current.scrollLeft < 10) {\n    dispatch({ type: \"SET_CAN_SCROLL\", payload: [false, true] });\n  } else if (tableRef.current.scrollLeft > tableRef.current.scrollWidth - tableRef.current.clientWidth - 10) {\n    dispatch({ type: \"SET_CAN_SCROLL\", payload: [true, false] });\n  } else {\n    dispatch({ type: \"SET_CAN_SCROLL\", payload: [true, true] });\n  }\n};\nexport const handleScrollLeft = (tableRef) => {\n  if (!tableRef.current) return;\n  tableRef.current.scrollLeft > 360 ? tableRef.current.scrollLeft -= 300 : tableRef.current.scrollLeft = 0;\n};\nexport const handleScrollRight = (tableRef) => {\n  if (!tableRef.current) return;\n  tableRef.current.scrollWidth - tableRef.current.clientWidth > 360 ? tableRef.current.scrollLeft += 300 : tableRef.current.scrollLeft = tableRef.current.scrollWidth - tableRef.current.clientWidth;\n};\nexport const isScrollable = (element) => {\n  return element && element.scrollWidth > element.clientWidth + 20;\n};\nexport const handleScrollableEnter = (tableRef, dispatch) => {\n  if (tableRef.current && isScrollable(tableRef.current))\n    dispatch({ type: \"SET_TABLE_HOVERED\", payload: true });\n};\nexport const handleScrollableExit = (dispatch) => {\n  dispatch({ type: \"SET_TABLE_HOVERED\", payload: false });\n};\nexport const tablePadding = (density) => {\n  if (density === \"Default\") {\n    return \"22px\";\n  } else if (density === \"Compact\") {\n    return \"15px\";\n  } else {\n    return \"8px\";\n  }\n};\nexport const removeSelected = (selectedItems, selectedItemIds, itemId) => {\n  const newSelectedItemIds = selectedItemIds.filter((id) => id !== itemId);\n  const newSelectedItems = selectedItems.filter((item) => item.id !== itemId);\n  return {\n    selectedItemIds: newSelectedItemIds,\n    selectedItems: newSelectedItems\n  };\n};\nexport const addSelected = (selectedItems, selectedItemIds, item) => {\n  const newSelectedItemIds = [...selectedItemIds, item.id];\n  const newSelectedItems = [...selectedItems, item];\n  return {\n    selectedItemIds: newSelectedItemIds,\n    selectedItems: newSelectedItems\n  };\n};\nexport const addAllPageItems = (selectedItems, itemsOnPage) => {\n  const newSelectedItems = Array.from(/* @__PURE__ */ new Set([...selectedItems, ...itemsOnPage]));\n  const newSelectedItemIds = newSelectedItems.map((item) => item.id);\n  return {\n    selectedItemIds: newSelectedItemIds,\n    selectedItems: newSelectedItems\n  };\n};\nexport const removeAllPageItems = (selectedItems, itemsOnPage) => {\n  const newSelectedItems = selectedItems.filter((item) => !itemsOnPage.includes(item.id));\n  const newSelectedItemIds = newSelectedItems.map((item) => item.id);\n  return {\n    selectedItemIds: newSelectedItemIds,\n    selectedItems: newSelectedItems\n  };\n};\n","\"use strict\";\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nimport { fetchPreferences } from \"../../helpers/uiPreferencesHelpers\";\nexport const getPreferences = (userPreferenceSource, dispatch) => __async(void 0, null, function* () {\n  var _a, _b, _c, _d, _e;\n  const { res: globalRes } = yield fetchPreferences(\"universal\");\n  const { ui_preferences: [globalPreferences] = [] } = globalRes;\n  const { res: localRes } = yield fetchPreferences(userPreferenceSource);\n  const { ui_preferences: [localPreferences] = [] } = localRes;\n  ((_a = globalPreferences == null ? void 0 : globalPreferences.columns) == null ? void 0 : _a.density) && dispatch({ type: \"SET_DENSITY\", payload: (_b = globalPreferences == null ? void 0 : globalPreferences.columns) == null ? void 0 : _b.density });\n  (localPreferences == null ? void 0 : localPreferences.sortable_columns) && dispatch({ type: \"SET_COLUMNS\", payload: localPreferences == null ? void 0 : localPreferences.sortable_columns });\n  (localPreferences == null ? void 0 : localPreferences.row_count) && dispatch({ type: \"SET_LIMIT\", payload: localPreferences == null ? void 0 : localPreferences.row_count });\n  ((_c = localPreferences == null ? void 0 : localPreferences.sorting) == null ? void 0 : _c.sortBy) && dispatch({\n    type: \"SET_SORT\",\n    payload: {\n      sortBy: (_d = localPreferences == null ? void 0 : localPreferences.sorting) == null ? void 0 : _d.sortBy,\n      sortOrder: ((_e = localPreferences == null ? void 0 : localPreferences.sorting) == null ? void 0 : _e.sortOrder) || \"desc\"\n    }\n  });\n  return null;\n});\n","\"use strict\";\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport { closeIcon } from \"../../shared/styleClasses\";\nexport const classes = {\n  // Generic dialog\n  dialog: {\n    padding: \"40px 60px\",\n    alignItems: \"center\",\n    textAlign: \"center\",\n    \"& > h4\": {\n      fontSize: \"26px\",\n      color: theme.palette.primary.main,\n      marginBottom: \"14px\"\n    },\n    \"& > span\": {\n      fontWeight: \"600\",\n      color: \"#666666\",\n      fontSize: \"16px\",\n      lineHeight: \"20px\"\n    },\n    \"& button:focus\": {\n      outline: \"0\"\n    }\n  },\n  dialogButtonContainer: {\n    display: \"flex\",\n    marginTop: \"40px\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    flexDirection: \"row\",\n    \"& > button\": {\n      margin: \"0 10px\",\n      minWidth: \"150px\"\n    }\n  },\n  dialogHeader: {\n    color: \"#727272\",\n    fontSize: \"26px\",\n    fontWeight: \"800\",\n    marginBottom: \"1.5rem\"\n  },\n  confirmationButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    textTransform: \"none\",\n    whiteSpace: \"nowrap\",\n    color: \"#FFFFFF\",\n    backgroundColor: \"#5BC4BF\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    padding: \"8px 14px\",\n    \"&:hover\": {\n      backgroundColor: \"#4da8a4\",\n      boxShadow: \"none\"\n    }\n  },\n  tickWrapper: {\n    background: \"#5BC4BF\",\n    borderRadius: \"5rem\",\n    height: \"3.75rem\",\n    width: \"3.75rem\",\n    display: \"flex\",\n    boxShadow: \"2px 2px 5px #DDDDDD\",\n    marginBottom: \"1.5rem\"\n  },\n  crossWrapper: {\n    background: theme.palette.error.main,\n    borderRadius: \"5rem\",\n    height: \"3.75rem\",\n    width: \"3.75rem\",\n    display: \"flex\",\n    boxShadow: \"2px 2px 5px #DDDDDD\",\n    marginBottom: \"1.5rem\"\n  },\n  tickGreen: {\n    color: \"#FFFFFF\",\n    fontSize: \"2.5rem\",\n    display: \"flex\",\n    margin: \"auto\"\n  },\n  crossRed: {\n    color: \"#FFFFFF\",\n    fontSize: \"2.5rem\",\n    display: \"flex\",\n    margin: \"auto\"\n  },\n  buttonSecondaryLight: {\n    borderRadius: \"6px\",\n    fontFamily: \"Source Sans Pro\",\n    textTransform: \"capitalize\",\n    whiteSpace: \"nowrap\",\n    padding: \"14px 30px\",\n    fontSize: \"15px\",\n    fontWeight: \"bold\",\n    background: theme.palette.secondary.light,\n    color: theme.palette.secondary.main,\n    \"&:hover\": {\n      background: theme.palette.secondary.main,\n      color: \"#FFF\"\n    }\n  },\n  buttonRed: {\n    borderRadius: \"6px\",\n    fontFamily: \"Source Sans Pro\",\n    textTransform: \"capitalize\",\n    padding: \"14px 30px\",\n    color: \"#FFF\",\n    fontWeight: \"bold\",\n    whiteSpace: \"nowrap\",\n    fontSize: \"15px\",\n    background: theme.palette.error.main,\n    \"&:hover\": {\n      background: theme.palette.error.dark,\n      color: \"#FFF\"\n    }\n  },\n  // File Preview Modal\n  imagePreview: {\n    objectFit: \"contain\",\n    transition: \"opacity 0.3s linear\"\n  },\n  imagePreviewContainer: {\n    display: \"inline-block\",\n    overflow: \"auto\"\n  },\n  previewLoader: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    marginTop: \"250px\",\n    rowGap: \"18px\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\",\n    fontWeight: \"bold\",\n    color: theme.palette.action.main\n  },\n  absoluteLoader: {\n    position: \"absolute\",\n    top: \"0px\"\n  },\n  downloadButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    width: \"120px\",\n    textTransform: \"none\",\n    color: \"#FFFFFF\",\n    backgroundColor: \"#5BC4BF\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    padding: \"5px 0px\",\n    \"&:hover\": {\n      backgroundColor: \"#4da8a4\",\n      boxShadow: \"none\"\n    }\n  },\n  noPreview: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"28px\",\n    fontWeight: \"bold\",\n    color: \"#999999\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    width: \"100%\",\n    height: \"100%\"\n  },\n  pdfPage: {\n    border: \"1px solid #ccc\",\n    boxShadow: \"4px 5px 3px 0px #CCCCCC\",\n    marginBottom: \"14px\"\n  },\n  mediaContentContainer: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    height: \"100%\",\n    width: \"100%\"\n  },\n  attachmentPreviewModal: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    padding: \"60px\",\n    width: \"900px\",\n    height: \"84vh\",\n    borderRadius: \"6px\",\n    dropShadow: \"0px 2px 14px #305A6F29\",\n    position: \"absolute\",\n    background: \"#FFFFFF\",\n    top: \"50%\",\n    left: \"50%\",\n    transform: \"translate(-50%, -50%)\"\n  },\n  attachmentPreviewTitle: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"30px\",\n    fontWeight: \"bold\",\n    color: theme.palette.primary.main,\n    display: \"flex\",\n    flexDirection: \"column\"\n  },\n  attachmentPreviewContent: {\n    display: \"flex\",\n    justifyContent: \"center\",\n    height: \"100%\",\n    width: \"100%\",\n    overflow: \"auto\",\n    marginTop: \"36px\"\n  },\n  attachmentPreviewActions: {\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    marginTop: \"30px\",\n    width: \"100%\",\n    columnGap: \"16px\",\n    \"& a\": {\n      \"&:hover\": {\n        textDecoration: \"none\"\n      }\n    }\n  },\n  closeIcon,\n  fileLinkContainer: {\n    display: \"flex\",\n    alignItems: \"center\",\n    columnGap: \"15px\",\n    \"& a\": {\n      color: \"#333333\",\n      fontSize: \"15px\",\n      \"&:hover\": {\n        color: \"#000000\",\n        textDecoration: \"none\"\n      }\n    }\n  },\n  copyButton: {\n    fontSize: \"10px\",\n    fontWeight: \"bold\",\n    backgroundColor: \"#5BC4BF1F\",\n    color: theme.palette.action.main,\n    borderRadius: \"6px\",\n    textTransform: \"none\",\n    \"&:hover\": {\n      backgroundColor: theme.palette.action.main,\n      color: \"#FFFFFF\"\n    }\n  },\n  docPreviewNavigation: {\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    width: \"100%\",\n    marginBottom: \"16px\"\n  },\n  docPreviewContent: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    height: \"100%\",\n    overflowY: \"auto\"\n  },\n  downloadModalContent: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    height: \"100%\",\n    width: \"100%\",\n    rowGap: \"20px\",\n    justifyContent: \"center\",\n    color: theme.palette.primary.main\n  },\n  downloadModalDescription: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"17px\",\n    color: \"#939393\",\n    width: \"100%\"\n  },\n  primaryButtonAlternateColor: {\n    color: \"#FFFFFF\",\n    backgroundColor: \"#5BC4BF\",\n    \"&:hover\": {\n      backgroundColor: \"#4da8a4\",\n      boxShadow: \"none\"\n    }\n  },\n  secondaryButtonAlternateColor: {\n    backgroundColor: \"#5BC4BF1F\",\n    \"&:hover\": {\n      backgroundColor: \"#5BC4BF35\",\n      border: \"none\"\n    }\n  },\n  zoomSlider: {\n    color: theme.palette.secondary.main,\n    \"& .MuiSlider-thumb\": {\n      backgroundColor: theme.palette.secondary.main,\n      width: \"16px\",\n      height: \"16px\"\n    },\n    \"& .MuiSlider-rail\": {\n      color: theme.palette.secondary.main,\n      height: \"8px\"\n    },\n    \"& .MuiSlider-track \": {\n      height: \"8px\"\n    }\n  },\n  zoomSliderContainer: {\n    alignSelf: \"flex-end\",\n    marginTop: theme.spacing(1.5),\n    alignItems: \"center\"\n  },\n  zoomIcons: {\n    minWidth: \"auto\",\n    padding: 0\n  }\n};\n","\"use strict\";\nimport { theme } from \"../../../../../ThemeContext/ThemeObject\";\nimport { modalCreateButton } from \"../../../../shared/styleClasses\";\nexport const classes = {\n  adPageContainer: {\n    fontFamily: theme.typography.fontFamily,\n    backgroundColor: \"#FFFFFF\",\n    padding: \"40px\"\n  },\n  adPageHeader: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    width: \"100%\",\n    padding: \"0px 16px\",\n    \"& h1\": {\n      fontWeight: \"bold\",\n      fontSize: \"38px\",\n      lineHeight: \"1.2em\",\n      color: \"#666666\",\n      marginTop: \"0\",\n      \"@media (max-width: 1450px)\": {\n        fontSize: \"34px\"\n      },\n      \"@media (max-width: 1260px)\": {\n        fontSize: \"28px\"\n      }\n    }\n  },\n  tabsContainer: {\n    borderBottom: 1,\n    borderColor: \"#EEEEEE\",\n    margin: \"40px 0px 20px 0px\"\n  },\n  tabs: {\n    \"& button\": {\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"18px\",\n      letterSpacing: \"0\",\n      color: \"#939393\",\n      textTransform: \"none\",\n      minWidth: \"unset\",\n      \"&:hover\": {\n        color: \"#737373\"\n      },\n      \"&:focus\": {\n        outline: \"none\"\n      }\n    },\n    \"& button.Mui-selected\": {\n      fontWeight: \"600\",\n      color: \"#084D6D\"\n    }\n  },\n  tabIndicator: {\n    backgroundColor: \"#5BC4BF\",\n    margin: \"0 16px\"\n  },\n  backToJobAdButton: {\n    marginBottom: \"20px\",\n    fontSize: \"16px\",\n    color: \"#eee\",\n    opacity: \"0.8\",\n    display: \"flex\",\n    alignItems: \"center\",\n    \"& div\": {\n      fontWeight: \"600\",\n      color: \"#666666\",\n      \":hover\": {\n        color: \"#545454\",\n        cursor: \"pointer\"\n      }\n    }\n  },\n  tabContent: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    height: \"80%\",\n    overflowY: \"auto\",\n    margin: \"20px 0px 40px 0\",\n    padding: \"0px 16px\"\n  },\n  headerContent: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\",\n    fontWeight: \"bold\",\n    color: \"#666666\",\n    lineHeight: \"2rem\"\n  },\n  checkbox: {\n    color: \"#DDDDDD\",\n    \"&.Mui-checked\": {\n      color: theme.palette.action.main\n    },\n    \"& .MuiSvgIcon-root\": {\n      fontSize: \"22px\"\n    }\n  },\n  label: {\n    marginBottom: \"20px\",\n    \"& .MuiTypography-root\": {\n      color: \"#939393\",\n      fontSize: \"16px\",\n      fontFamily: \"Source Sans Pro, sans-serif\"\n    }\n  },\n  detailsTitle: {\n    margin: \"20px 0px 10px 0px\",\n    color: \"#939393\",\n    fontSize: \"16px\",\n    fontFamily: \"Source Sans Pro, sans-serif\"\n  },\n  details: {\n    color: \"#000000\",\n    fontSize: \"16px\",\n    fontFamily: \"Source Sans Pro, sans-serif\"\n  },\n  modalFormLine: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    flexDirection: \"column\",\n    columnGap: \"50px\",\n    rowGap: \"26px\",\n    margin: \"40px 0px\",\n    width: \"100%\",\n    alignItems: \"flex-start\"\n  },\n  datePicker: {\n    margin: \"33px 0 0 2px\",\n    fontFamily: \"Source Sans Pro\",\n    width: \"190px\",\n    color: \"#666666\",\n    borderRadius: \"6px\",\n    \"& input\": {\n      padding: \"5px 10px 7px 10px\",\n      fontFamily: \"Source Sans Pro\"\n    },\n    \"& fieldset\": {\n      borderColor: \"#DDDDDD\",\n      \"& legend\": {\n        display: \"none\"\n      }\n    },\n    \"& button\": {\n      padding: \"0px\",\n      transform: \"translate(-2px, -1.5px)\",\n      \"&:hover\": {\n        background: \"transparent\",\n        \"& svg\": {\n          color: \"#888888\"\n        }\n      }\n    },\n    \"& .MuiInputAdornment-root\": {\n      marginLeft: \"0px\"\n    },\n    \"& svg\": {\n      color: \"#AAAAAA\"\n    }\n  },\n  formAutocomplete: {\n    \"& .MuiAutocomplete-root\": {\n      \"& .MuiOutlinedInput-root\": {\n        padding: \"0px\"\n      }\n    },\n    \"& .MuiOutlinedInput-root\": {\n      borderRadius: \"6px\",\n      position: \"relative\",\n      backgroundColor: \"#FFFFFF\",\n      color: \"#333333\",\n      border: \"1px solid #DDDDDD\",\n      fontSize: \"16px\",\n      padding: \"0px\",\n      fontFamily: \"Source Sans Pro, sans-serif\",\n      transition: \"all 0.16s ease-in-out\",\n      \"& .MuiAutocomplete-input\": {\n        padding: \"6px 4px 6px 11px\"\n      }\n    },\n    \"& fieldset\": {\n      display: \"none\"\n    },\n    \"& label\": {\n      color: \"#838383 !important\",\n      fontSize: \"21px\",\n      fontFamily: \"Source Sans Pro, sans-serif\",\n      paddingLeft: \"4px\",\n      left: \"-13px\",\n      top: \"-15px\",\n      \"& .MuiFormLabel-asterisk\": {\n        color: theme.palette.error.main\n      }\n    },\n    \"& .MuiAutocomplete-popupIndicator\": {\n      transition: \"all 0.25s ease-in-out\",\n      color: \"#AAAAAA\"\n    }\n  },\n  modalFooter: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    width: \"100%\",\n    justifyContent: \"flex-end\",\n    columnGap: \"20px\",\n    margin: \"40px 0px\"\n  },\n  modalCancelButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    width: \"100px\",\n    textTransform: \"none\",\n    textDecoration: \"underline\",\n    color: theme.palette.error.main,\n    backgroundColor: \"#FFFFFF\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    padding: \"5px 0px\",\n    \"&:hover\": {\n      backgroundColor: \"#FFFFFF\",\n      textDecoration: \"none\",\n      boxShadow: \"none\"\n    }\n  },\n  modalCreateButton,\n  actionsContianer: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    gap: \"22px\",\n    margin: \"10px 0px 30px 0px\"\n  },\n  editButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"600\",\n    color: \"#666666\",\n    backgroundColor: \"#9393931F\",\n    padding: \"10px 24px\",\n    borderRadius: \"6px\",\n    border: \"none\",\n    textTransform: \"none\",\n    \"&:hover\": {\n      backgroundColor: \"#93939335\",\n      border: \"none\"\n    }\n  },\n  approveButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"600\",\n    color: \"#8CCF95\",\n    backgroundColor: \"#8CCF951F\",\n    padding: \"10px 24px\",\n    borderRadius: \"6px\",\n    border: \"none\",\n    textTransform: \"none\",\n    \"&:hover\": {\n      backgroundColor: \"#8CCF9535\",\n      border: \"none\"\n    }\n  }\n};\n","\"use strict\";\nimport { theme } from \"../../../../ThemeContext/ThemeObject\";\nexport const classes = {\n  dialogConfirmButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    padding: \"10px 30px\",\n    fontWeight: \"bold\",\n    color: \"#ffffff\",\n    background: theme.palette.action.main,\n    \"&:hover\": {\n      background: \"#4da8a4\"\n    }\n  },\n  dialogContainer: {\n    width: 700,\n    maxWidth: \"100%\",\n    padding: \"40px\"\n  },\n  dropdown: {\n    width: \"100%\",\n    marginBottom: \"32px\"\n  },\n  dropdownText: {\n    fontSize: \"14px !important\"\n  },\n  dialogTitle: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"25px\",\n    fontWeight: 700,\n    marginBottom: \"32px\",\n    color: theme.palette.primary.main\n  },\n  label: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    color: theme.palette.common.grey,\n    \"& span\": {\n      color: theme.palette.error.main\n    }\n  }\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport {\n  actionsMenuPaperCommonStyles,\n  actionsMenuSpanCommonStyles,\n  leftArrowStyles,\n  rightArrowStyles\n} from \"../../shared/commonStyles\";\nimport {\n  scrollShadowLeft,\n  scrollShadowRight,\n  filterMenu,\n  rowSelect,\n  pagination,\n  paginationContainer,\n  rowSelectContainerAlt\n} from \"../../shared/styleClasses\";\nexport const classes = {\n  container: {\n    width: \"100%\"\n  },\n  banner: {\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    columnGap: \"22px\",\n    alignItems: \"center\",\n    marginBottom: \"20px\"\n  },\n  toggleButtonGroup: {\n    borderRadius: \"8px\",\n    margin: \"10px 0px 20px 0px\",\n    \"& button\": {\n      fontFamily: \"Source Sans Pro\",\n      fontWeight: \"bold\",\n      padding: \"6px 16px\",\n      borderRadius: \"0\",\n      textTransform: \"capitalize\",\n      borderRight: \"1px solid #f3f3f3\",\n      \"&:first-of-type\": {\n        borderTopLeftRadius: \"6px\",\n        borderBottomLeftRadius: \"6px\"\n      },\n      \"&:last-child\": {\n        borderTopRightRadius: \"6px\",\n        borderBottomRightRadius: \"6px\",\n        borderRight: \"0\"\n      }\n    }\n  },\n  containerOuter: {\n    background: \"#FFF\",\n    borderRadius: \"8px\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    \"& button:focus\": {\n      outline: \"0\"\n    }\n  },\n  buttonPrimary: {\n    borderRadius: \"6px\",\n    padding: \"14px 30px\",\n    textTransform: \"capitalize\",\n    color: \"#FFF\",\n    fontWeight: \"600\",\n    fontSize: \"14px\",\n    background: theme.palette.primary.main,\n    \"&:hover\": {\n      background: theme.palette.primary.dark\n    }\n  },\n  buttonSecondary: {\n    borderRadius: \"6px\",\n    padding: \"14px 30px\",\n    textTransform: \"capitalize\",\n    color: \"#FFF\",\n    fontWeight: \"600\",\n    fontSize: \"14px\",\n    background: theme.palette.secondary.main,\n    \"&:hover\": {\n      background: theme.palette.primary.dark\n    }\n  },\n  newAdButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"15px\",\n    fontWeight: \"bold\",\n    lineHeight: \"1.3\",\n    color: theme.palette.action.main,\n    backgroundColor: \"#5BC4BF1F\",\n    height: \"47px\",\n    width: \"120px\",\n    borderRadius: \"6px\",\n    border: \"none\",\n    textTransform: \"none\",\n    \"&:hover\": {\n      backgroundColor: \"#5BC4BF35\",\n      border: \"none\"\n    }\n  },\n  buttonGrey: {\n    padding: \"14px 30px\",\n    background: \"#FFF\",\n    color: \"#DDDDDD\",\n    \"&:hover\": {\n      background: theme.palette.secondary.main,\n      color: \"#FFF\"\n    }\n  },\n  buttonActive: {\n    color: theme.palette.secondary.main\n  },\n  tableContainer: {\n    overflowX: \"auto\",\n    scrollBehavior: \"smooth\"\n  },\n  table: {\n    display: \"table\",\n    borderCollapse: \"collapse\",\n    borderSpacing: \"0\",\n    width: \"100%\",\n    background: \"#FFF\",\n    borderRadius: \"8px\"\n  },\n  rowHeader: {\n    \"& span\": {\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"14px\",\n      fontWeight: \"700\",\n      color: theme.palette.primary.main,\n      marginTop: \"24px\",\n      marginBottom: \"20px\"\n    }\n  },\n  row: {\n    display: \"table-row-group\",\n    width: \"100%\",\n    borderBottom: \"1px solid #f3f3f3\",\n    \"& > *\": {\n      padding: \"24px\",\n      paddingRight: \"0px\",\n      display: \"table-cell\",\n      fontSize: \"14px\",\n      \"&:first-of-type\": {\n        paddingLeft: \"18px\"\n      },\n      \"&:last-child\": {\n        paddingRight: \"18px\"\n      }\n    }\n  },\n  actionsContainer: {\n    display: \"flex\",\n    whiteSpace: \"nowrap\",\n    textAlign: \"right\",\n    \"& .Mui-disabled\": {\n      opacity: \"0.5\"\n    }\n  },\n  actionButtonContainer: {\n    marginRight: \"14px\"\n  },\n  actionButton: {\n    width: \"100px\",\n    maxHeight: \"44px\",\n    lineHeight: \"1.05rem\",\n    whiteSpace: \"break-spaces\"\n  },\n  title: {\n    color: \"#666666\",\n    fontWeight: \"600\"\n  },\n  center: {\n    textAlign: \"center\"\n  },\n  iconGreen: {\n    color: theme.palette.success.main\n  },\n  iconRed: {\n    color: theme.palette.error.main\n  },\n  iconGrey: {\n    color: \"#666666\"\n  },\n  icon: {\n    width: \"40px\",\n    height: \"40px\"\n  },\n  columnRefrence: {\n    padding: \"3px 12px\",\n    height: \"2.75rem\",\n    lineHeight: \"17px\"\n  },\n  columnButtonPadding: {\n    padding: \"3px 12px\"\n  },\n  dialog: {\n    padding: \"40px 60px\",\n    alignItems: \"center\",\n    textAlign: \"center\",\n    \"& > h4\": {\n      fontSize: \"26px\",\n      color: theme.palette.primary.main,\n      marginBottom: \"14px\"\n    },\n    \"& > span\": {\n      fontWeight: \"600\",\n      color: \"#666666\",\n      fontSize: \"16px\",\n      lineHeight: \"20px\"\n    },\n    \"& button:focus\": {\n      outline: \"0\"\n    }\n  },\n  dialogButtonContainer: {\n    display: \"flex\",\n    marginTop: \"40px\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    flexDirection: \"row\",\n    \"& > button\": {\n      margin: \"0 10px\",\n      minWidth: \"150px\"\n    }\n  },\n  buttonSecondaryLight: {\n    borderRadius: \"6px\",\n    fontFamily: \"Source Sans Pro\",\n    textTransform: \"capitalize\",\n    padding: \"14px 30px\",\n    fontSize: \"15px\",\n    fontWeight: \"bold\",\n    background: theme.palette.secondary.light,\n    color: theme.palette.secondary.main,\n    \"&:hover\": {\n      background: theme.palette.secondary.main,\n      color: \"#FFF\"\n    }\n  },\n  buttonRed: {\n    borderRadius: \"6px\",\n    fontFamily: \"Source Sans Pro\",\n    textTransform: \"capitalize\",\n    padding: \"14px 30px\",\n    color: \"#FFF\",\n    fontWeight: \"bold\",\n    fontSize: \"15px\",\n    background: theme.palette.error.main,\n    \"&:hover\": {\n      background: theme.palette.error.dark,\n      color: \"#FFF\"\n    }\n  },\n  buttonRedLight: {\n    fontFamily: \"Source Sans Pro\",\n    textTransform: \"capitalize\",\n    fontSize: \"15px\",\n    fontWeight: \"bold\",\n    background: theme.palette.error.light,\n    color: theme.palette.error.main,\n    \"&:hover\": {\n      background: theme.palette.error.main,\n      color: \"#FFF\"\n    }\n  },\n  buttonExpiry: {\n    width: \"122px\",\n    maxWidth: \"unset !important\",\n    fontFamily: \"Source Sans Pro\",\n    textTransform: \"capitalize\",\n    fontSize: \"15px\",\n    fontWeight: \"bold\",\n    background: theme.palette.error.light,\n    color: theme.palette.error.main,\n    \"&:hover\": {\n      background: theme.palette.error.main,\n      color: \"#FFF\"\n    }\n  },\n  buttonGreenLight: {\n    padding: \"14px 30px\",\n    fontSize: \"15px\",\n    fontWeight: \"bold\",\n    fontFamily: \"Source Sans Pro\",\n    textTransform: \"capitalize\",\n    background: theme.palette.success.light,\n    color: theme.palette.success.main,\n    \"&:hover\": {\n      background: theme.palette.success.main,\n      color: \"#FFF\"\n    }\n  },\n  disableIcon: {\n    pointerEvents: \"none\",\n    opacity: \"0.5\"\n  },\n  sponsorText: {\n    textDecoration: \"underline\",\n    \"&:hover\": {\n      cursor: \"pointer\"\n    }\n  },\n  paginationParent: {\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    marginTop: \"20px\"\n  },\n  rowSelectContainer: rowSelectContainerAlt,\n  paginationContainer,\n  pagination,\n  rowSelect,\n  paginationMenuItems: {\n    \"& li\": {\n      fontFamily: \"Source Sans Pro\"\n    }\n  },\n  downIcon: {\n    marginLeft: \"8px\",\n    fontSize: \"18px\",\n    color: \"inherit\"\n  },\n  actionsMenu: {\n    \"& .MuiPaper-root\": __spreadProps(__spreadValues({}, actionsMenuPaperCommonStyles), {\n      rowGap: \"11px\",\n      minWidth: \"155px\",\n      marginTop: \"6px\"\n    }),\n    \"& span\": __spreadProps(__spreadValues({}, actionsMenuSpanCommonStyles), {\n      color: \"#939393\"\n    })\n  },\n  buttonDateConfirm: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    padding: \"10px 30px\",\n    fontWeight: \"bold\",\n    textTransform: \"capitalize\",\n    color: \"#ffffff\",\n    background: theme.palette.action.main,\n    \"&:hover\": {\n      background: \"#4da8a4\"\n    }\n  },\n  datePicker: {\n    fontFamily: \"Source Sans Pro\",\n    color: \"#000000\",\n    width: \"119px\",\n    marginTop: \"6px\",\n    \"& input\": {\n      fontSize: \"14px\",\n      padding: \"0px 6px 6px 10px\",\n      fontFamily: \"Source Sans Pro\"\n    },\n    \"& fieldset\": {\n      \"& legend\": {\n        display: \"none\"\n      }\n    },\n    \"& button\": {\n      padding: \"0px\",\n      transform: \"translate(7px, -2px)\",\n      \"&:hover\": {\n        background: \"transparent\",\n        \"& svg\": {\n          color: theme.palette.primary.main\n        }\n      }\n    },\n    \"& svg\": {\n      fontSize: \"17px\",\n      color: \"#666666\"\n    }\n  },\n  calendar: {\n    \"& .PrivatePickersFadeTransitionGroup-root\": {\n      fontFamily: \"Source Sans Pro\"\n    },\n    \"& .MuiTypography-root\": {\n      fontFamily: \"Source Sans Pro\"\n    },\n    \"& .Mui-selected\": {\n      backgroundColor: `${theme.palette.action.main} !important`\n    },\n    \"& .PrivatePickersSlideTransition-root\": {\n      minHeight: \"242px !important\"\n    }\n  },\n  expiryMessage: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"19px\",\n    maxWidth: \"350px\",\n    paddingBottom: \"20px\"\n  },\n  expiryDateMessage: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"19px\",\n    maxWidth: \"350px\",\n    paddingTop: \"10px\",\n    paddingBottom: \"10px\"\n  },\n  expiryPostPickerMessage: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"19px\",\n    maxWidth: \"350px\",\n    paddingTop: \"10px\",\n    paddingBottom: \"20px\",\n    \"& span\": {\n      fontFamily: \"Source Sans Pro\",\n      fontWeight: \"bold\",\n      color: theme.palette.primary.main\n    }\n  },\n  expiryChangePreview: {\n    display: \"flex\",\n    alignItems: \"center\",\n    margin: \"6px 66px\"\n  },\n  expiryDateContainer: {\n    width: \"140px\",\n    backgroundColor: \"#F8F8F8\",\n    border: \"1px solid #DDDDDD\",\n    padding: \"16px 22px\",\n    borderRadius: \"6px\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"flex-start\",\n    justifyContent: \"center\"\n  },\n  expiryTitle: {\n    fontSize: \"13px\",\n    color: \"#939393\",\n    lineHeight: \"1.4\"\n  },\n  expiryDate: {\n    fontSize: \"15px\",\n    fontWeight: \"bold\",\n    color: \"#000000\",\n    lineHeight: \"1.4\"\n  },\n  filterMenu,\n  filterButton: {\n    fontFamily: \"Source Sans Pro\",\n    height: \"47px\",\n    textTransform: \"capitalize\",\n    fontSize: \"15px\",\n    fontWeight: \"600\",\n    color: theme.palette.primary.main,\n    backgroundColor: \"#FFFFFF\",\n    border: \"1px solid #EAEEF0\",\n    borderRadius: \"6px\",\n    padding: \"8px 16px\"\n  },\n  arrowsContainer: {\n    height: 0,\n    overflow: \"visible\",\n    position: \"sticky\",\n    top: \"200px\",\n    zIndex: \"999\",\n    transform: \"translateY(100px)\"\n  },\n  leftArrow: __spreadProps(__spreadValues({}, leftArrowStyles), {\n    position: \"sticky\",\n    zIndex: \"9999\"\n  }),\n  rightArrow: __spreadProps(__spreadValues({}, rightArrowStyles), {\n    position: \"sticky\",\n    zIndex: \"9999\"\n  }),\n  showArrows: {\n    display: \"flex\",\n    animation: \"$fadeIn linear 0.17s\"\n  },\n  \"@keyframes fadeIn\": {\n    \"0%\": { opacity: 0 },\n    \"100%\": { opacity: 0.9 }\n  },\n  sticky: {\n    position: \"sticky\",\n    left: \"0px\",\n    background: \"white\",\n    zIndex: 1\n  },\n  stickyRight: {\n    position: \"sticky\",\n    right: \"0px\",\n    background: \"white\"\n  },\n  scrollShadowLeft,\n  scrollShadowRight,\n  scrollShadowVisible: {\n    \"&&::after\": {\n      opacity: \"20%\"\n    }\n  }\n};\n","\"use strict\";\nimport { theme } from \"../../../../components/ThemeContext/ThemeObject\";\nexport const styles = {\n  tableWrapper: {\n    tableLayout: \"auto !important\",\n    minWidth: \"1000px\",\n    border: \"none\",\n    \"td, th, tr, thead\": {\n      fontFamily: \"Source Sans Pro, sans-serif\",\n      border: \"none\",\n      backgroundColor: \"#FFFFFF\",\n      textTransform: \"none\"\n    },\n    th: {\n      color: theme.palette.primary.main,\n      fontWeight: \"bold\",\n      paddingBottom: \"16px\",\n      \"& .Mui-active\": {\n        color: theme.palette.primary.main\n      }\n    },\n    tr: {\n      fontSize: \"16px\"\n    }\n  },\n  skeletonContainer: {\n    padding: \"10px 0px\"\n  },\n  noRecords: {\n    width: \"100%\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    color: \"#DDDDDD\",\n    fontSize: \"18px\",\n    fontWeight: \"bold\",\n    margin: \"32px 0px\"\n  },\n  tableCellData: {\n    width: \"20%\",\n    minWidth: \"10rem\"\n  }\n};\n","\"use strict\";\nexport const HtmlEditorFonts = [\n  `@font-face {\n    font-family: 'Nexa';\n    src: url(\"/fonts/nexa/Nexa.ttf\");\n    font-weight: 400;\n    font-weight: normal;\n    font-style: normal;\n  }`,\n  `@font-face {\n    font-family: 'Nexa';\n    src: url(\"/fonts/nexa/Nexa Bold.ttf\");\n    font-weight: 700;\n    font-style: bold;\n  }`\n];\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nconst callAPI = (url, body, method) => __async(void 0, null, function* () {\n  try {\n    const response = yield fetch(url, __spreadValues({\n      method: method || \"GET\",\n      headers: {\n        \"Content-Type\": \"application/json\"\n      }\n    }, body && { body: JSON.stringify(body) }));\n    const data = yield response.json();\n    if (!response.ok) {\n      throw new Error((data == null ? void 0 : data.message) || data.error || \"Something went wrong, please try again\");\n    }\n    return data;\n  } catch (error) {\n    console.log(error);\n  }\n});\nexport default callAPI;\nexport const callPaginatedAPI = (url, body, method) => __async(void 0, null, function* () {\n  try {\n    const response = yield fetch(url, __spreadValues({\n      method: method || \"GET\",\n      headers: {\n        \"Content-Type\": \"application/json\"\n      }\n    }, body && { body: JSON.stringify(body) }));\n    const data = {\n      data: yield response.json(),\n      totalItems: Number(response.headers.get(\"X-Total-Count\")),\n      totalPages: Number(response.headers.get(\"X-Total-Pages\"))\n    };\n    if (!response.ok) {\n      throw new Error((data == null ? void 0 : data.message) || data.error || \"Something went wrong, please try again\");\n    }\n    return data;\n  } catch (error) {\n    console.log(error);\n  }\n});\n","\"use strict\";\nimport { translate } from \"./convertToLocalEnglish/internals/translate\";\nexport const convertToLocalEnglish = (input) => {\n  const locale = navigator.language;\n  if (locale === \"en-US\") {\n    return translate(input, { american: true });\n  } else {\n    return translate(input);\n  }\n};\n","import { AmericanSpellings, BritishSpellings } from \"./\";\ndescribe(\"AmericanSpellings\", () => {\n  it(\"should be defined\", () => {\n    expect(AmericanSpellings).toBeDefined();\n    expect(typeof AmericanSpellings).toStrictEqual(\"object\");\n  });\n  it(\"should be a string to string map\", () => {\n    for (const [key, value] of Object.entries(AmericanSpellings)) {\n      expect(typeof key).toStrictEqual(\"string\");\n      expect(typeof value).toStrictEqual(\"string\");\n      expect(value).not.toStrictEqual(key);\n      expect(key).toMatch(/^[a-z]+-?$/);\n      expect(value).toMatch(/^[a-z]+-?$/);\n    }\n  });\n});\ndescribe(\"BritishSpellings\", () => {\n  it(\"should be defined\", () => {\n    expect(BritishSpellings).toBeDefined();\n    expect(typeof BritishSpellings).toStrictEqual(\"object\");\n  });\n  it(\"should be a string to string map\", () => {\n    for (const [key, value] of Object.entries(BritishSpellings)) {\n      expect(typeof key).toStrictEqual(\"string\");\n      expect(typeof value).toStrictEqual(\"string\");\n      expect(value).not.toStrictEqual(key);\n      expect(key).toMatch(/^[a-z]+-?$/);\n      expect(value).toMatch(/^[a-z]+-?$/);\n    }\n  });\n});\n","\"use strict\";\n/**\n * Modified From: https://github.com/kpdecker/jsdiff\n * @license BSD\n * Copyright (c) 2009-2015, Kevin Decker <kpdecker@gmail.com>\n */\nexport function diff(o, n) {\n  const oldString = o;\n  const newString = n;\n  const newLen = newString.length;\n  const oldLen = oldString.length;\n  let editLength = 1;\n  const maxEditLength = newLen + oldLen;\n  const bestPath = [{ newPos: -1, components: [] }];\n  const oldPos = extractCommon(bestPath[0], newString, oldString, 0);\n  if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {\n    return [{ newValue: newString, oldValue: oldString, added: false, removed: false }];\n  }\n  while (editLength <= maxEditLength) {\n    for (let diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {\n      let basePath;\n      const addPath = bestPath[diagonalPath - 1];\n      const removePath = bestPath[diagonalPath + 1];\n      let oldPos2 = (removePath ? removePath.newPos : 0) - diagonalPath;\n      if (addPath) {\n        bestPath[diagonalPath - 1] = void 0;\n      }\n      const canAdd = addPath && addPath.newPos + 1 < newLen;\n      const canRemove = removePath && 0 <= oldPos2 && oldPos2 < oldLen;\n      if (!canAdd && !canRemove) {\n        bestPath[diagonalPath] = void 0;\n        continue;\n      }\n      if (!canAdd || canRemove && addPath.newPos < removePath.newPos) {\n        basePath = { newPos: removePath.newPos, components: removePath.components.slice(0) };\n        pushComponent(basePath.components, false, true);\n      } else {\n        basePath = addPath;\n        basePath.newPos++;\n        pushComponent(basePath.components, true, false);\n      }\n      oldPos2 = extractCommon(basePath, newString, oldString, diagonalPath);\n      if (basePath.newPos + 1 >= newLen && oldPos2 + 1 >= oldLen) {\n        return buildValues(basePath.components, newString, oldString);\n      } else {\n        bestPath[diagonalPath] = basePath;\n      }\n    }\n    editLength++;\n  }\n  return [];\n}\nfunction pushComponent(components, added, removed) {\n  const last = components[components.length - 1];\n  const newCount = added ? 1 : 0;\n  const oldCount = removed ? 1 : 0;\n  if (last && last.added === added && last.removed === removed) {\n    components[components.length - 1] = {\n      newCount: last.newCount + newCount,\n      oldCount: last.oldCount + oldCount,\n      added,\n      removed\n    };\n  } else if (last && last.added && removed) {\n    components[components.length - 1] = {\n      newCount: last.newCount + newCount,\n      oldCount: last.oldCount + oldCount,\n      added: true,\n      removed: true\n    };\n  } else {\n    components.push({\n      newCount,\n      oldCount,\n      added,\n      removed\n    });\n  }\n}\nfunction extractCommon(basePath, newString, oldString, diagonalPath) {\n  const newLen = newString.length;\n  const oldLen = oldString.length;\n  let newPos = basePath.newPos;\n  let oldPos = newPos - diagonalPath;\n  let commonCount = 0;\n  while (newPos + 1 < newLen && oldPos + 1 < oldLen && equals(newString.charAt(newPos + 1), oldString.charAt(oldPos + 1))) {\n    newPos++;\n    oldPos++;\n    commonCount++;\n  }\n  if (commonCount) {\n    basePath.components.push({\n      newCount: commonCount,\n      oldCount: commonCount,\n      removed: false,\n      added: false\n    });\n  }\n  basePath.newPos = newPos;\n  return oldPos;\n}\nfunction equals(left, right) {\n  return left === right || left.toLowerCase() === right.toLowerCase();\n}\nfunction buildValues(components, newString, oldString) {\n  const changes = [];\n  let last = void 0;\n  let newPos = 0;\n  let oldPos = 0;\n  for (const component of components) {\n    const change = {\n      newValue: newString.substring(newPos, newPos + component.newCount),\n      oldValue: oldString.substring(oldPos, oldPos + component.oldCount),\n      added: component.added,\n      removed: component.removed\n    };\n    changes.push(change);\n    if (last) {\n      if (last.oldValue.length) {\n        const lastEnd = last.oldValue.charAt(last.oldValue.length - 1);\n        while (change.oldValue.length && equals(lastEnd, change.oldValue[0])) {\n          last.oldValue += change.oldValue.charAt(0);\n          change.oldValue = change.oldValue.substring(1);\n        }\n      }\n      if (last.newValue.length) {\n        const lastEnd = last.newValue.charAt(last.newValue.length - 1);\n        while (change.newValue.length && equals(lastEnd, change.newValue[0])) {\n          last.newValue += change.newValue.charAt(0);\n          change.newValue = change.newValue.substring(1);\n        }\n      }\n    }\n    newPos += component.newCount;\n    oldPos += component.oldCount;\n    last = change;\n  }\n  return changes;\n}\n","import { everyLowerCase, everyUpperCase } from \"./case\";\ndescribe(\"everyLowerCase\", () => {\n  it(\"should be defined\", () => {\n    expect(everyLowerCase).toBeDefined();\n  });\n  it(\"should return true when all letters are not A-Z\", () => {\n    expect(everyLowerCase(\"abcd\")).toStrictEqual(true);\n    let text = \"-\";\n    for (let code = \"a\".charCodeAt(0); code <= \"z\".charCodeAt(0); code++) {\n      text += String.fromCharCode(code);\n      expect(everyLowerCase(text)).toStrictEqual(true);\n    }\n  });\n  it(\"should return false when any letters are A-Z\", () => {\n    expect(everyLowerCase(\"Abcd\")).toStrictEqual(false);\n    let text = \"-\";\n    for (let code = \"A\".charCodeAt(0); code <= \"Z\".charCodeAt(0); code++) {\n      text += String.fromCharCode(code);\n      expect(everyLowerCase(text)).toStrictEqual(false);\n    }\n  });\n});\ndescribe(\"everyUpperCase\", () => {\n  it(\"should be defined\", () => {\n    expect(everyUpperCase).toBeDefined();\n  });\n  it(\"should return true when all letters are not a-z\", () => {\n    expect(everyUpperCase(\"ABCD\")).toStrictEqual(true);\n    let text = \"-\";\n    for (let code = \"A\".charCodeAt(0); code <= \"Z\".charCodeAt(0); code++) {\n      text += String.fromCharCode(code);\n      expect(everyUpperCase(text)).toStrictEqual(true);\n    }\n  });\n  it(\"should return false when any letters are a-z\", () => {\n    expect(everyUpperCase(\"aBCD\")).toStrictEqual(false);\n    let text = \"-\";\n    for (let code = \"a\".charCodeAt(0); code <= \"z\".charCodeAt(0); code++) {\n      text += String.fromCharCode(code);\n      expect(everyUpperCase(text)).toStrictEqual(false);\n    }\n  });\n});\n","\"use strict\";\nexport function everyLowerCase(text) {\n  const length = text.length;\n  for (let index = 0; index < length; index++) {\n    const code = text.charCodeAt(index);\n    if (code >= 65 && code <= 90) return false;\n  }\n  return true;\n}\nexport function everyUpperCase(text) {\n  const length = text.length;\n  for (let index = 0; index < length; index++) {\n    const code = text.charCodeAt(index);\n    if (code >= 97 && code <= 122) return false;\n  }\n  return true;\n}\n","import { translate } from \"../\";\ndescribe(\"translate\", () => {\n  it(\"should be defined\", () => {\n    expect(translate).toBeDefined();\n  });\n  it(\"should translate text spellings from American to British\", () => {\n    expect(translate(\"my favorite color is gray\")).toBe(\"my favourite colour is grey\");\n    expect(translate(\"My favorite color is gray.\")).toBe(\"My favourite colour is grey.\");\n    expect(translate(\"My Favorite COLOR is Gray\")).toBe(\"My Favourite COLOUR is Grey\");\n    expect(translate(\"My Favourite COLOUR is Grey\")).toBe(\"My Favourite COLOUR is Grey\");\n  });\n  it(\"should translate text spellings from American to British (words with hyphen)\", () => {\n    expect(translate(\"estr-abc\")).toBe(\"oestr-abc\");\n    expect(translate(\"Estr-Abc\")).toBe(\"Oestr-Abc\");\n    expect(translate(\"Leuk-Abc\")).toBe(\"LeucAbc\");\n  });\n  it(\"should translate text spellings from American to British (arbitrary hyphen)\", () => {\n    expect(translate(\"phony pizzazz\")).toBe(\"phoney pzazz\");\n    expect(translate(\"phony-pizzazz\")).toBe(\"phoney-pzazz\");\n    expect(translate(\"Phony-pizzazz\")).toBe(\"Phoney-pzazz\");\n    expect(translate(\"--phony-pizzazz-\")).toBe(\"--phoney-pzazz-\");\n  });\n  it(\"should translate text spellings from British to American\", () => {\n    expect(translate(\"my favourite colour is grey\", { american: true })).toBe(\"my favorite color is gray\");\n    expect(translate(\"My favourite colour is grey.\", { american: true })).toBe(\"My favorite color is gray.\");\n    expect(translate(\"My Favourite COLOUR is Grey\", { american: true })).toBe(\"My Favorite COLOR is Gray\");\n    expect(translate(\"My Favorite COLOR is Gray\", { american: true })).toBe(\"My Favorite COLOR is Gray\");\n  });\n  it(\"should translate text spellings from British to American (words with hyphen)\", () => {\n    expect(translate(\"oestr-abc\", { american: true })).toBe(\"estr-abc\");\n    expect(translate(\"Oestr-Abc\", { american: true })).toBe(\"Estr-Abc\");\n    expect(translate(\"Leuc Abc\", { american: true })).toBe(\"Leuk- Abc\");\n  });\n  it(\"should translate text spellings from British to American (arbitrary hyphen)\", () => {\n    expect(translate(\"phoney pzazz\", { american: true })).toBe(\"phony pizzazz\");\n    expect(translate(\"phoney-pzazz\", { american: true })).toBe(\"phony-pizzazz\");\n    expect(translate(\"Phoney-pzazz\", { american: true })).toBe(\"Phony-pizzazz\");\n    expect(translate(\"--phoney-pzazz-\", { american: true })).toBe(\"--phony-pizzazz-\");\n  });\n});\n","\"use strict\";\nimport { translateWord } from \"./translateWord\";\nexport function translate(original, options) {\n  return original.replace(/[a-z]+-?/gi, (word) => translateWord(word, options));\n}\n","import { translateCase } from \"./translateCase\";\ndescribe(\"translateCase\", () => {\n  it(\"should be defined\", () => {\n    expect(translateCase).toBeDefined();\n  });\n  it(\"should return exact target when source has no CAPS\", () => {\n    expect(translateCase(\"color\", \"colour\")).toBe(\"colour\");\n    expect(translateCase(\"color\", \"CoLouR\")).toBe(\"CoLouR\");\n    expect(translateCase(\"ice-cream\", \"ice-scream\")).toBe(\"ice-scream\");\n  });\n  it(\"should return upper case target when source has all CAPS\", () => {\n    expect(translateCase(\"COLOR\", \"colour\")).toBe(\"COLOUR\");\n    expect(translateCase(\"COLOR\", \"CoLouR\")).toBe(\"COLOUR\");\n    expect(translateCase(\"ICE-CREAM\", \"ice-scream\")).toBe(\"ICE-SCREAM\");\n  });\n  it(\"should return recreate arbitrary CAPS sequence when target is similar to the source (single place single letter)\", () => {\n    expect(translateCase(\"color\", \"colour\")).toBe(\"colour\");\n    expect(translateCase(\"Color\", \"colour\")).toBe(\"Colour\");\n    expect(translateCase(\"CoLor\", \"colour\")).toBe(\"CoLour\");\n    expect(translateCase(\"CoLOR\", \"colour\")).toBe(\"CoLOUR\");\n    expect(translateCase(\"CoLOr\", \"colour\")).toBe(\"CoLOUr\");\n    expect(translateCase(\"colour\", \"color\")).toBe(\"color\");\n    expect(translateCase(\"Colour\", \"color\")).toBe(\"Color\");\n    expect(translateCase(\"CoLour\", \"color\")).toBe(\"CoLor\");\n    expect(translateCase(\"CoLOUR\", \"color\")).toBe(\"CoLOR\");\n    expect(translateCase(\"CoLOUr\", \"color\")).toBe(\"CoLOr\");\n    expect(translateCase(\"chiLi\", \"chilli\")).toBe(\"chiLLi\");\n    expect(translateCase(\"chiLLi\", \"chili\")).toBe(\"chiLi\");\n  });\n  it(\"should return recreate arbitrary CAPS sequence when target is similar to the source (start single letter)\", () => {\n    expect(translateCase(\"estr-\", \"oestr-\")).toBe(\"oestr-\");\n    expect(translateCase(\"EstR-\", \"oestr-\")).toBe(\"OEstR-\");\n    expect(translateCase(\"Estr-\", \"oestr-\")).toBe(\"Oestr-\");\n  });\n  it(\"should return recreate arbitrary CAPS sequence when target is similar to the source (multiple places single letters)\", () => {\n    expect(translateCase(\"TRI-coloriZation\", \"trio-colourisation\")).toBe(\"TRIO-colouriSation\");\n    expect(translateCase(\"TRIO-colouriSation\", \"tri-colorization\")).toBe(\"TRI-coloriZation\");\n  });\n  it(\"should return recreate arbitrary CAPS sequence when target is similar to the source (suffix)\", () => {\n    expect(translateCase(\"snowplow\", \"snowplough\")).toBe(\"snowplough\");\n    expect(translateCase(\"SNOWPLOW\", \"snowplough\")).toBe(\"SNOWPLOUGH\");\n    expect(translateCase(\"Snowplow\", \"snowplough\")).toBe(\"Snowplough\");\n    expect(translateCase(\"snowPloW\", \"snowplough\")).toBe(\"snowPloUGH\");\n    expect(translateCase(\"snowplough\", \"snowplow\")).toBe(\"snowplow\");\n    expect(translateCase(\"SNOWPLOUGH\", \"snowplow\")).toBe(\"SNOWPLOW\");\n    expect(translateCase(\"Snowplough\", \"snowplow\")).toBe(\"Snowplow\");\n    expect(translateCase(\"snowPloUGH\", \"snowplow\")).toBe(\"snowPloW\");\n    expect(translateCase(\"pummeled\", \"pummelling\")).toBe(\"pummelling\");\n    expect(translateCase(\"PUMMELED\", \"pummelling\")).toBe(\"PUMMELLING\");\n    expect(translateCase(\"pummeLed\", \"pummelling\")).toBe(\"pummeLLing\");\n    expect(translateCase(\"pummelEd\", \"pummelling\")).toBe(\"pummellIng\");\n    expect(translateCase(\"pummellEd\", \"pummellling\")).toBe(\"pummelllIng\");\n    expect(translateCase(\"pummelling\", \"pummeled\")).toBe(\"pummeled\");\n    expect(translateCase(\"PUMMELLING\", \"pummeled\")).toBe(\"PUMMELED\");\n    expect(translateCase(\"pummeLLing\", \"pummeled\")).toBe(\"pummeLed\");\n    expect(translateCase(\"pummellIng\", \"pummeled\")).toBe(\"pummelEd\");\n    expect(translateCase(\"pummelllIng\", \"pummelled\")).toBe(\"pummellEd\");\n  });\n  it(\"should return recreate arbitrary CAPS sequence when target is similar to the source (suffix with -s)\", () => {\n    expect(translateCase(\"prologs\", \"prologues\")).toBe(\"prologues\");\n    expect(translateCase(\"PROLOgs\", \"prologues\")).toBe(\"PROLOgues\");\n    expect(translateCase(\"proloGs\", \"prologues\")).toBe(\"proloGUEs\");\n    expect(translateCase(\"proloGS\", \"prologues\")).toBe(\"proloGUES\");\n    expect(translateCase(\"prologues\", \"prologs\")).toBe(\"prologs\");\n    expect(translateCase(\"PROLOgues\", \"prologs\")).toBe(\"PROLOgs\");\n    expect(translateCase(\"proloGUEs\", \"prologs\")).toBe(\"proloGs\");\n    expect(translateCase(\"proloGUES\", \"prologs\")).toBe(\"proloGS\");\n  });\n  it(\"should return recreate arbitrary CAPS sequence when target is similar to the source (multiple places multiple letters)\", () => {\n    expect(translateCase(\"tranquilizers\", \"tranquillisers\")).toBe(\"tranquillisers\");\n    expect(translateCase(\"tranquiLizers\", \"tranquillisers\")).toBe(\"tranquiLLisers\");\n    expect(translateCase(\"tranquiLiZers\", \"tranquillisers\")).toBe(\"tranquiLLiSers\");\n    expect(translateCase(\"tranquiliZERS\", \"tranquillisers\")).toBe(\"tranquilliSERS\");\n    expect(translateCase(\"tranquillisers\", \"tranquilizers\")).toBe(\"tranquilizers\");\n    expect(translateCase(\"tranquiLLisers\", \"tranquilizers\")).toBe(\"tranquiLizers\");\n    expect(translateCase(\"tranquiLLiSers\", \"tranquilizers\")).toBe(\"tranquiLiZers\");\n    expect(translateCase(\"tranquilliSERS\", \"tranquilizers\")).toBe(\"tranquiliZERS\");\n    expect(translateCase(\"tranquiLlisers\", \"tranquilizers\")).toBe(\"tranquiLizers\");\n    expect(translateCase(\"tranquilLisers\", \"tranquilizers\")).toBe(\"tranquilizers\");\n    expect(translateCase(\"outmaneuvers\", \"outmanoeuvres\")).toBe(\"outmanoeuvres\");\n    expect(translateCase(\"outmaneuvErs\", \"outmanoeuvres\")).toBe(\"outmanoeuvrEs\");\n    expect(translateCase(\"outmaneuveRs\", \"outmanoeuvres\")).toBe(\"outmanoeuvres\");\n    expect(translateCase(\"outmaneuVERS\", \"outmanoeuvres\")).toBe(\"outmanoeuVRES\");\n    expect(translateCase(\"outmanoeuvres\", \"outmaneuvers\")).toBe(\"outmaneuvers\");\n    expect(translateCase(\"outmanoeuvrEs\", \"outmaneuvers\")).toBe(\"outmaneuvers\");\n    expect(translateCase(\"outmanoeuvRes\", \"outmaneuvers\")).toBe(\"outmaneuveRs\");\n    expect(translateCase(\"outmanoeuVRES\", \"outmaneuvers\")).toBe(\"outmaneuVERS\");\n  });\n  it(\"should return recreate arbitrary CAPS sequence when target is similar to the source (others)\", () => {\n    expect(translateCase(\"Ice-CreaM\", \"ice-screamme\")).toBe(\"Ice-sCreaMME\");\n    expect(translateCase(\"TRI-coloriZation\", \"trio-colourisation\")).toBe(\"TRIO-colouriSation\");\n    expect(translateCase(\"TRIO-colouriSation\", \"tri-colorization\")).toBe(\"TRI-coloriZation\");\n    expect(translateCase(\"leTter\", \"lemmer\")).toBe(\"leMmer\");\n    expect(translateCase(\"leTTer\", \"lemmer\")).toBe(\"leMMer\");\n    expect(translateCase(\"leTTer\", \"lemer\")).toBe(\"leMer\");\n    expect(translateCase(\"leMmer\", \"letter\")).toBe(\"leTter\");\n    expect(translateCase(\"leMMer\", \"letter\")).toBe(\"leTTer\");\n    expect(translateCase(\"leMer\", \"letter\")).toBe(\"leTTer\");\n  });\n  it(\"should return recreate arbitrary CAPS sequence when source is not similar to the source but have the same length\", () => {\n    expect(translateCase(\"\", \"\")).toBe(\"\");\n    expect(translateCase(\"a\", \"x\")).toBe(\"x\");\n    expect(translateCase(\"A\", \"x\")).toBe(\"X\");\n    expect(translateCase(\"Ab\", \"xy\")).toBe(\"Xy\");\n    expect(translateCase(\"aB\", \"xy\")).toBe(\"xY\");\n    expect(translateCase(\"ABC\", \"xyz\")).toBe(\"XYZ\");\n    expect(translateCase(\"aBC\", \"xyz\")).toBe(\"xYZ\");\n    expect(translateCase(\"AbC\", \"xyz\")).toBe(\"XyZ\");\n    expect(translateCase(\"ABc\", \"xyz\")).toBe(\"XYz\");\n    expect(translateCase(\"abC\", \"xyz\")).toBe(\"xyZ\");\n    expect(translateCase(\"Abc\", \"xyz\")).toBe(\"Xyz\");\n  });\n});\n","\"use strict\";\nimport { diff } from \"../diff\";\nimport { everyLowerCase, everyUpperCase } from \"./case\";\nexport function translateCase(source, target) {\n  if (everyLowerCase(source)) {\n    return target;\n  }\n  if (everyUpperCase(source)) {\n    return target.toUpperCase();\n  }\n  if (everyUpperCase(source.substring(0, 1))) {\n    if (everyLowerCase(source.substring(1))) {\n      return target.substring(0, 1).toUpperCase() + target.substring(1);\n    }\n    target = target.substring(0, 1).toUpperCase() + target.substring(1);\n  }\n  const changes = diff(source, target);\n  let result = \"\";\n  let isUpperCase = false;\n  for (const { added, removed, oldValue, newValue } of changes) {\n    if (removed && added || !removed && !added) {\n      for (let charIndex = 0; charIndex < newValue.length; charIndex++) {\n        const oldChar = oldValue.charAt(charIndex);\n        const newChar = newValue.charAt(charIndex);\n        isUpperCase = everyUpperCase(oldChar) && (!everyLowerCase(oldChar) || isUpperCase);\n        result += isUpperCase ? newChar.toUpperCase() : newChar;\n      }\n    } else if (added) {\n      for (let charIndex = 0; charIndex < newValue.length; charIndex++) {\n        const newChar = newValue.charAt(charIndex);\n        result += isUpperCase ? newChar.toUpperCase() : newChar;\n      }\n    }\n  }\n  return result;\n}\n","import { translateWord } from \"../\";\ndescribe(\"translateWord\", () => {\n  it(\"should be defined\", () => {\n    expect(translateWord).toBeDefined();\n  });\n  it(\"should translate word spellings\", () => {\n    expect(translateWord(\"color\")).toBe(\"colour\");\n    expect(translateWord(\"snowplow\")).toBe(\"snowplough\");\n    expect(translateWord(\"pummeled\")).toBe(\"pummelling\");\n    expect(translateWord(\"prologs\")).toBe(\"prologues\");\n    expect(translateWord(\"estr-\")).toBe(\"oestr-\");\n  });\n  it(\"should keep empty string\", () => {\n    expect(translateWord(\"\")).toBe(\"\");\n  });\n  it(\"should keep the same word when no translate available\", () => {\n    expect(translateWord(\"cat\")).toBe(\"cat\");\n    expect(translateWord(\"Internet\")).toBe(\"Internet\");\n    expect(translateWord(\"ice-\")).toBe(\"ice-\");\n  });\n  it(\"should translate word spellings and keep case\", () => {\n    expect(translateWord(\"Color\")).toBe(\"Colour\");\n    expect(translateWord(\"SnowPlow\")).toBe(\"SnowPlough\");\n    expect(translateWord(\"pummeLED\")).toBe(\"pummeLLING\");\n    expect(translateWord(\"proLOGS\")).toBe(\"proLOGUES\");\n  });\n});\n","\"use strict\";\nimport {\n  AmericanSpellings,\n  BritishSpellings\n} from \"../data\";\nimport { translateCase } from \"./translateCase\";\nfunction map(word, options) {\n  if (options == null ? void 0 : options.american) {\n    return BritishSpellings[word];\n  } else {\n    return AmericanSpellings[word];\n  }\n}\nexport function translateWord(word, options) {\n  let key = word.toLowerCase();\n  let translated = map(key, options);\n  if (key === \"\") return word;\n  if (translated != null && typeof translated === \"string\") {\n    return translateCase(word, translated);\n  }\n  if (key.endsWith(\"-\")) {\n    key = key.substring(0, key.length - 1);\n    translated = map(key, options);\n    if (translated != null) {\n      return translateCase(word, translated) + \"-\";\n    }\n  }\n  return word;\n}\n","\"use strict\";\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nexport const copyToClipboard = (content) => __async(void 0, null, function* () {\n  if (window.isSecureContext && navigator.clipboard) {\n    try {\n      yield navigator.clipboard.writeText(content);\n    } catch (error) {\n      console.error(\"Failed to copy!\", error);\n    }\n  } else {\n    console.error(\"Not using HTTPS/localhost or Clipboard API not available.\");\n  }\n});\nexport const copyRichHTML = (HTML) => __async(void 0, null, function* () {\n  const PLAINBLOB = new Blob([HTML], { type: \"text/plain\" });\n  const HTMLBLOB = new Blob([HTML], { type: \"text/html\" });\n  try {\n    yield navigator.clipboard.write([\n      new ClipboardItem({ [\"text/plain\"]: PLAINBLOB, [\"text/html\"]: HTMLBLOB })\n    ]);\n    console.log(\"copied\");\n  } catch (error) {\n    console.error(\"Failed to copy!\", error);\n  }\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nexport const parseCountryData = (data) => {\n  return data.map((country) => __spreadProps(__spreadValues({}, country), {\n    label: country.name.toLowerCase().split(\" \").map((word) => {\n      if (word !== \"and\" && word !== \"of\") {\n        return word.charAt(0) === \"(\" ? word[0] + word[1].toUpperCase() + word.slice(2) : word[0].toUpperCase() + word.slice(1);\n      } else {\n        return word;\n      }\n    }).join(\" \"),\n    states: country.states.map((state) => __spreadProps(__spreadValues({}, state), {\n      label: state.name\n    }))\n  })).sort((a, b) => {\n    return a.name.localeCompare(b.name);\n  });\n};\n","\"use strict\";\nexport const emailIsValid = (email) => {\n  const simpleEmailRex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n  return simpleEmailRex.test(String(email).toLowerCase());\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nimport { serialize } from \"object-to-formdata\";\nexport const handleAPIRequest = (_0) => __async(void 0, [_0], function* ({\n  url,\n  method,\n  body,\n  onSuccess,\n  onFailure,\n  onFinally,\n  setLoaderState,\n  setSnackbarState,\n  successMessage,\n  failureMessage,\n  isFormData = false\n}) {\n  setLoaderState && setLoaderState(true);\n  try {\n    const response = yield fetch(url, __spreadValues(__spreadValues({\n      method\n    }, !isFormData && {\n      headers: {\n        \"Content-Type\": \"application/json\"\n      }\n    }), body && (isFormData ? { body: serialize(body) } : { body: JSON.stringify(body) })));\n    const data = yield response.json();\n    if (response.ok) {\n      onSuccess && onSuccess(data);\n      if (setSnackbarState && (successMessage !== void 0 ? successMessage.show : true)) {\n        setSnackbarState({\n          message: (successMessage == null ? void 0 : successMessage.message) || data.message || \"Success\",\n          state: \"success\"\n        });\n      }\n    } else {\n      throw data;\n    }\n  } catch (error) {\n    if (setSnackbarState && (failureMessage !== void 0 ? failureMessage.show : true)) {\n      setSnackbarState({\n        message: (failureMessage == null ? void 0 : failureMessage.message) || error.message || error.errors || \"Something went wrong, please try again\",\n        state: \"error\"\n      });\n    }\n    onFailure && onFailure(error);\n  } finally {\n    setLoaderState && setLoaderState(false);\n    onFinally && onFinally();\n  }\n});\n","\"use strict\";\nexport const handleRichCopy = (ref, setCopied) => {\n  var _a, _b, _c;\n  if (!ref) return;\n  setCopied(true);\n  setTimeout(() => setCopied(false), 3e3);\n  (_a = window == null ? void 0 : window.getSelection()) == null ? void 0 : _a.removeAllRanges();\n  const range = document.createRange();\n  range.selectNode(ref);\n  (_b = window == null ? void 0 : window.getSelection()) == null ? void 0 : _b.addRange(range);\n  document.execCommand(\"copy\");\n  (_c = window == null ? void 0 : window.getSelection()) == null ? void 0 : _c.removeAllRanges();\n};\n","\"use strict\";\nvar __pow = Math.pow;\nexport function humanFileSize(bytes, si = true, dp = 1) {\n  const thresh = si ? 1e3 : 1024;\n  if (Math.abs(bytes) < thresh) {\n    return bytes + \" B\";\n  }\n  const units = si ? [\"kB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"] : [\"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\", \"EiB\", \"ZiB\", \"YiB\"];\n  let u = -1;\n  const r = __pow(10, dp);\n  do {\n    bytes /= thresh;\n    ++u;\n  } while (Math.round(Math.abs(bytes) * r) / r >= thresh && u < units.length - 1);\n  return bytes.toFixed(dp) + \" \" + units[u];\n}\n","\"use strict\";\nexport const immutableRemove = (array, index) => {\n  const immutableCopy = [...array];\n  immutableCopy.splice(index, 1);\n  return immutableCopy;\n};\n","\"use strict\";\nconst DAY_TO_SECOND = 60 * 60 * 24;\nconst HOUR_TO_SECOND = 60 * 60;\nconst secondsToTimeString = (seconds, unit, singular) => {\n  const amount = seconds / unit;\n  return `${amount} ${singular}${amount > 1 ? \"s\" : \"\"}`;\n};\nexport const secondsToString = (seconds) => {\n  if (seconds % DAY_TO_SECOND === 0) {\n    return secondsToTimeString(seconds, DAY_TO_SECOND, \"day\");\n  }\n  if (seconds % HOUR_TO_SECOND === 0) {\n    return secondsToTimeString(seconds, HOUR_TO_SECOND, \"hour\");\n  }\n  return \"None\";\n};\n","\"use strict\";\nexport const stringToSeconds = (delay) => {\n  const [number, unit] = delay.split(\" \");\n  if (unit === \"hour\" || unit === \"hours\") {\n    return Number(number) * 60 * 60;\n  } else if (unit === \"day\" || unit === \"days\") {\n    return Number(number) * 60 * 60 * 24;\n  } else {\n    return 0;\n  }\n};\n","\"use strict\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nexport const classes = {\n  dragArea: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    rowGap: \"18px\",\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    fontSize: \"18px\",\n    fontWeight: \"bold\",\n    color: \"#939393\",\n    backgroundColor: \"#F3F3F3\",\n    outline: \"3px solid #FFFFFF\",\n    height: \"340px\",\n    width: \"100%\",\n    borderRadius: \"8px\",\n    marginBottom: \"30px\",\n    transition: \"all 0.3s ease-in-out\"\n  },\n  dragAreaOver: {\n    backgroundColor: \"#ECECEC\",\n    outline: \"3px solid #084D6D\"\n  },\n  selectFilesButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    width: \"120px\",\n    textTransform: \"none\",\n    color: \"#FFFFFF\",\n    backgroundColor: \"#5BC4BF\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    padding: \"5px 0px\",\n    \"&:hover\": {\n      backgroundColor: \"#4da8a4\",\n      boxShadow: \"none\"\n    }\n  },\n  selectFilesGoogleButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    width: \"220px\",\n    textTransform: \"none\",\n    color: \"#5BC4C0\",\n    backgroundColor: \"#5BC4C01F\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    padding: \"5px 0px\",\n    \"&:hover\": {\n      backgroundColor: \"#5BC4BF35\",\n      boxShadow: \"none\"\n    }\n  },\n  buttonGroup: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-evenly\",\n    width: \"500px\"\n  },\n  dragAreaSingle: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    justifyContent: \"space-around\",\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    fontSize: \"12px\",\n    fontWeight: \"600\",\n    color: \"#939393\",\n    backgroundColor: \"#F3F3F3\",\n    outline: \"2px solid #FFFFFF\",\n    height: \"90px\",\n    width: \"320px\",\n    borderRadius: \"8px\",\n    padding: \"8px\",\n    transition: \"all 0.3s ease-in-out\"\n  },\n  dragAreaOverSingle: {\n    backgroundColor: \"#ECECEC\",\n    outline: \"2px solid #084D6D\"\n  },\n  dragAreaWithGoogleDrive: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    rowGap: \"12px\",\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    fontSize: \"12px\",\n    fontWeight: \"bold\",\n    color: \"#939393\",\n    backgroundColor: \"#F3F3F3\",\n    outline: \"3px solid #FFFFFF\",\n    height: \"150px\",\n    width: \"100%\",\n    borderRadius: \"8px\",\n    transition: \"all 0.3s ease-in-out\"\n  },\n  selectFilesButtonSingle: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"12px\",\n    fontWeight: \"600\",\n    width: \"90px\",\n    textTransform: \"none\",\n    color: \"#FFFFFF\",\n    backgroundColor: \"#5BC4BF\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    padding: \"5px 0px\",\n    \"&:hover\": {\n      backgroundColor: \"#4da8a4\",\n      boxShadow: \"none\"\n    }\n  },\n  fileIconContainer: {\n    display: \"flex\",\n    alignItems: \"center\",\n    width: \"90%\"\n  },\n  fileIcon: {\n    width: \"50px\",\n    height: \"50px\",\n    borderRadius: \"3px\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    marginRight: \"20px\",\n    backgroundColor: \"#084D6D10\",\n    \"& svg\": {\n      color: theme.palette.primary.main\n    }\n  },\n  fileName: {\n    color: theme.palette.primary.main,\n    fontSize: \"15px\",\n    fontWeight: \"bold\",\n    overflow: \"hidden\",\n    whiteSpace: \"nowrap\",\n    textOverflow: \"ellipsis\",\n    maxWidth: \"196px\"\n  },\n  fileSize: {\n    color: \"#999999\"\n  },\n  formDateWrapper: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    position: \"relative\"\n  },\n  formDatePickerStyles: {\n    width: \"284px\",\n    height: \"32px\",\n    borderRadius: \"6px\",\n    margin: \"3px\",\n    \"& button\": {\n      transform: \"translate(-4px, -1.5px)\",\n      outline: \"none\"\n    }\n  },\n  inputLabel: {\n    color: \"#666666 !important\",\n    fontSize: \"16px\",\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    overflowWrap: \"anywhere\",\n    marginBottom: \"8px\",\n    \"& span\": {\n      marginLeft: \"2px\"\n    }\n  },\n  questionLabel: {\n    color: \"#000 !important\",\n    fontSize: \"14px\",\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    overflowWrap: \"anywhere\"\n  },\n  questionInputLabel: {\n    color: \"#838383 !important\",\n    fontSize: \"13px\",\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    \"& span\": {\n      color: theme.palette.error.main,\n      marginLeft: \"2px\"\n    }\n  },\n  questionDateWrapper: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    position: \"relative\",\n    \"& div\": {\n      paddingBottom: \"8px\"\n    }\n  },\n  questionsRankInput: {\n    \"& div\": {\n      marginLeft: \"0\"\n    }\n  },\n  lookUpButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    textTransform: \"none\",\n    color: \"rgb(91,196,191)\",\n    background: \"rgb(91,196,191,0.12)\",\n    height: \"41px\",\n    marginLeft: \"16px\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    padding: \"8px 14px\",\n    \"&:hover\": {\n      backgroundColor: \"#5BC4BF\",\n      color: \"#FFFFFF\",\n      boxShadow: \"none\"\n    }\n  }\n};\nexport const useStyles = makeStyles({\n  textEditor: {\n    borderRadius: 6,\n    border: \"1px solid #DDDDDD\",\n    overflow: \"hidden\"\n  },\n  textEditorToolbar: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    flexDirection: \"row\",\n    background: \"#DDDDDD\",\n    padding: \"2px\",\n    \"& .rdw-inline-wrapper\": {\n      display: \"flex\",\n      flexDirection: \"row\"\n    },\n    \"& .rdw-list-wrapper\": {\n      display: \"flex\",\n      flexDirection: \"row\"\n    },\n    \"& .rdw-text-align-wrapper\": {\n      display: \"flex\",\n      flexDirection: \"row\"\n    },\n    \"& .rdw-link-modal-btn, .rdw-image-modal-btn\": {\n      border: \"1px solid #CCCCCC\",\n      borderRadius: \"6px\",\n      background: \"none\",\n      outline: \"none\",\n      padding: \"3px 7px\"\n    },\n    \"& .rdw-link-wrapper\": {\n      display: \"flex\",\n      flexDirection: \"row\",\n      position: \"relative\",\n      \"& .rdw-link-modal\": {\n        display: \"grid\",\n        position: \"absolute\",\n        padding: \"10px 15px\",\n        marginTop: \"1.75rem\",\n        background: \"#DDDDDD\",\n        borderRadius: \"6px\",\n        boxShadow: \"2px 2px 5px #DDDDDD\",\n        width: \"220px\",\n        \"& label\": {\n          padding: \"10px 0\"\n        },\n        \"& button\": {\n          marginRight: \"1rem\"\n        },\n        \"& #openLinkInNewWindow\": {\n          marginRight: \"0.5rem\"\n        }\n      }\n    },\n    \"& .rdw-image-wrapper\": {\n      display: \"flex\",\n      flexDirection: \"row\",\n      position: \"relative\",\n      \"& .rdw-image-modal\": {\n        background: \"#DDDDDD\",\n        padding: \"10px 15px\",\n        borderRadius: \"6px\",\n        boxShadow: \"2px 2px 5px #DDDDDD\",\n        display: \"grid\",\n        position: \"absolute\",\n        marginTop: \"1.75rem\",\n        width: \"220px\",\n        \"& label\": {\n          padding: \"10px 0\"\n        },\n        \"& button\": {\n          marginRight: \"1rem\"\n        },\n        \"& .rdw-image-modal-url-input\": {\n          width: \"calc(100% - 20px)\"\n        },\n        \"& .rdw-image-modal-size\": {\n          marginTop: 10,\n          marginBottom: 10\n        },\n        \"& .rdw-image-modal-size-input\": {\n          width: 60\n        }\n      }\n    },\n    \"& .rdw-colorpicker-modal-header\": {\n      display: \"none\"\n    },\n    \"& .rdw-colorpicker-wrapper\": {\n      position: \"relative\"\n    },\n    \"& .rdw-colorpicker-modal-options\": {\n      display: \"flex\",\n      flexWrap: \"wrap\"\n    },\n    \"& .rdw-colorpicker-modal\": {\n      position: \"absolute\",\n      background: \"#DDDDDD\",\n      padding: \"5px\",\n      borderRadius: \"0px 0px 6px 6px\",\n      maxHeight: \"206px\",\n      width: \"138px\",\n      overflowY: \"auto\",\n      boxShadow: \"2px 2px 5px #DDDDDD\"\n    },\n    \"& .rdw-colorpicker-option\": {\n      \"& span\": {\n        width: \"100%\",\n        height: \"100%\",\n        borderRadius: \"6px\"\n      }\n    },\n    \"& .rdw-option-wrapper\": {\n      display: \"flex\",\n      alignItems: \"center\",\n      justifyContent: \"center\",\n      width: \"28px\",\n      height: \"28px\",\n      margin: \"2px\",\n      borderRadius: \"4px\",\n      backgroundColor: \"transparent\",\n      cursor: \"pointer\",\n      \"&:hover\": {\n        backgroundColor: \"#CCCCCC\"\n      }\n    },\n    \"& .rdw-option-active \": {\n      backgroundColor: \"darkgrey\"\n    },\n    \"& .rdw-history-wrapper\": {\n      display: \"flex\"\n    },\n    \"& .rdw-block-wrapper, .rdw-fontsize-wrapper, .rdw-fontfamily-wrapper\": {\n      padding: \"4px\",\n      margin: \"0px 2px\",\n      cursor: \"pointer\"\n    },\n    \"& .rdw-block-dropdown, .rdw-fontsize-dropdown, .rdw-fontfamily-wrapper\": {\n      position: \"relative\",\n      \"& ul\": {\n        position: \"absolute\",\n        background: \"#DDDDDD\",\n        padding: \"5px 0px\",\n        borderRadius: \"6px\",\n        maxHeight: \"200px\",\n        overflowY: \"auto\",\n        boxShadow: \"2px 2px 5px #DDDDDD\",\n        \"& li\": {\n          padding: \"3px 14px\",\n          cursor: \"pointer\",\n          whiteSpace: \"nowrap\",\n          \"&:hover\": {\n            backgroundColor: \"#CCCCCC\"\n          }\n        }\n      }\n    },\n    \"& .rdw-dropdownoption-active\": {\n      backgroundColor: \"lightgrey\",\n      \"&:hover\": {\n        backgroundColor: \"lightgrey\"\n      }\n    }\n  },\n  textEditorBody: {\n    all: \"revert\",\n    \"& h1, h2, h3, h4, h5, h6\": {\n      all: \"revert\"\n    },\n    minHeight: 250,\n    padding: 10,\n    \"&:hover\": {\n      cursor: \"text\"\n    },\n    \"& ul\": {\n      paddingLeft: 20,\n      listStyle: \"disc\"\n    },\n    \"& ol\": {\n      paddingLeft: 20,\n      listStyle: \"auto\"\n    },\n    \"& .rdw-center-aligned-block *\": {\n      textAlign: \"center !important\"\n    },\n    \"& .rdw-left-aligned-block *\": {\n      textAlign: \"left !important\"\n    },\n    \"& .rdw-right-aligned-block *\": {\n      textAlign: \"right !important\"\n    },\n    \"& .rdw-image-alignment-options-popup\": {\n      display: \"none !important\"\n    }\n  }\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nimport queryString from \"query-string\";\nconst BASE_URL = window.location.origin;\nclass Api {\n  constructor() {\n    this.headers = {\n      \"Content-Type\": \"application/json\"\n    };\n    this.handleResponse = (response) => {\n      if (response.ok) return response.json();\n      return response.json().then((error) => {\n        error.code = response.status;\n        throw error;\n      });\n    };\n    this.handlePaginatedResponse = (response) => __async(this, null, function* () {\n      if (response.ok) {\n        return {\n          data: yield response.json(),\n          totalItems: Number(response.headers.get(\"X-Total-Count\")),\n          totalPages: Number(response.headers.get(\"X-Total-Pages\")),\n          nextPage: Number(response.headers.get(\"X-Next-Page\"))\n        };\n      }\n      return response.json().then((error) => {\n        error.code = response.status;\n        throw error;\n      });\n    });\n    this.getPaginated = (path, params = {}) => fetch(\n      `${BASE_URL}${path}?${queryString.stringify(params, {\n        skipEmptyString: true,\n        skipNull: true,\n        arrayFormat: \"bracket\",\n        encode: false\n      })}`,\n      {\n        headers: this.headers\n      }\n    ).then((r) => this.handlePaginatedResponse(r));\n    this.get = (path, params = {}) => fetch(\n      `${BASE_URL}${path}?${queryString.stringify(params, {\n        arrayFormat: \"bracket\",\n        encode: false\n      })}`,\n      {\n        headers: this.headers\n      }\n    ).then((r) => this.handleResponse(r));\n    this.post = (path, params = {}) => fetch(`${BASE_URL}${path}`, {\n      headers: this.headers,\n      method: \"POST\",\n      body: JSON.stringify(params)\n    }).then((r) => this.handleResponse(r));\n    this.put = (path, params = {}) => fetch(`${BASE_URL}${path}`, {\n      headers: this.headers,\n      method: \"PUT\",\n      body: JSON.stringify(params)\n    }).then((r) => this.handleResponse(r));\n    this.delete = (path, params = {}) => fetch(`${BASE_URL}${path}`, {\n      headers: this.headers,\n      method: \"DELETE\",\n      body: JSON.stringify(params)\n    }).then((r) => this.handleResponse(r));\n    this.getKpiItems = () => this.get(`/api/v4/dashboard`, {});\n    this.getTasks = (params) => this.getPaginated(`/api/v4/tasks`, __spreadProps(__spreadValues({}, params), { limit: 10 }));\n    this.getEvents = (params) => this.getPaginated(\"/api/v4/dashboard/events\", __spreadProps(__spreadValues({}, params), { limit: 10 }));\n    this.completeTask = (id, completed) => this.put(`/api/v4/tasks/${id}`, { task: { completed: completed ? 1 : 0 } });\n    this.getActivityFeed = (params) => __async(this, null, function* () {\n      if (params.page === null) {\n        return this.get(`/api/v4/dashboard/activities_feed`, __spreadValues({}, params));\n      } else {\n        yield new Promise((resolve) => setTimeout(resolve, 2500));\n        return this.get(`/api/v4/dashboard/activities_feed`, __spreadValues({}, params));\n      }\n    });\n    this.getRecentlyViewed = () => this.get(`/api/v4/dashboard/recent_page_views`, {});\n    this.getUserPermissions = () => this.get(`/api/v4/user_permissions`, {});\n    this.getUserEntities = () => this.get(`/api/v4/user_entities`, {});\n  }\n}\nexport default new Api();\n","\"use strict\";\nimport { theme } from \"../../../../ThemeContext/ThemeObject\";\nexport const styles = {\n  section: {\n    flexBasis: \"40%\",\n    flexGrow: 1,\n    height: \"420px\",\n    overflow: \"hidden\",\n    display: \"flex\",\n    flexDirection: \"column\"\n  },\n  sectionTitle: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    justifyContent: \"space-between\"\n  },\n  button: {\n    fontSize: \"12px\",\n    fontWeight: \"bold\",\n    backgroundColor: \"#5BC4BF1F\",\n    color: theme.palette.action.main,\n    borderRadius: \"6px\",\n    textTransform: \"none\",\n    \"&:hover\": {\n      backgroundColor: theme.palette.action.main,\n      color: \"#FFFFFF\"\n    }\n  },\n  tabContainer: {\n    display: \"flex\",\n    gap: \"20px\",\n    borderBottom: \"1px solid #DDDDDD\"\n  },\n  tab: {\n    color: \"#939393\",\n    fontSize: \"18px\",\n    paddingBottom: \"10px\",\n    \"&:hover\": {\n      cursor: \"pointer\"\n    }\n  },\n  tabSelected: {\n    color: theme.palette.primary.main,\n    fontWeight: \"600\"\n  },\n  line: {\n    height: \"2px\",\n    backgroundColor: theme.palette.secondary.main,\n    position: \"absolute\",\n    bottom: 0,\n    borderRadius: \"1px\",\n    transition: \"left 0.25s cubic-bezier(.6,.36,.25,1), width 0.25s cubic-bezier(.6,.36,.25,1)\"\n  },\n  taskContainer: {\n    padding: \"20px 0\",\n    overflowY: \"scroll\",\n    height: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    gap: \"26px\",\n    \"&::-webkit-scrollbar\": {\n      display: \"none\"\n    },\n    \"& .MuiSkeleton-root\": {\n      transformOrigin: \"0px 0px !important\"\n    },\n    \"& .spinner\": {\n      margin: \"auto\"\n    }\n  },\n  emptyStateText: {\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    color: \"#DDDDDD\",\n    fontSize: \"18px\",\n    fontWeight: \"bold\",\n    marginTop: \"8px\"\n  }\n};\n","\"use strict\";\nexport const styles = {\n  section: {\n    flexBasis: \"40%\",\n    flexGrow: 1,\n    maxHeight: \"420px\",\n    overflow: \"hidden\",\n    display: \"flex\",\n    flexDirection: \"column\"\n  },\n  taskContainer: {\n    paddingBottom: \"20px\",\n    overflowY: \"scroll\",\n    height: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    gap: \"26px\",\n    \"&::-webkit-scrollbar\": {\n      display: \"none\"\n    },\n    \"& .MuiSkeleton-root\": {\n      transformOrigin: \"0px 0px !important\"\n    },\n    \"& .spinner\": {\n      margin: \"auto\"\n    }\n  },\n  headerContainer: {\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    paddingRight: \"30px\"\n  },\n  emptyStateText: {\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    color: \"#DDDDDD\",\n    fontSize: \"18px\",\n    fontWeight: \"bold\",\n    marginTop: \"8px\"\n  }\n};\n","\"use strict\";\nimport Dashboard from \"./Dashboard\";\nexport default Dashboard;\n","\"use strict\";\nimport { theme } from \"../../ThemeContext/ThemeObject\";\nconst dashboardStyles = {\n  section: {\n    border: \"1px solid #E3E3E3\",\n    boxSizing: \"border-box\",\n    borderRadius: \"6px\",\n    width: \"100%\"\n  },\n  kpiSection: {\n    flexBasis: \"20%\",\n    flexGrow: 1,\n    userSelect: \"none\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    height: \"180px\",\n    maxHeight: \"180px\",\n    padding: \"30px\"\n  },\n  sectionTitle: {\n    color: \"#333\",\n    fontWeight: \"500\",\n    fontSize: \"22px\",\n    padding: \"30px\"\n  },\n  titleContainer: {\n    display: \"flex\",\n    flexDirection: \"row\"\n  },\n  noticeContainer: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    justifyContent: \"center\",\n    padding: \"9px 16px\",\n    border: `1px solid ${theme.palette.action.main}`,\n    borderRadius: \"8px\",\n    color: \"#666666\",\n    fontSize: \"16px\",\n    margin: \"26px 0px\",\n    rowGap: \"1px\"\n  },\n  infoIcon: {\n    color: theme.palette.action.main,\n    marginTop: \"4px\",\n    fontSize: \"16px\"\n  }\n};\nexport default dashboardStyles;\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport { actionsModalReducedPaddingCommonStyles } from \"../../shared/commonStyles\";\nimport { actionModalFormLine, closeIcon, modalSendButton } from \"../../shared/styleClasses\";\nexport const classes = {\n  tabContent: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    margin: \"20px 0px 40px 0\"\n  },\n  headerContent: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"20px\",\n    fontWeight: \"bold\",\n    color: \"#727272\",\n    marginBottom: \"1rem\",\n    lineHeight: \"2rem\"\n  },\n  bodyContainer: {\n    padding: \"8px 0\"\n  },\n  modalFormLine: {\n    width: \"100%\",\n    display: \"grid\"\n  },\n  hintText: {\n    fontFamily: \"Source Sans Pro\",\n    color: \"#939393\",\n    fontSize: \"12px\",\n    margin: \"6px 0px\"\n  },\n  testGridContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    h2: {\n      fontSize: \"20px\",\n      fontWeight: \"bold\",\n      color: \"#666666\",\n      marginBottom: \"24px\"\n    }\n  },\n  titleAndButtonContainer: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\"\n  },\n  newButton: {\n    fontFamily: \"Source Sans Pro\",\n    textTransform: \"none\",\n    fontSize: \"16px\",\n    fontWeight: \"bold\",\n    borderRadius: \"6px\",\n    padding: \"8px 16px\",\n    color: theme.palette.action.main,\n    backgroundColor: `${theme.palette.action.main}1F`,\n    \"&:hover\": {\n      backgroundColor: `${theme.palette.action.main}2F`\n    }\n  },\n  tableContainer: {\n    maxWidth: \"100%\",\n    overflowX: \"scroll\"\n  },\n  table: {\n    \"& th\": {\n      border: \"none\",\n      backgroundColor: \"#FFFFFF\",\n      whiteSpace: \"nowrap\",\n      fontFamily: \"Source Sans Pro\",\n      padding: \"12px 0px 38px 0px\"\n    },\n    \"& td\": {\n      border: \"none\",\n      fontFamily: \"Source Sans Pro\"\n    },\n    \"& thead th\": {\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"16px\",\n      fontWeight: \"bold\",\n      color: theme.palette.primary.main,\n      textTransform: \"none\"\n    },\n    \"& tbody tr\": {\n      borderTop: \"1px solid #DDDDDD\"\n    },\n    \"& tbody tr td\": {\n      padding: \"25px 0px\"\n    }\n  },\n  tableActions: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    columnGap: \"8px\"\n  },\n  tableDeleteButton: {\n    \"& svg\": {\n      color: theme.palette.error.main\n    }\n  },\n  tableEditButton: {\n    \"& svg\": {\n      color: \"#666666\"\n    }\n  },\n  percentageSlider: {\n    fontFamily: \"Source Sans Pro\",\n    color: theme.palette.action.main,\n    height: \"3.5px\",\n    maxWidth: \"267px\",\n    marginInline: \"13px\",\n    \"& .MuiSlider-rail\": {\n      backgroundColor: \"#E0E0E0\"\n    },\n    \"& .MuiSlider-track\": {\n      backgroundColor: theme.palette.action.main\n    },\n    \"& .MuiSlider-thumb\": {\n      backgroundColor: theme.palette.action.main,\n      width: \"14px\",\n      height: \"14px\",\n      \"&:hover\": {\n        boxShadow: \"0px 0px 0px 7px\" + theme.palette.action.main + \"16\"\n      }\n    },\n    \"& .MuiSlider-thumb.Mui-active\": {\n      boxShadow: \"0px 0px 0px 9px\" + theme.palette.action.main + \"16\"\n    },\n    \"& .MuiSlider-valueLabel\": {\n      fontSize: \"13px\",\n      fontWeight: \"500\",\n      backgroundColor: \"transparent\",\n      color: theme.palette.primary.main,\n      top: \"44px\",\n      \"&::after\": {\n        display: \"none\"\n      }\n    }\n  },\n  actionsModalReducedPadding: __spreadProps(__spreadValues({}, actionsModalReducedPaddingCommonStyles), {\n    maxWidth: \"900px\"\n  }),\n  actionModalHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"28px\",\n    fontWeight: \"bold\",\n    color: theme.palette.primary.main,\n    marginLeft: \"8px\"\n  },\n  modalContent: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    height: \"100%\",\n    overflowY: \"auto\",\n    overflowX: \"hidden\",\n    margin: \"46px 0px\"\n  },\n  actionModalFormLine,\n  sliderLine: {\n    position: \"relative\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    paddingBottom: \"60px\",\n    paddingTop: \"5px\",\n    margin: \"0px 12px 0px 12px\",\n    width: \"100%\"\n  },\n  modalFooter: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    width: \"100%\",\n    justifyContent: \"flex-end\",\n    columnGap: \"20px\"\n  },\n  modalCancelButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    width: \"100px\",\n    textTransform: \"none\",\n    textDecoration: \"underline\",\n    color: theme.palette.error.main,\n    backgroundColor: \"#FFFFFF\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    padding: \"5px 0px\",\n    \"&:hover\": {\n      backgroundColor: \"#FFFFFF\",\n      textDecoration: \"none\",\n      boxShadow: \"none\"\n    }\n  },\n  modalSendButton,\n  closeIcon,\n  inputLabel: {\n    color: \"#838383 !important\",\n    fontSize: \"16px\",\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    paddingLeft: \"4px\",\n    \"& span\": {\n      color: theme.palette.error.main,\n      marginLeft: \"2px\"\n    }\n  },\n  formError: {\n    color: theme.palette.error.main,\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    fontSize: \"13px\",\n    position: \"absolute\",\n    bottom: \"-24px\",\n    left: \"4px\"\n  },\n  noTests: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    width: \"100%\",\n    height: \"380px\",\n    rowGap: \"36px\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"18px\",\n    fontWeight: \"bold\",\n    color: \"#939393\"\n  },\n  modalCreateRequisitionButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"12px\",\n    fontWeight: \"bold\",\n    textTransform: \"none\",\n    color: \"#5BC4BF\",\n    backgroundColor: \"#5BC4BF12\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    marginTop: \"22px\",\n    marginLeft: \"20px\",\n    \"&:hover\": {\n      backgroundColor: \"#4da8a412\",\n      boxShadow: \"none\"\n    }\n  },\n  updateRequisitionButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"13px\",\n    fontWeight: \"bold\",\n    textTransform: \"none\",\n    color: \"#5BC4BF\",\n    backgroundColor: \"#5BC4BF12\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    margin: \"22px 0px\",\n    \"&:hover\": {\n      backgroundColor: \"#4da8a412\",\n      boxShadow: \"none\"\n    }\n  },\n  requisitionWrapper: {\n    marginTop: \"20px\",\n    padding: \"12px 18px\",\n    background: \"#F3F3F3\",\n    borderRadius: \"6px\"\n  },\n  requisitionInput: {\n    \"& span\": {\n      fontSize: \"14px !Important\"\n    }\n  },\n  requisitionTitle: {\n    color: theme.palette.primary.main,\n    fontSize: \"13px\",\n    fontWeight: \"bold\",\n    paddingBottom: \"5px\",\n    width: \"70px\",\n    padding: \"0px\"\n  },\n  formAutocomplete: {\n    \"& .MuiAutocomplete-root\": {\n      \"& .MuiOutlinedInput-root\": {\n        padding: \"0px\"\n      }\n    },\n    \"& .MuiOutlinedInput-root\": {\n      borderRadius: \"6px\",\n      position: \"relative\",\n      backgroundColor: \"#FFFFFF\",\n      color: \"#333333\",\n      border: \"1px solid #DDDDDD\",\n      fontSize: \"16px\",\n      padding: \"0px\",\n      fontFamily: \"Source Sans Pro, sans-serif\",\n      transition: \"all 0.16s ease-in-out\",\n      \"& .MuiAutocomplete-input\": {\n        padding: \"6px 4px 6px 11px\"\n      }\n    },\n    \"& fieldset\": {\n      display: \"none\"\n    },\n    \"& label\": {\n      color: \"#838383 !important\",\n      fontSize: \"21px\",\n      fontFamily: \"Source Sans Pro, sans-serif\",\n      paddingLeft: \"4px\",\n      left: \"-13px\",\n      top: \"-15px\",\n      \"& .MuiFormLabel-asterisk\": {\n        color: theme.palette.error.main\n      }\n    },\n    \"& .MuiAutocomplete-popupIndicator\": {\n      transition: \"all 0.25s ease-in-out\",\n      color: \"#AAAAAA\"\n    }\n  },\n  editInfoText: {\n    color: \"#939393\",\n    fontSize: \"16px\",\n    padding: \"16px 0\"\n  },\n  question: {\n    width: \"100%\",\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    padding: \"12px 24px\",\n    background: \"rgba(122, 142, 241, 0.12)\",\n    borderRadius: \"6px\",\n    color: \"#2D388D\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"16px\"\n  },\n  questionsContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    marginBottom: \"24px\",\n    rowGap: \"28px\",\n    width: \"100%\",\n    position: \"relative\",\n    \"&::-webkit-scrollbar\": {\n      display: \"none\"\n    }\n  },\n  switchContainer: {\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    width: \"200px\"\n  },\n  questionSkeleton: {\n    width: \"100%\",\n    height: \"180px\",\n    borderRadius: \"6px\"\n  }\n};\n","\"use strict\";\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport { actionsModalReducedPaddingCommonStyles } from \"../../shared/commonStyles\";\nimport { actionModalFormLine, closeIcon, modalSendButton } from \"../../shared/styleClasses\";\nexport const classes = {\n  toggleButtonsContainer: {\n    marginTop: \"20px\",\n    marginBottom: \"40px\"\n  },\n  automationContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    marginBottom: \"40px\",\n    h2: {\n      fontSize: \"20px\",\n      fontWeight: \"bold\",\n      color: \"#666666\",\n      marginBottom: \"24px\"\n    }\n  },\n  autoStatusesContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    width: \"100%\",\n    maxWidth: \"1028px\",\n    padding: \"30px 40px\",\n    backgroundColor: \"#F3F3F367\",\n    borderRadius: \"8px\"\n  },\n  autoStatusesSubContainer: {\n    position: \"relative\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    maxWidth: \"880px\",\n    rowGap: \"24px\",\n    marginLeft: \"24px\",\n    paddingBlock: \"38px\",\n    borderBottom: \"1px solid #DDDDDD\",\n    h4: {\n      fontSize: \"22px\",\n      fontWeight: \"bold\",\n      color: \"#666666\"\n    }\n  },\n  switchContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    padding: \"0 6px\",\n    marginBlock: \"auto\",\n    minWidth: \"100px\"\n  },\n  switch: {\n    \"& .MuiSwitch-thumb\": {\n      color: \"#FFFFFF\"\n    },\n    \"& .Mui-disabled\": {\n      color: \"#BBBBBB !important\",\n      \"& .Mui-checked+.MuiSwitch-track\": {\n        backgroundColor: \"#DDDDDD !important\",\n        opacity: \"1 !important\"\n      },\n      \"& .MuiSwitch-thumb\": {\n        color: \"#BBBBBB !important\"\n      },\n      \"& .MuiSwitch-track\": {\n        color: \"#BBBBBB !important\",\n        \"& :hover\": {\n          backgroundColor: \"#BBBBBB !important\"\n        }\n      },\n      \"& :hover\": {\n        backgroundColor: \"#BBBBBB !important\"\n      }\n    },\n    \"& :hover\": {\n      \"& .MuiSwitch-track\": {\n        backgroundColor: \"#000 !important\"\n      }\n    }\n  },\n  switchActive: {\n    \"& .Mui-checked+.MuiSwitch-track\": {\n      backgroundColor: \"rgb(91, 196, 191, 0.17) !important\",\n      opacity: \"1 !important\"\n    },\n    \"& .MuiSwitch-thumb\": {\n      color: \"#5BC4BF\"\n    },\n    \"& .Mui-disabled\": {\n      color: \"#BBBBBB !important\",\n      \"& .Mui-checked+.MuiSwitch-track\": {\n        backgroundColor: \"#DDDDDD !important\",\n        opacity: \"1 !important\"\n      },\n      \"& .MuiSwitch-thumb\": {\n        color: \"#BBBBBB !important\"\n      },\n      \"& .MuiSwitch-track\": {\n        color: \"#BBBBBB !important\",\n        \"& :hover\": {\n          backgroundColor: \"#BBBBBB !important\"\n        }\n      },\n      \"& :hover\": {\n        backgroundColor: \"#BBBBBB !important\"\n      }\n    }\n  },\n  statusFormLine: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    flexWrap: \"wrap\",\n    alignItems: \"center\",\n    columnGap: \"24px\",\n    rowGap: \"10px\"\n  },\n  addNewFieldButton: {\n    fontFamily: \"Source Sans Pro\",\n    textTransform: \"none\",\n    fontSize: \"16px\",\n    fontWeight: \"bold\",\n    borderRadius: \"8px\",\n    backgroundColor: \"#EEEEEE\",\n    padding: \"8px 12px\",\n    color: \"#999999\",\n    \"&:hover\": {\n      backgroundColor: \"#DDDDDD\",\n      color: \"#666666\"\n    }\n  },\n  noStatusesAddButton: {\n    fontFamily: \"Source Sans Pro\",\n    textTransform: \"none\",\n    fontSize: \"16px\",\n    fontWeight: \"bold\",\n    borderRadius: \"8px\",\n    backgroundColor: \"#EEEEEE\",\n    padding: \"8px 14px\",\n    color: \"#999999\",\n    \"&:hover\": {\n      backgroundColor: \"#DDDDDD\",\n      color: \"#666666\"\n    }\n  },\n  removeButton: {\n    transform: \"translateX(-22px)\",\n    marginTop: \"24px\",\n    \"&:hover\": {\n      \"& svg\": {\n        color: theme.palette.error.main\n      }\n    },\n    \"& svg\": {\n      color: \"#666666\"\n    }\n  },\n  deleteButton: {\n    position: \"absolute\",\n    top: \"20px\",\n    right: \"0px\",\n    \"& svg\": {\n      color: theme.palette.error.main\n    }\n  },\n  clearButton: {\n    transform: \"translate(-22px, 12px)\",\n    \"& svg\": {\n      color: theme.palette.error.main\n    }\n  },\n  addNewStatusButton: {\n    position: \"absolute\",\n    bottom: \"-19.5px\",\n    left: \"47%\",\n    color: \"#DDDDDD\",\n    \"& svg\": {\n      color: \"#CCCCCC\",\n      zIndex: 1\n    },\n    \"&:before\": {\n      content: '\"\"',\n      position: \"absolute\",\n      top: \"25%\",\n      left: \"25%\",\n      width: \"20px\",\n      height: \"20px\",\n      borderRadius: \"50%\",\n      backgroundColor: \"white\",\n      zIndex: \"0\"\n    }\n  },\n  ratingSlider: {\n    fontFamily: \"Source Sans Pro\",\n    color: theme.palette.action.main,\n    height: \"3.5px\",\n    width: \"80%\",\n    \"& .MuiSlider-rail\": {\n      backgroundColor: \"#E0E0E0\"\n    },\n    \"& .MuiSlider-track\": {\n      backgroundColor: theme.palette.action.main\n    },\n    \"& .MuiSlider-thumb\": {\n      backgroundColor: theme.palette.action.main,\n      width: \"14px\",\n      height: \"14px\",\n      \"&:hover\": {\n        boxShadow: \"0px 0px 0px 7px\" + theme.palette.action.main + \"16\"\n      }\n    },\n    \"& .MuiSlider-thumb.Mui-active\": {\n      boxShadow: \"0px 0px 0px 9px\" + theme.palette.action.main + \"16\"\n    },\n    \"& .MuiSlider-valueLabel\": {\n      fontSize: \"11px\",\n      fontWeight: \"500\",\n      backgroundColor: \"transparent\",\n      color: theme.palette.primary.main,\n      top: \"40px\",\n      \"&::after\": {\n        display: \"none\"\n      }\n    }\n  },\n  titleAndButtonContainer: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\"\n  },\n  newButton: {\n    fontFamily: \"Source Sans Pro\",\n    textTransform: \"none\",\n    fontSize: \"16px\",\n    fontWeight: \"bold\",\n    borderRadius: \"6px\",\n    padding: \"8px 16px\",\n    color: theme.palette.action.main,\n    backgroundColor: `${theme.palette.action.main}1F`,\n    \"&:hover\": {\n      backgroundColor: `${theme.palette.action.main}2F`\n    }\n  },\n  tableContainer: {\n    maxWidth: \"100%\",\n    overflow: \"auto\"\n  },\n  table: {\n    \"& th\": {\n      border: \"none\",\n      backgroundColor: \"#FFFFFF\",\n      whiteSpace: \"nowrap\",\n      fontFamily: \"Source Sans Pro\",\n      padding: \"12px 0px 38px 0px\"\n    },\n    \"& td\": {\n      border: \"none\",\n      fontFamily: \"Source Sans Pro\"\n    },\n    \"& thead th\": {\n      minWidth: \"170px\",\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"16px\",\n      fontWeight: \"bold\",\n      color: theme.palette.primary.main,\n      textTransform: \"none\",\n      paddingRight: \"8px\"\n    },\n    \"& tbody tr\": {\n      borderTop: \"1px solid #DDDDDD\"\n    },\n    \"& tbody tr td\": {\n      padding: \"25px 8px 25px 0px\"\n    }\n  },\n  tableActions: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    justifyContent: \"right\",\n    columnGap: \"8px\"\n  },\n  tableActionsReply: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    justifyContent: \"flex-end\",\n    marginRight: \"25px\",\n    columnGap: \"8px\"\n  },\n  tableDeleteButton: {\n    \"& svg\": {\n      color: theme.palette.error.main\n    }\n  },\n  tableEditButton: {\n    \"& svg\": {\n      color: \"#666666\"\n    }\n  },\n  actionsModalReducedPadding: actionsModalReducedPaddingCommonStyles,\n  actionModalHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"28px\",\n    fontWeight: \"bold\",\n    color: theme.palette.primary.main,\n    marginLeft: \"8px\"\n  },\n  modalContent: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    height: \"100%\",\n    overflowY: \"auto\",\n    overflowX: \"hidden\",\n    margin: \"46px 0px\"\n  },\n  actionModalFormLine,\n  modalFooter: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    width: \"100%\",\n    justifyContent: \"flex-end\",\n    columnGap: \"20px\"\n  },\n  modalCancelButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    width: \"100px\",\n    textTransform: \"none\",\n    textDecoration: \"underline\",\n    color: theme.palette.error.main,\n    backgroundColor: \"#FFFFFF\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    padding: \"5px 0px\",\n    \"&:hover\": {\n      backgroundColor: \"#FFFFFF\",\n      textDecoration: \"none\",\n      boxShadow: \"none\"\n    }\n  },\n  modalSendButton,\n  closeIcon,\n  emailPreview: {\n    padding: \"30px 60px 50px 60px\"\n  },\n  previewSkeleton: {\n    borderRadius: \"8px\",\n    margin: \"16px\"\n  },\n  formError: {\n    color: theme.palette.error.main,\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    fontSize: \"13px\",\n    position: \"absolute\",\n    bottom: \"-24px\",\n    left: \"4px\"\n  },\n  noAutoForwarders: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    width: \"100%\",\n    height: \"300px\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"16px\",\n    fontWeight: \"bold\",\n    color: \"#939393\"\n  },\n  noQuestionsContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    width: \"100%\"\n  },\n  noQuestionsText: {\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    color: \"#DDDDDD\",\n    fontSize: \"18px\",\n    fontWeight: \"bold\",\n    margin: \"32px 0px\",\n    textAlign: \"center\"\n  },\n  noticeContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    padding: \"9px 16px\",\n    border: `1px solid ${theme.palette.action.main}`,\n    borderRadius: \"8px\",\n    color: \"#939393\",\n    fontSize: \"16px\",\n    margin: \"16px 0\",\n    rowGap: \"1px\"\n  },\n  noticeIcon: {\n    color: theme.palette.action.main,\n    margin: \"0 9px 3px 0\",\n    fontSize: \"16px\"\n  },\n  htmlContent: {\n    background: \"#E0E0E01F\",\n    borderRadius: \"0.5rem\",\n    color: \"#939393\",\n    margin: \"0px 16px 20px 16px\",\n    userSelect: \"none\",\n    \"& p\": {\n      marginTop: \"0\"\n    }\n  },\n  previewHeader: {\n    display: \"flex\",\n    borderRadius: \"6px 0 0 0\",\n    color: \"#666666\",\n    background: \"#DDDDDD\",\n    padding: \"5px 10px\",\n    width: \"120px\",\n    textAlign: \"center\",\n    fontWeight: \"700\",\n    justifyContent: \"space-evenly\"\n  },\n  placeholderText: {\n    fontFamily: \"Source Sans Pro\",\n    color: \"#838383\",\n    fontSize: \"11px\",\n    margin: \"6px 0px 20px 4px\"\n  }\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport { actionsModalReducedPaddingCommonStyles } from \"../../shared/commonStyles\";\nimport {\n  actionButton,\n  actionModalFormLine,\n  closeIcon,\n  modalCreateButton\n} from \"../../shared/styleClasses\";\nexport const classes = {\n  questionsPageContainer: {\n    paddingTop: \"6px\",\n    overflowY: \"auto\",\n    width: \"100%\"\n  },\n  pageHeader: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    width: \"100%\",\n    padding: \"0px 16px\",\n    \"& h2\": {\n      fontWeight: \"bold\",\n      fontSize: \"20px\",\n      lineHeight: \"1.2em\",\n      color: \"#666666\",\n      marginTop: \"0\",\n      \"@media (max-width: 1450px)\": {\n        fontSize: \"20px\"\n      },\n      \"@media (max-width: 1260px)\": {\n        fontSize: \"14px\"\n      }\n    }\n  },\n  modalWrapper: {\n    height: \"100%\",\n    position: \"relative\",\n    display: \"contents\"\n  },\n  questionsContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    rowGap: \"40px\",\n    padding: \"24px 16px\",\n    minWidth: \"700px\"\n  },\n  noQuestionsContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    width: \"100%\"\n  },\n  noQuestionsText: {\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    color: \"#DDDDDD\",\n    fontSize: \"18px\",\n    fontWeight: \"bold\",\n    margin: \"32px 0px\",\n    textAlign: \"center\"\n  },\n  actionsContianer: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    gap: \"22px\",\n    margin: \"30px 0 30px 0\",\n    padding: \"0px 16px\"\n  },\n  actionButton,\n  actionsModalReducedPadding: __spreadProps(__spreadValues({}, actionsModalReducedPaddingCommonStyles), {\n    paddingBottom: 0\n  }),\n  closeIcon,\n  actionModalHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"28px\",\n    fontWeight: \"bold\",\n    color: theme.palette.primary.main,\n    marginLeft: \"15px\"\n  },\n  modalContent: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    height: \"100%\",\n    overflowY: \"auto\",\n    overflowX: \"hidden\",\n    margin: \"24px 0 0 0\"\n  },\n  modalFormLine: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    flexDirection: \"row\",\n    columnGap: \"50px\",\n    rowGap: \"26px\",\n    alignItems: \"center\",\n    marginBottom: \"20px\",\n    width: \"100%\"\n  },\n  actionModalFormLine,\n  modalFooter: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    width: \"100%\",\n    justifyContent: \"flex-end\",\n    columnGap: \"20px\",\n    marginTop: \"auto\",\n    marginBottom: \"40px\"\n  },\n  modalFooterSmallerSection: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    width: \"100%\",\n    justifyContent: \"flex-end\",\n    marginBottom: \"40px\",\n    columnGap: \"20px\"\n  },\n  modalCancelButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    width: \"100px\",\n    textTransform: \"none\",\n    textDecoration: \"underline\",\n    color: theme.palette.error.main,\n    backgroundColor: \"#FFFFFF\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    padding: \"5px 0px\",\n    \"&:hover\": {\n      backgroundColor: \"#FFFFFF\",\n      textDecoration: \"none\",\n      boxShadow: \"none\"\n    }\n  },\n  modalCreateButton,\n  formError: {\n    color: theme.palette.error.main,\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    fontSize: \"13px\",\n    position: \"absolute\",\n    top: \"-24px\",\n    left: \"4px\"\n  },\n  inlineError: {\n    color: theme.palette.error.main,\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    fontSize: \"13px\",\n    left: \"4px\"\n  },\n  checkboxContainer: {\n    display: \"flex\",\n    marginLeft: \"19px\"\n  },\n  switchLabels: {\n    justifyContent: \"start\",\n    width: \"120px\",\n    \"& .MuiFormControlLabel-label\": {\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"14px\",\n      color: \"#000000\"\n    },\n    \"& .MuiSwitch-track\": {\n      backgroundColor: \"rgba(0,0,0,0.38)\",\n      opacity: \"1\"\n    },\n    \"& .Mui-checked+.MuiSwitch-track\": {\n      backgroundColor: \"rgb(91, 196, 191, 0.17) !important\",\n      opacity: \"1 !important\"\n    },\n    \"& .Mui-checked\": {\n      color: \"rgb(91, 196, 191, 0.5) !important\"\n    }\n  },\n  switch: {\n    \"& .MuiSwitch-thumb\": {\n      color: \"#FFFFFF\"\n    },\n    \"& .Mui-disabled\": {\n      color: \"#BBBBBB !important\",\n      \"& .Mui-checked+.MuiSwitch-track\": {\n        backgroundColor: \"#DDDDDD !important\",\n        opacity: \"1 !important\"\n      },\n      \"& .MuiSwitch-thumb\": {\n        color: \"#BBBBBB !important\"\n      },\n      \"& .MuiSwitch-track\": {\n        color: \"#BBBBBB !important\",\n        \"& :hover\": {\n          backgroundColor: \"#BBBBBB !important\"\n        }\n      },\n      \"& :hover\": {\n        backgroundColor: \"#BBBBBB !important\"\n      }\n    },\n    \"& :hover\": {\n      \"& .MuiSwitch-track\": {\n        backgroundColor: \"#000 !important\"\n      }\n    }\n  },\n  switchActive: {\n    \"& .Mui-checked+.MuiSwitch-track\": {\n      backgroundColor: \"rgb(91, 196, 191, 0.17) !important\",\n      opacity: \"1 !important\"\n    },\n    \"& .MuiSwitch-thumb\": {\n      color: \"#5BC4BF\"\n    },\n    \"& .Mui-disabled\": {\n      color: \"#BBBBBB !important\",\n      \"& .Mui-checked+.MuiSwitch-track\": {\n        backgroundColor: \"#DDDDDD !important\",\n        opacity: \"1 !important\"\n      },\n      \"& .MuiSwitch-thumb\": {\n        color: \"#BBBBBB !important\"\n      },\n      \"& .MuiSwitch-track\": {\n        color: \"#BBBBBB !important\",\n        \"& :hover\": {\n          backgroundColor: \"#BBBBBB !important\"\n        }\n      },\n      \"& :hover\": {\n        backgroundColor: \"#BBBBBB !important\"\n      }\n    }\n  },\n  labelActive: {\n    \"& .MuiFormControlLabel-label\": {\n      color: \"#CCCCCC\",\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"14px\"\n    }\n  },\n  addChoiceContainer: {\n    padding: \"20px 15px\"\n  },\n  addChoiceHead: {\n    display: \"flex\",\n    alignItems: \"baseline\"\n  },\n  addChoiceLabel: {\n    color: \"#838383\",\n    paddingLeft: \"4px\"\n  },\n  modalAddChoiceButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"12px\",\n    fontWeight: \"bold\",\n    textTransform: \"none\",\n    color: \"#5BC4BF\",\n    backgroundColor: \"#5BC4BF12\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    marginTop: \"10px\",\n    marginLeft: \"20px\",\n    \"&:hover\": {\n      backgroundColor: \"#4da8a412\",\n      boxShadow: \"none\"\n    }\n  },\n  choice: {\n    marginTop: \"15px\"\n  },\n  availabilityContainer: {\n    padding: \"20px 15px\"\n  },\n  config: {\n    marginTop: \"15px\",\n    display: \"flex\",\n    flexDirection: \"column\"\n  },\n  questionsWrapper: {\n    display: \"flex\",\n    padding: \"12px 18px 0 18px\",\n    background: \"#F3F3F3\",\n    borderRadius: \"6px\"\n  },\n  questionInput: {\n    \"& span\": {\n      fontSize: \"14px !Important\"\n    }\n  },\n  titleContainer: {\n    display: \"flex\",\n    columnGap: \"18px\",\n    paddingRight: \"101px\",\n    textAlign: \"center\"\n  },\n  questionsTitle: {\n    color: theme.palette.primary.main,\n    fontSize: \"13px\",\n    fontWeight: \"bold\",\n    paddingBottom: \"5px\",\n    width: \"70px\",\n    padding: \"0px\"\n  },\n  iconGreen: {\n    color: theme.palette.success.main,\n    fontSize: \"1.25rem\",\n    margin: \"auto\",\n    display: \"flex\"\n  },\n  iconRed: {\n    color: theme.palette.error.main,\n    fontSize: \"1.25rem\",\n    margin: \"auto\",\n    display: \"flex\"\n  },\n  weightValue: {\n    fontSize: \"13px\",\n    textAlign: \"center\"\n  },\n  noticeContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    padding: \"9px 16px\",\n    border: `1px solid ${theme.palette.action.main}`,\n    borderRadius: \"8px\",\n    color: \"#939393\",\n    fontSize: \"16px\",\n    margin: \"16px\",\n    rowGap: \"1px\"\n  },\n  noticeHeader: {\n    fontWeight: \"bold\"\n  },\n  noticeIcon: {\n    color: theme.palette.action.main,\n    margin: \"0 9px 3px 0\",\n    fontSize: \"16px\"\n  },\n  noticeBody: {\n    marginLeft: \"26px\"\n  }\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport { actionsModalReducedPaddingCommonStyles } from \"../../shared/commonStyles\";\nimport {\n  actionButton,\n  actionModalFormLine,\n  closeIcon,\n  modalCreateButton\n} from \"../../shared/styleClasses\";\nexport const classes = {\n  questionsPageContainer: {\n    paddingTop: \"6px\",\n    overflowY: \"visible\",\n    width: \"100%\"\n  },\n  pageHeader: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    width: \"100%\",\n    padding: \"0px 16px\",\n    \"& h2\": {\n      fontWeight: \"bold\",\n      fontSize: \"20px\",\n      lineHeight: \"1.2em\",\n      color: \"#666666\",\n      marginTop: \"0\",\n      \"@media (max-width: 1450px)\": {\n        fontSize: \"20px\"\n      },\n      \"@media (max-width: 1260px)\": {\n        fontSize: \"14px\"\n      }\n    }\n  },\n  modalWrapper: {\n    height: \"100%\",\n    position: \"relative\",\n    display: \"contents\"\n  },\n  questionsContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    marginBottom: \"24px\",\n    rowGap: \"28px\",\n    width: \"100%\",\n    position: \"relative\",\n    \"&::-webkit-scrollbar\": {\n      display: \"none\"\n    }\n  },\n  questionsHeader: {\n    display: \"flex\",\n    paddingRight: \"18px\",\n    textAlign: \"center\",\n    position: \"sticky\",\n    top: \"0px\",\n    height: \"auto\",\n    zIndex: 2,\n    backgroundColor: \"#fff\",\n    padding: \"20px\"\n  },\n  noQuestionsContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    width: \"100%\"\n  },\n  noQuestionsText: {\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    color: \"#DDDDDD\",\n    fontSize: \"18px\",\n    fontWeight: \"bold\",\n    margin: \"32px 0px\",\n    textAlign: \"center\"\n  },\n  actionsContianer: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    gap: \"22px\",\n    margin: \"30px 0 48px 0\",\n    padding: \"0px 16px\"\n  },\n  actionButton,\n  actionsModalReducedPadding: __spreadProps(__spreadValues({}, actionsModalReducedPaddingCommonStyles), {\n    paddingBottom: 0\n  }),\n  closeIcon,\n  actionModalHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"28px\",\n    fontWeight: \"bold\",\n    color: theme.palette.primary.main,\n    marginLeft: \"15px\"\n  },\n  modalContent: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    height: \"100%\",\n    overflowY: \"auto\",\n    overflowX: \"hidden\",\n    margin: \"24px 0 0 0\"\n  },\n  modalFormLine: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    flexDirection: \"row\",\n    columnGap: \"50px\",\n    rowGap: \"26px\",\n    alignItems: \"center\",\n    marginBottom: \"20px\",\n    width: \"100%\"\n  },\n  actionModalFormLine,\n  modalFooter: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    width: \"100%\",\n    justifyContent: \"flex-end\",\n    columnGap: \"20px\",\n    marginTop: \"auto\",\n    marginBottom: \"40px\"\n  },\n  modalFooterSmallerSection: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    width: \"100%\",\n    justifyContent: \"flex-end\",\n    columnGap: \"20px\",\n    marginBottom: \"40px\"\n  },\n  modalCancelButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    width: \"100px\",\n    textTransform: \"none\",\n    textDecoration: \"underline\",\n    color: theme.palette.error.main,\n    backgroundColor: \"#FFFFFF\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    padding: \"5px 0px\",\n    \"&:hover\": {\n      backgroundColor: \"#FFFFFF\",\n      textDecoration: \"none\",\n      boxShadow: \"none\"\n    }\n  },\n  modalCreateButton,\n  formError: {\n    color: theme.palette.error.main,\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    fontSize: \"13px\",\n    position: \"absolute\",\n    top: \"-24px\",\n    left: \"4px\"\n  },\n  inlineError: {\n    color: theme.palette.error.main,\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    fontSize: \"13px\",\n    left: \"4px\"\n  },\n  checkboxContainer: {\n    display: \"flex\",\n    marginLeft: \"19px\",\n    flexWrap: \"wrap\"\n  },\n  switchLabels: {\n    justifyContent: \"start\",\n    width: \"min-content\",\n    \"& .MuiFormControlLabel-label\": {\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"14px\",\n      color: theme.palette.common.black,\n      width: \"max-content\"\n    },\n    \"& .MuiSwitch-track\": {\n      backgroundColor: \"rgba(0,0,0,0.38)\",\n      opacity: \"1\"\n    },\n    \"& .Mui-checked+.MuiSwitch-track\": {\n      backgroundColor: \"rgb(91, 196, 191, 0.17) !important\",\n      opacity: \"1 !important\"\n    },\n    \"& .Mui-checked\": {\n      color: \"rgb(91, 196, 191, 0.5) !important\"\n    }\n  },\n  switch: {\n    \"& .MuiSwitch-thumb\": {\n      color: \"#FFFFFF\"\n    },\n    \"& .Mui-disabled\": {\n      color: \"#BBBBBB !important\",\n      \"& .Mui-checked+.MuiSwitch-track\": {\n        backgroundColor: \"#DDDDDD !important\",\n        opacity: \"1 !important\"\n      },\n      \"& .MuiSwitch-thumb\": {\n        color: \"#BBBBBB !important\"\n      },\n      \"& .MuiSwitch-track\": {\n        color: \"#BBBBBB !important\",\n        \"& :hover\": {\n          backgroundColor: \"#BBBBBB !important\"\n        }\n      },\n      \"& :hover\": {\n        backgroundColor: \"#BBBBBB !important\"\n      }\n    },\n    \"& :hover\": {\n      \"& .MuiSwitch-track\": {\n        backgroundColor: \"#000 !important\"\n      }\n    }\n  },\n  switchActive: {\n    \"& .Mui-checked+.MuiSwitch-track\": {\n      backgroundColor: \"rgb(91, 196, 191, 0.17) !important\",\n      opacity: \"1 !important\"\n    },\n    \"& .MuiSwitch-thumb\": {\n      color: \"#5BC4BF\"\n    },\n    \"& .Mui-disabled\": {\n      color: \"#BBBBBB !important\",\n      \"& .Mui-checked+.MuiSwitch-track\": {\n        backgroundColor: \"#DDDDDD !important\",\n        opacity: \"1 !important\"\n      },\n      \"& .MuiSwitch-thumb\": {\n        color: \"#BBBBBB !important\"\n      },\n      \"& .MuiSwitch-track\": {\n        color: \"#BBBBBB !important\",\n        \"& :hover\": {\n          backgroundColor: \"#BBBBBB !important\"\n        }\n      },\n      \"& :hover\": {\n        backgroundColor: \"#BBBBBB !important\"\n      }\n    }\n  },\n  labelActive: {\n    \"& .MuiFormControlLabel-label\": {\n      color: \"#CCCCCC\",\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"14px\",\n      width: \"max-content\"\n    }\n  },\n  addChoiceContainer: {\n    padding: \"20px 15px\"\n  },\n  addChoiceHead: {\n    display: \"flex\",\n    alignItems: \"baseline\"\n  },\n  addChoiceLabel: {\n    color: \"#838383\",\n    paddingLeft: \"4px\"\n  },\n  modalAddChoiceButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"12px\",\n    fontWeight: \"bold\",\n    textTransform: \"none\",\n    color: \"#5BC4BF\",\n    backgroundColor: \"#5BC4BF12\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    marginTop: \"10px\",\n    marginLeft: \"20px\",\n    \"&:hover\": {\n      backgroundColor: \"#4da8a412\",\n      boxShadow: \"none\"\n    }\n  },\n  choice: {\n    marginTop: \"15px\",\n    display: \"flex\",\n    alignItems: \"center\"\n  },\n  availabilityContainer: {\n    padding: \"20px 15px\"\n  },\n  config: {\n    marginTop: \"15px\",\n    display: \"flex\",\n    flexDirection: \"column\"\n  },\n  questionsWrapper: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    padding: 2,\n    background: \"#F3F3F3\",\n    borderRadius: \"6px\",\n    minWidth: \"fit-content\"\n  },\n  questionInput: {\n    \"& span\": {\n      fontSize: \"14px !Important\"\n    }\n  },\n  questionsTitle: {\n    color: theme.palette.primary.main,\n    fontSize: \"13px\",\n    fontWeight: \"bold\",\n    paddingBottom: \"5px\",\n    width: \"70px\",\n    padding: \"0 6px\"\n  },\n  iconGreen: {\n    color: theme.palette.success.main,\n    fontSize: \"1.25rem\",\n    margin: \"auto\",\n    display: \"flex\"\n  },\n  iconRed: {\n    color: theme.palette.error.main,\n    fontSize: \"1.25rem\",\n    margin: \"auto\",\n    display: \"flex\"\n  },\n  weightValue: {\n    fontSize: \"13px\",\n    textAlign: \"center\"\n  },\n  noticeContainer: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    justifyContent: \"center\",\n    padding: \"9px 16px\",\n    border: `1px solid ${theme.palette.action.main}`,\n    borderRadius: \"8px\",\n    color: \"#666666\",\n    fontSize: \"16px\",\n    margin: \"16px\",\n    rowGap: \"1px\"\n  },\n  noticeIcon: {\n    color: theme.palette.error.main,\n    marginTop: \"4px\",\n    fontSize: \"16px\"\n  },\n  infoIcon: {\n    color: theme.palette.action.main,\n    marginTop: \"4px\",\n    fontSize: \"16px\"\n  },\n  dragHandle: {\n    color: \"#939393\",\n    fontSize: 30,\n    padding: \"6px\",\n    marginRight: \"10px\",\n    \"&:hover\": {\n      borderRadius: \"8px\",\n      backgroundColor: \"#DDDDDD\"\n    },\n    outline: \"none\"\n  },\n  sortableItemSwitchContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    padding: \"0 6px\",\n    marginBlock: \"auto\",\n    minWidth: \"100px\"\n  },\n  switchLabel: {\n    marginTop: theme.spacing(0.5),\n    fontSize: theme.spacing(1.5)\n  },\n  toggleButtonsContainer: {\n    marginTop: \"40px\",\n    marginBottom: \"40px\",\n    padding: \"0px 16px\"\n  },\n  aiSwitch: {\n    width: \"unset\",\n    \"& .MuiSwitch-thumb\": {\n      backgroundColor: \"#2D388D !important\"\n    },\n    \"& .MuiSwitch-track\": {\n      backgroundColor: \"rgba(0,0,0,0.38)\",\n      opacity: \"1\"\n    },\n    \"& .Mui-checked+.MuiSwitch-track\": {\n      backgroundColor: \"#92ADF4 !important\",\n      opacity: \"1 !important\"\n    }\n  },\n  actionButtonsContainer: {\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    alignItems: \"center\",\n    marginRight: \"-8px\"\n  }\n};\n","\"use strict\";\nimport { theme } from \"../../ThemeContext/ThemeObject\";\nimport { copyButton, link } from \"../shared/styleClasses\";\nexport const classes = {\n  jobPageContainer: {\n    fontFamily: theme.typography.fontFamily,\n    backgroundColor: \"#FFFFFF\",\n    padding: \"40px\"\n  },\n  editTabsContainer: {\n    flexGrow: 1,\n    display: \"flex\",\n    borderColor: \"none\"\n  },\n  editTabIndicator: {\n    backgroundColor: \"#084D6D\",\n    left: \"0\",\n    width: \"3px\",\n    borderRadius: \"0 2rem 2rem 0\"\n  },\n  editTabs: {\n    maxWidth: \"230px\",\n    minWidth: \"210px\",\n    borderRadius: \"8px 0 0 8px\",\n    height: \"fit-content\",\n    paddingBottom: \"1rem\",\n    backgroundColor: \"#f6f6f6\",\n    \"& button\": {\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"16px\",\n      letterSpacing: \"0\",\n      minHeight: \"45px\",\n      maxHeight: \"45px\",\n      textAlign: \"left\",\n      display: \"flex\",\n      justifyContent: \"flex-start\",\n      alignItems: \"center\",\n      color: \"black\",\n      textTransform: \"none\",\n      minWidth: \"unset\",\n      \"&:hover\": {\n        fontWeight: \"600\"\n      },\n      \"&:focus\": {\n        outline: \"none\"\n      }\n    },\n    \"& svg\": {\n      height: \"1.5rem\",\n      marginRight: \"16px !important\",\n      color: \"#084D6D\"\n    },\n    \"& button.Mui-selected\": {\n      fontWeight: \"600\",\n      backgroundColor: \"#eee\",\n      color: \"black\"\n    }\n  },\n  tabsSubheader: {\n    margin: \"25px 0 10px 0\",\n    paddingLeft: \"14px\",\n    fontWeight: \"700\",\n    fontSize: \"12px\",\n    height: \"12px\"\n  },\n  tabs: {\n    \"& button\": {\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"18px\",\n      letterSpacing: \"0\",\n      color: \"#939393\",\n      textTransform: \"none\",\n      minWidth: \"unset\",\n      \"&:hover\": {\n        color: \"#737373\"\n      },\n      \"&:focus\": {\n        outline: \"none\"\n      }\n    },\n    \"& button.Mui-selected\": {\n      fontWeight: \"600\",\n      color: \"#084D6D\"\n    }\n  },\n  tabsContainer: {\n    borderBottom: 1,\n    borderColor: \"#EEEEEE\",\n    margin: \"35px 0 25px 0\"\n  },\n  tabIndicator: {\n    backgroundColor: \"#5BC4BF\",\n    margin: \"0 16px\"\n  },\n  backToJobButton: {\n    marginBottom: \"20px\",\n    fontSize: \"16px\",\n    color: \"#eee\",\n    opacity: \"0.8\",\n    display: \"flex\",\n    alignItems: \"center\",\n    \"& div\": {\n      fontWeight: \"600\",\n      color: \"#666666\",\n      \":hover\": {\n        color: \"#545454\",\n        cursor: \"pointer\"\n      }\n    }\n  },\n  iconGrey: {\n    color: \"#737373\",\n    fontSize: \"28px\"\n  },\n  editJobPageHeader: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    width: \"100%\",\n    padding: \"0px 16px\",\n    \"& h1\": {\n      fontWeight: \"bold\",\n      fontSize: \"38px\",\n      lineHeight: \"1.2em\",\n      color: \"#666666\",\n      marginTop: \"0\",\n      \"@media (max-width: 1450px)\": {\n        fontSize: \"34px\"\n      },\n      \"@media (max-width: 1260px)\": {\n        fontSize: \"28px\"\n      }\n    }\n  },\n  linkContainer: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    columnGap: \"20px\",\n    padding: \"6px 16px\",\n    width: \"100%\",\n    \"& a:hover\": {\n      textDecoration: \"none\"\n    }\n  },\n  link,\n  copyButton,\n  tabFooter: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    padding: \"1em\",\n    justifyContent: \"flex-end\",\n    columnGap: \"20px\"\n  },\n  toggleIcon: {\n    margin: \"25px 0 10px 0\",\n    \"&:hover\": {\n      cursor: \"pointer\"\n    }\n  },\n  tabContent: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    margin: \"20px 0px 40px 0\"\n  },\n  headerContent: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"20px\",\n    fontWeight: \"bold\",\n    color: \"#727272\",\n    marginBottom: \"1rem\",\n    lineHeight: \"2rem\"\n  },\n  headerRow: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    marginTop: \"28px\"\n  },\n  bodyContainer: {\n    padding: \"8px 0\",\n    display: \"grid\"\n  },\n  hintText: {\n    fontFamily: \"Source Sans Pro\",\n    color: \"#939393\",\n    fontSize: \"12px\",\n    margin: \"6px 0px\"\n  },\n  warnText: {\n    fontFamily: \"Source Sans Pro\",\n    color: \"#E37D7A\",\n    fontSize: \"14px\",\n    margin: \"6px 0px\"\n  },\n  text: {\n    fontFamily: \"Source Sans Pro\",\n    color: \"#939393\",\n    fontSize: \"16px\",\n    margin: \"20px 0px\"\n  },\n  checkbox: {\n    color: \"#DDDDDD\",\n    \"&.Mui-checked\": {\n      color: theme.palette.action.main\n    },\n    \"& .MuiSvgIcon-root\": {\n      fontSize: \"22px\"\n    }\n  },\n  label: {\n    \"& .MuiTypography-root\": {\n      color: \"#939393\",\n      fontSize: \"16px\",\n      fontFamily: \"Source Sans Pro, sans-serif\"\n    }\n  },\n  modalFormLine: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    flexDirection: \"row\",\n    columnGap: \"50px\",\n    rowGap: \"26px\",\n    alignItems: \"center\",\n    marginBottom: \"20px\",\n    width: \"100%\",\n    \"& div\": {\n      width: \"100%\"\n    }\n  },\n  selectGroup: {\n    display: \"flex\",\n    justifyContent: \"flex-start\",\n    flexWrap: \"wrap\",\n    columnGap: \"10px\"\n  },\n  addSourceButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"12px\",\n    fontWeight: \"bold\",\n    textTransform: \"none\",\n    color: \"#5BC4BF\",\n    backgroundColor: \"#5BC4BF12\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    marginTop: \"20px\",\n    \"&:hover\": {\n      backgroundColor: \"#4da8a412\",\n      boxShadow: \"none\"\n    },\n    width: \"100px\"\n  },\n  applicationsContainer: {\n    paddingTop: \"6px\"\n  },\n  accordionRoot: {\n    boxShadow: \"none\",\n    margin: \"25px 0px\",\n    \"&::before\": {\n      display: \"none\"\n    },\n    \"&:first-of-type\": {\n      marginTop: \"0px !important\"\n    },\n    \"&.Mui-expanded\": {\n      marginTop: \"14px 0px 0px 0px\"\n    }\n  },\n  accordionSummary: {\n    width: \"fit-content\",\n    padding: \"0\"\n  },\n  datePicker: {\n    fontFamily: \"Source Sans Pro\",\n    width: \"190px\",\n    color: \"#666666\",\n    borderRadius: \"6px\",\n    \"& input\": {\n      padding: \"5px 10px 7px 10px\",\n      fontFamily: \"Source Sans Pro\"\n    },\n    \"& fieldset\": {\n      borderColor: \"#DDDDDD\",\n      \"& legend\": {\n        display: \"none\"\n      }\n    },\n    \"& button\": {\n      padding: \"0px\",\n      transform: \"translate(-2px, -1.5px)\",\n      \"&:hover\": {\n        background: \"transparent\",\n        \"& svg\": {\n          color: \"#888888\"\n        }\n      }\n    },\n    \"& .MuiInputAdornment-root\": {\n      marginLeft: \"0px\"\n    },\n    \"& svg\": {\n      color: \"#AAAAAA\"\n    }\n  },\n  errorBox: {\n    color: theme.palette.error.main,\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    fontSize: \"13px\",\n    position: \"absolute\",\n    bottom: \"-30px\",\n    height: \"2rem\",\n    left: \"4px\"\n  },\n  generalModalFormLine: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    flexDirection: \"row\",\n    columnGap: \"50px\",\n    rowGap: \"26px\",\n    marginBottom: \"26px\",\n    width: \"100%\",\n    alignItems: \"center\"\n  },\n  fullWidthFieldContainer: {\n    width: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    marginBottom: \"26px\"\n  },\n  fullWidthField: {\n    width: \"100%\",\n    marginBottom: \"26px\"\n  },\n  formAutocomplete: {\n    \"& .MuiAutocomplete-root\": {\n      \"& .MuiOutlinedInput-root\": {\n        padding: \"0px\"\n      }\n    },\n    \"& .MuiOutlinedInput-root\": {\n      borderRadius: \"6px\",\n      position: \"relative\",\n      backgroundColor: \"#FFFFFF\",\n      color: \"#333333\",\n      border: \"1px solid #DDDDDD\",\n      fontSize: \"16px\",\n      padding: \"0px\",\n      fontFamily: \"Source Sans Pro, sans-serif\",\n      transition: \"all 0.16s ease-in-out\",\n      \"& .MuiAutocomplete-input\": {\n        padding: \"6px 4px 6px 11px\"\n      }\n    },\n    \"& fieldset\": {\n      display: \"none\"\n    },\n    \"& label\": {\n      color: \"#838383 !important\",\n      fontSize: \"21px\",\n      fontFamily: \"Source Sans Pro, sans-serif\",\n      paddingLeft: \"4px\",\n      left: \"-13px\",\n      top: \"-15px\",\n      \"& .MuiFormLabel-asterisk\": {\n        color: theme.palette.error.main\n      }\n    },\n    \"& .MuiAutocomplete-popupIndicator\": {\n      transition: \"all 0.25s ease-in-out\",\n      color: \"#AAAAAA\"\n    }\n  },\n  classificationLabel: {\n    \"& span\": {\n      color: \"#838383\",\n      fontSize: \"16px !important\",\n      fontFamily: \"Source Sans Pro,sans-serif\",\n      marginLeft: \"0\"\n    }\n  },\n  lastSaved: {\n    fontStyle: \"italic\",\n    fontSize: \"12px\",\n    color: \"#666666\",\n    opacity: \"0.8\",\n    flexDirection: \"row\",\n    alignItems: \"center\"\n  },\n  backAndLastSaveContainer: {\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    marginBottom: \"20px\",\n    alignItems: \"center\"\n  },\n  loadingWrapper: {\n    position: \"relative\",\n    display: \"grid\",\n    placeItems: \"center\",\n    animation: \"0.5s shine linear infinite\",\n    transition: \"background-color 2s ease-out\"\n  },\n  loadingContent: {\n    background: \"linear-gradient(90deg, transparent, rgba(0, 0, 0, 0.04), transparent)\",\n    animation: \"2s shine linear infinite\",\n    transition: \"background-color 2s ease-out\",\n    \"& canvas\": {\n      opacity: \"0.35\"\n    }\n  },\n  graphWrapper: {\n    padding: \"0 1rem 1.5rem 0\"\n  },\n  noDataContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    width: \"100%\",\n    margin: \"80px 0px\"\n  },\n  noDataText: {\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    color: \"#DDDDDD\",\n    fontSize: \"18px\",\n    fontWeight: \"bold\",\n    margin: \"32px 0px\",\n    textAlign: \"center\"\n  },\n  generateButton: {\n    width: \"91px\",\n    height: \"41px\",\n    margin: \"16px 0 0 0\"\n  },\n  buttonContainer: {\n    position: \"relative\",\n    cursor: \"pointer\"\n  },\n  button: {\n    textTransform: \"none\",\n    backgroundColor: \"#F2F2F2\",\n    color: \"#4E4EC7\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"16px\",\n    fontWeight: \"700\",\n    padding: \"8px 0px\",\n    paddingRight: \"20px\",\n    paddingLeft: \"54px\",\n    borderRadius: \"22px\",\n    \"&:hover\": {\n      backgroundColor: \"#F2F2F2\",\n      color: \"#4E4EC7\"\n    }\n  },\n  avatarContainer: {\n    width: \"44px\",\n    height: \"44px\",\n    borderRadius: \"50%\",\n    zIndex: 1,\n    position: \"absolute\",\n    top: \"0px\",\n    left: \"-1px\",\n    background: \"linear-gradient(225.64deg, #E548FF -23.43%, #084D6D 140.57%, #084D6D 140.58%, #5BC4C0 140.6%)\",\n    boxShadow: \"2px 3px 4px rgba(36, 36, 36, 0.18)\"\n  },\n  hoverAnimation: {\n    \"@keyframes grow\": {\n      \"0%\": {\n        transform: \"scale(1) translate(2px, -3px)\"\n      },\n      \"100%\": {\n        transform: \"scale(1.11) translate(2px, -5px)\"\n      }\n    },\n    \"& svg\": {\n      animation: \"grow 0.7s forwards\"\n    }\n  },\n  unhoverAnimation: {\n    \"@keyframes shrink\": {\n      \"0%\": {\n        transform: \"scale(1.11) translate(2px, -5px)\"\n      },\n      \"100%\": {\n        transform: \"scale(1) translate(2px, -3px)\"\n      }\n    },\n    \"& svg\": {\n      animation: \"shrink 0.7s forwards\"\n    }\n  },\n  betaPill: {\n    position: \"absolute\",\n    top: \"-8px\",\n    right: \"2px\",\n    zIndex: 1,\n    backgroundColor: \"#5BC4C0\",\n    color: \"#FFFFFF\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"9.5px\",\n    fontWeight: \"700\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    height: \"16px\",\n    width: \"30px\",\n    borderRadius: \"8px\"\n  }\n};\n","\"use strict\";\nexport const TabGroup = {\n  JOB_INFORMATION: 0,\n  CANDIDATE_SETTINGS: 1,\n  AUTOMATION: 2,\n  ADVANCED: 3\n};\nconst JOB_INFORMATION_TAB_GROUP_SIZE = 5;\nconst CANDIDATE_SETTINGS_TAB_GROUP_SIZE = 1;\nconst AUTOMATION_TAB_GROUP_SIZE = 6;\nconst ADVANCED_TAB_GROUP_SIZE = 7;\nlet offset = 1;\nconst JOB_INFORMATION_OFFSET = offset;\noffset += JOB_INFORMATION_TAB_GROUP_SIZE + 1;\nconst CANDIDATE_SETTINGS_OFFSET = offset;\noffset += CANDIDATE_SETTINGS_TAB_GROUP_SIZE + 1;\nconst AUTOMATION_OFFSET = offset;\noffset += AUTOMATION_TAB_GROUP_SIZE + 1;\nconst ADVANCED_OFFSET = offset;\nexport function convertToNormalTabIndex(tabIndex, group) {\n  switch (group) {\n    case TabGroup.JOB_INFORMATION:\n      return JOB_INFORMATION_OFFSET - 1 + tabIndex;\n    case TabGroup.CANDIDATE_SETTINGS:\n      return CANDIDATE_SETTINGS_OFFSET - 2 + tabIndex;\n    case TabGroup.AUTOMATION:\n      return AUTOMATION_OFFSET - 3 + tabIndex;\n    case TabGroup.ADVANCED:\n      return ADVANCED_OFFSET - 4 + tabIndex;\n  }\n  return tabIndex;\n}\nexport function convertToPanelIndex(tabIndex, group) {\n  switch (group) {\n    case TabGroup.JOB_INFORMATION:\n      return JOB_INFORMATION_OFFSET + tabIndex;\n    case TabGroup.CANDIDATE_SETTINGS:\n      return CANDIDATE_SETTINGS_OFFSET + tabIndex;\n    case TabGroup.AUTOMATION:\n      return AUTOMATION_OFFSET + tabIndex;\n    case TabGroup.ADVANCED:\n      return ADVANCED_OFFSET + tabIndex;\n  }\n  return tabIndex;\n}\n;\nexport function convertToGroupAndTabIndex(panelIndex) {\n  if (panelIndex < CANDIDATE_SETTINGS_OFFSET) {\n    return createTabIndex(TabGroup.JOB_INFORMATION, panelIndex - JOB_INFORMATION_OFFSET);\n  }\n  if (panelIndex < AUTOMATION_OFFSET) {\n    return createTabIndex(TabGroup.CANDIDATE_SETTINGS, panelIndex - CANDIDATE_SETTINGS_OFFSET);\n  }\n  if (panelIndex < ADVANCED_OFFSET) {\n    return createTabIndex(TabGroup.AUTOMATION, panelIndex - AUTOMATION_OFFSET);\n  }\n  return createTabIndex(TabGroup.ADVANCED, panelIndex - ADVANCED_OFFSET);\n}\nfunction createTabIndex(group, index) {\n  return { index, group };\n}\n","\"use strict\";\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nimport queryString, { stringify } from \"query-string\";\nconst BASE_URL = window.location.origin;\nclass Api {\n  constructor() {\n    this.handleResponse = (response) => {\n      if (response.ok) return response.json();\n      return response.json().then((error) => {\n        error.code = response.status;\n        throw error;\n      });\n    };\n    this.handlePaginatedResponse = (response) => __async(this, null, function* () {\n      if (response.ok) {\n        return {\n          data: yield response.json(),\n          totalItems: Number(response.headers.get(\"X-Total-Count\")),\n          totalPages: Number(response.headers.get(\"X-Total-Pages\"))\n        };\n      }\n      return response.json().then((error) => {\n        error.code = response.status;\n        throw error;\n      });\n    });\n    this.getPaginated = (path, params = {}, headers) => fetch(\n      `${BASE_URL}${path}?${queryString.stringify(params, {\n        skipEmptyString: true,\n        skipNull: true,\n        arrayFormat: \"bracket\",\n        encode: false\n      })}`,\n      {\n        headers: headers ? this.getHeaders(headers) : {}\n      }\n    ).then((r) => this.handlePaginatedResponse(r));\n    this.get = (path, params = {}, headers) => fetch(\n      `${BASE_URL}${path}?${queryString.stringify(params, {\n        arrayFormat: \"bracket\",\n        encode: false\n      })}`,\n      {\n        headers: this.getHeaders(headers)\n      }\n    ).then((r) => this.handleResponse(r));\n    this.post = (path, params = {}, headers = {}) => fetch(`${BASE_URL}${path}`, {\n      headers: this.getHeaders(headers),\n      method: \"POST\",\n      body: JSON.stringify(params)\n    }).then((r) => this.handleResponse(r));\n    this.put = (path, params = {}, headers) => fetch(`${BASE_URL}${path}`, {\n      headers: this.getHeaders(headers != null ? headers : {}),\n      method: \"PUT\",\n      body: JSON.stringify(params)\n    }).then((r) => this.handleResponse(r));\n    this.delete = (path, params = {}, headers) => fetch(`${BASE_URL}${path}`, {\n      headers: this.getHeaders(headers),\n      method: \"DELETE\",\n      body: JSON.stringify(params)\n    }).then((r) => this.handleResponse(r));\n    this.getJob = (jobId, apiKey) => this.get(`/api/v4/jobs/${jobId}`, {}, apiKey);\n    this.getJobs = (page) => this.getPaginated(`/api/v4/tasks/jobs`, { page });\n    this.getApplicationsForTask = (jobId, page) => this.getPaginated(`/api/v4/tasks/jobs/${jobId}/applications`, { page });\n    this.getActiveSeekAd = (jobId, apiKey) => this.get(`/api/v4/seek/jobs/${jobId}/job_ads`, {}, apiKey);\n    this.getJobCounts = (jobId, apiKey) => this.get(`/api/v4/jobs/${jobId}/counters`, {}, apiKey);\n    this.putChangedState = (link, apiKey) => this.put(link, {}, apiKey);\n    this.putChangedStatus = (link, apiKey) => this.put(link, {}, apiKey);\n    this.getUserPermissions = (apiKey) => this.get(`/api/v4/user_permissions`, {}, apiKey);\n    this.getGraphData = (url, apiKey, props) => this.get(url, props, apiKey);\n    this.getJobAttachments = (apiKey, jobId, params) => this.getPaginated(`/api/v4/jobs/${jobId}/job_attachments`, params, apiKey);\n    this.deleteJobAttachment = (apiKey, jobId, attachmentId) => this.delete(`/api/v4/jobs/${jobId}/job_attachments/${attachmentId}`, {}, apiKey);\n    this.getNotes = (apiKey, jobId) => this.get(`/api/v4/jobs/${jobId}/job_notes`, {}, apiKey);\n    this.getTask = (apiKey) => this.get(`/api/v4/tasks/assignable_users`, {}, apiKey);\n    this.getMoveJobs = (apiKey, jobId) => this.get(`/api/v4/jobs/${jobId}/target_entities`, {}, apiKey);\n    this.moveJob = (apiKey, jobId, entityId) => this.post(`/api/v4/jobs/${jobId}/move?entity_id=${entityId}`, {}, apiKey);\n    this.newNote = (apiKey, jobId, params) => this.post(`/api/v4/jobs/${jobId}/job_notes`, params, apiKey);\n    this.newTask = (apiKey, params, query) => this.post(`/api/v4/tasks?${query && stringify(query)}`, params, apiKey);\n    this.putNote = (apiKey, jobId, noteId, params) => this.put(`/api/v4/jobs/${jobId}/job_notes/${noteId}`, params, apiKey);\n    this.deleteNote = (apiKey, jobId, noteId) => this.delete(`/api/v4/jobs/${jobId}/job_notes/${noteId}`, {}, apiKey);\n    this.getEmailStatuses = (apiKey, jobId, params) => this.getPaginated(`/api/v4/jobs/${jobId}/job_email_statuses`, params, apiKey);\n    this.cancelEmailBatch = (jobId, emailStatusId) => this.post(`/api/v4/jobs/${jobId}/job_email_statuses/${emailStatusId}/cancel`);\n    this.getApplications = (apiKey, jobId, params) => this.getPaginated(`/api/v4/jobs/${jobId}/applications`, params, apiKey);\n    this.getAllApplications = (apiKey, jobId, params) => this.getPaginated(`/api/v4/jobs/${jobId}/applications`, params, apiKey);\n    this.deleteApplications = (url, apiKey, params) => this.delete(url, params, apiKey);\n    this.getApplicationStatuses = (apiKey, jobId, params) => this.getPaginated(`/api/v4/jobs/${jobId}/job_application_statuses`, params, apiKey);\n    this.getFilterableStatuses = (apiKey, jobId, params) => this.getPaginated(\n      `/api/v4/jobs/${jobId}/job_application_statuses/filterable_statuses`,\n      params,\n      apiKey\n    );\n    this.getFilterableCountries = (apiKey, jobId, params) => this.getPaginated(`/api/v4/jobs/${jobId}/applications/countries`, params, apiKey);\n    this.getFilterableSuburbs = (apiKey, jobId, params) => this.getPaginated(`/api/v4/jobs/${jobId}/applications/suburbs`, params, apiKey);\n    this.getWorkflows = (apiKey, params, jobId) => this.getPaginated(`/api/v4/workflows?job_id=${jobId}`, params, apiKey);\n    this.assignWorkflow = (apiKey, params, jobId) => this.post(`/api/v4/workflows?job_id=${jobId}`, params, apiKey);\n    this.getRevision = (apiKey, jobId, params) => this.getPaginated(`/api/v4/jobs/${jobId}/job_revisions`, params, apiKey);\n    this.getRatingSets = (apiKey, jobId) => this.getPaginated(`/api/v4/jobs/${jobId}/rating_sets`, {}, apiKey);\n    this.getRaters = (apiKey, jobId) => this.getPaginated(`/api/v4/jobs/${jobId}/rating_sets/raters`, {}, apiKey);\n    this.deleteRatingSet = (apiKey, jobId, setId) => this.delete(`/api/v4/jobs/${jobId}/rating_sets/${setId}`, {}, apiKey);\n    this.deleteRaterSet = (apiKey, jobId, userId) => this.delete(`/api/v4/jobs/${jobId}/rating_sets/bulk_destroy?user_id=${userId}`, {}, apiKey);\n    this.revertRevision = (apiKey, jobId, id) => this.post(`/api/v4/jobs/${jobId}/job_revisions/${id}/revert`, {}, apiKey);\n    this.putUnarchiveJob = (apiKey, params) => this.put(`/api/v4/jobs/unarchive`, params, apiKey);\n    this.putApplicationStatus = (apiKey, jobId, applicationId, statusId) => this.put(\n      `/api/v4/jobs/${jobId}/applications/${applicationId}/application_status/${statusId}`,\n      {},\n      apiKey\n    );\n    this.newField = (apiKey, jobId, params) => this.post(`/api/v4/fields?job_id=${jobId}`, params, apiKey);\n    this.addSystemField = (apiKey, jobId, systemFieldId) => this.post(`/api/v4/system_fields?job_id=${jobId}&system_field_id=${systemFieldId}`, {}, apiKey);\n    this.deleteQuestion = (apiKey, id, jobId) => this.delete(`/api/v4/fields/${id}?job_id=${jobId}`, {}, apiKey);\n    this.cloneQuestion = (apiKey, id, jobId) => this.post(`/api/v4/fields/${id}/clone?job_id=${jobId}`, {}, apiKey);\n    this.putQuestion = (apiKey, id, jobId, params) => this.put(`/api/v4/fields/${id}?job_id=${jobId}`, params, apiKey);\n    this.newHRField = (apiKey, jobId, applicationQuestionTemplateId, params) => this.post(\n      `/api/v4/fields?application_question_template_id=${applicationQuestionTemplateId}`,\n      params,\n      apiKey\n    );\n    this.putHRQuestion = (apiKey, id, jobId, applicationQuestionTemplateId, params) => this.put(\n      `/api/v4/fields/${id}?application_question_template_id=${applicationQuestionTemplateId}`,\n      params,\n      apiKey\n    );\n    this.addHRQuestionSystemField = (apiKey, jobId, systemFieldId, applicationQuestionTemplateId) => this.post(\n      `/api/v4/system_fields?system_field_id=${systemFieldId}&application_question_template_id=${applicationQuestionTemplateId}`,\n      {},\n      apiKey\n    );\n    this.deleteHRQuestion = (apiKey, id, jobId, applicationQuestionTemplateId) => this.delete(\n      `/api/v4/fields/${id}?application_question_template_id=${applicationQuestionTemplateId}`,\n      {},\n      apiKey\n    );\n    this.referenceValidation = (apiKey, params) => this.get(`/api/v4/jobs/validating_reference`, params, apiKey);\n    this.getJobTimezones = (apiKey) => this.get(`/api/v4/timezones`, {}, apiKey);\n    this.getJobBrand = (apiKey, jobId) => this.get(`/api/v4/jobs/${jobId}/brands`, {}, apiKey);\n    this.getJobAutoRaters = (apiKey, jobId) => this.get(`/api/v4/jobs/${jobId}/auto_raters`, {}, apiKey);\n    this.getJobPanelChairs = (apiKey, jobId) => this.get(`/api/v4/panel_chairs?job_id=${jobId}`, {}, apiKey);\n    this.getJobrequisitions = (apiKey, params) => this.get(`/api/v4/requisitions`, params, apiKey);\n    this.getJobClassifications = (apiKey) => this.get(`/api/v4/job_classifications`, {}, apiKey);\n    this.getJobAssignableUsers = (apiKey, jobId) => this.get(`/api/v4/assignable_users?job_id=${jobId}`, {}, apiKey);\n    this.getSalesPeople = (apiKey) => this.get(`/api/v4/sales_people`, {}, apiKey);\n    this.getRMteamMembers = (apiKey) => this.get(`/api/v4/rm_team_members`, {}, apiKey);\n    this.getJobLocales = (apiKey) => this.get(`/api/v4/locales`, {}, apiKey);\n    this.updateJob = (apiKey, jobId, params) => this.put(`/api/v4/jobs/${jobId}`, params, apiKey);\n    this.getEvents = (date, apiKey, typeId) => this.get(\n      \"/api/v4/calendar/events\",\n      { date, event_type_id: typeId || void 0, override_limit: true },\n      apiKey\n    );\n    this.getSmsTemplates = (apiKey) => this.get(\"/api/v4/sms_templates\", {}, apiKey);\n    this.saveSmsTemplate = (apiKey, smsTemplateName, smsMessage) => this.post(\n      `/api/v4/sms_templates`,\n      {\n        sms_template: {\n          title: smsTemplateName,\n          body: smsMessage\n        }\n      },\n      apiKey\n    );\n    this.getEmailTemplates = (apiKey) => this.get(`/api/v4/calendar/email_templates/grouped_email_templates`, {}, apiKey);\n    this.getEmailTemplate = (apiKey, templateId) => this.get(`/api/v4/calendar/email_templates/${templateId}`, {}, apiKey);\n    this.getRecruiters = (apiKey) => this.get(`/api/v4/calendar/users`, {}, apiKey);\n    this.getPlaceholders = (apiKey, type) => this.get(`/api/v4/calendar/email_templates/placeholders`, { type: type || \"\" }, apiKey);\n    this.sendSms = (apiKey, jobId, eventId, applicationIds, content) => this.post(\n      `/api/v4/jobs/${jobId}/applications/bulk_sms`,\n      {\n        event_id: eventId,\n        applications_ids: applicationIds,\n        content,\n        added: true\n      },\n      apiKey\n    );\n    this.addToEventSms = (jobId, eventId, applicationIds, content, smsTemplateId) => this.post(`/api/v4/jobs/${jobId}/applications/bulk_sms/add_to_event`, {\n      event_id: eventId,\n      applications_ids: applicationIds,\n      sms_template_id: smsTemplateId,\n      content,\n      added: true\n    });\n    this.sendInviteSms = (jobId, eventTypeId, applicationIds, content, smsTemplateId) => this.post(`/api/v4/jobs/${jobId}/applications/bulk_sms/invite_to_timeslot`, {\n      event_type_id: eventTypeId,\n      applications_ids: applicationIds,\n      content,\n      sms_template_id: smsTemplateId,\n      invited: true\n    });\n    this.sendEmail = (apiKey, jobId, eventId, emailTemplateId, content, applicationIds) => this.post(\n      `/api/v4/jobs/${jobId}/applications/email`,\n      {\n        email: {\n          event_id: eventId,\n          email_template_id: emailTemplateId,\n          content,\n          application_ids: applicationIds\n        }\n      },\n      apiKey\n    );\n    this.updateNote = (jobId, applicationId, params) => this.put(`/api/v4/jobs/${jobId}/applications/${applicationId}/update_notepad`, params);\n    this.updateNotes = (jobId, applicationId, params) => this.post(`/api/v4/jobs/${jobId}/applications/${applicationId}/notes`, params);\n    this.addRecord = (jobId, applicationId, params) => this.post(`/api/v4/jobs/${jobId}/applications/${applicationId}/permanent_record`, {\n      note: params\n    });\n  }\n  getHeaders(headers) {\n    return Object.assign(\n      {},\n      {\n        \"Content-Type\": \"application/json\"\n      },\n      headers\n    );\n  }\n}\nexport default new Api();\n","\"use strict\";\nimport { theme } from \"../../../../ThemeContext/ThemeObject\";\nimport { alpha } from \"@mui/material/styles\";\nimport { closeIcon } from \"../../../shared/styleClasses\";\nexport const classes = {\n  buttonRedLight: {\n    color: \"#E37D7A\",\n    fontFamily: \"Source Sans Pro\",\n    textTransform: \"capitalize\",\n    padding: \"8px 18px\",\n    fontWeight: \"bold\",\n    fontSize: \"15px\",\n    textDecoration: \"underline\",\n    backgroundColor: \"#ffffff\",\n    \"&:hover\": {\n      color: \"#d74742\",\n      backgroundColor: \"#ffffff\"\n    }\n  },\n  revertloadButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"15px\",\n    fontWeight: \"bold\",\n    textTransform: \"none\",\n    color: \"#FFFFFF\",\n    backgroundColor: \"#5BC4BF\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    padding: \"8px 18px\",\n    \"&:hover\": {\n      backgroundColor: \"#4da8a4\",\n      boxShadow: \"none\"\n    }\n  },\n  modalContent: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    padding: \"60px\",\n    maxWidth: \"800px\",\n    width: \"90%\",\n    height: \"95%\",\n    maxHeight: \"800px\",\n    borderRadius: \"6px\",\n    dropShadow: \"0px 2px 14px #305A6F29\",\n    position: \"absolute\",\n    background: \"#FFFFFF\",\n    top: \"50%\",\n    left: \"50%\",\n    transform: \"translate(-50%, -50%)\"\n  },\n  modalTitle: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"30px\",\n    fontWeight: \"bold\",\n    color: theme.palette.primary.main,\n    display: \"flex\",\n    flexDirection: \"column\"\n  },\n  calendar: {\n    \"& .PrivatePickersFadeTransitionGroup-root\": {\n      fontFamily: \"Source Sans Pro\"\n    },\n    \"& .MuiTypography-root\": {\n      fontFamily: \"Source Sans Pro\"\n    },\n    \"& .Mui-selected\": {\n      backgroundColor: `${theme.palette.action.main} !important`\n    },\n    \"& .PrivatePickersSlideTransition-root\": {\n      minHeight: \"242px !important\"\n    }\n  },\n  modalFormLine: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    flexDirection: \"row\",\n    columnGap: \"50px\",\n    rowGap: \"26px\",\n    alignItems: \"center\",\n    marginBottom: \"20px\",\n    width: \"100%\"\n  },\n  datePicker: {\n    margin: \"33px 0 0 4px\",\n    fontFamily: \"Source Sans Pro\",\n    width: \"290px\",\n    color: \"#666666\",\n    \"& input\": {\n      padding: \"4px 10px 5px 10px\",\n      fontFamily: \"Source Sans Pro\"\n    },\n    \"& fieldset\": {\n      \"& legend\": {\n        display: \"none\"\n      }\n    },\n    \"& button\": {\n      padding: \"0px\",\n      transform: \"translate(-2px, -1.5px)\",\n      \"&:hover\": {\n        background: \"transparent\",\n        \"& svg\": {\n          color: \"#888888\"\n        }\n      }\n    },\n    \"& .MuiInputAdornment-root\": {\n      marginLeft: \"0px\"\n    },\n    \"& svg\": {\n      color: \"#AAAAAA\"\n    }\n  },\n  noteTextInput: {\n    \"label + &\": {\n      marginTop: \"24px\"\n    },\n    \"& .MuiInputBase-input\": {\n      borderRadius: \"6px\",\n      position: \"relative\",\n      backgroundColor: \"#FFFFFF\",\n      color: \"#333333\",\n      border: \"1px solid #DDDDDD\",\n      fontSize: \"16px\",\n      padding: \"6px 10px\",\n      margin: \"3px\",\n      fontFamily: \"Source Sans Pro, sans-serif\",\n      transition: \"all 0.16s ease-in-out\",\n      \"&:focus\": {\n        boxShadow: `${alpha(theme.palette.primary.main, 0.25)} 0 0 0 2px`,\n        borderColor: theme.palette.primary.main\n      }\n    }\n  },\n  modalActions: {\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    marginTop: \"auto\",\n    width: \"100%\",\n    columnGap: \"16px\",\n    \"& a\": {\n      \"&:hover\": {\n        textDecoration: \"none\"\n      }\n    }\n  },\n  closeIcon\n};\n","\"use strict\";\nimport { theme } from \"../../../../ThemeContext/ThemeObject\";\nimport { closeIcon, filterMenu } from \"../../../shared/styleClasses\";\nexport const classes = {\n  revertloadButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"15px\",\n    fontWeight: \"bold\",\n    textTransform: \"none\",\n    color: \"#FFFFFF\",\n    backgroundColor: \"#5BC4BF\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    padding: \"8px 18px\",\n    \"&:hover\": {\n      backgroundColor: \"#4da8a4\",\n      boxShadow: \"none\"\n    }\n  },\n  modalContent: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    padding: \"60px\",\n    maxWidth: \"800px\",\n    width: \"90%\",\n    height: \"95%\",\n    maxHeight: \"650px\",\n    borderRadius: \"6px\",\n    dropShadow: \"0px 2px 14px #305A6F29\",\n    position: \"absolute\",\n    background: \"#FFFFFF\",\n    top: \"50%\",\n    left: \"50%\",\n    transform: \"translate(-50%, -50%)\"\n  },\n  modalTitle: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"30px\",\n    fontWeight: \"bold\",\n    color: theme.palette.primary.main,\n    display: \"flex\",\n    flexDirection: \"column\"\n  },\n  modalActions: {\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    marginTop: \"auto\",\n    width: \"100%\",\n    columnGap: \"16px\",\n    \"& a\": {\n      \"&:hover\": {\n        textDecoration: \"none\"\n      }\n    }\n  },\n  closeIcon,\n  tableContainer: {\n    marginTop: \"20px\",\n    maxHeight: \"60%\",\n    overflow: \"scroll\"\n  },\n  table: {\n    \"& th\": {\n      border: \"none\",\n      backgroundColor: \"#FFFFFF\",\n      whiteSpace: \"nowrap\"\n    },\n    \"& td\": {\n      border: \"none\",\n      whiteSpace: \"nowrap\"\n    },\n    \"& thead th\": {\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"15px\",\n      fontWeight: \"600\",\n      color: theme.palette.primary.main,\n      textTransform: \"none\"\n    }\n  },\n  sticky: {\n    position: \"sticky\",\n    left: \"0px\",\n    background: \"white\"\n  },\n  stickyRight: {\n    position: \"sticky\",\n    right: \"0px\",\n    background: \"white\"\n  },\n  clickable: {\n    textDecoration: \"underline\",\n    cursor: \"pointer\"\n  },\n  noCandidateContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    height: \"100%\",\n    fontSize: \"20px\",\n    fontWeight: \"bold\",\n    color: \"#999999\",\n    textAlign: \"center\",\n    lineHeight: \"28px\"\n  },\n  loadingContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    height: \"100%\"\n  },\n  filterContainer: {\n    width: \"100%\",\n    marginTop: \"36px\"\n  },\n  filterMenu,\n  filterButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"15px\",\n    fontWeight: \"600\",\n    textTransform: \"none\",\n    color: theme.palette.primary.main,\n    backgroundColor: \"#FFFFFF\",\n    border: \"1px solid #EAEEF0\",\n    borderRadius: \"6px\",\n    padding: \"8px 18px\",\n    marginLeft: \"12px\"\n  }\n};\n","\"use strict\";\nimport { theme } from \"../../../../ThemeContext/ThemeObject\";\nimport { closeIcon } from \"../../../shared/styleClasses\";\nexport const classes = {\n  buttonRedLight: {\n    color: \"#E37D7A\",\n    fontFamily: \"Source Sans Pro\",\n    textTransform: \"capitalize\",\n    padding: \"8px 18px\",\n    fontWeight: \"bold\",\n    fontSize: \"15px\",\n    textDecoration: \"underline\",\n    backgroundColor: \"#ffffff\",\n    \"&:hover\": {\n      color: \"#d74742\",\n      backgroundColor: \"#ffffff\"\n    }\n  },\n  revertloadButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"15px\",\n    fontWeight: \"bold\",\n    textTransform: \"none\",\n    color: \"#FFFFFF\",\n    backgroundColor: \"#5BC4BF\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    padding: \"8px 18px\",\n    \"&:hover\": {\n      backgroundColor: \"#4da8a4\",\n      boxShadow: \"none\"\n    }\n  },\n  subTitle: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"15px\",\n    fontWeight: \"bold\",\n    color: theme.palette.primary.main,\n    display: \"flex\",\n    flexDirection: \"column\",\n    marginTop: \"20px\"\n  },\n  noEntitys: {\n    width: \"100%\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    color: \"#DDDDDD\",\n    fontSize: \"18px\",\n    fontWeight: \"bold\",\n    margin: \"32px 0px\"\n  },\n  modalContent: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    padding: \"60px\",\n    maxWidth: \"800px\",\n    width: \"90%\",\n    height: \"95%\",\n    maxHeight: \"500px\",\n    borderRadius: \"6px\",\n    dropShadow: \"0px 2px 14px #305A6F29\",\n    position: \"absolute\",\n    background: \"#FFFFFF\",\n    top: \"50%\",\n    left: \"50%\",\n    transform: \"translate(-50%, -50%)\"\n  },\n  modalTitle: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"30px\",\n    fontWeight: \"bold\",\n    color: theme.palette.primary.main,\n    display: \"flex\",\n    flexDirection: \"column\"\n  },\n  modalFormLine: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    flexDirection: \"row\",\n    columnGap: \"50px\",\n    rowGap: \"26px\",\n    alignItems: \"center\",\n    marginBottom: \"20px\",\n    width: \"100%\"\n  },\n  modalActions: {\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    marginTop: \"auto\",\n    width: \"100%\",\n    columnGap: \"16px\",\n    \"& a\": {\n      \"&:hover\": {\n        textDecoration: \"none\"\n      }\n    }\n  },\n  closeIcon\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { theme } from \"../../../../ThemeContext/ThemeObject\";\nimport { alpha } from \"@mui/material/styles\";\nimport { closeIcon, deleteApplicant } from \"../../../shared/styleClasses\";\nimport { actionButtonStyles } from \"../../../shared/commonStyles\";\nexport const classes = {\n  buttonRedLight: {\n    color: \"#d74742\",\n    fontFamily: \"Source Sans Pro\",\n    textTransform: \"capitalize\",\n    padding: \"10px\",\n    fontWeight: \"bold\",\n    fontSize: \"15px\",\n    textDecoration: \"underline\",\n    backgroundColor: \"#ffffff\",\n    \"&:hover\": {\n      color: \"#d74742\",\n      backgroundColor: \"#ffffff\"\n    }\n  },\n  buttonGreen: {\n    color: \"#5BC4BF\",\n    fontFamily: \"Source Sans Pro\",\n    textTransform: \"capitalize\",\n    padding: \"10px\",\n    fontWeight: \"bold\",\n    fontSize: \"15px\",\n    textDecoration: \"underline\",\n    backgroundColor: \"#ffffff\",\n    \"&:hover\": {\n      color: \"#5BC4BF\",\n      textDecoration: \"underline\",\n      backgroundColor: \"#ffffff\"\n    }\n  },\n  buttonRed: {\n    color: \"#E37D7A\",\n    backgroundColor: \"#ffffff\",\n    \"& span\": {\n      margin: \"0px\"\n    },\n    \"&:hover\": {\n      color: \"#d74742\",\n      backgroundColor: \"#ffffff\"\n    }\n  },\n  revertloadButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    textTransform: \"none\",\n    color: \"#E37D7A\",\n    backgroundColor: \"#ffffff\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    padding: \"5px 0px\",\n    \"&:hover\": {\n      color: \"#ffffff\",\n      backgroundColor: \"#E37D7A\",\n      boxShadow: \"none\"\n    }\n  },\n  createNewWorkflowButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    textTransform: \"none\",\n    color: \"#FFFFFF\",\n    margin: \"auto\",\n    backgroundColor: \"#5BC4BF\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    padding: \"5px 10px\",\n    \"&:hover\": {\n      backgroundColor: \"#4da8a4\",\n      boxShadow: \"none\"\n    }\n  },\n  buttonSecondaryLight: {\n    borderRadius: \"6px\",\n    fontFamily: \"Source Sans Pro\",\n    textTransform: \"capitalize\",\n    padding: \"14px 30px\",\n    fontSize: \"15px\",\n    fontWeight: \"bold\",\n    background: theme.palette.secondary.light,\n    color: theme.palette.secondary.main,\n    \"&:hover\": {\n      background: theme.palette.secondary.main,\n      color: \"#FFF\"\n    }\n  },\n  actionButton: __spreadProps(__spreadValues({}, actionButtonStyles), {\n    marginBottom: \"20px\"\n  }),\n  deleteApplicant,\n  modalContent: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    padding: \"60px\",\n    maxWidth: \"800px\",\n    width: \"90%\",\n    height: \"100%\",\n    maxHeight: \"650px\",\n    background: \"#FFFFFF\",\n    borderRadius: \"6px\",\n    dropShadow: \"0px 2px 14px #305A6F29\",\n    position: \"absolute\",\n    top: \"50%\",\n    left: \"50%\",\n    transform: \"translate(-50%, -50%)\"\n  },\n  modalTitle: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"30px\",\n    fontWeight: \"bold\",\n    color: theme.palette.primary.main,\n    display: \"flex\",\n    flexDirection: \"column\"\n  },\n  tableHeader: {\n    color: theme.palette.primary.main,\n    display: \"flex\",\n    flexDirection: \"row\",\n    justifyContent: \"space-between\",\n    \"& div\": {\n      paddingRight: \"0.5rem\",\n      fontWeight: \"700\"\n    }\n  },\n  tableRow: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    justifyContent: \"space-between\",\n    \"& div\": {\n      padding: \"0.75rem 0.5rem 0 0\"\n    }\n  },\n  calendar: {\n    \"& .PrivatePickersFadeTransitionGroup-root\": {\n      fontFamily: \"Source Sans Pro\"\n    },\n    \"& .MuiTypography-root\": {\n      fontFamily: \"Source Sans Pro\"\n    },\n    \"& .Mui-selected\": {\n      backgroundColor: `${theme.palette.action.main} !important`\n    },\n    \"& .PrivatePickersSlideTransition-root\": {\n      minHeight: \"242px !important\"\n    }\n  },\n  modalFormLine: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    flexDirection: \"row\",\n    columnGap: \"50px\",\n    rowGap: \"26px\",\n    alignItems: \"center\",\n    marginBottom: \"20px\",\n    width: \"100%\"\n  },\n  datePicker: {\n    margin: \"33px 0 0 4px\",\n    fontFamily: \"Source Sans Pro\",\n    width: \"290px\",\n    color: \"#666666\",\n    \"& input\": {\n      padding: \"4px 10px 5px 10px\",\n      fontFamily: \"Source Sans Pro\"\n    },\n    \"& fieldset\": {\n      \"& legend\": {\n        display: \"none\"\n      }\n    },\n    \"& button\": {\n      padding: \"0px\",\n      transform: \"translate(-2px, -1.5px)\",\n      \"&:hover\": {\n        background: \"transparent\",\n        \"& svg\": {\n          color: \"#888888\"\n        }\n      }\n    },\n    \"& .MuiInputAdornment-root\": {\n      marginLeft: \"0px\"\n    },\n    \"& svg\": {\n      color: \"#AAAAAA\"\n    }\n  },\n  noteTextInput: {\n    \"label + &\": {\n      marginTop: \"24px\"\n    },\n    \"& .MuiInputBase-input\": {\n      borderRadius: \"6px\",\n      position: \"relative\",\n      backgroundColor: \"#FFFFFF\",\n      color: \"#333333\",\n      border: \"1px solid #DDDDDD\",\n      fontSize: \"16px\",\n      padding: \"6px 10px\",\n      margin: \"3px\",\n      fontFamily: \"Source Sans Pro, sans-serif\",\n      transition: \"all 0.16s ease-in-out\",\n      \"&:focus\": {\n        boxShadow: `${alpha(theme.palette.primary.main, 0.25)} 0 0 0 2px`,\n        borderColor: theme.palette.primary.main\n      }\n    }\n  },\n  noWorkflows: {\n    width: \"100%\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    color: \"#DDDDDD\",\n    fontSize: \"18px\",\n    fontWeight: \"bold\",\n    height: \"80%\",\n    alignItems: \"end\"\n  },\n  modalActions: {\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    marginTop: \"auto\",\n    width: \"100%\",\n    columnGap: \"16px\",\n    \"& a\": {\n      \"&:hover\": {\n        textDecoration: \"none\"\n      }\n    }\n  },\n  closeIcon\n};\n","\"use strict\";\nimport { theme } from \"../../../../ThemeContext/ThemeObject\";\nimport { closeIcon } from \"../../../shared/styleClasses\";\nexport const classes = {\n  buttonRedLight: {\n    color: \"#E37D7A\",\n    fontFamily: \"Source Sans Pro\",\n    textTransform: \"capitalize\",\n    padding: \"8px 18px\",\n    fontWeight: \"bold\",\n    fontSize: \"15px\",\n    textDecoration: \"underline\",\n    backgroundColor: \"#ffffff\",\n    \"&:hover\": {\n      color: \"#d74742\",\n      backgroundColor: \"#ffffff\"\n    }\n  },\n  revertloadButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"15px\",\n    fontWeight: \"bold\",\n    textTransform: \"none\",\n    color: \"#FFFFFF\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    padding: \"8px 18px\",\n    \"&:hover\": {\n      backgroundColor: \"#4da8a4\",\n      boxShadow: \"none\"\n    }\n  },\n  noRevisions: {\n    width: \"100%\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    color: \"#DDDDDD\",\n    fontSize: \"18px\",\n    fontWeight: \"bold\",\n    margin: \"32px 0px\"\n  },\n  revisionsModalContent: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    padding: \"60px\",\n    maxWidth: \"800px\",\n    width: \"90%\",\n    height: \"95%\",\n    maxHeight: \"700px\",\n    borderRadius: \"6px\",\n    dropShadow: \"0px 2px 14px #305A6F29\",\n    position: \"absolute\",\n    background: \"#FFFFFF\",\n    top: \"50%\",\n    left: \"50%\",\n    transform: \"translate(-50%, -50%)\"\n  },\n  revisionsTitle: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"30px\",\n    fontWeight: \"bold\",\n    color: theme.palette.primary.main,\n    display: \"flex\",\n    flexDirection: \"column\"\n  },\n  revisionsSubTitle: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"15px\",\n    fontWeight: \"bold\",\n    color: theme.palette.primary.main,\n    display: \"flex\",\n    flexDirection: \"column\",\n    marginTop: \"35px\"\n  },\n  revisionsContent: {\n    fontSize: \"12px\"\n  },\n  revisionsVersionsIcon: {\n    padding: \"0rem 0.5rem\",\n    background: \"#8CCAF7\",\n    height: \"1.65rem\",\n    borderRadius: \"1rem\",\n    color: \"#ffffff\",\n    \"& svg\": {\n      height: \"0.75rem\",\n      width: \"0.75rem\"\n    }\n  },\n  sliderInput: {\n    color: \"#5BC4BF\",\n    \"& span\": {\n      fontSize: \"12px\"\n    }\n  },\n  revisionsActions: {\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    marginTop: \"auto\",\n    width: \"100%\",\n    columnGap: \"16px\",\n    \"& a\": {\n      \"&:hover\": {\n        textDecoration: \"none\"\n      }\n    }\n  },\n  closeIcon,\n  revisionsVersionsContent: {\n    display: \"flex\",\n    alignItems: \"center\",\n    padding: \"0 0.5rem\"\n  },\n  revisionsVersionsContentDescription: {\n    alignItems: \"center\",\n    padding: \"0 0.5rem\"\n  },\n  htmlContent: {\n    boxShadow: \"inset 0px 0px 10px rgba(0, 0, 0, 0.09)\",\n    borderRadius: \"0.5rem\",\n    color: \"#939393\",\n    \"& p\": {\n      marginTop: \"0\"\n    }\n  },\n  optionsText: {\n    fontWeight: \"700\",\n    margin: \"0 3px\"\n  },\n  revisionsVersionsContentBlue: {\n    color: \"#084D6D\",\n    cursor: \"pointer\",\n    textDecoration: \"underline\"\n  },\n  headerContent: {\n    boxShadow: \"inset 0px 0px 10px rgba(0, 0, 0, 0.09)\",\n    borderRadius: \"6px 0 0 0\",\n    background: \"rgba(221, 221, 221, 0.24)\",\n    padding: \"5px 10px\",\n    width: \"85px\",\n    textAlign: \"center\",\n    fontWeight: \"700\"\n  },\n  changesTableContent: {\n    display: \"flex\",\n    fontSize: \"14.5px\",\n    color: \"#666666\",\n    marginBottom: \"13px\"\n  },\n  attachmentContent: {\n    padding: \"1rem 1rem 1rem 1rem\",\n    position: \"relative\"\n  },\n  noAttachments: {\n    width: \"100%\",\n    textAlign: \"center\",\n    position: \"absolute\",\n    top: \"-12px\",\n    fontWeight: \"bold\"\n  },\n  codeChangesOnly: {\n    position: \"absolute\",\n    top: \"10px\",\n    left: \"calc(50% - 85px)\",\n    color: \"#999999\",\n    fontWeight: \"bold\"\n  }\n};\n","\"use strict\";\nimport { theme } from \"../../../../ThemeContext/ThemeObject\";\nimport { alpha } from \"@mui/material/styles\";\nimport { closeIcon } from \"../../../shared/styleClasses\";\nexport const classes = {\n  buttonRedLight: {\n    color: \"#E37D7A\",\n    fontFamily: \"Source Sans Pro\",\n    textTransform: \"capitalize\",\n    padding: \"8px 18px\",\n    fontWeight: \"bold\",\n    fontSize: \"15px\",\n    textDecoration: \"underline\",\n    backgroundColor: \"#ffffff\",\n    \"&:hover\": {\n      color: \"#d74742\",\n      backgroundColor: \"#ffffff\"\n    }\n  },\n  revertloadButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"15px\",\n    fontWeight: \"bold\",\n    textTransform: \"none\",\n    color: \"#FFFFFF\",\n    backgroundColor: \"#5BC4BF\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    padding: \"8px 18px\",\n    \"&:hover\": {\n      backgroundColor: \"#4da8a4\",\n      boxShadow: \"none\"\n    }\n  },\n  createNewWorkflowButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    textTransform: \"none\",\n    color: \"#FFFFFF\",\n    margin: \"auto\",\n    backgroundColor: \"#5BC4BF\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    padding: \"5px 10px\",\n    \"&:hover\": {\n      backgroundColor: \"#4da8a4\",\n      boxShadow: \"none\"\n    }\n  },\n  modalContent: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    padding: \"60px\",\n    maxWidth: \"800px\",\n    width: \"90%\",\n    height: \"100%\",\n    maxHeight: \"575px\",\n    background: \"#FFFFFF\",\n    borderRadius: \"6px\",\n    dropShadow: \"0px 2px 14px #305A6F29\",\n    position: \"absolute\",\n    top: \"50%\",\n    left: \"50%\",\n    transform: \"translate(-50%, -50%)\"\n  },\n  modalTitle: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"30px\",\n    fontWeight: \"bold\",\n    color: theme.palette.primary.main,\n    display: \"flex\",\n    flexDirection: \"column\"\n  },\n  calendar: {\n    \"& .PrivatePickersFadeTransitionGroup-root\": {\n      fontFamily: \"Source Sans Pro\"\n    },\n    \"& .MuiTypography-root\": {\n      fontFamily: \"Source Sans Pro\"\n    },\n    \"& .Mui-selected\": {\n      backgroundColor: `${theme.palette.action.main} !important`\n    },\n    \"& .PrivatePickersSlideTransition-root\": {\n      minHeight: \"242px !important\"\n    }\n  },\n  modalFormLine: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    flexDirection: \"row\",\n    columnGap: \"50px\",\n    rowGap: \"26px\",\n    alignItems: \"center\",\n    marginBottom: \"20px\",\n    width: \"100%\"\n  },\n  datePicker: {\n    margin: \"33px 0 0 4px\",\n    fontFamily: \"Source Sans Pro\",\n    width: \"290px\",\n    color: \"#666666\",\n    \"& input\": {\n      padding: \"4px 10px 5px 10px\",\n      fontFamily: \"Source Sans Pro\"\n    },\n    \"& fieldset\": {\n      \"& legend\": {\n        display: \"none\"\n      }\n    },\n    \"& button\": {\n      padding: \"0px\",\n      transform: \"translate(-2px, -1.5px)\",\n      \"&:hover\": {\n        background: \"transparent\",\n        \"& svg\": {\n          color: \"#888888\"\n        }\n      }\n    },\n    \"& .MuiInputAdornment-root\": {\n      marginLeft: \"0px\"\n    },\n    \"& svg\": {\n      color: \"#AAAAAA\"\n    }\n  },\n  noteTextInput: {\n    \"label + &\": {\n      marginTop: \"24px\"\n    },\n    \"& .MuiInputBase-input\": {\n      borderRadius: \"6px\",\n      position: \"relative\",\n      backgroundColor: \"#FFFFFF\",\n      color: \"#333333\",\n      border: \"1px solid #DDDDDD\",\n      fontSize: \"16px\",\n      padding: \"6px 10px\",\n      margin: \"3px\",\n      fontFamily: \"Source Sans Pro, sans-serif\",\n      transition: \"all 0.16s ease-in-out\",\n      \"&:focus\": {\n        boxShadow: `${alpha(theme.palette.primary.main, 0.25)} 0 0 0 2px`,\n        borderColor: theme.palette.primary.main\n      }\n    }\n  },\n  noWorkflows: {\n    width: \"100%\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    color: \"#DDDDDD\",\n    fontSize: \"18px\",\n    fontWeight: \"bold\",\n    margin: \"32px 0px\"\n  },\n  modalActions: {\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    marginTop: \"auto\",\n    width: \"100%\",\n    columnGap: \"16px\",\n    \"& a\": {\n      \"&:hover\": {\n        textDecoration: \"none\"\n      }\n    }\n  },\n  closeIcon\n};\n","\"use strict\";\nimport { SortableColumnId } from \"../types\";\nexport const initialModalsOpen = {\n  resend: false,\n  email: false,\n  sms: false,\n  changeStatus: false,\n  addToEvent: false,\n  inviteToTimeslot: false,\n  externalEmail: false,\n  exportToPdf: false,\n  move: false,\n  exportToOnboard: false,\n  exportToFoundu: false,\n  ceridianDayforce: false,\n  aiInsights: false,\n  delete: false,\n  newApplication: false\n};\nexport const defaultFilters = {\n  status: [],\n  country: [],\n  suburb: [],\n  rating: [0, 100],\n  excludeApplicantsWithoutRating: false\n};\nexport const applicantDetailsDefault = {\n  firstName: { error: \"\", required: true, value: \"\" },\n  lastName: { error: \"\", required: true, value: \"\" },\n  email: { error: \"\", required: true, value: \"\" },\n  phone: { error: \"\", required: true, value: \"\" },\n  phone2: { error: \"\", required: false, value: \"\" },\n  addressFirstLine: { error: \"\", required: true, value: \"\" },\n  addressSecondLine: { error: \"\", required: false, value: \"\" },\n  suburb: { error: \"\", required: true, value: \"\" },\n  postcode: { error: \"\", required: true, value: \"\" },\n  country: { error: \"\", required: true, value: null },\n  region: { error: \"\", required: true, value: null },\n  employeeId: { error: \"\", required: false, value: \"\" },\n  gender: { error: \"\", required: false, value: { id: \"\", label: \"\" } }\n};\nexport const sortableColumnsDefaults = [\n  {\n    id: SortableColumnId.ID,\n    label: \"ID\",\n    sortable: false,\n    canToggle: false,\n    enabled: true\n  },\n  {\n    id: SortableColumnId.CANDIDATE,\n    label: \"Candidate\",\n    sortable: true,\n    canToggle: false,\n    enabled: true\n  },\n  {\n    id: SortableColumnId.GENDER,\n    label: \"Gender\",\n    sortable: true,\n    canToggle: true,\n    enabled: false\n  },\n  {\n    id: SortableColumnId.SUBURB,\n    label: \"Suburb\",\n    sortable: true,\n    canToggle: true,\n    enabled: true\n  },\n  {\n    id: SortableColumnId.STATE,\n    label: \"State\",\n    sortable: true,\n    canToggle: true,\n    enabled: false\n  },\n  {\n    id: SortableColumnId.COUNTRY,\n    label: \"Country\",\n    sortable: true,\n    canToggle: true,\n    enabled: true\n  },\n  {\n    id: SortableColumnId.DATE,\n    label: \"Date\",\n    sortable: true,\n    canToggle: true,\n    enabled: true\n  },\n  {\n    id: SortableColumnId.RATING,\n    label: \"Rating\",\n    sortable: true,\n    canToggle: true,\n    enabled: true\n  },\n  {\n    id: SortableColumnId.STATUS,\n    label: \"Status\",\n    sortable: true,\n    canToggle: true,\n    enabled: true\n  },\n  {\n    id: SortableColumnId.NOTES,\n    label: \"Notes\",\n    sortable: false,\n    canToggle: true,\n    enabled: false\n  },\n  {\n    id: SortableColumnId.PERMANENT_RECORD,\n    label: \"Permanent Record\",\n    sortable: false,\n    canToggle: true,\n    enabled: false\n  },\n  {\n    id: SortableColumnId.NOTE_PAD,\n    label: \"Notepad\",\n    sortable: false,\n    canToggle: true,\n    enabled: false\n  },\n  {\n    id: SortableColumnId.PHONE,\n    label: \"Phone\",\n    sortable: false,\n    canToggle: true,\n    enabled: false\n  },\n  {\n    id: SortableColumnId.CANDIDATE_TAGS,\n    label: \"Candidate Tags\",\n    sortable: false,\n    canToggle: true,\n    enabled: true\n  }\n];\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport {\n  statusClampCommonStyles,\n  statusClampDropdownStyles,\n  statusClampHoverStyles,\n  candidateSearchCommonStyles,\n  actionsModalReducedPaddingCommonStyles,\n  filterPopoverHeaderCommonStyles,\n  actionsMenuPaperCommonStyles,\n  actionsMenuSpanCommonStyles,\n  rightArrowStyles,\n  leftArrowStyles,\n  baseButtonStyles,\n  selectedApplicantsTableStyles,\n  selectedApplicantsTableRowStyles,\n  modalConfirmationButtonCommonStyles\n} from \"../../shared/commonStyles\";\nimport {\n  statusClamp,\n  notesEditSaveButton,\n  notesCancelButton,\n  scrollShadowLeft,\n  scrollShadowRight,\n  searchInput,\n  chip,\n  chipPacket,\n  chipSelected,\n  fileName,\n  editNotePopover,\n  newApplicationButton,\n  sortableSwitchLabels,\n  filterSwitchLabels,\n  rowSelect,\n  pagination,\n  csvExportModal,\n  csvExportHeader,\n  csvExportSubheader,\n  closeIcon,\n  switchLabels,\n  clearButton,\n  modalSendButton,\n  deleteApplicant,\n  link,\n  copyButton,\n  actionModalFormLine,\n  csvExportButton,\n  applyButton,\n  actionButton,\n  filterPopoverContent,\n  paginationContainer,\n  selectedApplicantsTableHeader,\n  checkboxLabel,\n  selectedTooltip,\n  rowSelectContainer,\n  checkboxContainer\n} from \"../../shared/styleClasses\";\nexport const classes = {\n  applicationsContainer: {\n    paddingTop: \"6px\"\n  },\n  text: {\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    fontSize: \"14px\"\n  },\n  tableWrapper: {\n    tableLayout: \"auto !important\",\n    minWidth: \"750px\",\n    border: \"none\",\n    \"td, th, tr, thead\": {\n      fontFamily: \"Source Sans Pro, sans-serif\",\n      border: \"none\",\n      backgroundColor: \"#FFFFFF\",\n      textTransform: \"none\"\n    },\n    th: {\n      color: theme.palette.primary.main,\n      fontWeight: \"bold\",\n      paddingBottom: \"16px\",\n      \"& .Mui-active\": {\n        color: theme.palette.primary.main\n      }\n    },\n    tr: {\n      fontSize: \"16px\",\n      borderBottom: \"1px solid #DDDDDD\"\n    }\n  },\n  checkbox: {\n    color: \"#aaa !important\",\n    \"& .MuiSvgIcon-root\": {\n      fontSize: \"20px\"\n    },\n    \"&.Mui-checked\": {\n      color: \"#15C7C0 !important\"\n    }\n  },\n  sortable: {\n    \"&:hover\": {\n      color: \"#0C74A4\"\n    },\n    \"& .MuiTableSortLabel-icon\": {\n      color: \"darkgrey !important\"\n    }\n  },\n  candidateCell: {\n    display: \"flex\",\n    marginLeft: 1,\n    alignItems: \"center\",\n    \"& a\": {\n      color: \"#666666\",\n      fontWeight: \"bold\",\n      \"&:hover\": {\n        textDecoration: \"none\"\n      }\n    }\n  },\n  sticky: {\n    position: \"sticky\",\n    left: \"0px\",\n    background: \"white\",\n    zIndex: 1\n  },\n  stickyRight: {\n    position: \"sticky\",\n    right: \"0px\",\n    background: \"white\"\n  },\n  paginationParent: {\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    marginTop: \"20px\"\n  },\n  rowSelectContainer,\n  paginationContainer,\n  pagination,\n  rowSelect,\n  paginationMenuItems: {\n    \"& li\": {\n      fontFamily: \"Source Sans Pro\"\n    }\n  },\n  noApplications: {\n    width: \"100%\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    color: \"#DDDDDD\",\n    fontSize: \"18px\",\n    fontWeight: \"bold\",\n    margin: \"32px 0px\"\n  },\n  skeletonContainer: {\n    borderBottom: \"1px solid #DDDDDD\",\n    padding: \"10px 0px\"\n  },\n  selectedTooltip,\n  fadeIn: {\n    visibility: \"visible\",\n    opacity: \"1\",\n    transform: \"translateX(0px)\",\n    transition: \"visibility 0s linear 0s, opacity 300ms, transform 300ms\"\n  },\n  fadeOut: {\n    visibility: \"hidden\",\n    opacity: \"0\",\n    transform: \"translateX(20px)\",\n    transition: \"visibility 0s linear 300ms, opacity 300ms, transform 300ms\"\n  },\n  actionsMenu: {\n    \"& .MuiPaper-root\": __spreadProps(__spreadValues({}, actionsMenuPaperCommonStyles), {\n      width: \"135px\",\n      marginTop: \"6px\"\n    }),\n    \"& span\": actionsMenuSpanCommonStyles\n  },\n  selectedTooltipText: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"20px\",\n    fontWeight: \"600\",\n    color: \"#666666\"\n  },\n  selectedTooltipButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"16px\",\n    fontWeight: \"bold\",\n    textTransform: \"none\",\n    color: \"#D6827D\",\n    backgroundColor: \"rgba(214, 130, 125, 0.22)\",\n    boxShadow: \"none\",\n    width: \"100px\",\n    height: \"40px\",\n    borderRadius: \"6px\",\n    \"&:hover\": {\n      backgroundColor: \"rgba(214, 130, 125, 0.33)\",\n      boxShadow: \"none\"\n    }\n  },\n  selectedTooltipButtonsContainer: {\n    display: \"flex\",\n    columnGap: \"18px\",\n    marginLeft: \"8px\"\n  },\n  selectedAllTooltipText: {\n    color: \"#084D6D\",\n    fontWeight: \"700\",\n    textDecoration: \"underline\",\n    borderRadius: \"10px\",\n    padding: \"4px 12px\",\n    \"&:hover\": {\n      background: \"rgba(171, 205, 239, 0.3)\"\n    }\n  },\n  actionsContianer: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    gap: \"22px\",\n    marginBottom: \"50px\"\n  },\n  actionButton,\n  actionButtonAI: __spreadProps(__spreadValues({}, baseButtonStyles), {\n    color: \"#2D388D\",\n    backgroundColor: \"#AFBCFF30\",\n    padding: \"10px 24px\",\n    border: \"none\",\n    \"&:hover\": {\n      backgroundColor: \"#AFBCFF55\",\n      border: \"none\"\n    }\n  }),\n  deleteApplicant,\n  filtersRow: {\n    display: \"flex\",\n    alignItems: \"flex-end\",\n    justifyContent: \"space-between\",\n    marginBottom: \"30px\",\n    columnGap: \"17px\"\n  },\n  iconButton: {\n    border: \"1px solid #EAEEF0\",\n    backgroundColor: \"#FFFFFF\",\n    borderRadius: \"6px\",\n    width: \"69px\",\n    height: \"60px\",\n    \"& svg\": {\n      fontSize: \"30px\",\n      color: \"#084D6D\"\n    }\n  },\n  iconButtonOpen: {\n    backgroundColor: \"rgba(8,77,109,0.121)\"\n  },\n  popover: {\n    marginTop: \"15px\"\n  },\n  popoverContent: {\n    width: \"272px\",\n    padding: \"22px 0px 22px 24px\",\n    boxShadow: \"0px 2px 14px rgba(48,90,111,0.16)\"\n  },\n  sortableField: {\n    display: \"flex\",\n    alignItems: \"center\",\n    width: \"204px\"\n  },\n  sortableSwitchLabels,\n  switchLabels,\n  switch: {\n    \"& .MuiSwitch-thumb\": {\n      color: \"#FFFFFF\"\n    },\n    \"& :hover\": {\n      backgroundColor: \"rgba(91, 196, 191, 0.17)\"\n    }\n  },\n  switchActive: {\n    \"& .MuiSwitch-thumb\": {\n      color: \"#5BC4BF\"\n    }\n  },\n  filterSwitch: {\n    transform: \"translateX(10px)\",\n    \"& .MuiSwitch-thumb\": {\n      color: \"#FFFFFF\"\n    },\n    \"& :hover\": {\n      backgroundColor: \"rgba(91, 196, 191, 0.17)\"\n    }\n  },\n  filterSwitchActive: {\n    transform: \"translateX(10px)\",\n    \"& .MuiSwitch-thumb\": {\n      color: \"#5BC4BF\"\n    }\n  },\n  filterSwitchLabels,\n  labelActive: {\n    \"& .MuiFormControlLabel-label\": {\n      color: \"#CCCCCC\",\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"14px\",\n      fontWeight: \"bold\"\n    }\n  },\n  searchInput,\n  newApplicationButton,\n  attachmentsHeader: {\n    minWidth: \"86px\"\n  },\n  attachmentsCell: {\n    minWidth: \"86px\",\n    width: \"50px\",\n    \"& svg\": {\n      color: \"#666666\",\n      fontSize: \"18px\",\n      cursor: \"pointer\"\n    }\n  },\n  actionItems: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\"\n  },\n  attachmentItem: {\n    display: \"flex\",\n    alignItems: \"center\",\n    columnGap: \"10px\",\n    padding: \"14px\",\n    cursor: \"pointer\",\n    \"&:hover\": {\n      backgroundColor: \"#F5F5F5\"\n    }\n  },\n  fileIcon: {\n    color: theme.palette.primary.main\n  },\n  fileName,\n  filterPopoverContent,\n  scrollableFilters: {\n    height: \"fit-content\",\n    padding: \"26px\",\n    paddingTop: \"0px\"\n  },\n  filterPopoverHeader: __spreadProps(__spreadValues({}, filterPopoverHeaderCommonStyles), {\n    top: \"0px\"\n  }),\n  clearButton,\n  applyButton,\n  filterOptionContainer: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    color: \"#084D6D\",\n    marginBottom: \"12px\"\n  },\n  checkboxContainer,\n  csvExportModal,\n  csvExportHeader,\n  csvExportSubheader,\n  csvExportCheckboxContainer: {\n    display: \"flex\",\n    width: \"100%\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    fontSize: \"16px\",\n    fontFamily: \"Source Sans Pro\",\n    fontWeight: \"bold\",\n    color: \"#084d6d\"\n  },\n  closeIcon,\n  chipPacket,\n  chipSelected,\n  chip,\n  csvExportButton,\n  // Application modal\n  actionsModal: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    padding: \"60px\",\n    maxWidth: \"900px\",\n    width: \"100%\",\n    height: \"84vh\",\n    borderRadius: \"6px\",\n    dropShadow: \"0px 2px 14px #305A6F29\",\n    position: \"absolute\",\n    background: \"#FFFFFF\",\n    top: \"50%\",\n    left: \"50%\",\n    transform: \"translate(-50%, -50%)\"\n  },\n  modalHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"28px\",\n    fontWeight: \"bold\",\n    color: theme.palette.primary.main\n  },\n  modalContent: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    height: \"100%\",\n    overflowY: \"auto\",\n    overflowX: \"hidden\",\n    margin: \"46px 0px\"\n  },\n  modalFooter: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    width: \"100%\",\n    justifyContent: \"flex-end\",\n    columnGap: \"20px\"\n  },\n  modalFormLine: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    flexDirection: \"row\",\n    columnGap: \"50px\",\n    rowGap: \"26px\",\n    alignItems: \"center\",\n    marginBottom: \"26px\",\n    width: \"100%\"\n  },\n  modalConfirmationButton: __spreadProps(__spreadValues({}, modalConfirmationButtonCommonStyles), {\n    padding: \"8px 14px\",\n    minWidth: \"176px\",\n    minHeight: \"40.5px\"\n  }),\n  modalCancelButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    width: \"100px\",\n    textTransform: \"none\",\n    textDecoration: \"underline\",\n    color: theme.palette.error.main,\n    backgroundColor: \"#FFFFFF\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    padding: \"5px 0px\",\n    \"&:hover\": {\n      backgroundColor: \"#FFFFFF\",\n      textDecoration: \"none\",\n      boxShadow: \"none\"\n    },\n    \"&:focus\": {\n      outline: \"none\"\n    }\n  },\n  fullWidthFieldContainer: {\n    maxWidth: \"630px\",\n    width: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    marginBottom: \"26px\",\n    rowGap: \"26px\"\n  },\n  fullWidthField: {\n    width: \"100%\"\n  },\n  uploadSection: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    width: \"100%\",\n    \"& h3\": {\n      color: \"#939393\",\n      fontSize: \"19px\",\n      fontWeight: \"Bold\",\n      marginBottom: \"14px\"\n    }\n  },\n  uploadSectionContent: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    columnGap: \"62px\",\n    rowGap: \"34px\",\n    marginBlock: \"18px\"\n  },\n  uploadContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    margin: \"2px\",\n    rowGap: \"8px\",\n    fontSize: \"17px\",\n    fontWeight: \"600\",\n    color: \"#AAAAAA\",\n    position: \"relative\"\n  },\n  uploadLabel: {\n    \"& span\": {\n      color: theme.palette.error.main,\n      marginLeft: \"4px\"\n    }\n  },\n  uploadError: {\n    color: theme.palette.error.main,\n    fontSize: \"13px\",\n    position: \"absolute\",\n    bottom: \"-26px\"\n  },\n  candidateIcon: {\n    fontSize: \"21px\",\n    margin: \"0px 9px 1.5px 0px\"\n  },\n  state: {\n    fontSize: \"13px\",\n    fontWeight: \"bold\",\n    borderRadius: \"6px\",\n    textTransform: \"uppercase\",\n    padding: \"8px 24px\",\n    width: \"auto\",\n    height: \"35px\"\n  },\n  approved: {\n    fontSize: \"13px\",\n    fontWeight: \"bold\",\n    borderRadius: \"6px\",\n    textTransform: \"uppercase\",\n    padding: \"8px 24px\",\n    width: \"auto\",\n    height: \"35px\",\n    color: \"#8CCF95\",\n    backgroundColor: \"RGBA(140, 207, 149, 0.12)\"\n  },\n  pending: {\n    fontSize: \"13px\",\n    fontWeight: \"bold\",\n    borderRadius: \"6px\",\n    textTransform: \"uppercase\",\n    padding: \"8px 24px\",\n    width: \"auto\",\n    height: \"35px\",\n    color: \"#E6A052\",\n    backgroundColor: \"RGBA(230, 160, 82, 0.12)\"\n  },\n  draft: {\n    fontSize: \"13px\",\n    fontWeight: \"bold\",\n    borderRadius: \"6px\",\n    textTransform: \"uppercase\",\n    padding: \"8px 24px\",\n    width: \"auto\",\n    height: \"35px\",\n    color: \"#FFFFFF\",\n    backgroundColor: \"#CCCCCC\"\n  },\n  declined: {\n    fontSize: \"13px\",\n    fontWeight: \"bold\",\n    borderRadius: \"6px\",\n    textTransform: \"uppercase\",\n    padding: \"8px 24px\",\n    width: \"auto\",\n    height: \"35px\",\n    color: \"#D6827D\",\n    backgroundColor: \"RGBA(214, 130, 125, 0.12)\"\n  },\n  statusClamp,\n  statusColour: {\n    position: \"absolute\",\n    height: \"6px\",\n    width: \"6px\",\n    borderRadius: \"50%\",\n    top: \"calc(50% - 3px)\",\n    left: \"10px\"\n  },\n  noDropdown: {\n    border: \"1px solid #FFFFFF\",\n    \"& .status-dropdown-full\": {\n      border: \"1px solid #FFFFFF\"\n    },\n    \"&::after\": {\n      display: \"none\"\n    }\n  },\n  noStatuses: {\n    width: \"100%\",\n    paddingLeft: \"18px\",\n    display: \"flex\"\n  },\n  statusDropdown: {\n    border: \"1px solid #CCCCCC\",\n    borderRadius: \"6px\",\n    cursor: \"pointer\",\n    \"&::after\": {\n      display: \"block\"\n    }\n  },\n  statusDropdownItem: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"13px\",\n    padding: \"6px 12px\",\n    cursor: \"pointer\",\n    \"&:hover\": {\n      backgroundColor: \"#F1F1F1\"\n    }\n  },\n  statusDropdownItems: {\n    \"& .MuiPaper-root\": {\n      width: \"200px\",\n      maxHeight: \"250px\",\n      overflowY: \"auto\",\n      borderRadius: \"6px\",\n      marginTop: \"6px\"\n    }\n  },\n  statusLoader: {\n    color: theme.palette.primary.main,\n    position: \"absolute\",\n    zIndex: \"4\",\n    top: \"calc(50% - 9px)\",\n    left: \"calc(50% - 9px)\"\n  },\n  applicationStatus: {\n    \"& span\": {\n      cursor: \"pointer\"\n    }\n  },\n  formCheckbox: {\n    color: \"#ddd !important\",\n    \"& .MuiSvgIcon-root\": {\n      fontSize: \"20px\"\n    },\n    \"&.Mui-checked\": {\n      color: \"#15C7C0 !important\"\n    }\n  },\n  checkboxLabel,\n  actionModalFormLine,\n  actionModalHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"28px\",\n    fontWeight: \"bold\",\n    color: theme.palette.primary.main,\n    marginLeft: \"8px\"\n  },\n  actionsModalReducedPadding: actionsModalReducedPaddingCommonStyles,\n  modalCandidatesHeader: {\n    color: \"#939393\",\n    fontSize: \"19px\",\n    fontWeight: \"Bold\",\n    marginBottom: 3\n  },\n  modalSendButton,\n  selectedApplicantsTable: __spreadProps(__spreadValues({}, selectedApplicantsTableStyles), {\n    minWidth: \"700px\",\n    \"td, th, tr, thead\": __spreadProps(__spreadValues({}, selectedApplicantsTableRowStyles), {\n      padding: \"5px 8px 10px 0px\"\n    })\n  }),\n  selectedApplicantsTableHeader,\n  statusClampSelected: __spreadProps(__spreadValues({}, statusClampCommonStyles), {\n    width: \"140px\",\n    padding: \"6px 20px 5px 24px\",\n    \"& .status-dropdown-full\": __spreadProps(__spreadValues({}, statusClampDropdownStyles), {\n      width: \"140px\",\n      padding: \"6px 20px 5px 24px\"\n    }),\n    \"&:hover\": statusClampHoverStyles\n  }),\n  statusDropdownSelected: {\n    border: \"1px solid #CCCCCC\",\n    borderRadius: \"6px\",\n    \"&::after\": {\n      display: \"block\"\n    }\n  },\n  candidateSearch: __spreadProps(__spreadValues({}, candidateSearchCommonStyles), {\n    \"& fieldset\": {\n      borderColor: \"#939393\",\n      backgroundColor: \"#AAAAAA09\"\n    },\n    \"&:hover\": {\n      \"& fieldset\": {\n        borderColor: \"#6DB5B1 !important\"\n      }\n    }\n  }),\n  sourceContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    marginBottom: \"30px\",\n    \"& h3\": {\n      color: \"#939393\",\n      fontSize: \"19px\",\n      fontWeight: \"Bold\",\n      marginBlock: \"30px\",\n      marginLeft: \"2px\"\n    }\n  },\n  saveSMSTemplateContainer: {\n    position: \"relative\",\n    display: \"flex\",\n    alignItems: \"baseline\",\n    columnGap: \"40px\",\n    marginLeft: \"15px\",\n    marginBottom: \"20px\"\n  },\n  saveSMSTemplateButton: __spreadProps(__spreadValues({}, modalConfirmationButtonCommonStyles), {\n    padding: \"0px 19px\",\n    height: \"37.5px\",\n    width: \"132px\"\n  }),\n  saveSMSTemplateError: {\n    color: theme.palette.error.main,\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    fontSize: \"13px\",\n    position: \"absolute\",\n    bottom: \"-24px\",\n    left: \"4px\"\n  },\n  modalSection: {\n    marginLeft: \"15px\",\n    marginTop: \"15px\"\n  },\n  formLabel: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"16px\",\n    color: \"#838383\",\n    marginBottom: \"5px\"\n  },\n  placeholderText: {\n    fontFamily: \"Source Sans Pro\",\n    color: \"#838383\",\n    fontSize: \"11px\",\n    margin: \"6px 0px 20px 1px\"\n  },\n  fileIconContainer: {\n    display: \"flex\",\n    alignItems: \"center\",\n    width: \"90%\"\n  },\n  formError: {\n    color: theme.palette.error.main,\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    fontSize: \"13px\",\n    position: \"absolute\",\n    bottom: \"-24px\",\n    left: \"4px\"\n  },\n  formGroup: {\n    position: \"relative\",\n    marginTop: \"36px\",\n    marginBottom: \"20px\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    marginLeft: \"15px\"\n  },\n  formSwitchLabels: {\n    justifyContent: \"space-between\",\n    width: \"200px\",\n    marginLeft: \"3px\",\n    \"& .MuiFormControlLabel-label\": {\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"16px\",\n      color: \"#939393\"\n    },\n    \"& .MuiSwitch-track\": {\n      backgroundColor: \"rgba(0,0,0,0.38)\",\n      opacity: \"1\"\n    },\n    \"& .Mui-checked+.MuiSwitch-track\": {\n      backgroundColor: \"rgb(91, 196, 191, 0.17) !important\",\n      opacity: \"1 !important\"\n    }\n  },\n  timeslotsContainer: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    justifyContent: \"space-between\"\n  },\n  calendar: {\n    \".MuiPickersCalendarHeader-root\": {\n      display: \"flex\",\n      alignItems: \"center\",\n      justifyItems: \"center\",\n      position: \"relative\",\n      paddingInline: \"initial\"\n    },\n    \"& .Mui-selected\": {\n      backgroundColor: `${theme.palette.action.main} !important`\n    },\n    \"& .MuiTypography-root\": {\n      fontFamily: \"Source Sans Pro\",\n      color: \"#939393\",\n      fontSize: \"13px\",\n      marginInline: \"5px\"\n    },\n    \".MuiPickersCalendarHeader-root:first-child\": {\n      order: 0\n    },\n    \".MuiPickersArrowSwitcher-root\": {\n      display: \"inline-flex\",\n      \"& .MuiIconButton-root\": {\n        color: \"#bfbfc0\",\n        \"& svg\": {\n          width: \"1.15em\",\n          height: \"1.15em\"\n        }\n      }\n    },\n    \".MuiPickersCalendarHeader-label\": {\n      textAlign: \"center\"\n    },\n    \".MuiPickersArrowSwitcher-spacer\": {\n      width: \"220px\"\n    },\n    \"& .MuiPickersArrowSwitcher-root\": {\n      width: \"100%\",\n      \"& .MuiPickersArrowSwitcher-spacer\": {\n        width: \"100%\"\n      },\n      \"& .MuiIconButton-root\": {\n        color: \"#bfbfc0\",\n        \"& svg\": {\n          width: \"1.15em\",\n          height: \"1.15em\"\n        }\n      }\n    },\n    \"& .MuiPickersDay-root\": {\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"14.5px\",\n      marginInline: \"5px\"\n    },\n    \".MuiPickersArrowSwitcher-button\": {\n      paddingRight: \"7px\"\n    }\n  },\n  dailyTimeslots: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    width: \"410px\"\n  },\n  dailyTimeslotsHeader: {\n    fontSize: \"18px\",\n    color: \"#939393\",\n    marginBottom: \"26px\",\n    marginTop: \"17px\"\n  },\n  dailyTimeslotsContainer: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    gap: \"20px\"\n  },\n  addToEventTimeslotsContainer: {\n    width: \"100%\",\n    rowGap: \"12px\",\n    height: \"275px\",\n    overflow: \"auto\",\n    position: \"relative\",\n    \"&::-webkit-scrollbar\": {\n      display: \"none\"\n    }\n  },\n  addToEventTimeslot: {\n    borderRadius: \"6px\",\n    padding: \"8px 16px\",\n    fontWeight: \"bold\",\n    flexDirection: \"row\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\"\n  },\n  addToEventSecondStepContainer: {\n    flexGrow: 1,\n    padding: \"0px 8px\",\n    overflow: \"auto\"\n  },\n  addToEventEmailPlaceholder: {\n    fontSize: \"11px\",\n    color: \"#838383\",\n    lineBreak: \"anywhere\"\n  },\n  addToEventListboxProps: {\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    color: \"#333333\",\n    maxHeight: \"200px\"\n  },\n  addToEventCharacterCount: {\n    paddingRight: 1,\n    flexDirection: \"row-reverse\",\n    color: \"#838383\",\n    minWidth: \"70px\"\n  },\n  timeslot: {\n    position: \"relative\",\n    border: \"1px solid #eaeef0\",\n    borderRadius: \"4px\",\n    width: \"115px\",\n    height: \"46px\",\n    padding: \"7px 11px\"\n  },\n  expandedTimeslot: {\n    position: \"absolute\",\n    border: \"1px solid #eaeef0\",\n    borderRadius: \"4px\",\n    backgroundColor: \"#fff\",\n    width: \"115px\",\n    height: \"fit-content\",\n    padding: \"7px 11px\",\n    zIndex: \"2\",\n    top: \"-1px\",\n    left: \"-1px\"\n  },\n  timeslotTime: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    color: \"#666666\",\n    fontWeight: \"bold\",\n    lineHeight: \"1.2\"\n  },\n  timeslotType: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"11px\",\n    color: \"#666666\",\n    fontWeight: \"bold\",\n    lineHeight: \"1.2\"\n  },\n  ellipsis: {\n    whiteSpace: \"nowrap\",\n    overflow: \"hidden\",\n    textOverflow: \"ellipsis\"\n  },\n  timeslotNote: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"9px\",\n    color: \"#939393\",\n    paddingTop: \"4px\",\n    lineHeight: \"1.2\"\n  },\n  noTimeslots: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    color: \"#939393\",\n    fontWeight: \"bold\",\n    width: \"100%\",\n    height: \"210px\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\"\n  },\n  characterCount: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"13px\",\n    color: \"#999999\",\n    fontWeight: \"600\",\n    position: \"absolute\",\n    bottom: \"-22px\",\n    right: \"58px\"\n  },\n  centerColumn: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\"\n  },\n  exportErrors: {\n    rowGap: \"18px\",\n    \"& h4\": {\n      color: theme.palette.primary.main,\n      marginTop: \"0px\",\n      fontSize: \"24px\"\n    },\n    \"& p\": {\n      marginTop: \"0px\"\n    }\n  },\n  linkContainer: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    columnGap: \"20px\",\n    width: \"100%\",\n    \"& a:hover\": {\n      textDecoration: \"none\"\n    }\n  },\n  link,\n  copyButton,\n  noLinkStyling: {\n    \"& a\": {\n      color: \"rgba(0, 0, 0, 0.87)\",\n      \"&:hover\": {\n        textDecoration: \"none\",\n        color: \"rgba(0, 0, 0, 0.87)\"\n      }\n    }\n  },\n  filterButton: {\n    border: \"1px solid #DDDDDD\",\n    borderRadius: 1,\n    width: \"fit-content\",\n    padding: \"8px 12px\"\n  },\n  noteContainer: {\n    \"& .MuiTextField-root\": { width: \"27ch\" },\n    width: \"fit-content\"\n  },\n  notesContainer: {\n    flexDirection: \"column\",\n    rowGap: \"4px\",\n    paddingLeft: \"16px\",\n    maxHeight: \"100px\",\n    overflowY: \"auto\",\n    textOverflow: \"ellipsis\"\n  },\n  noteTitle: {\n    fontWeight: \"bold\"\n  },\n  noteUser: {\n    margin: \"10px 0\"\n  },\n  notesExpanded: {\n    maxHeight: \"unset\"\n  },\n  notesExpandContract: {\n    position: \"absolute\",\n    bottom: \"8px\",\n    right: \"8px\",\n    color: theme.palette.primary.main,\n    cursor: \"pointer\"\n  },\n  noteEditButtonContainer: {\n    marginTop: theme.spacing(2),\n    gap: theme.spacing(2),\n    display: \"flex\",\n    justifyContent: \"center\",\n    width: \"fit-content\"\n  },\n  scrollShadowLeft,\n  scrollShadowRight,\n  scrollShadowVisible: {\n    \"&&::after\": {\n      opacity: \"20%\"\n    }\n  },\n  notesTitle: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"16px\",\n    color: theme.palette.primary.main,\n    fontWeight: \"bold\",\n    marginBottom: \"12px\",\n    width: \"100%\"\n  },\n  editNotePopover,\n  noteInput: {\n    marginBottom: \"4px\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"12px\",\n    \"& input\": {\n      padding: \"9.5px 14px\"\n    }\n  },\n  notesButtonContainer: {\n    width: \"100%\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"flex-end\",\n    columnGap: \"10px\"\n  },\n  notesEditSaveButton,\n  notesCancelButton,\n  arrowsContainer: {\n    height: 0,\n    overflow: \"visible\",\n    position: \"sticky\",\n    top: \"200px\",\n    zIndex: \"10\",\n    transform: \"translateY(100px)\"\n  },\n  leftArrow: __spreadProps(__spreadValues({}, leftArrowStyles), {\n    position: \"sticky\",\n    zIndex: \"11\"\n  }),\n  rightArrow: __spreadProps(__spreadValues({}, rightArrowStyles), {\n    position: \"sticky\",\n    zIndex: \"11\"\n  }),\n  showArrows: {\n    display: \"flex\",\n    animation: \"$fadeIn linear 0.17s\"\n  },\n  \"@keyframes fadeIn\": {\n    \"0%\": { opacity: 0 },\n    \"100%\": { opacity: 0.9 }\n  },\n  rating: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    borderRadius: \"3px\",\n    width: \"58px\",\n    height: \"24px\"\n  },\n  tableSettingsHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"16px\",\n    fontWeight: \"bold\",\n    paddingBottom: 1,\n    paddingLeft: \"4px\"\n  },\n  aiQuestionsButton: {\n    marginLeft: \"8px\",\n    padding: \"4px\",\n    background: \"linear-gradient(225.64deg, #E548FF -23.43%, #084D6D 140.57%, #084D6D 140.58%, #5BC4C0 140.6%)\",\n    transition: \"all 250ms linear\",\n    \"&:hover\": {\n      filter: \"brightness(1.16)\"\n    },\n    \"& svg\": {\n      fontSize: \"11px !important\",\n      color: \"#FFFFFF !important\"\n    }\n  },\n  titleLink: {\n    \"& a\": {\n      color: \"#666666\",\n      fontWeight: \"bold\",\n      \"&:hover\": {\n        textDecoration: \"none\"\n      }\n    },\n    paddingLeft: 2\n  },\n  enabledDropdown: {\n    \"& .MuiPaper-root\": {\n      display: \"flex\",\n      flexDirection: \"column\",\n      rowGap: \"11px\",\n      padding: \"14px 20px\",\n      marginTop: \"6px\",\n      borderRadius: \"6px\",\n      backgroundColor: \"#FFFFFF\"\n    },\n    cursor: \"pointer\"\n  },\n  availabilityColumnCell: {\n    padding: 1,\n    borderRadius: \"6px\",\n    alignItems: \"center\",\n    fontWeight: \"bold\",\n    width: \"70%\"\n  },\n  notesContainer: {\n    width: \"300px\",\n    minHeight: \"150px\",\n    padding: \"17px 17px 14px 17px\"\n  }\n};\n","\"use strict\";\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport {\n  pagination,\n  paginationContainer,\n  rowSelect,\n  rowSelectContainer\n} from \"../../shared/styleClasses\";\nexport const classes = {\n  tableWrapper: {\n    tableLayout: \"auto !important\",\n    minWidth: \"1000px\",\n    border: \"none\",\n    \"td, th, tr, thead\": {\n      fontFamily: \"Source Sans Pro, sans-serif\",\n      border: \"none\",\n      backgroundColor: \"#FFFFFF\",\n      textTransform: \"none\",\n      padding: \"12px\"\n    },\n    th: {\n      color: theme.palette.primary.main,\n      fontSize: \"16px\",\n      fontWeight: \"bold\",\n      paddingBottom: \"16px\"\n    }\n  },\n  fileIconContainer: {\n    display: \"flex\",\n    alignItems: \"center\",\n    cursor: \"pointer\"\n  },\n  fileIcon: {\n    width: \"50px\",\n    height: \"50px\",\n    borderRadius: \"3px\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    marginRight: \"20px\",\n    backgroundColor: \"#084D6D10\",\n    \"& svg\": {\n      color: theme.palette.primary.main,\n      margin: \"0px 2px 2px 0px\"\n    }\n  },\n  fileName: {\n    color: theme.palette.primary.main,\n    fontSize: \"15px\",\n    fontWeight: \"bold\"\n  },\n  fileDate: {\n    color: \"#999999\"\n  },\n  fileLinkContainer: {\n    display: \"flex\",\n    alignItems: \"center\",\n    columnGap: \"15px\",\n    \"& a\": {\n      color: \"#333333\",\n      fontSize: \"15px\",\n      \"&:hover\": {\n        color: \"#000000\",\n        textDecoration: \"none\"\n      }\n    }\n  },\n  fileAttachedBy: {\n    color: \"#000000\",\n    fontSize: \"15px\"\n  },\n  copyButton: {\n    fontSize: \"10px\",\n    fontWeight: \"bold\",\n    backgroundColor: \"#5BC4BF1F\",\n    color: theme.palette.action.main,\n    borderRadius: \"6px\",\n    textTransform: \"none\",\n    \"&:hover\": {\n      backgroundColor: theme.palette.action.main,\n      color: \"#FFFFFF\"\n    }\n  },\n  noAttachments: {\n    width: \"100%\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    color: \"#DDDDDD\",\n    fontSize: \"18px\",\n    fontWeight: \"bold\",\n    margin: \"32px 0px\"\n  },\n  paginationParent: {\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    marginTop: \"20px\"\n  },\n  rowSelectContainer,\n  paginationContainer,\n  pagination,\n  rowSelect,\n  paginationMenuItems: {\n    \"& li\": {\n      fontFamily: \"Source Sans Pro\"\n    }\n  }\n};\n","\"use strict\";\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nexport const classes = {\n  pageContainer: {\n    padding: \"30px 30px\"\n  },\n  pageHeader: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    width: \"100%\",\n    \"& h2\": {\n      fontWeight: \"bold\",\n      fontSize: \"18px\",\n      lineHeight: \"1.2em\",\n      color: \"#666666\",\n      marginTop: \"0\",\n      \"@media (max-width: 1450px)\": {\n        fontSize: \"20px\"\n      },\n      \"@media (max-width: 1260px)\": {\n        fontSize: \"14px\"\n      }\n    }\n  },\n  attachmentsTitle: {\n    color: theme.palette.primary.main,\n    fontSize: \"13px\",\n    fontWeight: \"bold\",\n    paddingBottom: \"5px\",\n    width: \"70px\",\n    padding: \"0 6px\"\n  },\n  actionsContianer: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    gap: \"22px\",\n    padding: \"10px 0\"\n  },\n  actionButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"600\",\n    color: \"#666666\",\n    backgroundColor: \"#FFFFFF\",\n    padding: \"5px 23px\",\n    borderRadius: \"20px\",\n    border: \"1px solid #DDDDDD\",\n    textTransform: \"none\"\n  },\n  checkedPill: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"600\",\n    color: \"#5BC4BF\",\n    backgroundColor: \"#FFFFFF\",\n    padding: \"5px 23px\",\n    borderRadius: \"20px\",\n    border: \"1px solid #5BC4BF\",\n    textTransform: \"none\"\n  },\n  addAttachmentButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"12px\",\n    fontWeight: \"bold\",\n    textTransform: \"none\",\n    color: \"#5BC4BF\",\n    backgroundColor: \"#5BC4BF12\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    marginLeft: \"20px\",\n    \"&:hover\": {\n      backgroundColor: \"#4da8a412\",\n      boxShadow: \"none\"\n    }\n  },\n  tableWrapper: {\n    tableLayout: \"auto !important\",\n    minWidth: \"400px\",\n    border: \"none\",\n    overflowY: \"clip\",\n    \"td, th, tr, thead\": {\n      fontFamily: \"Source Sans Pro, sans-serif\",\n      border: \"none\",\n      backgroundColor: \"#FFFFFF\",\n      textTransform: \"none\",\n      padding: \"26px 10px\"\n    },\n    th: {\n      border: \"none\",\n      color: theme.palette.primary.main,\n      fontWeight: \"bold\",\n      paddingBottom: \"16px\",\n      \"& .Mui-active\": {\n        color: theme.palette.primary.main\n      }\n    },\n    tr: {\n      fontSize: \"16px\",\n      borderBottom: \"1px solid #DDDDDD\"\n    }\n  },\n  questionsContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    rowGap: \"40px\",\n    padding: \"24px 16px\"\n  },\n  checkbox: {\n    color: \"#DDDDDD\",\n    marginLeft: \"10px\",\n    \"&.Mui-checked\": {\n      color: theme.palette.action.main\n    },\n    \"& .MuiSvgIcon-root\": {\n      fontSize: \"22px\"\n    }\n  }\n};\n","\"use strict\";\nimport { theme } from \"../../../../ThemeContext/ThemeObject\";\nexport const classes = {\n  widget: {\n    border: \"1px solid #E3E3E3\",\n    borderRadius: \"3px\",\n    flex: \"40%\",\n    minWidth: \"600px\"\n  },\n  subcontainer: {\n    flex: \"40%\",\n    minWidth: \"600px\",\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    columnGap: \"50px\",\n    rowGap: \"50px\"\n  },\n  subWidget: {\n    marginTop: \"24px\",\n    flex: \"40%\",\n    borderRadius: \"3px\",\n    height: \"100px\",\n    minWidth: \"240px\"\n  },\n  widgetIcon: {\n    backgroundColor: \"#EDF2F5\",\n    padding: \"12px\",\n    borderRadius: \"16px\",\n    \"& svg\": {\n      color: theme.palette.primary.main,\n      fontSize: \"32px\"\n    }\n  },\n  widgetText: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    alignItems: \"flex-start\",\n    rowGap: \"6px\",\n    marginLeft: \"30px\"\n  },\n  widgetTextTitle: {\n    fontSize: \"12px\",\n    color: theme.palette.primary.main\n  },\n  widgetTextContent: {\n    fontSize: \"16px\",\n    fontWeight: \"600\",\n    color: \"#333333\"\n  },\n  widgetBlockContainer: {\n    display: \"flex\",\n    height: \"100%\",\n    width: \"100%\",\n    columnGap: \"50px\"\n  },\n  widgetBlock: {\n    border: \"1px solid #E3E3E3\",\n    borderRadius: \"3px\",\n    position: \"relative\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    width: \"50%\",\n    height: \"100%\"\n  },\n  widgetBlockText: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    alignItems: \"flex-start\",\n    marginLeft: \"12px\"\n  },\n  blockCount: {\n    fontSize: \"24px\",\n    color: theme.palette.primary.main,\n    fontWeight: \"bold\"\n  },\n  blockTitle: {\n    fontSize: \"10px\",\n    fontWeight: \"regular\",\n    color: \"#939393\"\n  },\n  widgetBlockIcon: {\n    backgroundColor: \"#EDF2F5\",\n    padding: \"0px\",\n    borderRadius: \"16px\"\n  }\n};\n","\"use strict\";\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport {\n  closeIcon,\n  pagination,\n  paginationContainer,\n  rowSelect,\n  rowSelectContainer\n} from \"../../shared/styleClasses\";\nexport const classes = {\n  tableWrapper: {\n    tableLayout: \"auto !important\",\n    marginTop: \"40px\",\n    minWidth: \"1000px\",\n    border: \"none\",\n    \"td, th, tr, thead\": {\n      maxWidth: \"240px\",\n      fontFamily: \"Source Sans Pro, sans-serif\",\n      border: \"none\",\n      backgroundColor: \"#FFFFFF\",\n      textTransform: \"none\",\n      padding: \"24px 12px 12px 12px\"\n    },\n    th: {\n      color: theme.palette.primary.main,\n      fontSize: \"14px\",\n      fontWeight: \"bold\",\n      padding: \"0px 12px 36px 12px\"\n    }\n  },\n  candidateTableWrapper: {\n    marginLeft: \"28px\",\n    tableLayout: \"auto !important\",\n    maxWidth: \"80%\",\n    border: \"none\",\n    \"td, th, tr, thead\": {\n      fontFamily: \"Source Sans Pro, sans-serif\",\n      border: \"none\",\n      backgroundColor: \"#FFFFFF\",\n      textTransform: \"none\",\n      padding: \"12px 0px 12px 0px\"\n    },\n    th: {\n      color: theme.palette.primary.main,\n      padding: \"24px 0px 0px 0px\",\n      fontSize: \"12px\"\n    }\n  },\n  status: {\n    textTransform: \"uppercase !important\",\n    display: \"flex\",\n    justifyContent: \"start\",\n    alignItems: \"center !important\"\n  },\n  details: {\n    color: \"#000000\",\n    disableRipple: \"true\",\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    \"&:hover\": {\n      cursor: \"pointer\"\n    }\n  },\n  widgetContainer: {\n    display: \"flex\",\n    width: \"100%\",\n    flexWrap: \"wrap\",\n    columnGap: \"50px\",\n    rowGap: \"50px\"\n  },\n  preview: {\n    color: \"#666666\",\n    fontSize: \"medium\",\n    \"&:hover\": {\n      cursor: \"pointer\"\n    }\n  },\n  attachmentPreviewModal: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    padding: \"60px\",\n    width: \"900px\",\n    height: \"775px\",\n    borderRadius: \"6px\",\n    dropShadow: \"0px 2px 14px #305A6F29\",\n    position: \"absolute\",\n    background: \"#FFFFFF\",\n    top: \"50%\",\n    left: \"50%\",\n    transform: \"translate(-50%, -50%)\"\n  },\n  attachmentPreviewTitle: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"30px\",\n    fontWeight: \"bold\",\n    color: theme.palette.primary.main,\n    display: \"flex\",\n    flexDirection: \"column\"\n  },\n  attachmentPreviewContent: {\n    borderTop: \"1px solid #E3E3E3\",\n    borderBottom: \"1px solid #E3E3E3\",\n    display: \"flex\",\n    justifyContent: \"start\",\n    height: \"540px\",\n    width: \"100%\",\n    overflowY: \"auto\",\n    marginTop: \"36px\"\n  },\n  attachmentPreviewActions: {\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    marginTop: \"30px\",\n    width: \"100%\",\n    columnGap: \"16px\",\n    \"& a\": {\n      \"&:hover\": {\n        textDecoration: \"none\"\n      }\n    }\n  },\n  closeIcon,\n  downloadButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    width: \"120px\",\n    textTransform: \"none\",\n    color: \"#FFFFFF\",\n    backgroundColor: \"#5BC4BF\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    padding: \"5px 0px\",\n    \"&:hover\": {\n      backgroundColor: \"#4da8a4\",\n      boxShadow: \"none\"\n    }\n  },\n  noPreview: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"28px\",\n    fontWeight: \"bold\",\n    color: \"#999999\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    width: \"100%\",\n    height: \"100%\"\n  },\n  table: {\n    display: \"table\",\n    borderCollapse: \"collapse\",\n    borderSpacing: \"0\",\n    width: \"100%\",\n    background: \"#FFF\",\n    borderRadius: \"8px\"\n  },\n  rowHeader: {\n    \"& span\": {\n      fontSize: \"16px\",\n      fontWeight: \"bold\",\n      color: theme.palette.primary.main\n    }\n  },\n  row: {\n    display: \"table-row-group\",\n    width: \"100%\",\n    borderBottom: \"1px solid #f3f3f3\",\n    \"& > *\": {\n      padding: \"24px\",\n      paddingRight: \"0px\",\n      display: \"table-cell\",\n      fontSize: \"14px\",\n      \"&:first-of-type\": {\n        paddingLeft: \"44px\"\n      },\n      \"&:last-child\": {\n        paddingRight: \"44px\"\n      },\n      \"& button\": {\n        maxWidth: \"100px\",\n        maxHeight: \"44px\",\n        lineHeight: \"1.05rem\"\n      }\n    }\n  },\n  title: {\n    color: \"#666666\",\n    fontWeight: \"bold\"\n  },\n  center: {\n    textAlign: \"center\"\n  },\n  state: {\n    fontSize: \"13px\",\n    fontWeight: \"bold\",\n    backgroundColor: \"#8CCF951F\",\n    color: \"#8CCF95\",\n    borderRadius: \"6px\",\n    textTransform: \"uppercase\",\n    padding: \"8px 32px 8px 32px\",\n    width: \"auto\",\n    height: \"35px\"\n  },\n  noEmailStatusContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    width: \"100%\"\n  },\n  noEmailStatusesText: {\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    color: \"#DDDDDD\",\n    fontSize: \"18px\",\n    fontWeight: \"bold\",\n    margin: \"32px 0px\"\n  },\n  emailStatusesSkeleton: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    rowGap: \"10px\",\n    width: \"100%\"\n  },\n  paginationParent: {\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    marginTop: \"20px\"\n  },\n  rowSelectContainer,\n  paginationContainer,\n  pagination,\n  rowSelect,\n  paginationMenuItems: {\n    \"& li\": {\n      fontFamily: \"Source Sans Pro\"\n    }\n  },\n  cancelEmailButton: {\n    fontSize: \"13px\",\n    fontWeight: \"bold\",\n    backgroundColor: \"#E6A0521F\",\n    color: \"#E6A052\",\n    borderRadius: \"6px\",\n    textTransform: \"uppercase\",\n    padding: \"8px 16px\",\n    minWidth: \"100px\",\n    overflow: \"hidden\",\n    whiteSpace: \"nowrap\",\n    textOverflow: \"ellipsis\",\n    \"&:hover\": {\n      backgroundColor: \"#E6A052\",\n      color: \"#FFFFFF\"\n    }\n  },\n  unscheduledEmailDetails: {\n    fontSize: \"13px\",\n    fontWeight: \"bold\",\n    backgroundColor: \"#CCCCCC\",\n    color: \"#FFFFFF\",\n    borderRadius: \"6px\",\n    textTransform: \"uppercase\",\n    padding: \"8px 32px 8px 32px\",\n    width: \"auto\",\n    height: \"35px\"\n  },\n  unsheduledDetailsPopover: {\n    position: \"absolute\",\n    top: \"100%\",\n    left: 0,\n    padding: \"15px\",\n    backgroundColor: \"#FFFFFF\",\n    borderRadius: \"5px\",\n    whiteSpace: \"normal\",\n    zIndex: 1,\n    boxShadow: \"0px 2px 14px rgba(48, 90, 111, 0.16)\",\n    width: \"200px\",\n    alignItems: \"flex-start\"\n  },\n  unsheduledDetailsLabel: {\n    fontWeight: \"bold\"\n  },\n  unsheduledDetailsInfo: {\n    marginLeft: \"8px\",\n    marginBottom: \"8px\"\n  },\n  chipContainer: {\n    width: \"100%\",\n    height: \"60px\",\n    display: \"flex\",\n    marginTop: \"20px\"\n  },\n  chipItem: {\n    width: \"fit-content\",\n    height: \"40px\",\n    border: \"1.5px solid #084d89\",\n    borderRadius: \"32px\",\n    fontSize: \"12px\",\n    color: \"#084d89\",\n    fontWeight: \"bold\",\n    margin: \"0px 10px\",\n    textTransform: \"uppercase\",\n    backgroundColor: \"#edf2f5\"\n  },\n  filterLabel: {\n    color: \"#084d89\",\n    borderRadius: \"5px\",\n    margin: \"0px 10px\",\n    fontSize: \"12px\",\n    textTransform: \"uppercase\",\n    width: \"150px\",\n    height: \"40px\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    fontWeight: \"bold\",\n    backgroundColor: \"#edf2f5\",\n    border: \"none\"\n  }\n};\n","\"use strict\";\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nexport const classes = {\n  widget: {\n    display: \"flex\",\n    position: \"relative\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    border: \"1px solid #E3E3E3\",\n    borderRadius: \"3px\",\n    flex: \"40%\",\n    height: \"420px\",\n    minWidth: \"600px\",\n    padding: \"30px\",\n    paddingBottom: \"20px\"\n  },\n  titleAndDateContainer: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    width: \"100%\",\n    zIndex: 1,\n    marginBottom: \"20px\"\n  },\n  title: {\n    fontSize: \"18px\",\n    fontWeight: \"600\",\n    color: \"#333333\",\n    marginBottom: \"4px\"\n  },\n  loading: {\n    zIndex: \"0\",\n    display: \"flex\",\n    position: \"absolute\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    background: \"transparent\",\n    width: \"100%\",\n    top: \"0\",\n    transition: \"all 300ms ease-in-out\",\n    opacity: \"0\"\n  },\n  chart: {\n    zIndex: \"0\",\n    width: \"100%\",\n    height: \"100%\"\n  },\n  noDataContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    width: \"100%\",\n    height: \"100%\"\n  },\n  noData: {\n    color: \"#AAAAAA\",\n    fontSize: \"18px\",\n    fontWeight: \"600\"\n  },\n  noDataIcon: {\n    color: \"#AAAAAA\",\n    fontSize: \"48px\",\n    marginBottom: \"10px\"\n  },\n  date: {\n    width: \"270px\",\n    display: \"flex\",\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    \"& span\": {\n      color: \"#AAAAAA\",\n      marginBottom: \"4px\"\n    }\n  },\n  datePicker: {\n    fontFamily: \"Source Sans Pro\",\n    color: \"#666666\",\n    width: \"119px\",\n    \"& input\": {\n      padding: \"0px 4px 4px 10px\",\n      fontFamily: \"Source Sans Pro\"\n    },\n    \"& fieldset\": {\n      \"& legend\": {\n        display: \"none\"\n      }\n    },\n    \"& button\": {\n      padding: \"0px\",\n      transform: \"translate(-2px, -1.5px)\",\n      \"&:hover\": {\n        background: \"transparent\",\n        \"& svg\": {\n          color: \"#888888\"\n        }\n      }\n    },\n    \"& .MuiInputAdornment-root\": {\n      marginLeft: \"0px\"\n    },\n    \"& svg\": {\n      color: \"#AAAAAA\"\n    }\n  },\n  calendar: {\n    \"& .PrivatePickersFadeTransitionGroup-root\": {\n      fontFamily: \"Source Sans Pro\"\n    },\n    \"& .MuiTypography-root\": {\n      fontFamily: \"Source Sans Pro\"\n    },\n    \"& .Mui-selected\": {\n      backgroundColor: `${theme.palette.action.main} !important`\n    },\n    \"& .PrivatePickersSlideTransition-root\": {\n      minHeight: \"242px !important\"\n    }\n  },\n  error: {\n    color: \"#FF0000\",\n    fontSize: \"14px\",\n    position: \"absolute\",\n    top: \"3px\",\n    right: \"29px\"\n  }\n};\n","\"use strict\";\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport { notesEditSaveButton, notesCancelButton } from \"../../shared/styleClasses\";\nexport const classes = {\n  noteEdit: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"space-between\",\n    overflow: \"hidden\",\n    transition: \"all 0.3s ease-in-out\",\n    width: \"50%\"\n  },\n  noteEditFooter: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"flex-end\",\n    columnGap: \"10px\",\n    padding: \"8px 1px\",\n    minHeight: \"50.5px\"\n  },\n  notesContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    rowGap: \"10px\",\n    marginTop: \"32px\"\n  },\n  note: {\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    margin: \"4px 0\"\n  },\n  noteContent: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    rowGap: \"4px\",\n    marginRight: \"14%\",\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    color: \"#939393\"\n  },\n  noteText: {\n    color: \"#828282\",\n    fontSize: \"16px\"\n  },\n  noteActions: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    columnGap: \"16px\"\n  },\n  notesEditSaveButton,\n  notesCancelButton,\n  newNoteContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    width: \"100%\"\n  },\n  notesNewButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    width: \"120px\",\n    textTransform: \"none\",\n    color: \"#FFFFFF\",\n    backgroundColor: \"#5BC4BF\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    padding: \"5px 0px\",\n    \"&:hover\": {\n      backgroundColor: \"#4da8a4\",\n      boxShadow: \"none\"\n    }\n  },\n  noNotesText: {\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    color: \"#DDDDDD\",\n    fontSize: \"18px\",\n    fontWeight: \"bold\",\n    margin: \"32px 0px\"\n  },\n  notesSkeleton: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    rowGap: \"10px\",\n    width: \"100%\"\n  },\n  emojiError: {\n    color: theme.palette.error.main,\n    transition: \"opacity 0.3s linear\",\n    position: \"absolute\",\n    top: \"8px\",\n    right: \"0px\",\n    fontSize: \"14px\"\n  }\n};\n","\"use strict\";\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nexport const classes = {\n  widget: {\n    border: \"1px solid #E3E3E3\",\n    borderRadius: \"3px\",\n    flex: \"40%\",\n    minWidth: \"600px\"\n  },\n  subcontainer: {\n    flex: \"40%\",\n    minWidth: \"600px\",\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    columnGap: \"50px\",\n    rowGap: \"50px\"\n  },\n  subWidget: {\n    flex: \"40%\",\n    borderRadius: \"3px\",\n    height: \"120px\",\n    minWidth: \"524px\"\n  },\n  creationExpiryContainer: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"flex-start\",\n    height: \"100%\",\n    paddingLeft: \"4%\"\n  },\n  widgetIcon: {\n    backgroundColor: \"#EDF2F5\",\n    padding: \"12px\",\n    borderRadius: \"16px\",\n    \"& svg\": {\n      color: theme.palette.primary.main,\n      fontSize: \"32px\"\n    }\n  },\n  widgetText: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    alignItems: \"flex-start\",\n    rowGap: \"6px\",\n    marginLeft: \"30px\"\n  },\n  widgetTextTitle: {\n    fontSize: \"16px\",\n    color: theme.palette.primary.main\n  },\n  widgetTextContent: {\n    fontSize: \"16px\",\n    fontWeight: \"600\",\n    color: \"#333333\"\n  },\n  widgetBlockContainer: {\n    display: \"flex\",\n    height: \"100%\",\n    width: \"100%\",\n    columnGap: \"50px\"\n  },\n  widgetBlock: {\n    border: \"1px solid #E3E3E3\",\n    borderRadius: \"3px\",\n    position: \"relative\",\n    display: \"flex\",\n    justifyContent: \"flex-start\",\n    alignItems: \"center\",\n    paddingLeft: \"4%\",\n    width: \"50%\",\n    height: \"100%\"\n  },\n  widgetBlockText: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    alignItems: \"flex-start\",\n    rowGap: \"3px\",\n    marginLeft: \"25px\"\n  },\n  blockCount: {\n    fontSize: \"24px\",\n    color: theme.palette.primary.main,\n    fontWeight: \"bold\"\n  },\n  blockTitle: {\n    fontSize: \"16px\",\n    fontWeight: \"600\",\n    color: \"#333333\"\n  },\n  widgetBlockIcon: {\n    backgroundColor: \"#EDF2F5\",\n    padding: \"12px\",\n    borderRadius: \"16px\",\n    \"& svg\": {\n      color: theme.palette.primary.main,\n      fontSize: \"28px\"\n    }\n  },\n  infoContainer: {\n    flex: \"40%\",\n    minWidth: \"600px\",\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    columnGap: \"20px\",\n    minHeight: \"120px\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    padding: \"16px\"\n  },\n  widgetBlockNew: {\n    position: \"absolute\",\n    top: \"20px\",\n    right: \"24px\",\n    color: \"#8CCF95\",\n    fontWeight: \"bold\",\n    fontSize: \"18px\"\n  },\n  jobInfoContainer: {\n    display: \"flex\",\n    justifyContent: \"space-around\",\n    alignItems: \"flex-start\",\n    flex: \"40%\",\n    borderRadius: \"3px\",\n    minWidth: \"500px\",\n    maxHeight: \"90px\",\n    overflow: \"hidden\"\n  },\n  infoText: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    alignItems: \"flex-start\",\n    rowGap: \"6px\",\n    marginLeft: \"20px\",\n    maxWidth: \"160px\",\n    width: \"100%\"\n  },\n  infoTextTitle: {\n    fontSize: \"16px\",\n    color: theme.palette.primary.main\n  },\n  infoTextContent: {\n    fontSize: \"16px\",\n    fontWeight: \"600\",\n    color: \"#333333\"\n  },\n  infoWidget: {\n    display: \"flex\",\n    border: \"1px solid #E3E3E3\",\n    borderRadius: \"3px\",\n    flex: \"40%\",\n    minWidth: \"600px\"\n  },\n  tag: {\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    color: \"#939393\",\n    backgroundColor: \"#F8F8F8\",\n    borderRadius: \"18px\",\n    height: \"23px\",\n    maxWidth: \"140px\",\n    display: \"inline-block\",\n    padding: \"2px 12px\",\n    marginRight: \"6px\",\n    marginBottom: \"4px\",\n    overflow: \"hidden\",\n    textOverflow: \"ellipsis\",\n    whiteSpace: \"nowrap\",\n    \"&:hover\": {\n      maxWidth: \"unset\"\n    }\n  }\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { theme } from \"../../ThemeContext/ThemeObject\";\nimport { red, grey } from \"@mui/material/colors\";\nimport { actionsMenuPaperCommonStyles, actionsMenuSpanCommonStyles } from \"../shared/commonStyles\";\nimport { copyButton, link } from \"../shared/styleClasses\";\nexport const classes = {\n  jobPageContainer: {\n    fontFamily: theme.typography.fontFamily,\n    backgroundColor: \"#FFFFFF\",\n    padding: \"40px\"\n  },\n  jobArchivedContainer: {\n    display: \"flex\",\n    padding: \"0px 16px\",\n    marginBottom: 1\n  },\n  jobArchiveAlert: {\n    color: red[300],\n    backgroundColor: red[50],\n    padding: \"0 16px\",\n    fontWeight: \"bold\",\n    borderRadius: \"6px\"\n  },\n  jobUnarchiveButton: {\n    color: grey[700],\n    fontWeight: \"bold\",\n    textDecoration: \"underline\",\n    marginLeft: 1\n  },\n  jobPageHeader: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    width: \"100%\",\n    padding: \"0px 16px\",\n    \"& h1\": {\n      fontWeight: \"bold\",\n      fontSize: \"38px\",\n      lineHeight: \"1.2em\",\n      color: \"#666666\",\n      marginTop: \"0\",\n      \"@media (max-width: 1450px)\": {\n        fontSize: \"34px\"\n      },\n      \"@media (max-width: 1260px)\": {\n        fontSize: \"28px\"\n      }\n    }\n  },\n  actionButtons: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    columnGap: \"10px\",\n    marginLeft: \"20px\"\n  },\n  actionsMenu: {\n    \"& .MuiPaper-root\": __spreadProps(__spreadValues({}, actionsMenuPaperCommonStyles), {\n      rowGap: \"11px\",\n      minWidth: \"153px\",\n      marginTop: \"6px\"\n    }),\n    \"& span\": __spreadProps(__spreadValues({}, actionsMenuSpanCommonStyles), {\n      color: \"#939393\"\n    })\n  },\n  iconGrey: {\n    color: \"#666666\",\n    fontSize: \"28px\"\n  },\n  linkContainer: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    columnGap: \"20px\",\n    padding: \"6px 16px\",\n    width: \"100%\",\n    \"& a:hover\": {\n      textDecoration: \"none\"\n    }\n  },\n  link,\n  copyButton,\n  stateStatusContainer: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    columnGap: \"20px\",\n    padding: \"8px 16px\"\n  },\n  stateDropdown: {\n    fontSize: \"13px\",\n    fontWeight: \"bold\",\n    textTransform: \"uppercase\",\n    width: \"140px\",\n    height: \"35px\",\n    borderRadius: \"6px\",\n    display: \"inline-flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\"\n  },\n  Published: {\n    color: \"#8CCF95\",\n    backgroundColor: \"RGBA(140, 207, 149, 0.12)\"\n  },\n  Draft: {\n    color: \"#E6A052\",\n    backgroundColor: \"RGBA(230, 160, 82, 0.12)\"\n  },\n  Unpublished: {\n    color: \"#D6827D\",\n    backgroundColor: \"RGBA(214, 130, 125, 0.12)\"\n  },\n  Saved: {\n    color: \"#FFFFFF\",\n    backgroundColor: \"#CCCCCC\"\n  },\n  Closed: {\n    color: \"#FFFFFF\",\n    backgroundColor: \"#CCCCCC\"\n  },\n  stateOptions: {\n    \"& .MuiPaper-root\": {\n      display: \"flex\",\n      flexDirection: \"column\",\n      rowGap: \"11px\",\n      minWidth: \"140px\",\n      padding: \"14px 0px 14px 20px\",\n      marginTop: \"6px\",\n      borderRadius: \"6px\"\n    },\n    \"& span\": {\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"13px\",\n      fontWeight: \"bold\",\n      textTransform: \"uppercase\",\n      color: \"#939393\",\n      cursor: \"pointer\",\n      \"&:hover\": {\n        color: theme.palette.primary.main\n      }\n    }\n  },\n  downIcon: {\n    marginLeft: \"8px\",\n    fontSize: \"18px\",\n    color: \"inherit\"\n  },\n  statusDropdown: {\n    position: \"relative\",\n    fontSize: \"13px\",\n    backgroundColor: \"#FFFFFF\",\n    border: \"1px solid #E5E5E5\",\n    padding: \"8px 20px 8px 12px\",\n    width: \"140px\",\n    height: \"35px\",\n    borderRadius: \"6px\",\n    textOverflow: \"ellipsis\",\n    overflow: \"hidden\",\n    whiteSpace: \"nowrap\",\n    \"&:hover\": {\n      border: \"1px solid #D5D5D5\",\n      textOverflow: \"unset\",\n      overflow: \"unset\",\n      width: \"auto\",\n      minWidth: \"140px\"\n    }\n  },\n  statusDownIcon: {\n    position: \"absolute\",\n    right: \"3px\",\n    fontSize: \"18px\",\n    color: \"#E5E5E5\"\n  },\n  statusDropdownItem: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"13px\",\n    padding: \"6px 12px\",\n    cursor: \"pointer\",\n    \"&:hover\": {\n      backgroundColor: \"#F1F1F1\"\n    }\n  },\n  statusDropdownItems: {\n    \"& .MuiPaper-root\": {\n      width: \"200px\",\n      maxHeight: \"250px\",\n      overflowY: \"auto\",\n      borderRadius: \"6px\",\n      marginTop: \"6px\"\n    }\n  },\n  statusLoader: {\n    position: \"absolute\",\n    left: \"calc(50% - 9px)\"\n  },\n  tabsContainer: {\n    borderBottom: 1,\n    borderColor: \"#EEEEEE\",\n    margin: \"40px 0px\"\n  },\n  tabs: {\n    \"& button\": {\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"18px\",\n      letterSpacing: \"0\",\n      color: \"#939393\",\n      textTransform: \"none\",\n      minWidth: \"unset\",\n      \"&:hover\": {\n        color: \"#737373\"\n      },\n      \"&:focus\": {\n        outline: \"none\"\n      }\n    },\n    \"& button.Mui-selected\": {\n      fontWeight: \"600\",\n      color: \"#084D6D\"\n    }\n  },\n  tabIndicator: {\n    backgroundColor: \"#5BC4BF\",\n    margin: \"0 16px\"\n  },\n  tabContent: {\n    padding: \"0px 16px\"\n  },\n  applicationsTabButton: {\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    fontWeight: \"bold\",\n    fontSize: \"12px\",\n    backgroundColor: \"#EDF2F5\",\n    borderRadius: \"18px\",\n    padding: \"0px 10px\",\n    minWidth: \"48px\",\n    height: \"24px\"\n  },\n  widgetContainer: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    columnGap: \"50px\",\n    rowGap: \"50px\"\n  },\n  iframeContainer: {\n    position: \"relative\",\n    width: \"100%\",\n    height: \"600px\",\n    border: \"1px solid #E3E3E3\",\n    borderRadius: \"3px\",\n    marginTop: \"50px\"\n  },\n  multiposterContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    rowGap: \"40px\",\n    padding: \"24px 16px\",\n    marginTop: \"22px\"\n  },\n  toggleContainer: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    position: \"absolute\"\n  },\n  toggleButtonGroup: {\n    borderRadius: \"11px\",\n    \"& .MuiToggleButton-root.Mui-selected\": {\n      backgroundColor: \"#F3F3F3\",\n      \"&:hover\": {\n        backgroundColor: \"#F3F3F3\"\n      }\n    }\n  },\n  toggleButton: {\n    padding: \"none !important\",\n    borderRadius: \"11px\",\n    width: \"125px\",\n    height: \"47px\",\n    borderColor: \"#F3F3F3\"\n  },\n  logoSize: {\n    width: \"90px !important\",\n    height: \"40px !important\"\n  },\n  skeleton: {\n    width: \"100%\",\n    height: \"140px\",\n    borderRadius: \"6px\"\n  }\n};\n","\"use strict\";\nexport var NoteState = /* @__PURE__ */ ((NoteState2) => {\n  NoteState2[\"PERMANENT_RECORD\"] = \"permanent_record\";\n  NoteState2[\"NOTEPAD\"] = \"note_pad\";\n  return NoteState2;\n})(NoteState || {});\nexport var SortableColumnId = /* @__PURE__ */ ((SortableColumnId2) => {\n  SortableColumnId2[\"CANDIDATE\"] = \"candidate\";\n  SortableColumnId2[\"CANDIDATE_TAGS\"] = \"candidate_tags\";\n  SortableColumnId2[\"COUNTRY\"] = \"country\";\n  SortableColumnId2[\"DATE\"] = \"date\";\n  SortableColumnId2[\"GENDER\"] = \"gender\";\n  SortableColumnId2[\"ID\"] = \"id\";\n  SortableColumnId2[\"NOTE\"] = \"note\";\n  SortableColumnId2[\"NOTES\"] = \"notes\";\n  SortableColumnId2[\"PERMANENT_RECORD\"] = \"permanent_record\";\n  SortableColumnId2[\"NOTE_PAD\"] = \"note_pad\";\n  SortableColumnId2[\"PHONE\"] = \"phone\";\n  SortableColumnId2[\"RATING\"] = \"rating\";\n  SortableColumnId2[\"STATE\"] = \"state\";\n  SortableColumnId2[\"STATUS\"] = \"status\";\n  SortableColumnId2[\"SUBURB\"] = \"suburb\";\n  return SortableColumnId2;\n})(SortableColumnId || {});\n","\"use strict\";\nimport RecruitApiClient from \"../../RecruitApiClient\";\nconst BASE_URL = \"/api/v4\";\nclass Api {\n  constructor() {\n    this.getJobs = (params) => RecruitApiClient.get(`${BASE_URL}/jobs`, params);\n    this.getJob = (jobId) => RecruitApiClient.get(`${BASE_URL}/jobs/${jobId}`);\n    this.getFilters = (url, params) => RecruitApiClient.get(`${BASE_URL}/jobs/${url}`, params);\n    this.getUISettings = (params) => RecruitApiClient.get(`${BASE_URL}/ui_preferences`, params, {\n      cache: \"no-cache\"\n    });\n    this.postJobNote = (jobId, params) => RecruitApiClient.post(`${BASE_URL}/jobs/${jobId}/job_notes`, params);\n    this.postUISettings = (params) => RecruitApiClient.post(`${BASE_URL}/ui_preferences`, params);\n    this.putChangedState = (link) => RecruitApiClient.put(link);\n    this.putChangedStatus = (jobId, statusID) => RecruitApiClient.put(`${BASE_URL}/jobs/${jobId}/status/${statusID}`);\n    this.putPinJob = (jobId) => RecruitApiClient.put(`${BASE_URL}/jobs/${jobId}/pin`);\n    this.putUnpinJob = (jobId) => RecruitApiClient.put(`${BASE_URL}/jobs/${jobId}/unpin`);\n    this.putArchiveJobs = (params) => RecruitApiClient.put(`${BASE_URL}/jobs/archive`, params);\n    this.putUnrchiveJobs = (params) => RecruitApiClient.put(`${BASE_URL}/jobs/unarchive`, params);\n    this.getCSVExport = (params) => RecruitApiClient.get(`${BASE_URL}/jobs/export`, params);\n    this.referenceValidation = (params) => RecruitApiClient.get(`${BASE_URL}/jobs/validating_reference`, params);\n    this.referencePrefix = (params) => RecruitApiClient.get(`${BASE_URL}/jobs/auto_job_reference_setting`, params);\n    this.importResources = (jobId, params, queryParams) => RecruitApiClient.post(`${BASE_URL}/jobs/${jobId}/import_resources${queryParams}`, params);\n    this.cloneJobsOptions = (params) => RecruitApiClient.get(`${BASE_URL}/jobs/jobs_for_clone`, params);\n    this.createJob = (params) => RecruitApiClient.post(`${BASE_URL}/jobs/`, params);\n    this.getEntities = () => RecruitApiClient.get(`/api/v4/entities`);\n  }\n}\nexport default new Api();\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport {\n  checkboxContainerStyles,\n  filterPopoverHeaderCommonStyles\n} from \"../../shared/commonStyles\";\nimport {\n  applyButton,\n  clearButton,\n  filterPopoverContent,\n  sortableSwitchLabels,\n  switchLabels\n} from \"../../shared/styleClasses\";\nexport const classes = {\n  iconButton: {\n    border: \"1px solid #EAEEF0\",\n    backgroundColor: \"#FFFFFF\",\n    borderRadius: \"6px\",\n    width: \"69px\",\n    height: \"60px\",\n    \"& svg\": {\n      fontSize: \"30px\",\n      color: \"#084D6D\"\n    }\n  },\n  iconButtonOpen: {\n    backgroundColor: \"rgba(8,77,109,0.121)\"\n  },\n  popover: {\n    marginTop: \"15px\"\n  },\n  popoverContent: {\n    width: \"272px\",\n    padding: \"22px 0px 22px 24px\",\n    boxShadow: \"0px 2px 14px rgba(48,90,111,0.16)\"\n  },\n  switchLabels,\n  switch: {\n    \"& .MuiSwitch-thumb\": {\n      color: \"#FFFFFF\"\n    },\n    \"& :hover\": {\n      backgroundColor: \"rgba(91, 196, 191, 0.17)\"\n    }\n  },\n  switchActive: {\n    \"& .MuiSwitch-thumb\": {\n      color: \"#5BC4BF\"\n    }\n  },\n  labelActive: {\n    \"& .MuiFormControlLabel-label\": {\n      color: \"#CCCCCC\"\n    }\n  },\n  filterPopoverContent,\n  scrollableFilters: {\n    height: \"fit-content\",\n    padding: \"26px\",\n    paddingTop: \"0px\"\n  },\n  filterPopoverHeader: __spreadProps(__spreadValues({}, filterPopoverHeaderCommonStyles), {\n    top: \"0px\"\n  }),\n  accordionRoot: {\n    boxShadow: \"none\",\n    margin: \"14px 0px\",\n    \"&::before\": {\n      display: \"none\"\n    },\n    \"&:first-of-type\": {\n      marginTop: \"0px !important\"\n    },\n    \"&.Mui-expanded\": {\n      marginTop: \"14px 0px 0px 0px\"\n    }\n  },\n  accordionSummary: {\n    minHeight: \"0px !important\",\n    display: \"inline-flex\",\n    padding: \"0px !important\",\n    \"& .MuiAccordionSummary-content\": {\n      margin: \"0px !important\",\n      paddingRight: \"25px\"\n    },\n    \"& .MuiAccordionSummary-expandIconWrapper\": {\n      color: \"#084D6D\",\n      transform: \"rotate(-90deg)\",\n      \"&.Mui-expanded\": {\n        transform: \"rotate(0deg)\"\n      },\n      \"& svg\": {\n        fontSize: \"20px\"\n      }\n    }\n  },\n  summaryTypography: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    color: \"#084D6D\"\n  },\n  accordionDetails: {\n    padding: \"6px 0px\"\n  },\n  checkboxLabels: {\n    justifyContent: \"space-between\",\n    width: \"174px\",\n    height: \"25px\",\n    \"& .MuiFormControlLabel-label\": {\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"12px\",\n      fontWeight: \"bold\",\n      color: \"#939393\"\n    },\n    \"& .MuiCheckbox-colorPrimary\": {\n      color: \"#DDDDDD\",\n      \"&.Mui-checked\": {\n        color: \"#5BC4C0\"\n      }\n    },\n    \"& svg\": {\n      fontSize: \"17px\"\n    }\n  },\n  uncheckedLabel: {\n    \"& .MuiFormControlLabel-label\": {\n      color: \"#CCCCCC\",\n      fontWeight: \"600\"\n    }\n  },\n  clearButton,\n  applyButton,\n  multiSelectContainer: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    color: \"#084D6D\",\n    marginBottom: \"10px\"\n  },\n  checkboxContainer: checkboxContainerStyles,\n  dateDisplay: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    color: \"#939393\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    width: \"100%\",\n    marginTop: \"2px\"\n  },\n  dateDisplayBox: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    fontSize: \"12px\",\n    borderRadius: \"4px\",\n    border: \"2px solid #DDDDDD\",\n    width: \"88px\",\n    height: \"36px\"\n  },\n  dateInput: {\n    \"& .MuiOutlinedInput-root\": {\n      width: \"88px\",\n      height: \"31px\",\n      padding: \"0px\",\n      transform: \"translateY(2px)\",\n      \"&:hover\": {\n        \"& fieldset\": {\n          borderColor: \"#BBBBBB\"\n        }\n      }\n    },\n    \"& fieldset\": {\n      border: \"2px solid #DDDDDD\",\n      borderColor: \"#DDDDDD\",\n      borderRadius: \"4px\",\n      \"& legend\": {\n        display: \"none\"\n      }\n    },\n    \"& input\": {\n      fontSize: \"12px\",\n      color: \"#939393\",\n      padding: \"0px\",\n      paddingLeft: \"12px\",\n      paddingBottom: \"4px\"\n    },\n    \"& button\": {\n      display: \"none\"\n    }\n  },\n  invalidDate: {\n    \"& .MuiOutlinedInput-root\": {\n      \"&:hover\": {\n        \"& fieldset\": {\n          borderColor: \"#E60B0B !important\"\n        }\n      },\n      \"& fieldset\": {\n        borderColor: \"#E60B0B\"\n      }\n    }\n  },\n  tableSettingsHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"16px\",\n    fontWeight: \"bold\",\n    paddingBottom: \"8px\",\n    paddingLeft: \"4px\"\n  },\n  sortableField: {\n    display: \"flex\",\n    alignItems: \"center\",\n    width: \"204px\"\n  },\n  sortableSwitchLabels\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nconst lineHeight = 1.43;\nconst linesToShow = 3;\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport {\n  statusClampCommonStyles,\n  statusClampAfterStyles,\n  statusClampDropdownStyles,\n  statusClampDropdownAfterStyles,\n  actionsMenuPaperCommonStyles,\n  actionsMenuSpanCommonStyles,\n  rightArrowStyles,\n  leftArrowStyles,\n  selectedTooltipCommonStyles\n} from \"../../shared/commonStyles\";\nimport {\n  notesEditSaveButton,\n  notesCancelButton,\n  editNotePopover,\n  rowSelect,\n  pagination,\n  paginationContainer,\n  rowSelectContainerAlt\n} from \"../../shared/styleClasses\";\nexport const classes = {\n  category: {\n    marginBottom: theme.spacing(2),\n    marginTop: 0\n  },\n  tableWrapper: {\n    tableLayout: \"auto !important\",\n    \"& tbody\": {\n      \"& td, th \": {\n        borderWidth: \"1px 0px 0px 0px\",\n        backgroundColor: \"white\"\n      },\n      \"& tr:last-child td, th\": {\n        borderBottom: \"none\"\n      }\n    },\n    \"& .Mui-selected\": {\n      backgroundColor: \"#F2F2F2\"\n    },\n    \"& tr\": {\n      \"& td, th\": {\n        borderWidth: \"0px\",\n        textTransform: \"none\"\n      }\n    },\n    \"& svg\": {\n      fontSize: \"1.1rem\"\n    }\n  },\n  manageMetrics: {\n    position: \"absolute\",\n    top: 0,\n    right: 0\n  },\n  tableHeaderRow: {\n    \"& td, th\": {\n      color: theme.palette.primary.main,\n      fontWeight: \"bold\",\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"14px\",\n      border: \"none\",\n      backgroundColor: \"white\",\n      textTransform: \"none\",\n      \"& span\": {\n        color: theme.palette.primary.main,\n        \"&:hover\": {\n          color: \"#0c74a4\"\n        }\n      },\n      \"& .Mui-active\": {\n        color: theme.palette.primary.main\n      }\n    },\n    \"& .Mui-selected\": {\n      backgroundColor: \"#F2F2F2\"\n    },\n    \"& .MuiTableSortLabel-icon\": {\n      color: \"darkgrey !important\"\n    }\n  },\n  tableContainer: {\n    display: \"relative\",\n    scrollBehavior: \"smooth\"\n  },\n  tableBody: {\n    \"& tr, td\": {\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"14px\"\n    }\n  },\n  leftArrow: __spreadProps(__spreadValues({}, leftArrowStyles), {\n    position: \"fixed\",\n    zIndex: \"999\"\n  }),\n  rightArrow: __spreadProps(__spreadValues({}, rightArrowStyles), {\n    position: \"fixed\",\n    zIndex: \"999\"\n  }),\n  showArrows: {\n    display: \"flex\",\n    animation: \"$fadeIn linear 0.17s\"\n  },\n  \"@keyframes fadeIn\": {\n    \"0%\": { opacity: 0 },\n    \"100%\": { opacity: 0.9 }\n  },\n  iconRed: {\n    color: theme.palette.error.main\n  },\n  iconGreen: {\n    color: theme.palette.success.main\n  },\n  iconBlue: {\n    color: theme.palette.primary.main\n  },\n  iconGray: {\n    color: \"#666666\"\n  },\n  stateColumn: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"13px\",\n    fontWeight: \"bold\",\n    textTransform: \"uppercase\",\n    width: \"113px\",\n    height: \"35px\",\n    borderRadius: \"6px\",\n    display: \"inline-flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\"\n  },\n  noteColumn: {\n    display: \"-webkit-box\",\n    height: `${lineHeight}*${linesToShow}`,\n    margin: \"0 auto\",\n    lineHeight,\n    lineClamp: linesToShow,\n    boxOrient: \"vertical\",\n    overflow: \"hidden\",\n    textOverflow: \"ellipsis\"\n  },\n  link: {\n    marginTop: \"5px\",\n    display: \"flex\",\n    justifyContent: \"flex-end\",\n    cursor: \"pointer\",\n    color: theme.palette.primary.main\n  },\n  published: {\n    color: \"#8CCF95\",\n    backgroundColor: \"RGBA(140, 207, 149, 0.12)\"\n  },\n  draft: {\n    color: \"#E6A052\",\n    backgroundColor: \"RGBA(230, 160, 82, 0.12)\"\n  },\n  unpublished: {\n    color: \"#D6827D\",\n    backgroundColor: \"RGBA(214, 130, 125, 0.12)\"\n  },\n  saved: {\n    color: \"#FFFFFF\",\n    backgroundColor: \"#CCCCCC\"\n  },\n  closed: {\n    color: \"#FFFFFF\",\n    backgroundColor: \"#CCCCCC\"\n  },\n  stateDropdown: {\n    \"& .MuiPaper-root\": {\n      display: \"flex\",\n      flexDirection: \"column\",\n      rowGap: \"11px\",\n      minWidth: \"145px\",\n      padding: \"14px 0px 14px 20px\",\n      marginTop: \"6px\",\n      borderRadius: \"6px\"\n    },\n    \"& span\": {\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"13px\",\n      fontWeight: \"bold\",\n      textTransform: \"uppercase\",\n      color: \"#939393\",\n      cursor: \"pointer\",\n      \"&:hover\": {\n        color: theme.palette.primary.main\n      }\n    }\n  },\n  stateLoader: {\n    color: theme.palette.primary.main\n  },\n  stateErrorTooltip: {\n    \"& .MuiTooltip-tooltip\": {\n      textAlign: \"center\"\n    }\n  },\n  statusClamp: __spreadProps(__spreadValues({}, statusClampCommonStyles), {\n    width: \"126px\",\n    padding: \"6px 20px 5px 12px\",\n    \"&::after\": statusClampAfterStyles,\n    \"& .status-dropdown-full\": __spreadProps(__spreadValues({}, statusClampDropdownStyles), {\n      width: \"126px\",\n      padding: \"6px 20px 5px 12px\",\n      \"&::after\": statusClampDropdownAfterStyles\n    }),\n    \"&:hover\": {\n      overflow: \"visible\",\n      lineClamp: \"unset\",\n      \"& .status-dropdown-full\": {\n        visibility: \"visible\"\n      }\n    }\n  }),\n  noDropdown: {\n    border: \"1px solid #FFFFFF\",\n    \"& .status-dropdown-full\": {\n      border: \"1px solid #FFFFFF\"\n    },\n    \"&::after\": {\n      display: \"none\"\n    }\n  },\n  noStatuses: {\n    width: \"100%\",\n    paddingLeft: \"18px\",\n    display: \"flex\"\n  },\n  statusDropdown: {\n    border: \"1px solid #CCCCCC\",\n    borderRadius: \"6px\",\n    cursor: \"pointer\"\n  },\n  statusDropdownItem: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"13px\",\n    padding: \"6px 12px\",\n    cursor: \"pointer\",\n    \"&:hover\": {\n      backgroundColor: \"#F1F1F1\"\n    }\n  },\n  statusDropdownItems: {\n    \"& .MuiPaper-root\": {\n      width: \"200px\",\n      maxHeight: \"250px\",\n      overflowY: \"auto\",\n      borderRadius: \"6px\",\n      marginTop: \"6px\"\n    }\n  },\n  statusLoader: {\n    color: theme.palette.primary.main,\n    position: \"absolute\",\n    zIndex: \"4\",\n    top: \"calc(50% - 9px)\",\n    left: \"calc(50% - 9px)\"\n  },\n  rowSelectContainer: rowSelectContainerAlt,\n  paginationContainer,\n  pagination,\n  rowSelect,\n  paginationMenuItems: {\n    \"& li\": {\n      fontFamily: \"Source Sans Pro\"\n    }\n  },\n  titleCell: {\n    position: \"sticky\",\n    left: \"206px\",\n    width: \"200px\",\n    background: \"white !important\",\n    paddingRight: \"8px !important\",\n    zIndex: \"3\",\n    \"& a\": {\n      fontWeight: \"bold\",\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"14px\",\n      color: \"#666666\",\n      wordBreak: \"break-word !important\"\n    },\n    \"& a:hover\": {\n      textDecoration: \"none\"\n    },\n    \"&::after\": {\n      content: '\"\"',\n      background: \"#aaaaaa\",\n      width: \"2px\",\n      height: \"100%\",\n      filter: \"blur(2px)\",\n      position: \"absolute\",\n      top: \"0\",\n      right: \"-2px\",\n      opacity: \"0%\",\n      transition: \"opacity 0.17s linear\"\n    },\n    \"&::before\": {\n      content: '\"\"',\n      top: \"0\",\n      right: \"0\",\n      width: \"6px\",\n      height: \"100%\",\n      position: \"absolute\",\n      background: \"#ffffff\",\n      zIndex: \"2\"\n    }\n  },\n  titleHeaderCell: {\n    \"&::after\": {\n      content: '\"\"',\n      background: \"#aaaaaa\",\n      width: \"2px\",\n      height: \"100%\",\n      filter: \"blur(2px)\",\n      position: \"absolute\",\n      top: \"0\",\n      right: \"-2px\",\n      opacity: \"0%\",\n      transition: \"opacity 0.17s linear\"\n    },\n    \"&::before\": {\n      content: '\"\"',\n      top: \"0\",\n      right: \"0\",\n      width: \"6px\",\n      height: \"100%\",\n      position: \"absolute\",\n      background: \"#ffffff\",\n      zIndex: \"2\"\n    }\n  },\n  actionsCell: {\n    position: \"sticky\",\n    right: 0,\n    width: \"70px !important\",\n    background: \"white\",\n    zIndex: \"3\",\n    \"&::after\": {\n      content: '\"\"',\n      background: \"#aaaaaa\",\n      width: \"2px\",\n      height: \"100%\",\n      filter: \"blur(2px)\",\n      position: \"absolute\",\n      top: \"0\",\n      left: \"-2px\",\n      opacity: \"0%\",\n      transition: \"opacity 0.17s linear\"\n    },\n    \"&::before\": {\n      content: '\"\"',\n      top: \"0\",\n      left: \"0\",\n      width: \"6px\",\n      height: \"100%\",\n      position: \"absolute\",\n      background: \"#ffffff\",\n      zIndex: \"2\"\n    }\n  },\n  actionsHeaderCell: {\n    position: \"sticky\",\n    right: 0,\n    width: \"70px !important\",\n    background: \"white\",\n    zIndex: \"1\",\n    \"&::after\": {\n      content: '\"\"',\n      background: \"#aaaaaa\",\n      width: \"2px\",\n      height: \"100%\",\n      filter: \"blur(2px)\",\n      position: \"absolute\",\n      top: \"0\",\n      left: \"-2px\",\n      opacity: \"0%\",\n      transition: \"opacity 0.17s linear\"\n    },\n    \"&::before\": {\n      content: '\"\"',\n      top: \"0\",\n      left: \"0\",\n      width: \"6px\",\n      height: \"100%\",\n      position: \"absolute\",\n      background: \"#ffffff\",\n      zIndex: \"2\"\n    }\n  },\n  cellAnimate: {\n    \"&&::after\": {\n      opacity: \"20%\"\n    }\n  },\n  selectedTooltip: __spreadProps(__spreadValues({}, selectedTooltipCommonStyles), {\n    justifyContent: \"space-between\",\n    padding: \"20px 50px\",\n    width: \"665px\",\n    left: \"calc(50% - 300px)\"\n  }),\n  selectedTooltipText: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"24px\",\n    fontWeight: \"bold\",\n    color: \"#666666\"\n  },\n  selectedTooltipButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"17px\",\n    fontWeight: \"bold\",\n    textTransform: \"none\",\n    color: \"#D6827D\",\n    backgroundColor: \"rgba(214, 130, 125, 0.22)\",\n    boxShadow: \"none\",\n    width: \"129px\",\n    height: \"50px\",\n    borderRadius: \"6px\",\n    \"&:hover\": {\n      backgroundColor: \"rgba(214, 130, 125, 0.33)\",\n      boxShadow: \"none\"\n    }\n  },\n  selectedTooltipButtonsContainer: {\n    display: \"flex\",\n    columnGap: \"18px\"\n  },\n  fadeIn: {\n    visibility: \"visible\",\n    opacity: \"1\",\n    transform: \"translateX(0px)\",\n    transition: \"visibility 0s linear 0s, opacity 300ms, transform 300ms\"\n  },\n  fadeOut: {\n    visibility: \"hidden\",\n    opacity: \"0\",\n    transform: \"translateX(20px)\",\n    transition: \"visibility 0s linear 300ms, opacity 300ms, transform 300ms\"\n  },\n  actionsMenu: {\n    \"& .MuiPaper-root\": __spreadProps(__spreadValues({}, actionsMenuPaperCommonStyles), {\n      width: \"135px\",\n      marginTop: \"6px\"\n    }),\n    \"& span\": actionsMenuSpanCommonStyles\n  },\n  editNotePopover,\n  noteInput: {\n    marginBottom: \"4px\"\n  },\n  notesButtonContainer: {\n    width: \"100%\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"flex-end\",\n    columnGap: \"10px\"\n  },\n  notesEditSaveButton,\n  notesCancelButton,\n  infoIcon: {\n    color: \"#084d6d\",\n    marginBottom: \"3.5px\",\n    marginRight: \"5px\"\n  },\n  snackbar: {\n    backgroundColor: \"#5BC4BF\",\n    color: \"#FFFFFF\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"16px\",\n    maxWidth: \"440px\",\n    textAlign: \"center\"\n  },\n  pinJobsButton: {\n    width: \"100px\",\n    height: \"26px\",\n    borderRadius: \"6px\",\n    backgroundColor: \"rgba(230, 160, 82, 0.2)\",\n    color: \"rgba(230, 160, 82)\",\n    textTransform: \"none\",\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"10px\",\n    fontWeight: \"700\",\n    position: \"absolute\",\n    zIndex: 99,\n    top: \"28px\",\n    right: \"0px\",\n    \"&:hover\": {\n      backgroundColor: \"rgba(230, 160, 82, 0.3)\"\n    }\n  },\n  pinJobsNotActive: {\n    backgroundColor: \"#EEEEEE\",\n    color: \"#AAAAAA\",\n    \"&:hover\": {\n      backgroundColor: \"rgba(230, 160, 82, 0.2)\",\n      color: \"rgba(230, 160, 82)\"\n    }\n  }\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nimport { theme } from \"../../../../ThemeContext/ThemeObject\";\nimport { sharedClasses } from \"../../../Components/CustomUIElements/sharedClasses\";\nimport {\n  pagination,\n  paginationContainer,\n  rowSelect,\n  rowSelectContainer\n} from \"../../../shared/styleClasses\";\nexport const classes = {\n  tableWrapper: {\n    tableLayout: \"auto !important\",\n    // minWidth: '1000px',\n    border: \"none\",\n    \"td, th, tr, thead\": {\n      fontFamily: \"Source Sans Pro, sans-serif\",\n      border: \"none\",\n      backgroundColor: \"#FFFFFF\",\n      textTransform: \"none\",\n      padding: \"12px 0px 12px 4px\"\n    },\n    th: {\n      color: theme.palette.primary.main,\n      fontSize: \"14px\",\n      fontWeight: \"bold\",\n      paddingBottom: \"5px\"\n    }\n  },\n  fileIconContainer: {\n    display: \"flex\",\n    alignItems: \"center\"\n  },\n  fileIcon: {\n    minWidth: \"50px\",\n    minHeight: \"50px\",\n    borderRadius: \"3px\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    backgroundColor: \"#084D6D10\",\n    \"& svg\": {\n      color: theme.palette.primary.main,\n      margin: \"0px 2px 2px 0px\"\n    }\n  },\n  fileDate: {\n    color: theme.palette.primary.main,\n    fontSize: \"14px\",\n    fontWeight: \"bold\"\n  },\n  fileName: {\n    color: \"#999999\"\n  },\n  fileLinkContainer: {\n    display: \"flex\",\n    alignItems: \"center\",\n    columnGap: \"14px\",\n    \"& a\": {\n      color: \"#333333\",\n      fontSize: \"14px\",\n      \"&:hover\": {\n        color: \"#000000\",\n        textDecoration: \"none\"\n      }\n    }\n  },\n  fileAttachedBy: {\n    color: \"#000000\",\n    fontSize: \"14px\"\n  },\n  copyButton: {\n    fontSize: \"10px\",\n    fontWeight: \"bold\",\n    backgroundColor: \"#5BC4BF1F\",\n    color: theme.palette.action.main,\n    borderRadius: \"6px\",\n    textTransform: \"none\",\n    \"&:hover\": {\n      backgroundColor: theme.palette.action.main,\n      color: \"#FFFFFF\"\n    }\n  },\n  noAttachments: __spreadValues({}, sharedClasses.noContentWrapper),\n  paginationParent: {\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    marginTop: \"20px\"\n  },\n  rowSelectContainer,\n  paginationContainer,\n  pagination,\n  rowSelect,\n  paginationMenuItems: {\n    \"& li\": {\n      fontFamily: \"Source Sans Pro\"\n    }\n  }\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport {\n  candidateSearchCommonStyles,\n  actionsModalReducedPaddingCommonStyles,\n  filterPopoverHeaderCommonStyles,\n  selectedApplicantsTableStyles,\n  selectedApplicantsTableRowStyles,\n  modalConfirmationButtonCommonStyles,\n  selectedTooltipCommonStyles\n} from \"../../shared/commonStyles\";\nimport {\n  statusClamp,\n  searchInput,\n  chip,\n  chipPacket,\n  chipSelected,\n  fileName,\n  newApplicationButton,\n  filterSwitchLabels,\n  rowSelect,\n  pagination,\n  csvExportModal,\n  csvExportHeader,\n  csvExportSubheader,\n  closeIcon,\n  switchLabels,\n  clearButton,\n  modalSendButton,\n  deleteApplicant,\n  csvExportButton,\n  applyButton,\n  actionButton,\n  filterPopoverContent,\n  paginationContainer,\n  selectedApplicantsTableHeader,\n  rowSelectContainer,\n  checkboxContainer\n} from \"../../shared/styleClasses\";\nexport const classes = {\n  applicationsContainer: {\n    paddingTop: \"6px\"\n  },\n  checkbox: {\n    color: \"#aaa !important\",\n    \"& .MuiSvgIcon-root\": {\n      fontSize: \"20px\"\n    },\n    \"&.Mui-checked\": {\n      color: \"#15C7C0 !important\"\n    }\n  },\n  sortable: {\n    \"&:hover\": {\n      color: \"#0C74A4\"\n    },\n    \"& .MuiTableSortLabel-icon\": {\n      color: \"darkgrey !important\"\n    }\n  },\n  candidateCell: {\n    display: \"flex\",\n    alignItems: \"center\",\n    \"& a\": {\n      color: \"#666666\",\n      fontWeight: \"bold\",\n      \"&:hover\": {\n        textDecoration: \"none\"\n      }\n    }\n  },\n  paginationParent: {\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    marginTop: \"20px\"\n  },\n  rowSelectContainer,\n  paginationContainer,\n  pagination,\n  rowSelect,\n  paginationMenuItems: {\n    \"& li\": {\n      fontFamily: \"Source Sans Pro\"\n    }\n  },\n  reviewSubheaders: {\n    color: \"#838383\",\n    fontSize: \"15px\",\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    paddingLeft: \"4px\"\n  },\n  reviewBoxes: {\n    backgroundColor: \"#f8f6f6\",\n    borderRadius: \"6px\",\n    border: \"1px solid #DDDDDD\",\n    display: \"block\",\n    minHeight: \"8.5rem\",\n    width: \"10.5rem\",\n    padding: \"1.5rem\"\n  },\n  reviewContent: {\n    padding: \"0 0 30px 4px\"\n  },\n  noApplications: {\n    width: \"100%\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    color: \"#DDDDDD\",\n    fontSize: \"18px\",\n    fontWeight: \"bold\",\n    margin: \"32px 0px\"\n  },\n  skeletonContainer: {\n    borderBottom: \"1px solid #DDDDDD\",\n    padding: \"10px 0px\"\n  },\n  selectedTooltip: __spreadProps(__spreadValues({}, selectedTooltipCommonStyles), {\n    justifyContent: \"center\",\n    width: \"250px\",\n    height: \"62px\",\n    left: \"calc(50% - 105px)\"\n  }),\n  fadeIn: {\n    visibility: \"visible\",\n    opacity: \"1\",\n    transform: \"translateX(0px)\",\n    transition: \"visibility 0s linear 0s, opacity 300ms, transform 300ms\"\n  },\n  fadeOut: {\n    visibility: \"hidden\",\n    opacity: \"0\",\n    transform: \"translateX(20px)\",\n    transition: \"visibility 0s linear 300ms, opacity 300ms, transform 300ms\"\n  },\n  selectedTooltipText: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"24px\",\n    fontWeight: \"bold\",\n    color: \"#666666\"\n  },\n  actionsContianer: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    gap: \"22px\",\n    marginBottom: \"50px\"\n  },\n  actionButton,\n  deleteApplicant,\n  filtersRow: {\n    display: \"flex\",\n    alignItems: \"flex-end\",\n    justifyContent: \"space-between\",\n    marginBottom: \"30px\",\n    columnGap: \"17px\"\n  },\n  iconButton: {\n    border: \"1px solid #EAEEF0\",\n    backgroundColor: \"#FFFFFF\",\n    borderRadius: \"6px\",\n    width: \"69px\",\n    height: \"60px\",\n    \"& svg\": {\n      fontSize: \"30px\",\n      color: \"#084D6D\"\n    }\n  },\n  iconButtonOpen: {\n    backgroundColor: \"rgba(8,77,109,0.121)\"\n  },\n  popover: {\n    marginTop: \"15px\"\n  },\n  popoverContent: {\n    width: \"272px\",\n    padding: \"22px 0px 22px 24px\",\n    boxShadow: \"0px 2px 14px rgba(48,90,111,0.16)\"\n  },\n  switchLabels,\n  switch: {\n    \"& .MuiSwitch-thumb\": {\n      color: \"#FFFFFF\"\n    },\n    \"& :hover\": {\n      backgroundColor: \"rgba(91, 196, 191, 0.17)\"\n    }\n  },\n  switchActive: {\n    \"& .MuiSwitch-thumb\": {\n      color: \"#5BC4BF\"\n    }\n  },\n  filterSwitch: {\n    transform: \"translateX(10px)\",\n    \"& .MuiSwitch-thumb\": {\n      color: \"#FFFFFF\"\n    },\n    \"& :hover\": {\n      backgroundColor: \"rgba(91, 196, 191, 0.17)\"\n    }\n  },\n  filterSwitchActive: {\n    transform: \"translateX(10px)\",\n    \"& .MuiSwitch-thumb\": {\n      color: \"#5BC4BF\"\n    }\n  },\n  filterSwitchLabels,\n  labelActive: {\n    \"& .MuiFormControlLabel-label\": {\n      color: \"#CCCCCC\",\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"14px\",\n      fontWeight: \"bold\"\n    }\n  },\n  searchInput,\n  newApplicationButton,\n  attachmentsHeader: {\n    width: \"50px\"\n  },\n  attachmentsCell: {\n    width: \"50px\",\n    \"& svg\": {\n      color: theme.palette.primary.main,\n      fontSize: \"18px\",\n      cursor: \"pointer\"\n    }\n  },\n  attachmentItem: {\n    display: \"flex\",\n    alignItems: \"center\",\n    columnGap: \"10px\",\n    padding: \"14px\",\n    cursor: \"pointer\",\n    \"&:hover\": {\n      backgroundColor: \"#F5F5F5\"\n    }\n  },\n  fileIcon: {\n    color: theme.palette.primary.main\n  },\n  fileName,\n  filterPopoverContent,\n  scrollableFilters: {\n    height: \"fit-content\",\n    padding: \"26px\",\n    paddingTop: \"0px\"\n  },\n  filterPopoverHeader: __spreadProps(__spreadValues({}, filterPopoverHeaderCommonStyles), {\n    top: \"0px\"\n  }),\n  clearButton,\n  applyButton,\n  filterOptionContainer: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    color: \"#084D6D\",\n    marginBottom: \"12px\"\n  },\n  checkboxContainer,\n  ratingSlider: {\n    fontFamily: \"Source Sans Pro\",\n    color: theme.palette.action.main,\n    height: \"2px\",\n    \"& .MuiSlider-rail\": {\n      backgroundColor: \"#E0E0E0\"\n    },\n    \"& .MuiSlider-track\": {\n      backgroundColor: theme.palette.action.main\n    },\n    \"& .MuiSlider-thumb\": {\n      backgroundColor: theme.palette.action.main,\n      width: \"8px\",\n      height: \"8px\",\n      \"&:hover\": {\n        boxShadow: \"0px 0px 0px 5px\" + theme.palette.action.main + \"16\"\n      }\n    },\n    \"& .MuiSlider-thumb.Mui-active\": {\n      boxShadow: \"0px 0px 0px 7px\" + theme.palette.action.main + \"16\"\n    },\n    \"& .MuiSlider-valueLabel\": {\n      fontSize: \"11px\",\n      backgroundColor: \"transparent\",\n      color: theme.palette.primary.main,\n      top: \"36px\",\n      \"&::after\": {\n        display: \"none\"\n      }\n    }\n  },\n  csvExportModal,\n  csvExportHeader,\n  csvExportSubheader,\n  closeIcon,\n  chipPacket,\n  chipSelected,\n  chip,\n  csvExportButton,\n  actionsModal: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    padding: \"0 60px\",\n    maxWidth: \"1000px\",\n    width: \"100%\",\n    height: \"84vh\",\n    maxHeight: \"1200px\",\n    borderRadius: \"6px\",\n    dropShadow: \"0px 2px 14px #305A6F29\",\n    position: \"absolute\",\n    background: \"#FFFFFF\",\n    top: \"50%\",\n    left: \"50%\",\n    transform: \"translate(-50%, -50%)\"\n  },\n  modalHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"28px\",\n    fontWeight: \"bold\",\n    color: theme.palette.primary.main,\n    lineHeight: \"32px\"\n  },\n  calendar: {\n    zIndex: \"19001\",\n    \"& .PrivatePickersFadeTransitionGroup-root\": {\n      fontFamily: \"Source Sans Pro\"\n    },\n    \"& .MuiTypography-root\": {\n      fontFamily: \"Source Sans Pro\"\n    },\n    \"& .Mui-selected\": {\n      backgroundColor: `${theme.palette.action.main} !important`\n    },\n    \"& .PrivatePickersSlideTransition-root\": {\n      minHeight: \"242px !important\"\n    }\n  },\n  formAutocomplete: {\n    \"& .MuiAutocomplete-root\": {\n      \"& .MuiOutlinedInput-root\": {\n        padding: \"0px\"\n      }\n    },\n    \"& .MuiOutlinedInput-root\": {\n      borderRadius: \"6px\",\n      position: \"relative\",\n      backgroundColor: \"#FFFFFF\",\n      color: \"#333333\",\n      border: \"1px solid #DDDDDD\",\n      fontSize: \"16px\",\n      padding: \"0px\",\n      margin: \"3px\",\n      fontFamily: \"Source Sans Pro, sans-serif\",\n      transition: \"all 0.16s ease-in-out\",\n      \"& .MuiAutocomplete-input\": {\n        padding: \"6px 4px 6px 11px\"\n      }\n    },\n    \"& fieldset\": {\n      display: \"none\"\n    },\n    \"& label\": {\n      color: \"#838383 !important\",\n      fontSize: \"21px\",\n      fontFamily: \"Source Sans Pro, sans-serif\",\n      paddingLeft: \"4px\",\n      left: \"-13px\",\n      top: \"-15px\",\n      \"& .MuiFormLabel-asterisk\": {\n        color: theme.palette.error.main\n      }\n    },\n    \"& .MuiAutocomplete-popupIndicator\": {\n      transition: \"all 0.25s ease-in-out\",\n      color: \"#AAAAAA\"\n    }\n  },\n  datePicker: {\n    fontFamily: \"Source Sans Pro\",\n    width: \"250px\",\n    color: \"#666666\",\n    borderRadius: \"6px\",\n    \"& input\": {\n      padding: \"5px 10px 7px 10px\",\n      fontFamily: \"Source Sans Pro\"\n    },\n    \"& fieldset\": {\n      borderColor: \"#DDDDDD\",\n      \"& legend\": {\n        display: \"none\"\n      }\n    },\n    \"& button\": {\n      padding: \"0px\",\n      transform: \"translate(-2px, -1.5px)\",\n      \"&:hover\": {\n        background: \"transparent\",\n        \"& svg\": {\n          color: \"#888888\"\n        }\n      }\n    },\n    \"& .MuiInputAdornment-root\": {\n      marginLeft: \"0px\"\n    },\n    \"& svg\": {\n      color: \"#AAAAAA\"\n    }\n  },\n  editStep: {\n    position: \"fixed\",\n    fontSize: \"13px\",\n    paddingLeft: \"1px\",\n    cursor: \"pointer\"\n  },\n  modalHeaderContent: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"28px\",\n    fontWeight: \"bold\",\n    color: \"#727272\",\n    marginBottom: \"1.75rem\",\n    lineHeight: \"2rem\"\n  },\n  stepNumberGreen: {\n    width: \"2rem\",\n    height: \"2rem\",\n    borderRadius: \"1rem\",\n    backgroundColor: \"#5BC4BF\",\n    color: \"#FFFFFF\",\n    textAlign: \"center\",\n    alignItems: \"center\",\n    fontWeight: \"700\",\n    display: \"grid\"\n  },\n  stepNumberGrey: {\n    width: \"2rem\",\n    height: \"2rem\",\n    borderRadius: \"1rem\",\n    backgroundColor: \"#DDDDDD\",\n    color: \"#727272\",\n    textAlign: \"center\",\n    alignItems: \"center\",\n    fontWeight: \"700\",\n    display: \"grid\"\n  },\n  verticleLine: {\n    width: \"1px\",\n    backgroundColor: \"#DDDDDD\",\n    marginLeft: \"0.97rem\",\n    height: \"100%\"\n  },\n  verticleLineWhite: {\n    width: \"1px\",\n    backgroundColor: \"#FFFFFF\",\n    marginLeft: \"0.97rem\",\n    height: \"100%\"\n  },\n  modalContent: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    height: \"80%\",\n    overflowY: \"auto\",\n    margin: \"46px 0px\"\n  },\n  modalContentStep3: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    height: \"91%\",\n    overflowY: \"auto\",\n    marginBottom: \"25px\"\n  },\n  errorBox: {\n    color: theme.palette.error.main,\n    fontFamily: \"Source Sans Pro, sans-serif\",\n    fontSize: \"13px\",\n    position: \"absolute\",\n    bottom: \"-30px\",\n    height: \"2rem\",\n    left: \"4px\"\n  },\n  modalFooter: {\n    display: \"flex\",\n    flexDirection: \"row\",\n    width: \"100%\",\n    justifyContent: \"flex-end\",\n    columnGap: \"20px\"\n  },\n  modalFormLine: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    flexDirection: \"row\",\n    columnGap: \"50px\",\n    rowGap: \"26px\",\n    alignItems: \"center\",\n    marginBottom: \"26px\",\n    width: \"100%\"\n  },\n  modalConfirmationButton: __spreadProps(__spreadValues({}, modalConfirmationButtonCommonStyles), {\n    padding: \"8px 14px\"\n  }),\n  modalEditButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    textTransform: \"none\",\n    color: \"rgb(91,196,191)\",\n    background: \"rgb(91,196,191,0.12)\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    padding: \"8px 14px\",\n    \"&:hover\": {\n      backgroundColor: \"#5BC4BF\",\n      color: \"#FFFFFF\",\n      boxShadow: \"none\"\n    }\n  },\n  modalCancelButton: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    width: \"100px\",\n    textTransform: \"none\",\n    textDecoration: \"underline\",\n    color: theme.palette.error.main,\n    backgroundColor: \"#FFFFFF\",\n    borderRadius: \"6px\",\n    boxShadow: \"none\",\n    padding: \"5px 0px\",\n    \"&:hover\": {\n      backgroundColor: \"#FFFFFF\",\n      textDecoration: \"none\",\n      boxShadow: \"none\"\n    }\n  },\n  fullWidthFieldContainer: {\n    maxWidth: \"630px\",\n    width: \"100%\",\n    display: \"flex\",\n    flexDirection: \"column\",\n    marginBottom: \"26px\"\n  },\n  fullWidthField: {\n    width: \"100%\",\n    marginBottom: \"26px\"\n  },\n  uploadSection: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    width: \"100%\",\n    \"& h3\": {\n      color: \"#939393\",\n      fontSize: \"19px\",\n      fontWeight: \"Bold\",\n      marginBottom: \"14px\"\n    }\n  },\n  uploadContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    margin: \"2px\",\n    marginBottom: \"24px\",\n    rowGap: \"8px\",\n    fontSize: \"17px\",\n    fontWeight: \"600\",\n    color: \"#AAAAAA\"\n  },\n  statusClamp,\n  statusColour: {\n    position: \"absolute\",\n    height: \"6px\",\n    width: \"6px\",\n    borderRadius: \"50%\",\n    top: \"calc(50% - 3px)\",\n    left: \"10px\"\n  },\n  noDropdown: {\n    border: \"1px solid #FFFFFF\",\n    \"& .status-dropdown-full\": {\n      border: \"1px solid #FFFFFF\"\n    },\n    \"&::after\": {\n      display: \"none\"\n    }\n  },\n  noStatuses: {\n    width: \"100%\",\n    paddingLeft: \"18px\",\n    display: \"flex\"\n  },\n  statusDropdown: {\n    border: \"1px solid #CCCCCC\",\n    borderRadius: \"6px\",\n    cursor: \"pointer\",\n    \"&::after\": {\n      display: \"block\"\n    }\n  },\n  statusDropdownItem: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"13px\",\n    padding: \"6px 12px\",\n    cursor: \"pointer\",\n    \"&:hover\": {\n      backgroundColor: \"#F1F1F1\"\n    }\n  },\n  statusDropdownItems: {\n    \"& .MuiPaper-root\": {\n      width: \"200px\",\n      maxHeight: \"250px\",\n      overflowY: \"auto\",\n      borderRadius: \"6px\",\n      marginTop: \"6px\"\n    }\n  },\n  statusLoader: {\n    color: theme.palette.primary.main,\n    position: \"absolute\",\n    zIndex: \"4\",\n    top: \"calc(50% - 9px)\",\n    left: \"calc(50% - 9px)\"\n  },\n  applicationStatus: {\n    \"& span\": {\n      cursor: \"pointer\"\n    }\n  },\n  formCheckbox: {\n    color: \"#ddd !important\",\n    \"& .MuiSvgIcon-root\": {\n      fontSize: \"20px\"\n    },\n    \"&.Mui-checked\": {\n      color: \"#15C7C0 !important\"\n    }\n  },\n  actionModalFormLine: {\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    flexDirection: \"row\",\n    columnGap: \"50px\",\n    rowGap: \"26px\",\n    alignItems: \"center\",\n    marginBottom: \"26px\",\n    width: \"100%\",\n    marginLeft: \"12px\"\n  },\n  actionModalHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"28px\",\n    fontWeight: \"bold\",\n    color: theme.palette.primary.main,\n    marginLeft: \"12px\"\n  },\n  actionsModalReducedPadding: __spreadProps(__spreadValues({}, actionsModalReducedPaddingCommonStyles), {\n    maxWidth: \"950px\"\n  }),\n  modalSendButton,\n  selectedApplicantsTable: __spreadProps(__spreadValues({}, selectedApplicantsTableStyles), {\n    minWidth: \"650px\",\n    \"td, th, tr, thead\": __spreadProps(__spreadValues({}, selectedApplicantsTableRowStyles), {\n      padding: \"5px 8px 5px 0\"\n    })\n  }),\n  selectedApplicantsTableHeader,\n  candidateSearch: __spreadProps(__spreadValues({}, candidateSearchCommonStyles), {\n    \"& fieldset\": {\n      borderColor: \"#6DB5B1\",\n      backgroundColor: \"#AAAAAA09\"\n    },\n    \"&:hover\": {\n      \"& fieldset\": {\n        borderColor: \"#DADEE0 !important\"\n      }\n    }\n  }),\n  iconGrey: {\n    color: \"#666666\",\n    fontSize: \"28px\"\n  },\n  questionsTitle: {\n    color: theme.palette.primary.main,\n    fontSize: \"13px\",\n    fontWeight: \"bold\",\n    paddingBottom: \"5px\"\n  },\n  weightValue: {\n    fontSize: \"13px\",\n    textAlign: \"center\"\n  },\n  iconGreen: {\n    color: theme.palette.success.main,\n    fontSize: \"1.25rem\",\n    margin: \"auto\",\n    display: \"flex\"\n  },\n  iconGreenResources: {\n    color: theme.palette.success.main,\n    fontSize: \"1.25rem\",\n    marginLeft: \"0.5rem\",\n    display: \"flex\"\n  },\n  iconRed: {\n    color: theme.palette.error.main,\n    fontSize: \"1.25rem\",\n    margin: \"auto\",\n    display: \"flex\"\n  },\n  questionsWrapper: {\n    display: \"flex\",\n    padding: \"12px 18px 0 18px\",\n    background: \"#F3F3F3\",\n    marginBottom: \"1.75rem\",\n    borderRadius: \"6px\"\n  },\n  questionInput: {\n    \"& span\": {\n      fontSize: \"14px !Important\"\n    }\n  },\n  previewContainer: {\n    marginTop: \"1rem\",\n    \"& h3\": {\n      marginBottom: \"1rem\",\n      marginTop: \".3rem\",\n      color: \"#727272\",\n      fontSize: \"16px\"\n    }\n  }\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport moment from \"moment\";\nimport { SortableColumnId } from \"../Job/types\";\nimport { convertToGroupAndTabIndex, convertToPanelIndex, TabGroup } from \"../EditJob/tabIndexUtils\";\nexport const jobsConfig = {\n  sortableColumnsDefaults: [\n    {\n      id: \"reference\",\n      label: \"Reference\",\n      sortable: false,\n      canToggle: false,\n      enabled: true\n    },\n    {\n      id: \"title\",\n      label: \"Title\",\n      sortable: true,\n      canToggle: false,\n      enabled: true\n    },\n    {\n      id: \"published_at\",\n      label: \"Published\",\n      sortable: true,\n      canToggle: true,\n      enabled: false\n    },\n    {\n      id: \"created_at\",\n      label: \"Created\",\n      sortable: true,\n      canToggle: true,\n      enabled: true\n    },\n    {\n      id: \"expires_at\",\n      label: \"Expiry\",\n      sortable: true,\n      canToggle: true,\n      enabled: false\n    },\n    {\n      id: \"applications_count\",\n      label: \"Applications\",\n      sortable: true,\n      canToggle: true,\n      enabled: true\n    },\n    {\n      id: \"state\",\n      label: \"State\",\n      sortable: true,\n      canToggle: true,\n      enabled: true\n    },\n    {\n      id: \"status\",\n      label: \"Status\",\n      sortable: true,\n      canToggle: true,\n      enabled: true\n    },\n    {\n      id: \"entity\",\n      label: \"Entity\",\n      sortable: true,\n      canToggle: true,\n      enabled: true\n    },\n    {\n      id: \"location\",\n      label: \"Location\",\n      sortable: false,\n      canToggle: true,\n      enabled: false\n    },\n    {\n      id: \"assigned_user\",\n      label: \"Assigned User\",\n      sortable: false,\n      canToggle: true,\n      enabled: false\n    },\n    {\n      id: \"recruitment_ad_user\",\n      label: \"RM User\",\n      sortable: false,\n      canToggle: true,\n      enabled: false\n    },\n    {\n      id: SortableColumnId.NOTES,\n      label: \"Notes\",\n      sortable: false,\n      canToggle: true,\n      enabled: false\n    }\n  ],\n  headers: [\n    {\n      name: \"reference\",\n      label: \"Reference\"\n    },\n    {\n      name: \"title\",\n      label: \"Title\"\n    },\n    {\n      name: \"published_at\",\n      label: \"Published\"\n    },\n    {\n      name: \"created_at\",\n      label: \"Created\"\n    },\n    {\n      name: \"expires_at\",\n      label: \"Expiry\"\n    },\n    {\n      name: \"applications_count\",\n      label: \"Applications\"\n    },\n    {\n      name: \"state\",\n      label: \"State\"\n    },\n    {\n      name: \"status\",\n      label: \"Status\"\n    },\n    {\n      name: \"entity\",\n      label: \"Entity\"\n    },\n    {\n      name: \"location\",\n      label: \"Location\"\n    },\n    {\n      name: \"assigned_user\",\n      label: \"Assigned User\"\n    },\n    {\n      name: \"recruitment_ad_user\",\n      label: \"RM User\"\n    },\n    {\n      name: \"notes\",\n      label: \"Notes\"\n    }\n  ],\n  archivedHeaders: [\n    {\n      name: \"reference\",\n      label: \"Reference\"\n    },\n    {\n      name: \"title\",\n      label: \"Title\"\n    },\n    {\n      name: \"published_at\",\n      label: \"Published\"\n    },\n    {\n      name: \"created_at\",\n      label: \"Created\"\n    },\n    {\n      name: \"expires_at\",\n      label: \"Expiry\"\n    },\n    {\n      name: \"applications_count\",\n      label: \"Applications\"\n    },\n    {\n      name: \"state\",\n      label: \"State\"\n    },\n    {\n      name: \"entity\",\n      label: \"Entity\"\n    },\n    {\n      name: \"location\",\n      label: \"Location\"\n    },\n    {\n      name: \"assigned_user\",\n      label: \"Assigned User\"\n    },\n    {\n      name: \"recruitment_ad_user\",\n      label: \"RM User\"\n    }\n  ],\n  dropdownOptions: [\n    {\n      name: \"published_at\",\n      label: \"Published\"\n    },\n    {\n      name: \"created_at\",\n      label: \"Created\"\n    },\n    {\n      name: \"expires_at\",\n      label: \"Expiry\"\n    },\n    {\n      name: \"applications_count\",\n      label: \"Applications\"\n    },\n    {\n      name: \"state\",\n      label: \"State\"\n    },\n    {\n      name: \"status\",\n      label: \"Status\"\n    },\n    {\n      name: \"entity\",\n      label: \"Entity\"\n    },\n    {\n      name: \"location\",\n      label: \"Location\"\n    },\n    {\n      name: \"assigned_user\",\n      label: \"Assigned User\"\n    },\n    {\n      name: \"recruitment_ad_user\",\n      label: \"RM User\"\n    },\n    {\n      name: \"notes\",\n      label: \"Notes\"\n    }\n  ],\n  archivedDropdownOptions: [\n    {\n      name: \"published_at\",\n      label: \"Published\"\n    },\n    {\n      name: \"created_at\",\n      label: \"Created\"\n    },\n    {\n      name: \"expires_at\",\n      label: \"Expiry\"\n    },\n    {\n      name: \"applications_count\",\n      label: \"Applications\"\n    },\n    {\n      name: \"state\",\n      label: \"State\"\n    },\n    {\n      name: \"entity\",\n      label: \"Entity\"\n    },\n    {\n      name: \"location\",\n      label: \"Location\"\n    },\n    {\n      name: \"assigned_user\",\n      label: \"Assigned User\"\n    },\n    {\n      name: \"recruitment_ad_user\",\n      label: \"RM User\"\n    }\n  ],\n  fieldDropdownSetting: {\n    published_at: true,\n    created_at: false,\n    expires_at: true,\n    applications_count: true,\n    state: true,\n    status: false,\n    location: true,\n    entity: true,\n    assigned_user: false,\n    recruitment_ad_user: false,\n    notes: false\n  },\n  defaultFilterOptions: {\n    state: [\n      {\n        value: \"published\",\n        name: \"Published\"\n      },\n      {\n        value: \"unpublished\",\n        name: \"Unpublished\"\n      },\n      {\n        value: \"draft\",\n        name: \"Draft\"\n      },\n      {\n        value: \"saved\",\n        name: \"Saved\"\n      },\n      {\n        value: \"closed\",\n        name: \"Closed\"\n      }\n    ],\n    entity: [\n      {\n        id: 1,\n        name: \"No Entities Found\"\n      }\n    ],\n    status: [\n      {\n        name: \"No Statuses Found\"\n      }\n    ],\n    location: [\n      {\n        name: \"No Locations Found\"\n      }\n    ],\n    assigned_user: [\n      {\n        id: 1,\n        name: \"No Assigned Users Found\"\n      }\n    ],\n    recruitment_ad_user: [\n      {\n        id: 0,\n        name: \"No RM Users Found\"\n      }\n    ]\n  },\n  currentStateOptions: {\n    state: [\n      {\n        value: \"published\",\n        name: \"Published\"\n      },\n      {\n        value: \"unpublished\",\n        name: \"Unpublished\"\n      },\n      {\n        value: \"draft\",\n        name: \"Draft\"\n      },\n      {\n        value: \"saved\",\n        name: \"Saved\"\n      },\n      {\n        value: \"closed\",\n        name: \"Closed\"\n      }\n    ]\n  },\n  archivedStateOptions: {\n    state: [\n      {\n        value: \"saved\",\n        name: \"Saved\"\n      },\n      {\n        value: \"closed\",\n        name: \"Closed\"\n      }\n    ]\n  }\n};\nexport const applicantDetailsDefault = {\n  firstName: { error: \"\", required: true, value: \"\" },\n  lastName: { error: \"\", required: true, value: \"\" },\n  email: { error: \"\", required: true, value: \"\" },\n  phone: { error: \"\", required: true, value: \"\" },\n  addressFirstLine: { error: \"\", required: true, value: \"\" },\n  addressSecondLine: { error: \"\", required: false, value: \"\" },\n  country: { error: \"\", required: true, value: \"\" },\n  region: { error: \"\", required: true, value: \"\" },\n  employeeId: { error: \"\", required: false, value: \"\" }\n};\nexport const createJobDefault = {\n  reference: { error: \"\", required: true, value: \"\" },\n  title: { error: \"\", required: true, value: \"\" },\n  expires_at: { error: \"\", required: true, value: null },\n  location: { error: \"\", required: true, value: \"\" }\n};\nexport const editGeneralJobDefault = (job) => {\n  var _a, _b;\n  return {\n    reference: { error: \"\", required: true, value: job.reference },\n    title: { error: \"\", required: true, value: job.title },\n    expires_at: { error: \"\", required: true, value: job.expires_at },\n    time: { error: \"\", required: true, value: job.expires_at },\n    location: { error: \"\", required: true, value: job.location },\n    employment_status: { error: \"\", required: false, value: job.employment_status },\n    salary_info: { error: \"\", required: false, value: job.salary_info },\n    number_of_vacancies: {\n      error: \"\",\n      required: false,\n      value: (job == null ? void 0 : job.number_of_vacancies) ? job.number_of_vacancies : null\n    },\n    from_email: { error: \"\", required: false, value: (job == null ? void 0 : job.from_email) ? job.from_email : \"\" },\n    external_approval_id: {\n      error: \"\",\n      required: false,\n      value: (job == null ? void 0 : job.external_approval_id) ? job.external_approval_id : \"\"\n    },\n    requisitions: { error: \"\", required: false, value: (job == null ? void 0 : job.requisitions) ? job.requisitions : [] },\n    time_zone: { error: \"\", required: false, value: (job == null ? void 0 : job.time_zone) ? job.time_zone : null },\n    brand: { error: \"\", required: false, value: (job == null ? void 0 : job.brand) ? job.brand : null },\n    locale: { error: \"\", required: false, value: (job == null ? void 0 : job.locale) ? localDefaults(job) : [] },\n    country_id: { error: \"\", required: false, value: (job == null ? void 0 : job.country_id) ? job == null ? void 0 : job.country_id : null },\n    options: (job == null ? void 0 : job.options) ? additionalOptionsDefaults(job) : null,\n    classification_list: ((_a = job == null ? void 0 : job.classifications) == null ? void 0 : _a.length) > 0 ? job.classifications : [],\n    classification_ids: ((_b = job == null ? void 0 : job.classifications) == null ? void 0 : _b.length) > 0 ? setClassificationIds(job) : [],\n    classifications: { error: \"\", required: false, value: null },\n    sub_classifications: { error: \"\", required: false, value: null },\n    auto_rater: { error: \"\", required: false, value: (job == null ? void 0 : job.auto_rater) ? job.auto_rater : null },\n    assigned_user: {\n      error: \"\",\n      required: false,\n      value: (job == null ? void 0 : job.assigned_user) ? job.assigned_user : null\n    },\n    smart_form_recipients: {\n      error: \"\",\n      required: false,\n      value: (job == null ? void 0 : job.smart_form_recipients) ? job.smart_form_recipients : []\n    },\n    pinned_users: { error: \"\", required: false, value: (job == null ? void 0 : job.pinned_users) ? job.pinned_users : [] },\n    recipients: { error: \"\", required: false, value: (job == null ? void 0 : job.recipients) ? job.recipients : [] },\n    salesperson: {\n      error: \"\",\n      required: false,\n      value: (job == null ? void 0 : job.salesperson) ? `${job.salesperson.id} - ${job.salesperson.firstname} ${job.salesperson.lastname}` : null\n    },\n    rm_team_member: {\n      error: \"\",\n      required: false,\n      value: (job == null ? void 0 : job.rm_team_member) ? `${job.rm_team_member.id} - ${job.rm_team_member.firstname} ${job.rm_team_member.lastname}` : null\n    },\n    external: job.external,\n    internal: job.internal,\n    privacy_acknowledgement: job.privacy_acknowledgement,\n    entity_privacy_acknowledgement: job.entity_privacy_acknowledgement,\n    entity_privacy_acknowledgement_link: job.entity_privacy_acknowledgement_link,\n    linkedin_listing_opt_in: job.linkedin_listing_opt_in,\n    address_state: {\n      error: \"\",\n      required: false,\n      value: (job == null ? void 0 : job.address_state) ? job == null ? void 0 : job.address_state : \"\"\n    },\n    postcode: { error: \"\", required: false, value: (job == null ? void 0 : job.postcode) ? job == null ? void 0 : job.postcode : \"\" },\n    tag_list: { error: \"\", required: false, value: (job == null ? void 0 : job.tag_list) ? job == null ? void 0 : job.tag_list : \"\" }\n  };\n};\nexport const editPanelWorkflowDefault = (job) => {\n  return {\n    panel_chairs: { error: \"\", required: false, value: (job == null ? void 0 : job.panel_chairs) ? job.panel_chairs : [] },\n    panel_members: {\n      error: \"\",\n      required: false,\n      value: (job == null ? void 0 : job.panel_members) ? job.panel_members : []\n    },\n    panel_observers: {\n      error: \"\",\n      required: false,\n      value: (job == null ? void 0 : job.panel_observers) ? job.panel_observers : []\n    }\n  };\n};\nexport const editGoogleScriptDefault = (job) => {\n  return {\n    google_conversion_script: {\n      error: \"\",\n      required: false,\n      value: (job == null ? void 0 : job.google_conversion_script) ? job.google_conversion_script : \"\"\n    }\n  };\n};\nexport const editRevolveDefault = (job) => {\n  return {\n    revolve_position_title: {\n      error: \"\",\n      required: false,\n      value: (job == null ? void 0 : job.revolve_position_title) ? job.revolve_position_title : \"\"\n    }\n  };\n};\nexport const editRequisitionInfoDefault = (job) => {\n  return {\n    requisition_info: {\n      error: \"\",\n      required: false,\n      value: (job == null ? void 0 : job.requisition_info) ? job.requisition_info : \"\"\n    }\n  };\n};\nexport const editDescriptionDefault = (job) => {\n  return {\n    summary: { error: \"\", required: false, value: (job == null ? void 0 : job.summary) ? job.summary : \"\" },\n    description: { error: \"\", required: false, value: (job == null ? void 0 : job.description) ? job.description : \"\" }\n  };\n};\nexport const editTemplateDefault = (job) => {\n  return {\n    template_enabled: job == null ? void 0 : job.template_enabled,\n    template: { error: \"\", required: false, value: (job == null ? void 0 : job.template) ? job.template : \"\" }\n  };\n};\nexport const editSourcesDefault = (job) => {\n  return {\n    sources: { error: \"\", required: false, value: (job == null ? void 0 : job.sources) ? job.sources : [] }\n  };\n};\nexport const editAttachmentsDefault = (job) => {\n  return {\n    candidate_attachments: {\n      error: \"\",\n      required: false,\n      value: (job == null ? void 0 : job.candidate_attachments) ? job.candidate_attachments : []\n    }\n  };\n};\nexport const newJobsConfig = {\n  resource_field_choices: [\n    {\n      id: \"resources[description]\",\n      name: \"Description\",\n      position: 0\n    },\n    {\n      id: \"resources[questions]\",\n      name: \"Questions\",\n      position: 1\n    },\n    {\n      id: \"resources[attachments]\",\n      name: \"Attachments\",\n      position: 2\n    },\n    {\n      id: \"resources[sources]\",\n      name: \"Sources\",\n      position: 3\n    },\n    {\n      id: \"resources[auto_actions]\",\n      name: \"Auto-Actions\",\n      position: 4\n    },\n    {\n      id: \"resources[options]\",\n      name: \"Options\",\n      position: 5\n    },\n    {\n      id: \"resources[visibility]\",\n      name: \"Visibility\",\n      position: 6\n    }\n  ]\n};\nexport const resourceDefault = {\n  \"resources[description]\": true,\n  \"resources[questions]\": true,\n  \"resources[attachments]\": true,\n  \"resources[sources]\": true,\n  \"resources[auto_actions]\": true,\n  \"resources[options]\": true,\n  \"resources[visibility]\": true\n};\nexport const additionalOptionsDefaults = (job) => {\n  return __spreadProps(__spreadValues({}, job.options), {\n    indeed_apply: job.options.indeed_apply === \"1\",\n    indeed_salary: job.options.indeed_salary === \"1\",\n    sponsor_on_indeed: job.options.sponsor_on_indeed === \"1\",\n    blind_rating: job.options.blind_rating === \"1\",\n    hide_rating_activity: job.options.hide_rating_activity === \"1\",\n    auto_ratings: job.options.auto_ratings === \"1\",\n    title_field: job.options.title_field === \"1\",\n    gender_field: job.options.gender_field === \"1\",\n    employee_id_field: job.options.employee_id_field === \"1\",\n    linkedin_field: job.options.linkedin_field === \"1\",\n    linkedin_listing_opt_in: job.linkedin_listing_opt_in,\n    job_expiry_email_reminder: job.options.job_expiry_email_reminder === \"1\"\n  });\n};\nexport const changeURL = (newValue, search, urlParams) => {\n  if (search) {\n    const tabIndex = convertToGroupAndTabIndex(newValue);\n    switch (tabIndex.group) {\n      case TabGroup.JOB_INFORMATION:\n        switch (tabIndex.index) {\n          case 0:\n            return \"\";\n          case 1:\n            return \"?description\";\n          case 2:\n            return \"?template\";\n          case 3:\n            return \"?questions\";\n          case 4:\n            return \"?sources\";\n        }\n        break;\n      case TabGroup.CANDIDATE_SETTINGS:\n        switch (tabIndex.index) {\n          case 0:\n            return \"?attachments\";\n        }\n        break;\n      case TabGroup.AUTOMATION:\n        switch (tabIndex.index) {\n          case 0:\n            return \"?auto-statuses\";\n          case 1:\n            return \"?status-transitions\";\n          case 2:\n            return \"?auto-forward\";\n          case 3:\n            return \"?auto-email-reply\";\n          case 4:\n            return \"?auto-sms-reply\";\n          case 5:\n            return \"?auto-sms-forward\";\n        }\n        break;\n      case TabGroup.ADVANCED:\n        switch (tabIndex.index) {\n          case 0:\n            return \"?requisition-info\";\n          case 1:\n            return \"?configure-application-hr-questions\";\n          case 2:\n            return \"?automated-testgrid\";\n          case 3:\n            return \"?revolve\";\n          case 4:\n            return \"?google-conversion-script\";\n          case 5:\n            return \"?panel-workflow\";\n          case 6:\n            return \"?ai-studio\";\n        }\n      default:\n        return \"\";\n    }\n  } else {\n    switch (urlParams) {\n      case \"?description\":\n        return convertToPanelIndex(1, TabGroup.JOB_INFORMATION);\n      case \"?template\":\n        return convertToPanelIndex(2, TabGroup.JOB_INFORMATION);\n      case \"?questions\":\n        return convertToPanelIndex(3, TabGroup.JOB_INFORMATION);\n      case \"?sources\":\n        return convertToPanelIndex(4, TabGroup.JOB_INFORMATION);\n      case \"?attachments\":\n        return convertToPanelIndex(0, TabGroup.CANDIDATE_SETTINGS);\n      case \"?auto-statuses\":\n        return convertToPanelIndex(0, TabGroup.AUTOMATION);\n      case \"?status-transitions\":\n        return convertToPanelIndex(1, TabGroup.AUTOMATION);\n      case \"?auto-forward\":\n        return convertToPanelIndex(2, TabGroup.AUTOMATION);\n      case \"?auto-email-reply\":\n        return convertToPanelIndex(3, TabGroup.AUTOMATION);\n      case \"?auto-sms-reply\":\n        return convertToPanelIndex(4, TabGroup.AUTOMATION);\n      case \"?auto-sms-forward\":\n        return convertToPanelIndex(5, TabGroup.AUTOMATION);\n      case \"?requisition-info\":\n        return convertToPanelIndex(0, TabGroup.ADVANCED);\n      case \"?configure-application-hr-questions\":\n        return convertToPanelIndex(1, TabGroup.ADVANCED);\n      case \"?automated-testgrid\":\n        return convertToPanelIndex(2, TabGroup.ADVANCED);\n      case \"?revolve\":\n        return convertToPanelIndex(3, TabGroup.ADVANCED);\n      case \"?google-conversion-script\":\n        return convertToPanelIndex(4, TabGroup.ADVANCED);\n      case \"?panel-workflow\":\n        return convertToPanelIndex(5, TabGroup.ADVANCED);\n      case \"?ai-studio\":\n        return convertToPanelIndex(6, TabGroup.ADVANCED);\n      default:\n        return 1;\n    }\n  }\n};\nexport const editJobObject = (candidateAttachments, generalTabJobData, descriptionTabJobData, templateTabJobData, revolveTabJobData, googleScriptTabJobData, panelWorkflowTabJobData, sourceListIds) => {\n  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F, _G, _H, _I, _J, _K, _L, _M, _N, _O, _P, _Q, _R, _S, _T, _U, _V, _W, _X, _Y, _Z, __, _$, _aa, _ba, _ca, _da, _ea, _fa, _ga, _ha, _ia, _ja, _ka, _la, _ma, _na, _oa, _pa, _qa, _ra, _sa, _ta, _ua, _va, _wa, _xa, _ya, _za, _Aa, _Ba, _Ca, _Da;\n  const attachmentObject = {};\n  candidateAttachments == null ? void 0 : candidateAttachments.map((attachment) => {\n    attachmentObject[attachment.id] = {\n      name: attachment.label,\n      mandatory: attachment.required ? \"1\" : \"0\"\n    };\n  });\n  const expiryDate = (_a = generalTabJobData == null ? void 0 : generalTabJobData.expires_at) == null ? void 0 : _a.value;\n  const newDateUTC = moment(expiryDate).utc().format(\"YYYY-MM-DD\");\n  const newTimeUTC = moment(expiryDate).utc().format(\"HH:mm\");\n  const updatedExpiryDate = `${newDateUTC}T${newTimeUTC}:00Z`;\n  return {\n    reference: (_b = generalTabJobData == null ? void 0 : generalTabJobData.reference) == null ? void 0 : _b.value,\n    title: (_c = generalTabJobData == null ? void 0 : generalTabJobData.title) == null ? void 0 : _c.value,\n    expires_at: updatedExpiryDate,\n    location: (_d = generalTabJobData == null ? void 0 : generalTabJobData.location) == null ? void 0 : _d.value,\n    external_requisition_id: ((_e = generalTabJobData == null ? void 0 : generalTabJobData.external_approval_id) == null ? void 0 : _e.value) ? generalTabJobData.external_approval_id.value : null,\n    salesperson_id: ((_f = generalTabJobData == null ? void 0 : generalTabJobData.salesperson) == null ? void 0 : _f.value) ? generalTabJobData.salesperson.value.split(\" -\")[0] : null,\n    // \"recruitment_ad_user_id\": 42,\n    assigned_user_id: ((_g = generalTabJobData == null ? void 0 : generalTabJobData.assigned_user) == null ? void 0 : _g.value) ? generalTabJobData.assigned_user.value.id : null,\n    pinned_users_ids: ((_h = generalTabJobData == null ? void 0 : generalTabJobData.pinned_users) == null ? void 0 : _h.value) ? ((_j = (_i = generalTabJobData == null ? void 0 : generalTabJobData.pinned_users) == null ? void 0 : _i.value) == null ? void 0 : _j.length) > 0 ? (_l = (_k = generalTabJobData == null ? void 0 : generalTabJobData.pinned_users) == null ? void 0 : _k.value) == null ? void 0 : _l.map((x) => x.id) : [] : [],\n    recipient_ids: ((_m = generalTabJobData == null ? void 0 : generalTabJobData.recipients) == null ? void 0 : _m.value) ? ((_o = (_n = generalTabJobData == null ? void 0 : generalTabJobData.recipients) == null ? void 0 : _n.value) == null ? void 0 : _o.length) > 0 ? (_q = (_p = generalTabJobData == null ? void 0 : generalTabJobData.recipients) == null ? void 0 : _p.value) == null ? void 0 : _q.map((x) => x.id) : [] : [],\n    time_zone: (_r = generalTabJobData == null ? void 0 : generalTabJobData.time_zone) == null ? void 0 : _r.value,\n    locale: ((_t = (_s = generalTabJobData == null ? void 0 : generalTabJobData.locale) == null ? void 0 : _s.value) == null ? void 0 : _t.label) ? (_u = generalTabJobData.locale.value) == null ? void 0 : _u.value : (_v = generalTabJobData == null ? void 0 : generalTabJobData.locale) == null ? void 0 : _v.value,\n    country_id: ((_w = generalTabJobData == null ? void 0 : generalTabJobData.country_id) == null ? void 0 : _w.value) ? (_y = (_x = generalTabJobData == null ? void 0 : generalTabJobData.country_id) == null ? void 0 : _x.value) == null ? void 0 : _y.id : (_z = generalTabJobData == null ? void 0 : generalTabJobData.country_id) == null ? void 0 : _z.value,\n    from_email: (_A = generalTabJobData == null ? void 0 : generalTabJobData.from_email) == null ? void 0 : _A.value,\n    employment_status: (_B = generalTabJobData == null ? void 0 : generalTabJobData.employment_status) == null ? void 0 : _B.value,\n    number_of_vacancies: (_C = generalTabJobData == null ? void 0 : generalTabJobData.number_of_vacancies) == null ? void 0 : _C.value,\n    postcode: (_D = generalTabJobData == null ? void 0 : generalTabJobData.postcode) == null ? void 0 : _D.value,\n    address_state: (_E = generalTabJobData == null ? void 0 : generalTabJobData.address_state) == null ? void 0 : _E.value,\n    brand_id: ((_F = generalTabJobData == null ? void 0 : generalTabJobData.brand) == null ? void 0 : _F.value) ? generalTabJobData.brand.value.id : null,\n    tag_list: (_G = generalTabJobData == null ? void 0 : generalTabJobData.tag_list) == null ? void 0 : _G.value,\n    auto_rater_id: (_I = (_H = generalTabJobData == null ? void 0 : generalTabJobData.auto_rater) == null ? void 0 : _H.value) == null ? void 0 : _I.id,\n    salary_info: (_J = generalTabJobData == null ? void 0 : generalTabJobData.salary_info) == null ? void 0 : _J.value,\n    requisition_ids: ((_K = generalTabJobData == null ? void 0 : generalTabJobData.requisitions) == null ? void 0 : _K.value) ? ((_M = (_L = generalTabJobData == null ? void 0 : generalTabJobData.requisitions) == null ? void 0 : _L.value) == null ? void 0 : _M.length) > 0 ? (_O = (_N = generalTabJobData == null ? void 0 : generalTabJobData.requisitions) == null ? void 0 : _N.value) == null ? void 0 : _O.map((x) => x.id) : [] : [],\n    smart_form_recipients_ids: ((_P = generalTabJobData == null ? void 0 : generalTabJobData.smart_form_recipients) == null ? void 0 : _P.value) ? ((_R = (_Q = generalTabJobData == null ? void 0 : generalTabJobData.smart_form_recipients) == null ? void 0 : _Q.value) == null ? void 0 : _R.length) > 0 ? (_T = (_S = generalTabJobData == null ? void 0 : generalTabJobData.smart_form_recipients) == null ? void 0 : _S.value) == null ? void 0 : _T.map((x) => x.id) : [] : [],\n    options: {\n      indeed_apply: ((_U = generalTabJobData == null ? void 0 : generalTabJobData.options) == null ? void 0 : _U.indeed_apply) ? \"1\" : \"0\",\n      indeed_salary: ((_V = generalTabJobData == null ? void 0 : generalTabJobData.options) == null ? void 0 : _V.indeed_salary) ? \"1\" : \"0\",\n      sponsor_on_indeed: ((_W = generalTabJobData == null ? void 0 : generalTabJobData.options) == null ? void 0 : _W.sponsor_on_indeed) ? \"1\" : \"0\",\n      blind_rating: ((_X = generalTabJobData == null ? void 0 : generalTabJobData.options) == null ? void 0 : _X.blind_rating) ? \"1\" : \"0\",\n      hide_rating_activity: ((_Y = generalTabJobData == null ? void 0 : generalTabJobData.options) == null ? void 0 : _Y.hide_rating_activity) ? \"1\" : \"0\",\n      auto_ratings: ((_Z = generalTabJobData == null ? void 0 : generalTabJobData.options) == null ? void 0 : _Z.auto_ratings) ? \"1\" : \"0\",\n      title_field: ((__ = generalTabJobData == null ? void 0 : generalTabJobData.options) == null ? void 0 : __.title_field) ? \"1\" : \"0\",\n      gender_field: ((_$ = generalTabJobData == null ? void 0 : generalTabJobData.options) == null ? void 0 : _$.gender_field) ? \"1\" : \"0\",\n      employee_id_field: ((_aa = generalTabJobData == null ? void 0 : generalTabJobData.options) == null ? void 0 : _aa.employee_id_field) ? \"1\" : \"0\",\n      linkedin_field: ((_ba = generalTabJobData == null ? void 0 : generalTabJobData.options) == null ? void 0 : _ba.linkedin_field) ? \"1\" : \"0\",\n      privacy_acknowledgement: (generalTabJobData == null ? void 0 : generalTabJobData.privacy_acknowledgement) ? \"1\" : \"0\",\n      attachments: attachmentObject || {},\n      job_expiry_email_reminder: ((_ca = generalTabJobData == null ? void 0 : generalTabJobData.options) == null ? void 0 : _ca.job_expiry_email_reminder) ? \"1\" : \"0\"\n    },\n    external: (generalTabJobData == null ? void 0 : generalTabJobData.external) ? \"1\" : \"0\",\n    linkedin_listing_opt_in: (generalTabJobData == null ? void 0 : generalTabJobData.linkedin_listing_opt_in) ? \"1\" : \"0\",\n    internal: (generalTabJobData == null ? void 0 : generalTabJobData.internal) ? \"1\" : \"0\",\n    recruitment_ad_user_id: ((_da = generalTabJobData == null ? void 0 : generalTabJobData.rm_team_member) == null ? void 0 : _da.value) ? (_ea = generalTabJobData == null ? void 0 : generalTabJobData.rm_team_member) == null ? void 0 : _ea.value.split(\" -\")[0] : null,\n    summary: (_fa = descriptionTabJobData == null ? void 0 : descriptionTabJobData.summary) == null ? void 0 : _fa.value,\n    description: (_ga = descriptionTabJobData == null ? void 0 : descriptionTabJobData.description) == null ? void 0 : _ga.value,\n    template_enabled: templateTabJobData == null ? void 0 : templateTabJobData.template_enabled,\n    template: (_ha = templateTabJobData == null ? void 0 : templateTabJobData.template) == null ? void 0 : _ha.value,\n    classification_ids: (generalTabJobData == null ? void 0 : generalTabJobData.classification_ids) ? generalTabJobData == null ? void 0 : generalTabJobData.classification_ids : [],\n    application_recipient_ids: ((_ia = generalTabJobData == null ? void 0 : generalTabJobData.application_recipient) == null ? void 0 : _ia.value) ? ((_ka = (_ja = generalTabJobData == null ? void 0 : generalTabJobData.application_recipient) == null ? void 0 : _ja.value) == null ? void 0 : _ka.length) > 0 ? (_ma = (_la = generalTabJobData == null ? void 0 : generalTabJobData.application_recipient) == null ? void 0 : _la.value) == null ? void 0 : _ma.map((x) => x.id) : [] : [],\n    revolve_position_title: (_na = revolveTabJobData == null ? void 0 : revolveTabJobData.revolve_position_title) == null ? void 0 : _na.value,\n    google_conversion_script: (_oa = googleScriptTabJobData == null ? void 0 : googleScriptTabJobData.google_conversion_script) == null ? void 0 : _oa.value,\n    panel_chair_ids: ((_pa = panelWorkflowTabJobData == null ? void 0 : panelWorkflowTabJobData.panel_chairs) == null ? void 0 : _pa.value) ? ((_ra = (_qa = panelWorkflowTabJobData == null ? void 0 : panelWorkflowTabJobData.panel_chairs) == null ? void 0 : _qa.value) == null ? void 0 : _ra.length) > 0 ? (_ta = (_sa = panelWorkflowTabJobData == null ? void 0 : panelWorkflowTabJobData.panel_chairs) == null ? void 0 : _sa.value) == null ? void 0 : _ta.map((x) => x.id) : [] : [],\n    panel_member_ids: ((_ua = panelWorkflowTabJobData == null ? void 0 : panelWorkflowTabJobData.panel_members) == null ? void 0 : _ua.value) ? ((_wa = (_va = panelWorkflowTabJobData == null ? void 0 : panelWorkflowTabJobData.panel_members) == null ? void 0 : _va.value) == null ? void 0 : _wa.length) > 0 ? (_ya = (_xa = panelWorkflowTabJobData == null ? void 0 : panelWorkflowTabJobData.panel_members) == null ? void 0 : _xa.value) == null ? void 0 : _ya.map((x) => x.id) : [] : [],\n    panel_observer_ids: ((_za = panelWorkflowTabJobData == null ? void 0 : panelWorkflowTabJobData.panel_observers) == null ? void 0 : _za.value) ? ((_Ba = (_Aa = panelWorkflowTabJobData == null ? void 0 : panelWorkflowTabJobData.panel_observers) == null ? void 0 : _Aa.value) == null ? void 0 : _Ba.length) > 0 ? (_Da = (_Ca = panelWorkflowTabJobData == null ? void 0 : panelWorkflowTabJobData.panel_observers) == null ? void 0 : _Ca.value) == null ? void 0 : _Da.map((x) => x.id) : [] : [],\n    source_ids: sourceListIds ? sourceListIds : []\n  };\n};\nexport const editJobsConfig = (userPermissions, jobFeedActive) => {\n  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;\n  const additionalOptions = [\n    {\n      id: \"blind_rating\",\n      name: \"Blind ratings\"\n    }\n  ];\n  jobFeedActive && additionalOptions.unshift({\n    id: \"sponsor_on_indeed\",\n    name: \"Sponsor on Indeed (Must have city and state filled)\"\n  });\n  ((_a = userPermissions == null ? void 0 : userPermissions[\"Job Options\"]) == null ? void 0 : _a[\"Indeed Apply Option\"]) && additionalOptions.unshift({\n    id: \"indeed_apply\",\n    name: \"Use Indeed Apply\"\n  });\n  ((_b = userPermissions == null ? void 0 : userPermissions[\"Integrations\"]) == null ? void 0 : _b[\"Indeed Integration\"]) && additionalOptions.unshift({\n    id: \"indeed_salary\",\n    name: \"Send salary to Indeed\"\n  });\n  ((_c = userPermissions == null ? void 0 : userPermissions[\"Integrations\"]) == null ? void 0 : _c[\"LinkedIn\"]) && additionalOptions.push({\n    id: \"linkedin_listing_opt_in\",\n    name: \"Post to Linkedin\"\n  });\n  ((_d = userPermissions == null ? void 0 : userPermissions[\"Job Options\"]) == null ? void 0 : _d[\"Linkedin\"]) && additionalOptions.push({\n    id: \"linkedin_field\",\n    name: \"Show Linkedin\"\n  });\n  ((_e = userPermissions == null ? void 0 : userPermissions[\"Job Options\"]) == null ? void 0 : _e[\"Candidate Title\"]) && additionalOptions.push({\n    id: \"title_field\",\n    name: \"Show title field\"\n  });\n  ((_f = userPermissions == null ? void 0 : userPermissions[\"Job Options\"]) == null ? void 0 : _f[\"Candidate Employee ID\"]) && additionalOptions.push({\n    id: \"employee_id_field\",\n    name: \"Show employee ID field\"\n  });\n  ((_g = userPermissions == null ? void 0 : userPermissions[\"Job Options\"]) == null ? void 0 : _g[\"Candidate Gender\"]) && additionalOptions.push({\n    id: \"gender_field\",\n    name: \"Show gender field\"\n  });\n  ((_h = userPermissions == null ? void 0 : userPermissions[\"Job Options\"]) == null ? void 0 : _h[\"Auto Rating\"]) && additionalOptions.push({\n    id: \"auto_ratings\",\n    name: \"Auto ratings\"\n  });\n  ((_i = userPermissions == null ? void 0 : userPermissions[\"Job Options\"]) == null ? void 0 : _i[\"Hide Rating Activity\"]) && additionalOptions.push({\n    id: \"hide_rating_activity\",\n    name: \"Hide ratings activities\"\n  });\n  ((_j = userPermissions == null ? void 0 : userPermissions[\"Job Options\"]) == null ? void 0 : _j[\"Send Job Expiry Reminder Email\"]) && additionalOptions.push({\n    id: \"job_expiry_email_reminder\",\n    name: \"Send Job Expiry Reminder Email\"\n  });\n  return additionalOptions;\n};\nconst localDefaults = (job) => {\n  var _a, _b;\n  const data = [\n    {\n      value: \"en-au\",\n      label: \"English/Australia\"\n    },\n    {\n      value: \"en-ca\",\n      label: \"English/Canada\"\n    },\n    {\n      value: \"en-nz\",\n      label: \"English/New Zealand\"\n    },\n    {\n      value: \"en-sg\",\n      label: \"English/Singapore\"\n    },\n    {\n      value: \"en-uk\",\n      label: \"English/United Kingdom\"\n    },\n    {\n      value: \"en-us\",\n      label: \"English/United States\"\n    },\n    {\n      value: \"en-za\",\n      label: \"English/South Africa\"\n    },\n    {\n      value: \"fr-ca\",\n      label: \"French/Canada\"\n    }\n  ];\n  const i = data == null ? void 0 : data.findIndex((x) => (job == null ? void 0 : job.locale) === (x == null ? void 0 : x.value));\n  if (i >= 0) return { label: (_a = data[i]) == null ? void 0 : _a.label, value: (_b = data[i]) == null ? void 0 : _b.value };\n  else return null;\n};\nconst setClassificationIds = (job) => {\n  var _a;\n  return (_a = job == null ? void 0 : job.classifications) == null ? void 0 : _a.filter((child) => child == null ? void 0 : child.parent).map((sub) => sub == null ? void 0 : sub.id);\n};\nexport const emojiRegex = /(\\u00a9|\\u00ae|[\\u2000-\\u3300]|\\ud83c[\\ud000-\\udfff]|\\ud83d[\\ud000-\\udfff]|\\ud83e[\\ud000-\\udfff])/gi;\n","\"use strict\";\nimport { searchInput } from \"../shared/styleClasses\";\nexport const styles = {\n  tabs: {\n    \"& button\": {\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"18px\",\n      letterSpacing: \"0\",\n      color: \"#939393\",\n      textTransform: \"none\",\n      minWidth: \"unset\",\n      \"&:hover\": {\n        color: \"#737373\"\n      },\n      \"&:focus\": {\n        outline: \"none\"\n      }\n    },\n    \"& button.Mui-selected\": {\n      fontWeight: \"600\",\n      color: \"#084D6D\"\n    }\n  },\n  tabIndicator: {\n    backgroundColor: \"#5BC4BF\",\n    margin: \"0 16px\"\n  },\n  filtersRow: {\n    display: \"flex\",\n    alignItems: \"flex-end\",\n    justifyContent: \"space-between\",\n    marginBottom: \"30px\",\n    columnGap: \"17px\"\n  },\n  jobPageContainer: {\n    backgroundColor: \"#FFFFFF\",\n    padding: \"40px\"\n  },\n  tabsContainer: {\n    borderBottom: 1,\n    borderColor: \"#EEEEEE\",\n    marginBottom: \"46px\"\n  },\n  searchInput,\n  jobPageHeader: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    width: \"100%\",\n    marginBottom: \"26px\",\n    padding: \"0px 16px\",\n    \"& h1\": {\n      fontFamily: \"Source Sans Pro\",\n      fontWeight: \"bold\",\n      fontSize: \"38px\",\n      color: \"#666666\",\n      marginTop: \"0\"\n    }\n  },\n  multiposterContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    rowGap: \"40px\"\n  },\n  iconButton: {\n    border: \"1px solid #EAEEF0\",\n    backgroundColor: \"#FFFFFF\",\n    borderRadius: \"6px\",\n    width: \"69px\",\n    height: \"60px\",\n    \"& svg\": {\n      fontSize: \"30px\",\n      color: \"#084D6D\",\n      transform: \"translateY(1px)\"\n    }\n  },\n  iconButtonSelected: {\n    backgroundColor: \"rgba(8,77,109,0.121)\"\n  },\n  toggleButtonGroup: {\n    borderRadius: \"11px\",\n    \"& .MuiToggleButton-root.Mui-selected\": {\n      backgroundColor: \"#F3F3F3\",\n      \"&:hover\": {\n        backgroundColor: \"#F3F3F3\"\n      }\n    }\n  },\n  toggleButton: {\n    padding: \"none !important\",\n    borderRadius: \"11px\",\n    width: \"125px\",\n    height: \"47px\",\n    borderColor: \"#F3F3F3\"\n  },\n  logoSize: {\n    width: \"90px !important\",\n    height: \"40px !important\"\n  },\n  toggleContainer: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    position: \"absolute\"\n  }\n};\n","\"use strict\";\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nexport const classes = {\n  headerContainer: {\n    display: \"flex\",\n    columnGap: \"36px\",\n    alignItems: \"center\",\n    height: \"91px\",\n    width: \"fill-available\",\n    zIndex: 1100,\n    backgroundColor: \"#fff\",\n    paddingLeft: \"48px\",\n    position: \"relative\"\n  },\n  searchInput: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"20px\",\n    fontWeight: \"regular\",\n    height: \"54px\",\n    paddingRight: \"20px\",\n    \"& legend\": {\n      display: \"none\"\n    },\n    \"& input\": {\n      padding: \"0px 16px 0px 32px\",\n      color: \"#000000\"\n    },\n    \"& fieldset\": {\n      borderColor: \"#FFFFFF !important\"\n    },\n    \"&:hover\": {\n      \"& fieldset\": {\n        borderColor: \"#FFFFFF !important\"\n      }\n    }\n  },\n  searchDialog: {\n    \"& .MuiDialog-container\": {\n      alignItems: \"flex-start\"\n    },\n    \"& .MuiDialog-paper\": {\n      top: \"60px\",\n      borderRadius: \"32px\",\n      width: \"600px\",\n      boxShadow: \"unset\"\n    }\n  },\n  switchEntityDialog: {\n    \"& .MuiDialog-container\": {\n      alignItems: \"flex-start\"\n    },\n    \"& .MuiDialog-paper\": {\n      top: \"60px\",\n      width: \"600px\",\n      boxShadow: \"unset\",\n      padding: \"10px 20px 30px 20px\"\n    },\n    \"& .MuiMenuItem-root\": {\n      display: \"flex\"\n    }\n  },\n  switchEntityButton: {\n    width: \"auto\",\n    color: \"#FFFFFF\",\n    backgroundColor: \"#084D6D\",\n    marginTop: \"20px\",\n    \"&:hover\": {\n      backgroundColor: \"#5BC4C0\"\n    }\n  },\n  searchIcon: {\n    fontSize: \"26px\",\n    color: \"#666666\",\n    cursor: \"pointer\"\n  },\n  clearSearch: {\n    cursor: \"pointer\",\n    fontSize: \"22px\",\n    color: \"#939393\"\n  },\n  profileDropdownContainer: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    cursor: \"pointer\",\n    columnGap: \"6px\"\n  },\n  profileAvatar: {\n    minWidth: \"50px\",\n    minHeight: \"50px\",\n    borderRadius: \"50%\",\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    backgroundColor: \"#F5F5F5\",\n    color: theme.palette.primary.main,\n    fontSize: \"20px\",\n    fontWeight: \"700\",\n    textTransform: \"uppercase\"\n  },\n  avatarSmall: {\n    minWidth: \"45px\",\n    minHeight: \"45px\"\n  },\n  profileDropdownIcon: {\n    color: theme.palette.primary.main,\n    fontSize: \"22px\"\n  },\n  showButtonContainer: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    cursor: \"pointer\",\n    columnGap: \"12px\",\n    color: \"#666666\",\n    fontWeight: \"600\",\n    marginLeft: \"auto\"\n  },\n  hideButtonContainer: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    position: \"fixed\",\n    zIndex: 1250,\n    right: \"56px\",\n    cursor: \"pointer\",\n    color: \"#666666\",\n    fontWeight: \"600\",\n    marginLeft: \"auto\",\n    transition: \"left 0.2s ease-in-out\"\n  },\n  profileDropdownMenuContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    width: \"256px\",\n    padding: \"18px\",\n    backgroundColor: \"#FFFFFF\",\n    borderRadius: \"6px\",\n    boxShadow: \"0px 2px 14px 0px rgba(48, 90, 111, 0.16)\",\n    marginTop: \"10px\",\n    rowGap: \"18px\"\n  },\n  profileInformation: {\n    display: \"flex\",\n    alignItems: \"flex-start\",\n    columnGap: \"12px\"\n  },\n  roleInformationWrapper: {\n    display: \"flex\",\n    alignItems: \"center\",\n    fontSize: \"12px\"\n  },\n  roleInformation: {\n    marginRight: \"6px\",\n    maxWidth: \"120px\",\n    color: \"#AAAAAA\",\n    overflow: \"hidden\",\n    textOverflow: \"ellipsis\",\n    textWrap: \"nowrap\"\n  },\n  profileNameAndEntityContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    rowGap: \"8px\",\n    \"& a\": {\n      textDecoration: \"none\",\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"16px\",\n      color: \"#AAAAAA\"\n    }\n  },\n  profileName: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"16px\",\n    fontWeight: \"600\",\n    color: theme.palette.primary.main\n  },\n  profileDropdownMenuItemsContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    rowGap: \"8px\",\n    \"& a\": {\n      textDecoration: \"none\",\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"16px\",\n      color: theme.palette.primary.main,\n      fontWeight: \"600\",\n      \"&:hover\": {\n        textDecoration: \"none\"\n      }\n    }\n  },\n  profileDropdownMenuItem: {\n    display: \"flex\",\n    alignItems: \"center\",\n    columnGap: \"24px\",\n    cursor: \"pointer\",\n    color: theme.palette.primary.main,\n    padding: \"6px 8px\",\n    borderRadius: \"6px\",\n    \"&:hover\": {\n      backgroundColor: \"#F5F5F5\"\n    }\n  },\n  masqueradeAvatar: {\n    backgroundColor: \"#D6DEE2\",\n    cursor: \"pointer\",\n    \"&:hover\": {\n      backgroundColor: \"#C4D0D7\"\n    }\n  },\n  breadcrumbContainer: {\n    display: \"flex\",\n    alignItems: \"center\",\n    width: \"100%\",\n    height: \"36px\",\n    backgroundColor: \"#FFFFFF\",\n    color: \"#939393\",\n    overflowX: \"auto\"\n  },\n  homeIcon: {\n    cursor: \"pointer\",\n    color: \"#939393\",\n    \"&:hover\": {\n      color: theme.palette.primary.main\n    }\n  },\n  breadcrumbs: {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"17px\",\n    fontWeight: \"400\",\n    color: \"#939393\",\n    \"& a\": {\n      color: \"#939393\"\n    }\n  },\n  breadcrumbSeparator: {\n    color: \"#939393\",\n    fontSize: \"20px\"\n  },\n  uatBanner: {\n    backgroundImage: 'url(\"/images/uat-alert-band.svg\")',\n    height: \"20px\",\n    backgroundColor: \"red\"\n  },\n  modalWrapper: {\n    \"& .MuiDialogContent-root\": {\n      padding: \"0 50px\"\n    }\n  }\n};\n","\"use strict\";\nexport const navbarWidths = {\n  expanded: 220,\n  collapsed: 82\n};\nexport const appMenuItems = (isRecruit) => [\n  !isRecruit && {\n    title: \":Recruit\",\n    link: \"/admin/jobs\",\n    target: \"_self\"\n  },\n  {\n    title: \":Onboard\",\n    link: \"https://scouttalentonboard.com/\",\n    target: \"_blank\"\n  },\n  isRecruit && {\n    title: \":Engage\",\n    link: \"/admin/engage?engage-search\",\n    target: \"_self\"\n  },\n  {\n    title: \"Scout Learning\",\n    link: \"https://scouttalenthq.com/talent-acquisition-software/scout-learning\",\n    target: \"_blank\"\n  },\n  {\n    title: \"Marketplace\",\n    link: \"https://scouttalenthq.com/marketplace\",\n    target: \"_blank\"\n  }\n];\nexport const defaultMenuItems = (newEngage, isEngage) => isEngage ? [\n  {\n    title: \"Home\",\n    icon: \"home\",\n    id: \"engage-home-left-tab\",\n    submenu: [\n      {\n        title: \"Search\",\n        id: \"engage-home-left-search\",\n        url: \"/admin/search/advanced\",\n        active: \"/admin/search/advanced\"\n      }\n    ]\n  },\n  {\n    title: \"Tools\",\n    icon: \"spanner\",\n    id: \"engage-spanner-left-tab\",\n    submenu: [\n      {\n        title: \"Saved Searches\",\n        url: \"/admin/search/advanced/saved\",\n        active: \"/admin/search/advanced/saved\",\n        permissions: [\"Advanced Search\"],\n        id: \"engage-saved-searches-left-tab\"\n      }\n    ]\n  },\n  ...newEngage ? [\n    {\n      title: \"Engage Beta\",\n      icon: \"people_search\",\n      id: \"engage-left-tab\",\n      submenu: [\n        {\n          title: \"AI Search\",\n          url: \"/admin/engage?engage-search\",\n          active: \"/admin/engage\\\\?engage-search\",\n          id: \"ai-search-left-tab\"\n        },\n        {\n          title: \"Candidate Pools\",\n          url: \"/admin/engage?candidate-pools\",\n          active: \"/admin/engage\\\\?candidate-pools\",\n          id: \"candidate-pools-left-tab\"\n        }\n      ]\n    }\n  ] : []\n] : [\n  {\n    title: \"Recruitment\",\n    id: \"recruitment-tab-sidebar\",\n    icon: \"people_search\",\n    submenu: [\n      {\n        title: \"Approval Forms\",\n        url: \"/admin/requisitions\",\n        active: \"/admin/requisitions\",\n        permissions: [\n          \"Create / Edit Approval Forms (HR use)\",\n          \"Edit Previously Submitted Form\",\n          \"Submit Approval Form\"\n        ],\n        id: \"approval-forms-tab-sidebar\"\n      },\n      {\n        title: \"Jobs\",\n        url: \"/admin/jobs\",\n        active: \"/admin/(seek_)?jobs\",\n        id: \"jobs-tab-sidebar\"\n      },\n      {\n        title: \"Candidates\",\n        url: \"/admin/candidates\",\n        active: \"/admin/candidates\",\n        permissions: [\"View Candidates\"],\n        id: \"candidates-tab-sidebar\"\n      },\n      {\n        title: \"Events\",\n        url: \"/admin/calendar/events\",\n        active: \"/admin/calendar\",\n        permissions: [\"Create / Edit Events\"],\n        id: \"events-tab-sidebar\"\n      },\n      {\n        title: \"Smart Forms\",\n        url: \"/admin/forms\",\n        active: \"/admin/forms\",\n        permissions: [\"Create / Edit Forms\"],\n        id: \"smart-forms-tab-sidebar\"\n      },\n      {\n        title: \"Full Search\",\n        url: \"/admin/search/full\",\n        active: \"/admin/search/(full|results)\",\n        permissions: [\"Full Search\"],\n        id: \"full-search-tab-sidebar\"\n      }\n    ]\n  },\n  {\n    title: \"Admin\",\n    icon: \"shield\",\n    submenu: [\n      {\n        title: \"Entities\",\n        url: \"/admin/entities\",\n        active: \"/admin/entities\",\n        permissions: [\"Edit Entities\"],\n        id: \"entities-tab-sidebar\"\n      },\n      {\n        title: \"Reports\",\n        url: \"/admin/reports\",\n        active: \"/admin/reports\",\n        permissions: [\n          \"Applications by Source & Entity Reports\",\n          \"Placements Advanced Report\"\n        ],\n        id: \"reports-tab-sidebar\"\n      },\n      {\n        title: \"Trash\",\n        url: \"/admin/trash\",\n        active: \"/admin/trash\",\n        permissions: [\"Manage Trashed Jobs / Applications\"],\n        id: \"trash-tab-sidebar\"\n      }\n    ]\n  },\n  {\n    title: \"Tools\",\n    icon: \"spanner\",\n    submenu: [\n      {\n        title: \"CSV Data\",\n        url: \"/admin/csv-data\",\n        active: \"/admin/csv-data\",\n        id: \"csv-tab-sidebar\"\n      },\n      {\n        title: \"Internal Tools\",\n        url: \"/admin/internal_tools/index\",\n        active: \"/admin/internal_tools\",\n        id: \"internal-tools-tab-sidebar\"\n      },\n      {\n        title: \"System Fields\",\n        url: \"/admin/system_fields\",\n        active: \"/admin/system_fields\",\n        id: \"system-fields-tab-sidebar\"\n      },\n      {\n        title: \"Integrations\",\n        url: \"/admin/integrations\",\n        active: \"/admin/integrations\",\n        id: \"integrations-tab-sidebar\"\n      },\n      {\n        title: \"Menu\",\n        url: \"/admin/service_menu_items\",\n        active: \"/admin/.*menu_items\",\n        id: \"menu-tab-sidebar\"\n      },\n      {\n        title: \"Unsubscribes\",\n        url: \"/admin/unsubscribes\",\n        active: \"/admin/unsubscribes\",\n        id: \"unsubscribes-tab-sidebar\"\n      }\n    ]\n  }\n];\n","\"use strict\";\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nexport const classes = {\n  navbarContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    height: \"100vh\",\n    zIndex: 1200,\n    color: \"#fff\",\n    backgroundColor: theme.palette.primary.main,\n    transition: \"width 0.2s ease-in-out\"\n  },\n  appMenuContainer: {\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    padding: \"24px 24px 24px 26px\",\n    background: \"linear-gradient(220deg, #5BC4C0 0%, #084D6D 104%)\",\n    \"& span\": {\n      fontSize: \"24px\",\n      fontWeight: 700,\n      fontFamily: \"Source Sans Pro\"\n    }\n  },\n  appMenuContainerCollapsed: {\n    padding: \"24px\",\n    cursor: \"pointer\"\n  },\n  navigationItemsContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    marginTop: \"44px\",\n    rowGap: \"5px\",\n    marginInline: \"10px\",\n    overflowY: \"auto\",\n    \"& a\": {\n      textDecoration: \"none\",\n      color: \"#fff\",\n      \"&:hover\": {\n        color: \"#fff\",\n        textDecoration: \"none\"\n      }\n    },\n    \"&::-webkit-scrollbar\": {\n      display: \"none\"\n    },\n    msOverflowStyle: \"none\",\n    scrollbarWidth: \"none\"\n  },\n  expandCollapseButtonContainer: {\n    position: \"fixed\",\n    zIndex: 1250,\n    top: \"80px\",\n    transition: \"left 0.2s ease-in-out\"\n  },\n  expandCollapseButton: {\n    display: \"flex !important\",\n    justifyContent: \"center !important\",\n    alignItems: \"center !important\",\n    borderRadius: \"50% !important\",\n    padding: \"0px !important\",\n    width: \"30px !important\",\n    height: \"30px !important\",\n    backgroundColor: \"#D6DEE2 !important\",\n    color: theme.palette.primary.main,\n    \"& svg\": {\n      fontSize: \"14px !important\"\n    },\n    \"&:hover\": {\n      backgroundColor: \"#C4D0D6 !important\"\n    },\n    \"&:focus\": {\n      outline: \"none !important\"\n    }\n  },\n  menuItemParent: {\n    display: \"flex\",\n    position: \"relative\",\n    alignItems: \"center\",\n    padding: \"12px 16px\",\n    borderRadius: \"6px\",\n    cursor: \"pointer\",\n    \"& span\": {\n      fontSize: \"17px\",\n      marginLeft: \"14px\"\n    },\n    \"& svg\": {\n      fontSize: \"24px\"\n    },\n    \"&:hover\": {\n      backgroundColor: \"rgba(255, 255, 255, 0.07)\"\n    }\n  },\n  menuItemChildrenContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    marginLeft: \"40px\",\n    rowGap: \"2px\",\n    marginTop: \"2px\"\n  },\n  menuItemChild: {\n    display: \"flex\",\n    fontSize: \"17px\",\n    padding: \"12px 16px\",\n    borderRadius: \"6px\",\n    cursor: \"pointer\",\n    \"&:hover\": {\n      backgroundColor: \"rgba(255, 255, 255, 0.07)\"\n    }\n  },\n  activeParent: {\n    backgroundColor: \"rgba(255, 255, 255, 0.07)\",\n    fontWeight: 700\n  },\n  activeItem: {\n    backgroundColor: \"rgba(255, 255, 255, 0.07)\"\n  },\n  navigationItemsContainerCollapsed: {\n    marginInline: \"0px\",\n    rowGap: \"0px\"\n  },\n  menuItemExpandCollapseIcon: {\n    position: \"absolute\",\n    top: \"11.5px\",\n    right: \"10px\",\n    \"& svg\": {\n      fontSize: \"18px !important\"\n    }\n  },\n  menuItemParentCollapsed: {\n    flexDirection: \"column\",\n    borderRadius: \"0px\",\n    padding: \"12px 0px\",\n    \"& span\": {\n      marginLeft: \"0px\",\n      fontSize: \"13px\"\n    }\n  },\n  collapsedNavigationChildContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    width: \"172px\",\n    padding: \"22px 0px 22px 20px\",\n    rowGap: \"14px\",\n    borderRadius: \"0px 6px 6px 0px\",\n    backgroundColor: theme.palette.primary.main,\n    \"& a\": {\n      fontSize: \"15px\",\n      color: \"#fff\",\n      textDecoration: \"none\",\n      \"&:hover\": {\n        color: \"#fff\",\n        textDecoration: \"none\",\n        fontWeight: 700\n      }\n    }\n  },\n  appMenuItemsContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    width: \"220px\",\n    padding: \"28px 0px 28px 30px\",\n    rowGap: \"14px\",\n    background: \"linear-gradient(297deg, #5BC4C0 0%, #084D6D 100%)\",\n    \"& a\": {\n      fontSize: \"17px\",\n      color: \"#fff\",\n      textDecoration: \"none\",\n      fontWeight: 600,\n      \"&:hover\": {\n        color: \"#fff\",\n        textDecoration: \"none\",\n        fontWeight: 700\n      }\n    }\n  },\n  appMenuItemsContainerCollapsed: {\n    borderRadius: \"0px 6px 6px 0px\",\n    width: \"170px\",\n    background: \"linear-gradient(171deg, #5BC4C0 0%, #084D6D 80%)\"\n  }\n};\n","\"use strict\";\nexport const widgetsbarWidths = {\n  expanded: 280,\n  collapsed: 0\n};\nexport const widgetsContainerPadding = {\n  expanded: 1,\n  collapsed: 0\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport {\n  actionsMenuPaperCommonStyles,\n  actionsMenuSpanCommonStyles\n} from \"../../shared/commonStyles\";\nexport const classes = {\n  widgetsbarContainer: {\n    display: \"flex\",\n    flexDirection: \"column\",\n    height: \"100vh\",\n    overflowX: \"hidden\",\n    overflowY: \"auto\",\n    zIndex: 1200,\n    backgroundColor: \"#EAEEF0\",\n    transition: \"width 0.2s ease-in-out\",\n    marginLeft: \"auto !important\",\n    paddingBottom: \"30%\"\n  },\n  hideButtonContainer: {\n    display: \"flex\",\n    alignItems: \"center\",\n    minHeight: \"91px\",\n    marginLeft: \"auto !important\"\n  },\n  addButton: {\n    position: \"absolute\",\n    top: 0,\n    right: 0,\n    margin: \"20px\",\n    borderRadius: \"50% !important\",\n    zIndex: 1200,\n    \"&:focus\": { outline: \"none\" }\n  },\n  actionsMenu: {\n    \"& .MuiPaper-root\": __spreadProps(__spreadValues({}, actionsMenuPaperCommonStyles), {\n      width: \"170px\",\n      marginTop: \"6px\"\n    }),\n    \"& span\": actionsMenuSpanCommonStyles\n  },\n  datePicker: {\n    position: \"relative\",\n    width: \"fit-content\",\n    margin: \" auto\",\n    \"& .MuiPickersLayout-root\": {\n      width: \"260px !important\",\n      borderRadius: \"6px !important\",\n      boxShadow: \"0px 4px 20px 3px #305A6F14\",\n      marginInline: \"auto\"\n    },\n    \"& .MuiPickersLayout-contentWrapper\": {\n      width: \"inherit\"\n    },\n    \"& .MuiDateCalendar-root\": {\n      width: \"260px !important\"\n    },\n    \"& .MuiPickersFadeTransitionGroup-root\": {\n      paddingInline: \"12px\"\n    },\n    \"& .MuiPickersCalendarHeader-root\": {\n      '& div[role=\"presentation\"]': {\n        fontFamily: \"Source Sans Pro\",\n        fontSize: \"18px\",\n        color: \"#666666\",\n        fontWeight: \"700\"\n      }\n    },\n    \"& .PrivatePickersFadeTransitionGroup-root\": {\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"14px\",\n      fontWeight: \"bold\",\n      color: theme.palette.primary.main\n    },\n    \"& .MuiTypography-root\": {\n      fontFamily: \"Source Sans Pro\",\n      color: \"#939393\",\n      fontSize: \"14px\"\n    },\n    \"& .MuiDayCalendar-weekContainer\": {\n      justifyContent: \"space-between\",\n      \"& button\": {\n        fontFamily: \"Source Sans Pro\",\n        fontSize: \"14px\",\n        minWidth: \"30px\",\n        height: \"30px\",\n        borderRadius: \"50%\"\n      }\n    },\n    \"& .Mui-selected\": {\n      backgroundColor: `${theme.palette.action.main} !important`\n    },\n    \"& .PrivatePickersSlideTransition-root\": {\n      minHeight: \"250px !important\"\n    },\n    \"& .MuiPickersCalendarHeader-labelContainer\": {\n      maxHeight: \"40px !important\",\n      marginRight: \"unset\"\n    },\n    \"& .MuiPickersArrowSwitcher-root\": {\n      marginLeft: \"8px\"\n    },\n    \"& .PrivatePickersYear-yearButton\": {\n      height: \"30px\"\n    },\n    \"& .MuiPickersCalendarHeader-switchViewButton\": {\n      display: \"none\"\n    },\n    \"& .MuiDayPicker-weekContainer\": {\n      margin: \"10px 0 !important\"\n    },\n    \"& .MuiYearCalendar-root\": {\n      width: \"280px !important\"\n    }\n  },\n  recentlyViewedContainer: {\n    width: \"100%\",\n    padding: \"0 10px 20px 10px\",\n    display: \"flex\",\n    flexWrap: \"wrap\",\n    flexDirection: \"column\",\n    rowGap: \"13px\",\n    justifyContent: \"space-between\",\n    margin: \"0 10px 40px\",\n    backgroundColor: \"#FFFFFF\",\n    border: \"1px solid #E3E3E3\",\n    boxSizing: \"border-box\",\n    borderRadius: \"6px\",\n    boxShadow: \"0px 4px 20px 3px #305A6F14\"\n  },\n  title: {\n    fontFamily: \"Source Sans Pro\",\n    margin: \"20px 20px 10px 14px\",\n    fontSize: \"18px\",\n    fontWeight: \"700\",\n    color: \"#666666\"\n  }\n};\n","\"use strict\";\nimport RecruitApiClient from \"../../RecruitApiClient\";\nclass Api {\n  constructor() {\n    this.getPreferences = () => RecruitApiClient.get(`/api/v4/ui_preferences?source=smart_forms`, null);\n    this.getDensityPreferences = () => RecruitApiClient.get(`/api/v4/ui_preferences?source=universal`, null);\n    this.getSmartForms = (params) => RecruitApiClient.get(`/api/v4/smart_forms`, params);\n    this.getSmartForm = (formId) => RecruitApiClient.get(`/api/v4/smart_forms/${formId}`, {});\n    this.getRequisitionForms = (params) => RecruitApiClient.get(`/api/v4/requisition_forms`, params);\n    this.getJobs = (params) => RecruitApiClient.get(`/api/v4/jobs`, params);\n    this.deleteSmartForm = (formId) => RecruitApiClient.delete(`/api/v4/smart_forms/${formId}`, {});\n    this.postUserPreferences = (params) => RecruitApiClient.post(`/api/v4/ui_preferences`, params);\n    this.postSmartForm = (params) => RecruitApiClient.post(`/api/v4/smart_forms`, params);\n    this.updateSmartForm = (formId, params) => RecruitApiClient.put(`/api/v4/smart_forms/${formId}`, params);\n    this.newField = (formId, params) => RecruitApiClient.post(`/api/v4/fields?form_id=${formId}`, params);\n    this.getSystemFields = () => RecruitApiClient.get(`/api/v4/system_fields?form_type=Form`, {});\n    this.addSystemField = (formId, systemFieldId) => RecruitApiClient.post(\n      `/api/v4/system_fields?form_id=${formId}&system_field_id=${systemFieldId}`,\n      {}\n    );\n    this.importFields = (formId, sourceType, selectedId) => RecruitApiClient.post(`/api/v4/fields/import`, {\n      source_type: sourceType,\n      source_id: selectedId,\n      form_id: formId\n    });\n    this.getQuestions = (params) => RecruitApiClient.get(`/api/v4/fields`, params);\n    this.putQuestion = (id, formId, params) => RecruitApiClient.put(`/api/v4/fields/${id}?form_id=${formId}`, params);\n    this.deleteQuestion = (id, formId) => RecruitApiClient.delete(`/api/v4/fields/${id}?form_id=${formId}`, {});\n    this.cloneQuestion = (id, formId) => RecruitApiClient.post(`/api/v4/fields/${id}/clone?form_id=${formId}`, {});\n    this.getTargetEntities = () => RecruitApiClient.get(`/api/v4/target_entities`, {});\n    this.cloneForm = (formId, params) => RecruitApiClient.post(`/api/v4/smart_forms/${formId}/clone`, params);\n    this.updateQuestions = (formId, params) => RecruitApiClient.put(`/api/v4/smart_forms/${formId}/update_questions`, params);\n  }\n}\nexport default new Api();\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nimport { classes as rootClass } from \"../../ApprovalForms/Questions/styles\";\nexport const classes = __spreadValues({}, rootClass);\n","\"use strict\";\nexport const SmartFormsTableHeaders = [\n  {\n    name: \"name\",\n    label: \"Title\",\n    sortable: true\n  },\n  {\n    name: \"enabled\",\n    label: \"Enabled\",\n    sortable: true\n  },\n  {\n    name: \"updated_at\",\n    label: \"Updated At\",\n    sortable: true\n  },\n  {\n    name: \"created_at\",\n    label: \"Created At\",\n    sortable: true\n  },\n  {\n    name: \"created_by\",\n    label: \"Created By\",\n    sortable: false\n  }\n];\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nexport const InitialSmartFormsState = {\n  currentPage: Number(sessionStorage.getItem(`smartFormsTablePage`)) || 1,\n  rowsPerPage: 10,\n  sortBy: \"name\",\n  sortOrder: \"asc\",\n  search: \"\",\n  snackbar: {\n    message: \"\",\n    state: \"success\"\n  },\n  isDialogOpen: false,\n  deleteSmartForm: 0,\n  showSmartFormModal: null,\n  enabled: true,\n  selectedEntity: 0,\n  name: \"\",\n  selectedForm: null\n};\nexport const SmartFormsReducer = (state, action) => {\n  switch (action.type) {\n    case \"SET_CURRENT_PAGE\":\n      return __spreadProps(__spreadValues({}, state), { currentPage: action.payload });\n    case \"SET_ROWS_PER_PAGE\":\n      return __spreadProps(__spreadValues({}, state), { rowsPerPage: action.payload });\n    case \"SET_SORT_BY\":\n      return __spreadProps(__spreadValues({}, state), { sortBy: action.payload });\n    case \"SET_SORT_ORDER\":\n      return __spreadProps(__spreadValues({}, state), { sortOrder: action.payload });\n    case \"SET_SEARCH\":\n      return __spreadProps(__spreadValues({}, state), { search: action.payload });\n    case \"SET_SNACKBAR\":\n      return __spreadProps(__spreadValues({}, state), { snackbar: action.payload });\n    case \"SET_IS_DIALOG_OPEN\":\n      return __spreadProps(__spreadValues({}, state), { isDialogOpen: action.payload });\n    case \"SET_DELETE_SMART_FORM\":\n      return __spreadProps(__spreadValues({}, state), { deleteSmartForm: action.payload });\n    case \"SET_MODAL_OPEN\":\n      return __spreadProps(__spreadValues({}, state), {\n        showSmartFormModal: action.payload\n      });\n    case \"SET_TOGGLE_ENABLED\":\n      return __spreadProps(__spreadValues({}, state), { enabled: !state.enabled });\n    case \"SET_SELECTED_ENTITY\":\n      return __spreadProps(__spreadValues({}, state), { selectedEntity: action.payload });\n    case \"SET_NAME\":\n      return __spreadProps(__spreadValues({}, state), { name: action.payload });\n    case \"SET_SELECTED_FORM\":\n      return __spreadProps(__spreadValues({}, state), { selectedForm: action.payload });\n    case \"RESET_SMART_FORM\":\n      return __spreadProps(__spreadValues({}, state), {\n        name: InitialSmartFormsState.name,\n        enabled: InitialSmartFormsState.enabled\n      });\n  }\n};\nexport const InitialSmartFormFieldsState = {\n  snackbar: {\n    message: \"\",\n    state: \"success\"\n  },\n  modalsOpen: {\n    newField: false,\n    addSystemField: false,\n    importFields: false,\n    smartFormSettings: false\n  },\n  editingQuestion: null,\n  selectedSystemField: null,\n  selectedSourceId: null,\n  systemFieldError: \"\",\n  actionStates: {}\n};\nexport const SmartFormFieldsReducer = (state, action) => {\n  switch (action.type) {\n    case \"SET_SNACKBAR\":\n      return __spreadProps(__spreadValues({}, state), { snackbar: action.payload });\n    case \"SET_MODALS_OPEN\":\n      return __spreadProps(__spreadValues({}, state), { modalsOpen: action.payload });\n    case \"SET_EDITING_QUESTION\":\n      return __spreadProps(__spreadValues({}, state), { editingQuestion: action.payload });\n    case \"SET_SELECTED_SYSTEM_FIELD\":\n      return __spreadProps(__spreadValues({}, state), { selectedSystemField: action.payload });\n    case \"SET_SELECTED_SOURCE_ID\":\n      return __spreadProps(__spreadValues({}, state), { selectedSourceId: action.payload });\n    case \"SET_SYSTEM_FIELD_ERROR\":\n      return __spreadProps(__spreadValues({}, state), { systemFieldError: action.payload });\n    case \"SET_ACTION_STATES\":\n      return __spreadProps(__spreadValues({}, state), { actionStates: action.payload });\n  }\n};\n","\"use strict\";\nimport { theme } from \"../../ThemeContext/ThemeObject\";\nimport { searchInput, actionsMenu } from \"../shared/styleClasses\";\nexport const styles = {\n  smartFormsPageContainer: {\n    backgroundColor: theme.palette.common.white,\n    padding: \"40px\"\n  },\n  smartFormsPageHeader: {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    width: \"100%\",\n    marginBottom: \"26px\",\n    padding: \"0px 16px\",\n    \"& h1\": {\n      fontFamily: \"Source Sans Pro\",\n      fontWeight: \"bold\",\n      fontSize: \"38px\",\n      color: \"#666666\",\n      marginTop: \"0\"\n    }\n  },\n  tabsContainer: {\n    borderBottom: 1,\n    borderColor: \"#DDDDDD\",\n    margin: \"25px 0\"\n  },\n  tabs: {\n    \"& button\": {\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"18px\",\n      letterSpacing: \"0\",\n      textTransform: \"none\",\n      \"&:focus\": {\n        outline: \"none\"\n      }\n    },\n    \"& button.Mui-selected\": {\n      fontWeight: \"600\",\n      color: theme.palette.primary.main\n    }\n  },\n  tabIndicator: {\n    backgroundColor: theme.palette.action.main,\n    marginLeft: 2\n  },\n  searchInput,\n  defaultSwitch: {\n    \"& .MuiFormControlLabel-label\": {\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"14px\",\n      fontWeight: \"bold\",\n      color: theme.palette.common.black\n    },\n    \"& .MuiSwitch-track\": {\n      backgroundColor: \"rgba(0,0,0,0.38) !important\",\n      opacity: \"1 !important\"\n    },\n    \"& .Mui-checked+.MuiSwitch-track\": {\n      backgroundColor: \"rgb(91, 196, 191, 0.17) !important\",\n      opacity: \"1 !important\"\n    },\n    \"& .Mui-checked\": {\n      color: \"rgb(91, 196, 191, 0.5) !important\"\n    }\n  },\n  textField: {\n    marginLeft: 0.5,\n    marginRight: \"-3px\"\n  },\n  backToApprovalFormsButton: {\n    marginBottom: \"20px\",\n    fontSize: \"16px\",\n    color: \"#eee\",\n    opacity: \"0.8\",\n    display: \"flex\",\n    alignItems: \"center\",\n    \"& div\": {\n      fontWeight: \"600\",\n      color: \"#666666\",\n      \":hover\": {\n        color: \"#545454\",\n        cursor: \"pointer\"\n      }\n    }\n  },\n  iconGrey: {\n    color: \"#666666\",\n    fontSize: \"28px\"\n  },\n  actionsMenu\n};\n","\"use strict\";\nexport var ModalType = /* @__PURE__ */ ((ModalType2) => {\n  ModalType2[\"CREATE\"] = \"create\";\n  ModalType2[\"UPDATE\"] = \"update\";\n  ModalType2[\"CLONE\"] = \"clone\";\n  ModalType2[\"CLONE_WITHOUT_FORM\"] = \"clone_without_form\";\n  return ModalType2;\n})(ModalType || {});\n","\"use strict\";\nexport const FILTERS_KEY = \"filters\";\nexport const NOTES_ERROR_MESSAGE = \"Emojis are not allowed\";\nexport const TIMESTAMP_REGEX = /^(2[0-3]|[01]?[0-9]):([0-5]?[0-9]):([0-5]?[0-9])$/;\nexport const DELAY_OPTIONS = [\n  \"None\",\n  \"1 hour\",\n  \"2 hours\",\n  \"4 hours\",\n  \"1 day\",\n  \"2 days\",\n  \"3 days\",\n  \"4 days\",\n  \"5 days\",\n  \"6 days\",\n  \"7 days\",\n  \"14 days\",\n  \"30 days\"\n];\n","\"use strict\";\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nimport Api from \"../Jobs/API\";\nconst EXPIRY_TIME = 3600 * 1e3;\nexport const fetchPreferences = (source) => __async(void 0, null, function* () {\n  const expiryCacheKey = `userPreferences:${source}:expiry`;\n  const cacheKey = `userPreferences:${source}`;\n  const responseExpiryStr = localStorage.getItem(expiryCacheKey);\n  const responseExpiry = responseExpiryStr ? Number(responseExpiryStr) : 0;\n  if (responseExpiry > Date.now()) {\n    const responseFromLocal = localStorage.getItem(cacheKey);\n    if (responseFromLocal) {\n      return JSON.parse(responseFromLocal);\n    }\n  }\n  const response = yield Api.getUISettings({ source });\n  localStorage.setItem(cacheKey, JSON.stringify(response));\n  localStorage.setItem(expiryCacheKey, (Date.now() + EXPIRY_TIME).toString());\n  return response;\n});\nexport const clearPreferenceCache = (source) => {\n  const expiryCacheKey = `userPreferences:${source}:expiry`;\n  const cacheKey = `userPreferences:${source}`;\n  localStorage.removeItem(expiryCacheKey);\n  localStorage.removeItem(cacheKey);\n};\nexport const clearAllPreferenceCache = () => {\n  Object.keys(localStorage).forEach((key) => {\n    if (key.startsWith(\"userPreferences\")) {\n      localStorage.removeItem(key);\n    }\n  });\n};\nexport const updateUiSettings = (params, onError) => __async(void 0, null, function* () {\n  const source = params.source;\n  try {\n    yield Api.postUISettings({ ui_preference: params });\n    if (source) {\n      clearPreferenceCache(source);\n    }\n  } catch (error) {\n    console.log(error);\n    if (onError && error instanceof Error) {\n      onError(error.message);\n    }\n  }\n});\n","\"use strict\";\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nimport { useState } from \"react\";\nimport Api from \"../Job/API\";\nexport const useApplicationsForTask = () => {\n  const [applications, setApplications] = useState([]);\n  const fetchApplications = (jobId) => __async(void 0, null, function* () {\n    let page = 1;\n    let totalPages = 9999;\n    let results = [];\n    while (page <= totalPages) {\n      const response = yield Api.getApplicationsForTask(jobId, page);\n      results = [...results, ...response.data.applications];\n      if (page === 1) {\n        setApplications(results);\n      }\n      totalPages = response.totalPages;\n      page += 1;\n    }\n    if (page > 1) {\n      setApplications(results);\n    }\n  });\n  return { applications, fetchApplications };\n};\n","\"use strict\";\nexport const useDispatch = (dispatch) => {\n  const displayError = (message) => dispatch({\n    type: \"SET_SNACKBAR\",\n    payload: { message, state: \"error\" }\n  });\n  const displaySuccess = (message) => dispatch({\n    type: \"SET_SNACKBAR\",\n    payload: { message, state: \"success\" }\n  });\n  return { displayError, displaySuccess };\n};\n","\"use strict\";\nimport { useRef, useState, useEffect } from \"react\";\nexport const useDragScroll = () => {\n  const ref = useRef(null);\n  const [isDragging, setIsDragging] = useState(false);\n  const startPoint = useRef({ x: 0, y: 0 });\n  const scrollRef = useRef({ left: 0, top: 0 });\n  useEffect(() => {\n    const handleMouseDown = (event) => {\n      if (ref.current) {\n        setIsDragging(true);\n        startPoint.current = { x: event.clientX, y: event.clientY };\n        scrollRef.current = { left: ref.current.scrollLeft, top: ref.current.scrollTop };\n        ref.current.style.cursor = \"grabbing\";\n        ref.current.style.overflow = \"auto\";\n        ref.current.style.userSelect = \"none\";\n      }\n    };\n    const handleMouseMove = (event) => {\n      if (isDragging && ref.current) {\n        const dx = event.clientX - startPoint.current.x;\n        const dy = event.clientY - startPoint.current.y;\n        ref.current.scrollLeft = scrollRef.current.left - dx;\n        ref.current.scrollTop = scrollRef.current.top - dy;\n      }\n    };\n    const handleMouseUp = () => {\n      if (ref.current) {\n        setIsDragging(false);\n        ref.current.style.cursor = \"grab\";\n        ref.current.style.removeProperty(\"user-select\");\n      }\n    };\n    const currentRef = ref.current;\n    if (currentRef) {\n      currentRef.addEventListener(\"mousedown\", handleMouseDown);\n      document.addEventListener(\"mousemove\", handleMouseMove);\n      document.addEventListener(\"mouseup\", handleMouseUp);\n    }\n    return () => {\n      if (currentRef) {\n        currentRef.removeEventListener(\"mousedown\", handleMouseDown);\n        document.removeEventListener(\"mousemove\", handleMouseMove);\n        document.removeEventListener(\"mouseup\", handleMouseUp);\n      }\n    };\n  }, [isDragging]);\n  return [ref];\n};\n","\"use strict\";\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nimport { useQuery } from \"@tanstack/react-query\";\nimport API from \"../Job/API\";\nexport const useEmailTemplatesOptions = ({\n  apiKey,\n  onError\n}) => {\n  return useQuery({\n    queryKey: [\"email templates\"],\n    queryFn: () => __async(void 0, null, function* () {\n      const { email_templates } = yield API.getEmailTemplates({\n        \"X-api-authenticate\": apiKey\n      });\n      const result = [];\n      email_templates.forEach((group) => {\n        group[1].forEach((template) => {\n          result.push(`${template.id} - ${template.name}@-*@${group[0]}`);\n        });\n      });\n      return result;\n    }),\n    onError: (error) => onError(error.errors.join(\", \"))\n  });\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nimport { useQuery } from \"@tanstack/react-query\";\nimport Api from \"../../ScoutCalendar/API\";\nexport const useEvents = ({ weekStart, onError }) => {\n  const { data, isLoading } = useQuery({\n    queryKey: [\"events\", weekStart],\n    queryFn: () => __async(void 0, null, function* () {\n      const {\n        res: { events }\n      } = yield Api.getEvents(weekStart);\n      return events.map((e) => __spreadProps(__spreadValues({}, e), {\n        start: new Date(e.begins_at),\n        end: new Date(e.ends_at)\n      }));\n    }),\n    onError: (error) => {\n      onError(error);\n    }\n  });\n  return {\n    data,\n    isLoading\n  };\n};\nexport default useEvents;\n","\"use strict\";\nimport { useState } from \"react\";\nimport { arrayMove } from \"@dnd-kit/sortable\";\nexport const useFieldChoiceList = () => {\n  const [choiceList, setChoiceList] = useState([\n    { id: \"\", _destroy: 0, position: 0, name: \"\" }\n  ]);\n  const addChoice = () => {\n    const newTempId = Date.now();\n    setChoiceList([...choiceList, { id: newTempId, _destroy: 0, position: null, name: \"\" }]);\n  };\n  const removeChoice = (index) => {\n    const list = [...choiceList];\n    if (list[index].position !== void 0 && list[index].position !== null) {\n      list[index]._destroy = 1;\n    } else {\n      list.splice(index, 1);\n    }\n    setChoiceList(list);\n  };\n  const clearChoices = () => {\n    setChoiceList([{ id: \"\", _destroy: 0, position: 0, name: \"\" }]);\n  };\n  const updateChoiceAttr = (value, index, attribute) => {\n    const list = [...choiceList];\n    list[index][attribute] = value;\n    setChoiceList(list);\n  };\n  const updateChoice = (value, index) => updateChoiceAttr(value, index, \"name\");\n  const updateRank = (value, index) => updateChoiceAttr(value, index, \"rank\");\n  const updateRankValue = (value, index) => updateChoiceAttr(value, index, \"rank_value\");\n  const updateRating = (value, index) => updateChoiceAttr(value, index, \"rating\");\n  const switchChoices = (oldId, newId) => {\n    if (oldId === newId) {\n      return;\n    }\n    const oldIndex = choiceList.map((c) => c.id).indexOf(oldId);\n    const newIndex = choiceList.map((c) => c.id).indexOf(newId);\n    setChoiceList(arrayMove(choiceList, oldIndex, newIndex));\n  };\n  return {\n    choiceList,\n    setChoiceList,\n    addChoice,\n    removeChoice,\n    clearChoices,\n    updateChoice,\n    switchChoices,\n    updateRank,\n    updateRankValue,\n    updateRating\n  };\n};\n","\"use strict\";\nimport { useState } from \"react\";\nimport { emojiInString } from \"../utils/emoji-checker\";\nconst useInputValidation = (input) => {\n  const [inputError, setInputError] = useState(false);\n  const validateInput = () => {\n    if (emojiInString(input)) {\n      setInputError(true);\n      setTimeout(() => {\n        setInputError(false);\n      }, 4e3);\n      throw new Error(\"Emojis are not allowed in notes.\");\n    }\n    return true;\n  };\n  return { inputError, validateInput };\n};\nexport default useInputValidation;\n","\"use strict\";\nimport { useEffect, useState } from \"react\";\nimport { useDebouncedCallback } from \"use-debounce\";\nexport const useIsOverflow = (ref) => {\n  const [hasOverflow, setHasOverflow] = useState(false);\n  const debouncedCheckOverflow = useDebouncedCallback(() => {\n    if (ref == null ? void 0 : ref.current) {\n      const { scrollWidth, clientWidth, scrollHeight, clientHeight } = ref.current;\n      const hasOverflow2 = scrollHeight > clientHeight || scrollWidth > clientWidth;\n      setHasOverflow(hasOverflow2);\n    }\n  }, 100);\n  useEffect(() => {\n    debouncedCheckOverflow();\n    window.addEventListener(\"resize\", debouncedCheckOverflow);\n    return () => {\n      window.removeEventListener(\"resize\", debouncedCheckOverflow);\n    };\n  }, [debouncedCheckOverflow, ref]);\n  return hasOverflow;\n};\n","\"use strict\";\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nimport { useState } from \"react\";\nimport Api from \"../Job/API\";\nexport const useJobsForTask = () => {\n  const [jobs, setJobs] = useState([]);\n  const fetchJobs = () => __async(void 0, null, function* () {\n    let page = 1;\n    let totalPages = 9999;\n    let results = [];\n    while (page <= totalPages) {\n      const response = yield Api.getJobs(page);\n      results = [...results, ...response.data.jobs];\n      if (page === 1) {\n        setJobs(results);\n      }\n      totalPages = response.totalPages;\n      page += 1;\n    }\n    if (page > 1) {\n      setJobs(results);\n    }\n  });\n  return { jobs, fetchJobs };\n};\n","\"use strict\";\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nimport { useQuery } from \"@tanstack/react-query\";\nimport API from \"../Job/API\";\nexport const usePlaceholders = ({\n  type,\n  apiKey,\n  onError\n}) => {\n  return useQuery({\n    queryKey: [\"placeholders\", type],\n    queryFn: () => __async(void 0, null, function* () {\n      const res = yield API.getPlaceholders({ \"X-api-authenticate\": apiKey }, type);\n      return res.placeholders;\n    }),\n    onError: (error) => onError(error.errors.join(\", \"))\n  });\n};\n","\"use strict\";\nexport const useThrottle = (cb, delay = 1e3) => {\n  let shouldWait = false;\n  let waitingArgs = null;\n  const timeoutFunc = () => {\n    if (waitingArgs == null) {\n      shouldWait = false;\n    } else {\n      cb(...waitingArgs);\n      waitingArgs = null;\n      setTimeout(timeoutFunc, delay);\n    }\n  };\n  return (...args) => {\n    if (shouldWait) {\n      waitingArgs = args;\n      return;\n    }\n    cb(...args);\n    shouldWait = true;\n    setTimeout(timeoutFunc, delay);\n  };\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { theme } from \"../../ThemeContext/ThemeObject\";\nexport const baseButtonStyles = {\n  fontFamily: \"Source Sans Pro\",\n  fontSize: \"14px\",\n  fontWeight: \"bold\",\n  textTransform: \"none\",\n  borderRadius: \"6px\",\n  boxShadow: \"none\"\n};\nexport const basePrimaryButtonStyles = __spreadProps(__spreadValues({}, baseButtonStyles), {\n  color: \"#FFFFFF\",\n  backgroundColor: \"#5BC4BF\",\n  \"&:hover\": {\n    backgroundColor: \"#4da8a4\",\n    boxShadow: \"none\"\n  }\n});\nexport const baseSecondaryButtonStyles = __spreadProps(__spreadValues({}, baseButtonStyles), {\n  color: \"#939393\",\n  backgroundColor: \"rgba(147, 147, 147, 0.12)\",\n  \"&:hover\": {\n    backgroundColor: \"rgba(147, 147, 147, 0.24)\",\n    boxShadow: \"none\"\n  }\n});\nexport const statusClampCommonStyles = {\n  display: \"-webkit-box\",\n  position: \"relative\",\n  WebkitLineClamp: \"2\",\n  WebkitBoxOrient: \"vertical\",\n  overflow: \"hidden\",\n  minHeight: \"35px\",\n  maxHeight: \"53px\",\n  textAlign: \"left\"\n};\nexport const statusClampAfterStyles = {\n  content: '\"\\u25BE\"',\n  fontSize: \"13px\",\n  color: \"#CCCCCC\",\n  position: \"absolute\",\n  right: \"6px\",\n  lineHeight: \"0\",\n  top: \"50%\"\n};\nexport const statusClampDropdownStyles = {\n  visibility: \"hidden\",\n  minHeight: \"35px\",\n  textAlign: \"left\",\n  position: \"absolute\",\n  top: \"-1px\",\n  left: \"-1px\",\n  zIndex: \"2\",\n  background: \"#ffffff\",\n  borderRadius: \"6px\",\n  border: \"1px solid #CCCCCC\"\n};\nexport const statusClampDropdownAfterStyles = {\n  content: '\"\\u25BE\"',\n  fontSize: \"13px\",\n  color: \"#CCCCCC\",\n  position: \"absolute\",\n  right: \"6px\",\n  lineHeight: \"0\"\n};\nexport const statusClampHoverStyles = {\n  overflow: \"visible\",\n  WebkitLineClamp: \"unset\",\n  \"& .status-dropdown-full\": {\n    visibility: \"visible\"\n  }\n};\nexport const scrollShadowAfterStyles = {\n  content: '\"\"',\n  background: \"#aaaaaa\",\n  width: \"2px\",\n  height: \"100%\",\n  filter: \"blur(2px)\",\n  position: \"absolute\",\n  top: \"0\",\n  opacity: \"0%\",\n  transition: \"opacity 0.17s linear\"\n};\nexport const scrollShadowBeforeStyles = {\n  content: '\"\"',\n  top: \"0\",\n  width: \"6px\",\n  height: \"100%\",\n  position: \"absolute\",\n  background: \"#ffffff\",\n  zIndex: \"2\"\n};\nexport const candidateSearchCommonStyles = {\n  fontFamily: \"Source Sans Pro\",\n  fontSize: \"16px\",\n  fontWeight: \"regular\",\n  color: \"#939393\",\n  borderRadius: \"6px\",\n  width: \"320px\",\n  \"& .MuiOutlinedInput-root\": {\n    paddingLeft: \"3px\"\n  },\n  \"& legend\": {\n    display: \"none\"\n  },\n  \"& svg\": {\n    fontSize: \"22px\",\n    color: \"#939393\",\n    transform: \"translate(-6px, -1px)\"\n  },\n  \"& input\": {\n    padding: \"8px 9px 12px 0px\",\n    color: \"#000000\"\n  }\n};\nexport const actionsModalReducedPaddingCommonStyles = {\n  display: \"flex\",\n  flexDirection: \"column\",\n  padding: \"60px\",\n  paddingLeft: \"48px\",\n  width: \"100%\",\n  maxWidth: \"900px\",\n  height: \"84vh\",\n  borderRadius: \"6px\",\n  dropShadow: \"0px 2px 14px #305A6F29\",\n  position: \"absolute\",\n  background: \"#FFFFFF\",\n  top: \"50%\",\n  left: \"50%\",\n  transform: \"translate(-50%, -50%)\",\n  \"& h3\": {\n    color: \"#939393\",\n    fontSize: \"19px\",\n    fontWeight: \"Bold\",\n    marginBottom: \"30px\"\n  }\n};\nexport const filterPopoverHeaderCommonStyles = {\n  width: \"100%\",\n  display: \"flex\",\n  justifyContent: \"space-between\",\n  marginBottom: \"14px\",\n  backgroundColor: \"white\",\n  position: \"sticky\",\n  zIndex: 99,\n  paddingTop: \"26px\",\n  paddingBottom: \"2px\",\n  boxShadow: \"0px 6px 10px 7px #ffffff\"\n};\nexport const actionsMenuPaperCommonStyles = {\n  display: \"flex\",\n  flexDirection: \"column\",\n  rowGap: \"10px\",\n  padding: \"14px 0px 14px 20px\",\n  borderRadius: \"6px\"\n};\nexport const actionsMenuSpanCommonStyles = {\n  fontFamily: \"Source Sans Pro\",\n  fontSize: \"14px\",\n  fontWeight: \"bold\",\n  color: \"#666666\",\n  cursor: \"pointer\",\n  \"&:hover\": {\n    color: theme.palette.primary.main\n  }\n};\nexport const switchLabelsCommonStyles = {\n  justifyContent: \"space-between\",\n  width: \"100%\",\n  \"& .MuiFormControlLabel-label\": {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    color: \"#084D6D\"\n  },\n  \"& .MuiSwitch-track\": {\n    backgroundColor: \"rgba(0,0,0,0.38)\",\n    opacity: \"1\"\n  },\n  \"& .Mui-checked+.MuiSwitch-track\": {\n    backgroundColor: \"rgb(91, 196, 191, 0.17) !important\",\n    opacity: \"1 !important\"\n  },\n  \"& .Mui-checked\": {\n    color: \"rgb(91, 196, 191, 0.5) !important\"\n  }\n};\nconst _arrowStyles = {\n  display: \"none\",\n  alignItems: \"center\",\n  justifyContent: \"center\",\n  width: \"40px\",\n  height: \"65px\",\n  bottom: \"370px\",\n  background: \"#eeeeee\",\n  opacity: \"0.9\",\n  cursor: \"pointer\"\n};\nexport const rightArrowStyles = __spreadProps(__spreadValues({}, _arrowStyles), {\n  borderRadius: \"10px 0px 0px 10px\"\n});\nexport const leftArrowStyles = __spreadProps(__spreadValues({}, _arrowStyles), {\n  borderRadius: \"0px 10px 10px 0px\"\n});\nexport const applyButtonStyles = __spreadProps(__spreadValues({}, baseButtonStyles), {\n  color: \"#FFFFFF\",\n  backgroundColor: \"#5BC4BF\",\n  padding: \"5px 23px\",\n  \"&:hover\": {\n    backgroundColor: \"#4da8a4\",\n    boxShadow: \"none\"\n  }\n});\nexport const actionButtonStyles = __spreadProps(__spreadValues({}, baseButtonStyles), {\n  fontWeight: \"600\",\n  color: \"#666666\",\n  backgroundColor: \"#9393931F\",\n  padding: \"10px 24px\",\n  border: \"none\",\n  \"&:hover\": {\n    backgroundColor: \"#93939335\",\n    border: \"none\"\n  }\n});\nexport const filterPopoverContentStyles = {\n  width: \"272px\",\n  maxHeight: \"500px\",\n  boxShadow: \"0px 2px 14px rgba(48,90,111,0.16)\",\n  msOverflowStyle: \"none\",\n  scrollbarWidth: \"none\",\n  position: \"relative\",\n  \"&::-webkit-scrollbar\": {\n    display: \"none\"\n  }\n};\nexport const selectedApplicantsTableStyles = {\n  tableLayout: \"auto !important\",\n  width: \"unset\",\n  border: \"none\",\n  th: {\n    color: theme.palette.primary.main,\n    fontWeight: \"bold\",\n    \"& .Mui-active\": {\n      color: theme.palette.primary.main\n    }\n  },\n  tr: {\n    fontSize: \"16px\",\n    border: \"none\"\n  }\n};\nexport const selectedApplicantsTableRowStyles = {\n  fontFamily: \"Source Sans Pro, sans-serif\",\n  border: \"none\",\n  backgroundColor: \"#FFFFFF\",\n  textTransform: \"none\"\n};\nexport const modalConfirmationButtonCommonStyles = {\n  fontFamily: \"Source Sans Pro\",\n  fontSize: \"14px\",\n  fontWeight: \"bold\",\n  textTransform: \"none\",\n  color: \"#FFFFFF\",\n  backgroundColor: \"#5BC4BF\",\n  borderRadius: \"6px\",\n  boxShadow: \"none\",\n  \"&:hover\": {\n    backgroundColor: \"#4da8a4\",\n    boxShadow: \"none\"\n  }\n};\nexport const selectedTooltipCommonStyles = {\n  display: \"flex\",\n  alignItems: \"center\",\n  visibility: \"hidden\",\n  bottom: \"40px\",\n  position: \"fixed\",\n  zIndex: 99,\n  backgroundColor: \"rgba(242,242,242)\",\n  borderRadius: \"8px\",\n  transform: \"translateX(20px)\"\n};\nexport const rowSelectContainerCommonStyles = {\n  display: \"flex\",\n  alignItems: \"center\",\n  width: \"fit-content\",\n  marginTop: \"5px\",\n  fontFamily: \"Source Sans Pro\",\n  fontSize: \"14px\",\n  fontWeight: \"bold\",\n  color: \"#666666\",\n  \"& span\": {\n    marginRight: \"12px\",\n    paddingBottom: \"6px\"\n  }\n};\nexport const checkboxContainerStyles = {\n  fontFamily: \"Source Sans Pro\",\n  fontSize: \"14px\",\n  fontWeight: \"bold\",\n  color: \"#084D6D\",\n  textAlign: \"center\",\n  display: \"flex\",\n  alignItems: \"center\",\n  justifyContent: \"space-between\"\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { theme } from \"../../ThemeContext/ThemeObject\";\nimport {\n  actionButtonStyles,\n  actionsMenuPaperCommonStyles,\n  actionsMenuSpanCommonStyles,\n  applyButtonStyles,\n  basePrimaryButtonStyles,\n  baseSecondaryButtonStyles,\n  checkboxContainerStyles,\n  filterPopoverContentStyles,\n  modalConfirmationButtonCommonStyles,\n  rowSelectContainerCommonStyles,\n  scrollShadowAfterStyles,\n  scrollShadowBeforeStyles,\n  selectedTooltipCommonStyles,\n  statusClampAfterStyles,\n  statusClampCommonStyles,\n  statusClampDropdownAfterStyles,\n  statusClampDropdownStyles,\n  statusClampHoverStyles,\n  switchLabelsCommonStyles\n} from \"./commonStyles\";\nexport const notesEditSaveButton = __spreadProps(__spreadValues({}, basePrimaryButtonStyles), {\n  width: \"86px\",\n  padding: \"5px 0px\",\n  \"& svg\": {\n    color: \"#FFFFFF\",\n    fontSize: \"16px !important\"\n  },\n  \"&:disabled\": {\n    backgroundColor: \"#EEEEEE\",\n    color: \"#BBBBBB\",\n    transition: \"all 250ms ease-in-out\"\n  }\n});\nexport const notesCancelButton = __spreadProps(__spreadValues({}, baseSecondaryButtonStyles), {\n  width: \"86px\",\n  padding: \"5px 0px\",\n  \"& svg\": {\n    color: theme.palette.error.main,\n    fontSize: \"16px !important\"\n  }\n});\nexport const editNotePopover = {\n  \"& .MuiPaper-root\": {\n    display: \"flex\",\n    flexDirection: \"column\",\n    justifyContent: \"center\",\n    alignItems: \"flex-end\",\n    rowGap: \"10px\",\n    width: \"300px\",\n    minHeight: \"150px\",\n    padding: \"17px 17px 14px 17px\"\n  }\n};\nexport const statusClamp = __spreadProps(__spreadValues({}, statusClampCommonStyles), {\n  width: \"140px\",\n  padding: \"6px 20px 5px 24px\",\n  \"&::after\": statusClampAfterStyles,\n  \"& .status-dropdown-full\": __spreadProps(__spreadValues({}, statusClampDropdownStyles), {\n    width: \"140px\",\n    padding: \"6px 20px 5px 24px\",\n    \"&::after\": statusClampDropdownAfterStyles\n  }),\n  \"&:hover\": statusClampHoverStyles\n});\nexport const scrollShadowLeft = {\n  \"&::after\": __spreadProps(__spreadValues({}, scrollShadowAfterStyles), {\n    right: \"-2px\"\n  }),\n  \"&::before\": __spreadProps(__spreadValues({}, scrollShadowBeforeStyles), {\n    right: \"0\"\n  })\n};\nexport const scrollShadowRight = {\n  \"&::after\": __spreadProps(__spreadValues({}, scrollShadowAfterStyles), {\n    left: \"-2px\"\n  }),\n  \"&::before\": __spreadProps(__spreadValues({}, scrollShadowBeforeStyles), {\n    left: \"0\"\n  })\n};\nexport const searchInput = {\n  fontFamily: \"Source Sans Pro\",\n  fontSize: \"20px\",\n  fontWeight: \"regular\",\n  borderRadius: \"6px\",\n  minHeight: \"54px\",\n  \"& legend\": {\n    display: \"none\"\n  },\n  \"& svg\": {\n    fontSize: \"31px\",\n    color: \"#084D6D\"\n  },\n  \"& input\": {\n    padding: \"10.5px 11px 15.5px 11px\",\n    color: \"#000000\"\n  },\n  \"& fieldset\": {\n    borderColor: \"#EAEEF0\"\n  },\n  \"&:hover\": {\n    \"& fieldset\": {\n      borderColor: \"#DADEE0 !important\"\n    }\n  }\n};\nexport const chip = {\n  fontFamily: \"Source Sans Pro\",\n  fontSize: \"18px\",\n  fontWeight: \"600\",\n  padding: \"20px 12px\",\n  borderRadius: \"25px\",\n  backgroundColor: \"#FFFFFF\",\n  border: \"2px solid #CCCCCC\",\n  color: \"#CCCCCC\",\n  transition: \"all 0.4s ease-in-out\",\n  \"&:hover\": {\n    backgroundColor: \"#FFFFFF\"\n  }\n};\nexport const chipPacket = {\n  display: \"flex\",\n  flexWrap: \"wrap\",\n  rowGap: \"20px\",\n  columnGap: \"26px\",\n  marginTop: \"36px\"\n};\nexport const chipSelected = {\n  fontFamily: \"Source Sans Pro\",\n  fontSize: \"18px\",\n  fontWeight: \"600\",\n  padding: \"20px 12px\",\n  borderRadius: \"25px\",\n  color: theme.palette.primary.main,\n  backgroundColor: \"#FFFFFF\",\n  border: \"2px solid \" + theme.palette.action.main,\n  transition: \"all 0.4s ease-in-out\",\n  \"&:hover\": {\n    backgroundColor: \"#FFFFFF\"\n  }\n};\nexport const actionsMenu = {\n  \"& .MuiPaper-root\": __spreadProps(__spreadValues({}, actionsMenuPaperCommonStyles), {\n    width: \"170px\",\n    marginTop: \"12px\"\n  }),\n  \"& span\": actionsMenuSpanCommonStyles\n};\nexport const filterMenu = {\n  \"& .MuiPaper-root\": __spreadProps(__spreadValues({}, actionsMenuPaperCommonStyles), {\n    rowGap: \"11px\",\n    minWidth: \"166px\",\n    marginTop: \"6px\"\n  }),\n  \"& span\": __spreadProps(__spreadValues({}, actionsMenuSpanCommonStyles), {\n    color: \"#939393\"\n  })\n};\nexport const fileName = {\n  fontFamily: \"Source Sans Pro\",\n  fontSize: \"14px\",\n  fontWeight: \"bold\",\n  color: theme.palette.primary.main,\n  maxWidth: \"240px\",\n  overflow: \"hidden\",\n  whiteSpace: \"nowrap\",\n  textOverflow: \"ellipsis\"\n};\nexport const connectingLine = {\n  \"&:before\": {\n    content: '\"\"',\n    display: \"block\",\n    width: \"1px\",\n    background: \"#edf2f5\",\n    height: \"100%\",\n    position: \"absolute\",\n    left: \"15px\",\n    top: \"30px\"\n  }\n};\nexport const newApplicationButton = {\n  fontFamily: \"Source Sans Pro\",\n  fontSize: \"18px\",\n  fontWeight: \"bold\",\n  lineHeight: \"1.3\",\n  color: theme.palette.action.main,\n  backgroundColor: \"#5BC4BF1F\",\n  height: \"60px\",\n  width: \"260px\",\n  borderRadius: \"6px\",\n  border: \"none\",\n  textTransform: \"none\",\n  \"@media  screen and (max-width: 1130px)\": {\n    fontSize: \"14px\"\n  },\n  \"&:hover\": {\n    backgroundColor: \"#5BC4BF35\",\n    border: \"none\"\n  }\n};\nexport const sortableSwitchLabels = __spreadProps(__spreadValues({}, switchLabelsCommonStyles), {\n  marginLeft: \"4px\"\n});\nexport const filterSwitchLabels = __spreadProps(__spreadValues({}, switchLabelsCommonStyles), {\n  marginLeft: \"0px\"\n});\nexport const rowSelect = {\n  fontFamily: \"Source Sans Pro\",\n  fontSize: \"14px\",\n  color: \"#666666\",\n  fontWeight: \"bold\",\n  borderRadius: \"6px !important\",\n  \"& legend\": {\n    display: \"none\"\n  },\n  \"& svg\": {\n    display: \"none\"\n  },\n  \"& .MuiOutlinedInput-notchedOutline\": {\n    borderColor: \"#DBDEDF\"\n  },\n  \"&:hover .MuiOutlinedInput-notchedOutline\": {\n    borderColor: \"#CACDCE\"\n  },\n  \"& .MuiOutlinedInput-input\": {\n    padding: \"4px 12px 8px 12px !important\"\n  }\n};\nexport const pagination = {\n  marginRight: \"24px\",\n  \"& button\": {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"14px\",\n    fontWeight: \"bold\",\n    color: \"#CCCCCC\",\n    margin: \"0px -2px\"\n  },\n  \"& .Mui-selected\": {\n    color: \"#666666\",\n    backgroundColor: \"#FFFFFF !important\",\n    \"&:hover\": {\n      backgroundColor: \"#FFFFFF !important\"\n    }\n  },\n  \"& .MuiPaginationItem-previousNext\": {\n    color: \"#666666\"\n  }\n};\nexport const csvExportModal = {\n  display: \"flex\",\n  flexDirection: \"column\",\n  padding: \"60px\",\n  width: \"520px\",\n  borderRadius: \"6px\",\n  dropShadow: \"0px 2px 14px #305A6F29\",\n  position: \"absolute\",\n  background: \"#FFFFFF\",\n  top: \"50%\",\n  left: \"50%\",\n  transform: \"translate(-50%, -50%)\",\n  fontFamily: \"Source Sans Pro\",\n  color: \"#333333\"\n};\nexport const csvExportHeader = {\n  fontSize: \"20px\",\n  fontWeight: \"600\"\n};\nexport const csvExportSubheader = {\n  color: \"#333333\",\n  fontSize: \"14px\"\n};\nexport const closeIcon = {\n  position: \"absolute\",\n  top: \"20px\",\n  right: \"20px\",\n  cursor: \"pointer\",\n  color: \"#DDDDDD\"\n};\nexport const switchLabels = __spreadProps(__spreadValues({}, switchLabelsCommonStyles), {\n  width: \"200px\"\n});\nexport const clearButton = __spreadProps(__spreadValues({}, baseSecondaryButtonStyles), {\n  fontSize: \"10px\",\n  padding: \"5px 10px\",\n  \"& .MuiButton-endIcon svg\": {\n    fontSize: \"10px\"\n  }\n});\nexport const modalSendButton = __spreadProps(__spreadValues({}, basePrimaryButtonStyles), {\n  padding: \"8px 19px\",\n  \"&:focus\": {\n    outline: \"none\"\n  }\n});\nexport const deleteApplicant = {\n  color: theme.palette.error.main,\n  backgroundColor: \"#D6827D33\",\n  \"&:hover\": {\n    color: \"#FFFFFF\",\n    backgroundColor: theme.palette.error.main,\n    border: \"none\"\n  }\n};\nexport const link = {\n  fontSize: \"19px\",\n  cursor: \"pointer\",\n  color: \"#939393\",\n  transition: \"color 0.2s ease-in-out\",\n  \"&:hover\": {\n    color: \"#737373\"\n  },\n  \"@media (max-width: 1450px)\": {\n    fontSize: \"16px\"\n  },\n  \"@media (max-width: 1260px)\": {\n    fontSize: \"14px\"\n  }\n};\nexport const copyButton = {\n  fontSize: \"12px\",\n  fontWeight: \"bold\",\n  backgroundColor: \"#5BC4BF1F\",\n  color: theme.palette.action.main,\n  borderRadius: \"6px\",\n  textTransform: \"none\",\n  \"&:hover\": {\n    backgroundColor: theme.palette.action.main,\n    color: \"#FFFFFF\"\n  }\n};\nexport const actionModalFormLine = {\n  position: \"relative\",\n  display: \"flex\",\n  flexWrap: \"wrap\",\n  flexDirection: \"row\",\n  columnGap: \"50px\",\n  rowGap: \"26px\",\n  alignItems: \"center\",\n  marginBottom: \"26px\",\n  width: \"100%\",\n  marginLeft: \"12px\"\n};\nexport const csvExportButton = {\n  fontFamily: \"Source Sans Pro\",\n  fontSize: \"16px\",\n  fontWeight: \"bold\",\n  textTransform: \"none\",\n  color: \"#FFFFFF\",\n  backgroundColor: theme.palette.action.main,\n  borderRadius: \"8px\",\n  height: \"58px\",\n  marginTop: \"42px\",\n  \"&:hover\": {\n    backgroundColor: \"#4da8a4\"\n  }\n};\nexport const rightArrow = {\n  display: \"none\",\n  alignItems: \"center\",\n  justifyContent: \"center\",\n  position: \"sticky\",\n  width: \"40px\",\n  height: \"65px\",\n  bottom: \"370px\",\n  borderRadius: \"10px 0px 0px 10px\",\n  background: \"#eeeeee\",\n  zIndex: \"9999\",\n  opacity: \"0.9\",\n  cursor: \"pointer\"\n};\nexport const applyButton = __spreadProps(__spreadValues({}, applyButtonStyles), {\n  fontSize: \"10px\"\n});\nexport const actionButton = __spreadValues({}, actionButtonStyles);\nexport const filterPopoverContent = __spreadProps(__spreadValues({}, filterPopoverContentStyles), {\n  overflowY: \"scroll\"\n});\nexport const paginationContainer = {\n  display: \"flex\",\n  alignItems: \"center\",\n  width: \"fit-content\",\n  marginTop: \"5px\",\n  padding: \"12px\",\n  fontFamily: \"Source Sans Pro\",\n  fontSize: \"14px\",\n  fontWeight: \"bold\",\n  color: \"#666666\"\n};\nexport const selectedApplicantsTableHeader = {\n  fontFamily: \"Source Sans Pro\",\n  fontSize: \"16px\",\n  fontWeight: \"600\",\n  color: theme.palette.primary.main,\n  marginTop: \"24px\",\n  marginBottom: \"20px\"\n};\nexport const checkboxLabel = {\n  \"& .MuiTypography-root\": {\n    fontFamily: \"Source Sans Pro\",\n    fontSize: \"16px\",\n    color: \"#939393\"\n  },\n  \"& span\": {\n    color: theme.palette.error.main\n  }\n};\nexport const modalCreateButton = __spreadProps(__spreadValues({}, modalConfirmationButtonCommonStyles), {\n  padding: \"8px 19px\"\n});\nexport const selectedTooltip = __spreadProps(__spreadValues({}, selectedTooltipCommonStyles), {\n  justifyContent: \"space-evenly\",\n  padding: \"20px 30px\",\n  minWidth: \"665px\",\n  left: \"calc(50% - 350px)\"\n});\nexport const rowSelectContainer = __spreadProps(__spreadValues({}, rowSelectContainerCommonStyles), {\n  padding: \"12px\"\n});\nexport const rowSelectContainerAlt = __spreadProps(__spreadValues({}, rowSelectContainerCommonStyles), {\n  padding: \"8px\"\n});\nexport const checkboxContainer = __spreadProps(__spreadValues({}, checkboxContainerStyles), {\n  marginTop: \"24px\"\n});\n","\"use strict\";\nimport { AttachmentType } from \"../Application/config\";\nexport const getAttachmentType = (selectedAttachment) => {\n  const contentType = selectedAttachment == null ? void 0 : selectedAttachment.attached_content_type;\n  if (!contentType) return;\n  const typeMap = {\n    image: AttachmentType.Image,\n    video: AttachmentType.Video,\n    audio: AttachmentType.Audio,\n    \"text/plain\": AttachmentType.Text,\n    \"application/pdf\": AttachmentType.Pdf,\n    \"application/msword\": AttachmentType.Word,\n    \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\": AttachmentType.Word\n  };\n  const typePrefix = contentType.split(\"/\")[0];\n  const typeFull = contentType;\n  return typeMap[typeFull] || typeMap[typePrefix];\n};\n","\"use strict\";\nexport const getPlatform = () => {\n  const userAgent = navigator.userAgent;\n  return {\n    isAndroid: /android/i.test(userAgent),\n    isIOS: /iPad|iPhone|iPod/.test(userAgent),\n    isMac: /Macintosh/.test(userAgent),\n    isWindows: /Windows/.test(userAgent),\n    isMobile: /android/i.test(userAgent) || /iPad|iPhone|iPod/.test(userAgent)\n  };\n};\n","\"use strict\";\nimport emojiRegex from \"emoji-regex\";\nexport const emojiInString = (text) => {\n  const regex = emojiRegex();\n  return text.match(regex);\n};\n","\"use strict\";\nimport dayjs from \"dayjs\";\nimport utc from \"dayjs/plugin/utc\";\nimport timezone from \"dayjs/plugin/timezone\";\nimport advanced from \"dayjs/plugin/advancedFormat\";\ndayjs.extend(utc);\ndayjs.extend(timezone);\ndayjs.extend(advanced);\nconst ALLOWED_FORMATS = {\n  long: \"Do MMMM YYYY[,] h:mma\",\n  short: \"Do MMM YYYY\",\n  shortWithDayOfWeek: \"ddd, D MMM YYYY\",\n  onlyTime: \"LT\",\n  ymd: \"YYYY-MM-DD\"\n};\nconst formatToUserTimeZone = (timeString, format = \"long\") => {\n  var _a;\n  return dayjs(timeString).tz(userTimeZone).format((_a = ALLOWED_FORMATS[format]) != null ? _a : ALLOWED_FORMATS.short);\n};\nexport const userTimeZone = (() => {\n  var _a;\n  return ((_a = document.querySelector('meta[name=\"user-timezone\"]')) == null ? void 0 : _a.getAttribute(\"value\")) || dayjs.tz.guess();\n})();\nexport default formatToUserTimeZone;\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nexport const getLocalStorageItem = (key, defaultValue = {}) => {\n  const localStoreValue = localStorage.getItem(key);\n  return localStoreValue ? JSON.parse(localStoreValue) : defaultValue;\n};\nexport const addLocalStorageItem = (key, value) => {\n  localStorage.setItem(\n    key,\n    JSON.stringify(__spreadValues(__spreadValues({}, getLocalStorageItem(key)), value))\n  );\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nexport const getUpdatedSortableColumns = (sortableColumns, columnsAndLimitPreferences) => {\n  const sortableColumnMap = /* @__PURE__ */ new Map();\n  sortableColumns.forEach((column) => {\n    sortableColumnMap.set(column.id, column);\n  });\n  const usedIds = [];\n  const updatedColumns = [];\n  columnsAndLimitPreferences.sortable_columns.forEach((column) => {\n    const matchingColumn = sortableColumnMap.get(column.id);\n    if (matchingColumn) {\n      updatedColumns.push(__spreadProps(__spreadValues({}, matchingColumn), {\n        sortable: column.sortable,\n        canToggle: column.canToggle,\n        enabled: column.enabled\n      }));\n      usedIds.push(matchingColumn.id);\n    }\n  });\n  sortableColumns.forEach((column) => {\n    if (!usedIds.includes(column.id)) {\n      updatedColumns.push(column);\n    }\n  });\n  return { updatedColumns };\n};\n","\"use strict\";\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nimport queryString from \"query-string\";\nconst BASE_URL = window.location.origin;\nclass RecruitApiClient {\n  constructor() {\n    this.handleResponse = (response) => __async(this, null, function* () {\n      if (response.ok) {\n        const resHead = {};\n        [...response.headers].forEach(\n          (header) => resHead[header[0]] = header[1]\n        );\n        const text = yield response.text();\n        const data = text ? JSON.parse(text) : null;\n        return { res: data, resHead };\n      }\n      return response.json().then((error) => {\n        error.code = response.status;\n        throw error;\n      });\n    });\n    this.get = (path, params = null, headers = null, download) => fetch(\n      `${BASE_URL}${path}${params ? `?` : \"\"}${queryString.stringify(params, {\n        arrayFormat: \"bracket\",\n        encode: false\n      })}`,\n      {\n        headers: this.getHeaders(headers)\n      }\n    ).then((r) => {\n      if (download) return r.blob();\n      return this.handleResponse(r);\n    });\n    this.post = (path, params = {}, headers = null, download) => fetch(`${BASE_URL}${path}`, {\n      headers: this.getHeaders(headers),\n      method: \"POST\",\n      body: JSON.stringify(params)\n    }).then((r) => {\n      if (download) return r.blob();\n      return this.handleResponse(r);\n    });\n    this.put = (path, params = {}, headers = null) => fetch(`${BASE_URL}${path}`, {\n      headers: this.getHeaders(headers),\n      method: \"PUT\",\n      body: JSON.stringify(params)\n    }).then((r) => this.handleResponse(r));\n    this.delete = (path, params = {}, headers = null) => fetch(`${BASE_URL}${path}`, {\n      headers: this.getHeaders(headers),\n      method: \"DELETE\",\n      body: JSON.stringify(params)\n    }).then((r) => this.handleResponse(r));\n  }\n  getHeaders(headers) {\n    return Object.assign(\n      {},\n      {\n        \"Content-Type\": \"application/json\"\n      },\n      headers\n    );\n  }\n}\nexport default new RecruitApiClient();\n","\"use strict\";\nimport RecruitApiClient from \"../RecruitApiClient\";\nconst BASE_URL = \"/api/v4\";\nclass Api {\n  constructor() {\n    this.getEventOptions = () => RecruitApiClient.get(`${BASE_URL}/calendar/event_types`);\n    this.getEventRecruiters = () => RecruitApiClient.get(`${BASE_URL}/calendar/users`);\n    this.getEvents = (date, typeId) => RecruitApiClient.get(`${BASE_URL}/calendar/events`, {\n      date,\n      event_type_id: typeId || void 0\n    });\n    this.deleteEvent = (id) => RecruitApiClient.delete(`${BASE_URL}/calendar/events/${id}`);\n    this.createEventsBatches = (params) => RecruitApiClient.post(`${BASE_URL}/calendar/event_batches`, {\n      event_batch: params\n    });\n    this.removeAttendees = (eventId, params) => RecruitApiClient.post(`${BASE_URL}/calendar/events/${eventId}/remove_attendees`, {\n      attendee_ids: params\n    });\n    this.updateEvent = (id, params) => RecruitApiClient.put(`${BASE_URL}/calendar/events/${id}`, params);\n    this.updateAttendeeInvitation = (eventId, attendeeId, state) => RecruitApiClient.put(`${BASE_URL}/calendar/events/${eventId}/attendees/${attendeeId}`, {\n      attendee: { state }\n    });\n    this.getEmailTemplates = () => RecruitApiClient.get(`${BASE_URL}/email_templates?group_templates=true`);\n    this.getEmailTemplate = (templateId) => RecruitApiClient.get(`${BASE_URL}/email_templates/${templateId}`);\n    this.getSmsTemplates = () => RecruitApiClient.get(`${BASE_URL}/sms_templates`);\n    this.saveSmsTemplate = (smsTemplateName, smsMessage) => RecruitApiClient.post(`${BASE_URL}/sms_templates`, {\n      sms_template: {\n        title: smsTemplateName,\n        body: smsMessage\n      }\n    });\n    this.smsCandidates = (eventId, applicationIds, content) => RecruitApiClient.post(`calendar/events/${eventId}/sms_candidates`, {\n      applications_ids: applicationIds,\n      content\n    });\n    this.getEventApplicationStatuses = (eventId) => RecruitApiClient.get(\n      `${BASE_URL}/calendar/events/${eventId}/event_application_statuses`\n    );\n    this.changeApplicationStatuses = (eventId, statusId, applicationIds) => RecruitApiClient.post(\n      `${BASE_URL}/calendar/events/${eventId}/change_status`,\n      {\n        application_ids: applicationIds,\n        change_status: statusId\n      }\n    );\n    this.sendEmailBatchesToCandidates = (eventId, data) => RecruitApiClient.post(`${BASE_URL}/calendar/events/${eventId}/email_candidates`, data);\n  }\n  /**\n   * @deprecated remove later\n   */\n  // inviteToTimeslot = (eventTypeId, jobId, userId, invitation: {}) =>\n  //   this.post('invitations', {\n  //     user_id: userId,\n  //     event_type_id: eventTypeId,\n  //     job_id: jobId,\n  //     invitation\n  //   });\n  // addToEvent = (eventId, jobId, applicationId) =>\n  //   this.post(`events/${eventId}/attendees`, {\n  //     job_id: jobId,\n  //     application_id: applicationId\n  //   });\n  // getJobApplications = (id: number) => this.get(`jobs/${id}/applications`);\n  // getRecrutRecruitersById = (id: number) => this.custom_get(`users?event_batch_id=${id}`);\n  // getEventBatchesById = (id: string) => this.get(`event_batches/${id}`);\n  // getEvent = (id: string) => this.get(`events/${id}`);\n  // deleteEventBatch = (id: number) => this.delete(`event_batches/${id}`);\n  // updateEventsBatches = (event, id) => this.put(`event_batches/${id}`, event);\n  // getApplications = (id: string, body: {}) => this.get(`event_batches/${id}/applications`, body);\n  // getStatuses = (id: string) => this.get(`event_batches/${id}/statuses`);\n  // getAvailabilities = () => this.get('availabilities');\n  // saveAvailabilities = (availabilities) => this.put('availabilities', availabilities);\n  // createInvitations = (id: string, invitation: {}) =>\n  //   this.post(`event_batches/${id}/invitations`, invitation);\n}\nexport default new Api();\n","\"use strict\";\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nconst MAIN_COLOR = \"#15C7C0\";\nconst ALTERNATE_COLOR = \"rgba(21, 198, 193, 0.07)\";\nconst BAD_COLOR = \"#FF2121\";\nconst ALTERNATE_BAD_COLOR = \"rgba(252, 151, 151, 0.07)\";\nconst TEAL_LIGHT = \"#EDF2F5\";\nexport const classes = {\n  contentHeader: {\n    color: \"#004665\",\n    marginBottom: \"1.25rem\"\n  },\n  modalContent: {\n    display: \"flex\",\n    margin: \"auto\",\n    \"& .DayPicker-Weekday abbr\": {\n      fontSize: \"0.85rem\",\n      color: \"#939393\",\n      textDecoration: \"none\"\n    },\n    \"& .DayPicker-Caption\": {\n      color: \"#004665\",\n      fontWeight: \"600\",\n      marginBottom: \"15px\",\n      fontSize: \"17px\"\n    },\n    \"& .DayPicker-Day\": {\n      borderRadius: 100,\n      padding: \"0\",\n      border: \"0\",\n      width: \"40px\",\n      height: \"40px\"\n    },\n    \"& .DayPicker-Day--event\": {\n      backgroundColor: \"#EEFBFB\"\n    },\n    \"& .DayPicker-Day--highlighted\": {\n      backgroundColor: \"#EEFBFB\",\n      color: \"#15C7C0\"\n    },\n    \"& .DayPicker-Day--today\": {\n      color: \"black\"\n    },\n    \"& .DayPicker-Day--selected\": {\n      backgroundColor: \"#15C7C0 !important\",\n      color: \"white !important\"\n    },\n    \"& .DayPicker-wrapper\": {\n      paddingTop: \"0.5rem\",\n      fontSize: \"0.85rem\",\n      paddingBottom: \"0\",\n      \"& .DayPicker-NavButton\": {\n        width: \"1rem\",\n        height: \"1rem\"\n      },\n      \"& .DayPicker-Day--disabled\": {\n        backgroundColor: \"white\",\n        pointerEvents: \"none\"\n      }\n    }\n  },\n  paper: {\n    display: \"inline-grid\",\n    padding: \"6px 12px\",\n    width: \"100%\",\n    boxShadow: \"none\",\n    \"& p\": {\n      fontSize: \"0.85rem\",\n      color: \"#6c757d\"\n    },\n    \"& .MuiNativeSelect-select:focus\": {\n      borderRadius: \"6px\"\n    }\n  },\n  progressHeader: {\n    fontSize: \"24px\",\n    color: \"#666666\",\n    paddingBottom: 4,\n    fontWeight: \"bold\"\n  },\n  contentWrapper: {\n    position: \"relative\",\n    fontSize: \"0.8rem\",\n    padding: \"4px 10px 4px 14px\"\n  },\n  gridWrapper: {\n    flexGrow: 1,\n    maxWidth: \"60rem\"\n  },\n  datePickerHeaderWrapper: {\n    display: \"flex\",\n    alignItems: \"center\",\n    \"& div\": {\n      fontSize: \"0.8rem\"\n    },\n    \"& .MuiFormControlLabel-root\": {\n      alignItems: \"baseline\",\n      maxWidth: \"initial\",\n      minWidth: \"inherit\",\n      \"& .MuiFormControlLabel-label\": {\n        marginBottom: \"auto\",\n        paddingTop: \"9px\"\n      }\n    }\n  },\n  datePicker: {\n    fontFamily: \"Source Sans Pro\",\n    width: \"100%\",\n    color: \"#666666\",\n    borderRadius: \"6px\",\n    paddingRight: \"20px\",\n    \"& input\": {\n      padding: \"3px 16px 9px 16px\",\n      fontFamily: \"Source Sans Pro\"\n    },\n    \"& fieldset\": {\n      borderColor: \"#DDDDDD\",\n      \"& legend\": {\n        display: \"none\"\n      }\n    },\n    \"& button\": {\n      padding: \"0px\",\n      transform: \"translate(-2px, -1.5px)\",\n      \"&:hover\": {\n        background: \"transparent\",\n        \"& svg\": {\n          color: \"#888888\"\n        }\n      }\n    },\n    \"& .MuiInputAdornment-root\": {\n      marginLeft: \"0px\"\n    },\n    \"& svg\": {\n      color: \"#AAAAAA\"\n    }\n  },\n  buttonBackSuccess: {\n    backgroundColor: ALTERNATE_COLOR,\n    color: MAIN_COLOR,\n    borderColor: ALTERNATE_COLOR,\n    fontSize: 16,\n    marginRight: \"1rem\",\n    padding: \"14px 22px\",\n    fontWeight: \"700\",\n    borderRadius: 6,\n    userSelect: \"none\",\n    \"&:hover\": {\n      backgroundColor: ALTERNATE_COLOR,\n      borderColor: ALTERNATE_COLOR,\n      cursor: \"pointer\"\n    },\n    \"&:focus\": {\n      borderColor: MAIN_COLOR\n    }\n  },\n  buttonBackFail: {\n    backgroundColor: ALTERNATE_BAD_COLOR,\n    color: BAD_COLOR,\n    borderColor: ALTERNATE_BAD_COLOR,\n    fontSize: \"0.8rem\",\n    marginRight: \"1rem\",\n    padding: \"8px 12px\",\n    fontWeight: \"700\",\n    \"&:hover\": {\n      backgroundColor: ALTERNATE_BAD_COLOR,\n      borderColor: ALTERNATE_BAD_COLOR\n    },\n    \"&:focus\": {\n      borderColor: BAD_COLOR\n    }\n  },\n  repeatDayPopoverWrapper: {\n    \"& .MuiPopover-paper\": {\n      boxShadow: \"0px 2px 14px rgba(48, 90, 111, 0.16)\",\n      padding: \"20px 24px\",\n      maxHeight: 380,\n      overflowY: \"scroll\",\n      minWidth: 230\n    }\n  },\n  checkBoxGroupWrapper: {\n    \"& span\": {\n      fontSize: \"0.8rem\"\n    },\n    \"& .MuiSvgIcon-root\": {\n      fontSize: \"1.25rem\"\n    },\n    minWidth: \"14rem\",\n    maxWidth: \"14rem\"\n  },\n  checkboxLabel: {\n    \"& .MuiTypography-root\": {\n      fontFamily: \"Source Sans Pro\"\n    },\n    paddingLeft: \"4px\",\n    marginTop: 2\n  },\n  popoverWrapper: {\n    \"& .MuiPopover-paper\": {\n      boxShadow: \"none\",\n      border: \"#e1e1e1 1.7px solid\",\n      padding: \"10px\"\n    }\n  },\n  inputFullWidth: {\n    \"& > div\": { width: \"100%\" }\n  },\n  jobCheckBox: {\n    flexDirection: \"row\",\n    display: \"flex\",\n    alignItems: \"center\",\n    \"& > span\": {\n      padding: 7\n    },\n    \"& > p\": {\n      marginTop: 0\n    }\n  },\n  availabilitySummary: {\n    height: \"9rem\",\n    border: \"#e1e1e1 1.7px solid\",\n    borderRadius: \"6px\",\n    backgroundColor: \"#FAFAFA\",\n    padding: \"20px 15px\",\n    \"& h1\": {\n      color: \"black\",\n      marginTop: \"0.15rem\"\n    }\n  },\n  conflictsContentWrapper: {\n    \"& contentSubheader\": {\n      color: \"#6c757d\",\n      fontSize: \"0.8rem\",\n      margin: \"0.5rem 0 1.5rem 0\"\n    },\n    \"& p\": {\n      color: \"#6c757d\",\n      fontSize: \"0.8rem\",\n      marginBottom: \"0.25rem\"\n    },\n    \"& h2\": {\n      marginBottom: \"0rem\",\n      marginTop: \"0.2rem\"\n    },\n    \"& h1\": {\n      marginBottom: \"0rem\"\n    }\n  },\n  eventSummaryGrid: {\n    padding: \"2px 10px !important\",\n    marginTop: \"1rem\",\n    \"& .MuiPaper-root\": {\n      height: \"2rem\",\n      padding: \"0 9px\"\n    }\n  },\n  eventSummaryGridWrapper: {\n    margin: \"2px 10px !important\",\n    border: `${MAIN_COLOR} 2px solid`,\n    borderRadius: \"6px\",\n    backgroundColor: \"#FAFAFA\",\n    padding: \"1rem\",\n    \"& p\": {\n      fontSize: \"0.85rem\"\n    },\n    \"& h2\": {\n      color: MAIN_COLOR\n    }\n  },\n  loadingStepsWrapper: {\n    width: \"30rem\",\n    justifyContent: \"center\",\n    margin: \"3rem\"\n  },\n  autocompleteListboxStyle: {\n    fontFamily: \"Source Sans Pro\",\n    color: \"#333333\",\n    maxHeight: \"200px\"\n  },\n  errorMessage: {\n    fontFamily: \"inherit\",\n    color: theme.palette.error.main,\n    marginLeft: \"6px\"\n  },\n  avatar: {\n    color: \"#084D6D\",\n    fontSize: \"12px\",\n    fontWeight: \"bold\",\n    width: 30,\n    height: 30,\n    background: TEAL_LIGHT\n  },\n  editIcon: { cursor: \"pointer\", color: \"#666666\" },\n  autocompleteTextfield: {\n    paddingRight: 1,\n    \"& .MuiFormHelperText-root\": {\n      margin: \"0px 8px\",\n      fontSize: \"12px\",\n      fontFamily: \"inherit\",\n      color: theme.palette.error.main\n    }\n  },\n  multipleDatesIndicator: {\n    marginLeft: 2,\n    padding: \"0px 8px\",\n    backgroundColor: TEAL_LIGHT,\n    borderRadius: \"16px\",\n    color: \"#084D6D\",\n    fontWeight: \"bold\",\n    cursor: \"pointer\"\n  },\n  noCandidatesAssigned: {\n    height: \"100%\",\n    justifyContent: \"center\",\n    color: \"#939393\",\n    fontSize: \"14px\"\n  }\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { classes as sharedClasses } from \"../styles\";\nexport const classes = __spreadProps(__spreadValues({}, sharedClasses), {\n  buttonProgress: {\n    position: \"absolute\",\n    top: \"50%\",\n    left: \"50%\",\n    marginTop: -12,\n    marginLeft: -12\n  },\n  editTabsContainer: {\n    flexGrow: 1,\n    display: \"flex\",\n    borderColor: \"none\"\n  },\n  modalWrapper: {\n    \"& .MuiPaper-root\": {\n      maxWidth: \"100%\"\n    }\n  },\n  modalHeaderRight: {\n    display: \"flex\",\n    float: \"right\"\n  },\n  modalActionButtons: {\n    display: \"flex\",\n    \"& span\": {\n      width: \"1rem\",\n      borderRight: \"1px solid #EDEDED\",\n      paddingLeft: \"10px\"\n    },\n    \"& svg\": {\n      width: \"1.5rem\",\n      height: \"1.5rem\",\n      fontSize: \"1.75rem\",\n      marginLeft: \"px\",\n      \"&:hover\": {\n        cursor: \"pointer\"\n      }\n    }\n  },\n  checkBoxes: {\n    color: `#15C7C0 !important`\n  },\n  checkBoxOff: {\n    color: \"#6c757d\"\n  }\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { classes as sharedClasses } from \"../styles\";\nexport const classes = __spreadProps(__spreadValues({}, sharedClasses), {\n  dialog: {\n    \"& .MuiPaper-root\": {\n      width: \"725px\"\n    }\n  },\n  modalContainer: {\n    padding: 5,\n    width: \"725px\"\n  },\n  tabsContainer: {\n    flexDirection: \"row\",\n    borderBottom: \"1px solid #EDEDED\",\n    marginBottom: \"20px\",\n    columnGap: 1\n  },\n  tab: {\n    margin: \"0px 8px\",\n    cursor: \"pointer\",\n    paddingBottom: 0.5\n  },\n  selectedTab: {\n    borderBottom: \"1px solid #5BC4C0\",\n    color: \"#084D6D\",\n    fontWeight: \"bold\"\n  },\n  checkbox: {\n    color: \"#DDDDDD\",\n    \"&.Mui-checked\": {\n      color: \"#5BC4BF\"\n    },\n    padding: \"unset\"\n  },\n  candidateList: {\n    flexGrow: 1,\n    border: \"1px solid #DDDDDD\",\n    borderRadius: \"6px\",\n    padding: 2,\n    fontWeight: 600,\n    rowGap: 0.5\n  },\n  acceptingInviteContainer: {\n    boxShadow: \"0px 12px 25px 0px #33333340\",\n    padding: \"20px 40px\",\n    flexDirection: \"row\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\"\n  },\n  acceptingInviteButtonGroup: {\n    border: \"2px solid #7CD0CC\",\n    borderRadius: \"6px\",\n    button: {\n      color: \"#7CD0CC\",\n      textTransform: \"capitalize\",\n      padding: \"8px 24px\",\n      fontWeight: \"bold\",\n      \"&:focus\": {\n        outline: \"none\"\n      }\n    }\n  },\n  selectedCandidatesIndicatorContainer: {\n    position: \"absolute\",\n    width: \"500px\",\n    left: \"calc(50% - 250px)\",\n    bottom: \"5%\",\n    background: \"#F2F2F2\",\n    borderRadius: \"6px\",\n    padding: \"12px 48px\",\n    flexDirection: \"row\",\n    alignItems: \"center\",\n    justifyContent: \"space-between\",\n    fontSize: \"18px\",\n    fontWeight: 600,\n    color: \"#666666\"\n  },\n  clearSelectionButton: {\n    fontSize: \"16px\",\n    color: \"#084D6D\",\n    fontWeight: \"700\",\n    textDecoration: \"underline\",\n    borderRadius: \"10px\",\n    padding: \"4px 12px\",\n    \"&:hover\": {\n      background: \"rgba(171, 205, 239, 0.3)\"\n    }\n  },\n  noCandidatesContainer: {\n    color: \"#DDDDDD\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    flexGrow: 0.5,\n    rowGap: 4\n  },\n  longEventTitle: {\n    paddingTop: \"unset\",\n    paddingBottom: 3,\n    width: \"90%\",\n    overflow: \"hidden\",\n    whiteSpace: \"nowrap\",\n    textOverflow: \"ellipsis\"\n  },\n  modalDeleteAndCloseContainer: {\n    flexDirection: \"row\",\n    position: \"absolute\",\n    top: \"20px\",\n    right: \"20px\",\n    columnGap: 2\n  },\n  candidatesListContainer: {\n    rowGap: 2,\n    overflow: \"auto\",\n    \"&::-webkit-scrollbar\": {\n      display: \"none\"\n    }\n  },\n  actionModalContent: {\n    flexGrow: 1,\n    rowGap: 3,\n    overflow: \"auto\",\n    \"&::-webkit-scrollbar\": {\n      display: \"none\"\n    },\n    marginTop: 2\n  },\n  actionModalTemplateTitle: {\n    width: \"290px\",\n    \"& .MuiInputBase-input\": { margin: \"unset\", marginTop: 1 }\n  },\n  link: {\n    color: \"unset !important\",\n    display: \"flex\",\n    flexDirection: \"row\"\n  }\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nexport const InitialScoutCalendarState = {\n  apiKey: \"\",\n  snackbar: {\n    message: \"\",\n    state: \"success\"\n  },\n  showCreateEventModal: false,\n  showViewEventModal: false,\n  createEventObject: {\n    step: 1,\n    eventType: null,\n    maxCandidates: \"1\",\n    recruiters: [],\n    sessions: \"1\",\n    breaks: \"0\",\n    duration: \"15\",\n    eventName: \"\",\n    eventDescription: \"\",\n    eventDate: /* @__PURE__ */ new Date(),\n    eventId: 0,\n    candidates: [],\n    dates: [],\n    owner: \"\"\n  },\n  errorsMessage: {\n    eventType: \"\",\n    duration: \"\",\n    maxCandidates: \"\",\n    sessions: \"\",\n    recruiters: \"\",\n    eventName: \"\",\n    time: \"\",\n    date: \"\",\n    dates: \"\"\n  },\n  createMultipleEvents: false,\n  weekStart: /* @__PURE__ */ new Date(),\n  permissions: null\n};\nexport const ScoutCalendarReducer = (state, action) => {\n  switch (action.type) {\n    case \"SET_APIKEY\":\n      return __spreadProps(__spreadValues({}, state), { apiKey: action.payload });\n    case \"SET_SNACKBAR\":\n      return __spreadProps(__spreadValues({}, state), { snackbar: action.payload });\n    case \"SET_SHOW_CREATE_EVENT_MODAL\":\n      return __spreadProps(__spreadValues({}, state), { showCreateEventModal: action.payload });\n    case \"SET_SHOW_VIEW_EVENT_MODAL\":\n      return __spreadProps(__spreadValues({}, state), { showViewEventModal: action.payload });\n    case \"SET_CREATE_EVENT_OBJECT\":\n      return __spreadProps(__spreadValues({}, state), { createEventObject: action.payload });\n    case \"SET_ERROR_MESSAGE\":\n      return __spreadProps(__spreadValues({}, state), { errorsMessage: action.payload });\n    case \"CREATE_MULTIPLE_EVENTS\":\n      return __spreadProps(__spreadValues({}, state), { createMultipleEvents: action.payload });\n    case \"SET_WEEK_START\":\n      return __spreadProps(__spreadValues({}, state), { weekStart: action.payload });\n    case \"SET_PERMISSIONS\":\n      return __spreadProps(__spreadValues({}, state), { permissions: action.payload });\n    case \"RESET_STATE\":\n      return __spreadProps(__spreadValues({}, InitialScoutCalendarState), {\n        snackbar: state.snackbar,\n        weekStart: state.weekStart,\n        apiKey: state.apiKey,\n        permissions: state.permissions\n      });\n  }\n};\n","\"use strict\";\nimport { darken } from \"@material-ui/core\";\nimport { theme } from \"../ThemeContext/ThemeObject\";\nexport const classes = {\n  itemContainer: {\n    padding: \"30px\",\n    borderBottom: \"1px solid #EAEEF0\",\n    \"& h3\": {\n      fontSize: 20,\n      lineHeight: \"20px\",\n      color: theme.palette.primary.dark,\n      fontWeight: 600,\n      textTransform: \"capitalize\",\n      marginBottom: \"10px\"\n    },\n    \"& > span\": {\n      color: \"#777777\",\n      fontSize: 15,\n      marginBottom: \"10px\",\n      display: \"block\",\n      textTransform: \"capitalize\"\n    },\n    \"&:hover\": {\n      background: \"#F3F6F7\",\n      cursor: \"pointer\"\n    }\n  },\n  itemDetails: {\n    padding: \"4px 0\",\n    color: \"#777777\",\n    display: \"flex\",\n    alignItems: \"center\",\n    \"& svg\": {\n      marginRight: \"6px\"\n    }\n  },\n  closeIcon: {\n    position: \"absolute\",\n    top: \"20px\",\n    right: \"20px\",\n    color: \"#DDDDDD\",\n    \"&:hover\": {\n      cursor: \"pointer\"\n    }\n  },\n  addNewEventsPopover: {\n    padding: 2,\n    rowGap: 1,\n    \"& div\": {\n      fontFamily: \"Source Sans Pro\",\n      fontSize: \"14px\",\n      fontWeight: \"bold\",\n      color: \"#666666\",\n      cursor: \"pointer\",\n      \"&:hover\": {\n        color: theme.palette.primary.main\n      }\n    }\n  },\n  calendarArrows: {\n    color: \"#BFBFBF\",\n    fontSize: \"27px\",\n    opacity: \"0.7\",\n    \"&:hover\": {\n      cursor: \"pointer\",\n      opacity: \"0.4\"\n    }\n  },\n  calendarHeader: {\n    fontSize: \"22px\",\n    fontWeight: \"bold\",\n    color: \"#084D6D\",\n    cursor: \"pointer\"\n  },\n  viewAndSettingsButton: {\n    minWidth: \"unset\",\n    border: \"1px solid #EAEEF0\",\n    padding: \"6px 12px\"\n  },\n  viewAndSettingsContainer: {\n    width: \"150px\",\n    flexDirection: \"row\",\n    justifyContent: \"flex-end\",\n    columnGap: 1\n  },\n  weekPeriodContainer: {\n    flexDirection: \"row\",\n    justifyContent: \"center\",\n    columnGap: 2,\n    paddingBottom: 3,\n    alignItems: \"center\"\n  },\n  eventCreatedModalContainer: {\n    padding: 3,\n    width: \"428px\",\n    alignItems: \"center\",\n    rowGap: 2,\n    \"& .MuiTypography-root\": { fontFamily: \"Source Sans Pro\" }\n  },\n  eventCreatedModalTitle: {\n    fontSize: \"22px\",\n    fontWeight: \"bold\",\n    color: \"#666666\"\n  },\n  modalTitle: {\n    fontSize: \"25px\",\n    color: \"#084D6D\",\n    fontWeight: \"bold\",\n    paddingBottom: 6,\n    paddingTop: 1,\n    lineHeight: \"normal\"\n  },\n  listViewCircleIcon: {\n    padding: \"5px\",\n    color: \"#084D6D\",\n    background: \"#D6DEE2\",\n    borderRadius: \"50%\",\n    fontSize: \"1.3rem\"\n  },\n  listViewSectionTitle: {\n    color: \"#939393\",\n    fontSize: \"16px\",\n    paddingBottom: 0.5\n  },\n  listViewInfoTag: {\n    background: \"#F3F3F3\",\n    padding: \"4px 12px\",\n    borderRadius: \"1rem\",\n    flexDirection: \"row\",\n    color: \"#666666\",\n    columnGap: 0.5,\n    fontSize: \"12px\"\n  },\n  listViewNoCandidatesAssigned: {\n    height: \"100%\",\n    justifyContent: \"center\",\n    color: \"#939393\",\n    fontSize: \"14px\"\n  },\n  eventSessionsContainer: {\n    flexDirection: \"row\",\n    flexWrap: \"wrap\",\n    justifyContent: \"center\",\n    columnGap: 2\n  },\n  listViewEventTime: {\n    fontSize: \"16px\",\n    fontWeight: \"bold\",\n    color: \"#666666\",\n    cursor: \"pointer\"\n  },\n  listViewEventTitle: {\n    fontSize: \"20px\",\n    fontWeight: \"bold\",\n    color: \"#333333\",\n    cursor: \"pointer\",\n    \"&:hover\": {\n      color: darken(\"#333\", 1)\n    }\n  },\n  dateCalendar: {\n    \".Mui-selected\": {\n      backgroundColor: \"#5BC4C0 !important\"\n    },\n    height: \"300px\"\n  },\n  timezoneInfo: {\n    flexDirection: \"row\",\n    padding: \"8px 16px\",\n    color: \"#666666\",\n    border: `1px solid ${theme.palette.action.main}`,\n    borderRadius: \"6px\",\n    marginBottom: 3,\n    columnGap: 0.75,\n    svg: { color: theme.palette.action.main, fontSize: \"1rem\" }\n  }\n};\n","\"use strict\";\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nimport { useState } from \"react\";\nexport const useInitSeekAd = () => {\n  const [jsonResponse, setJsonResponse] = useState({});\n  const mutate = (jobId, seekAccountId) => __async(void 0, null, function* () {\n    const param = seekAccountId ? { seek_account_id: seekAccountId } : {};\n    try {\n      const response = yield fetch(`/api/v4/seek/jobs/${jobId}/job_ads/init_seek_ad`, {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\"\n        },\n        body: JSON.stringify(param)\n      });\n      const json = yield response.json();\n      setJsonResponse(json);\n    } catch (exception) {\n      console.log(exception);\n    }\n  });\n  const reset = () => {\n    setJsonResponse({});\n  };\n  return { mutate, jsonResponse, reset };\n};\n","\"use strict\";\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nimport { useState, useEffect } from \"react\";\nexport const usePreviewSeekAd = (jobAdId) => {\n  const [previewUrl, setPreviewUrl] = useState(\"\");\n  useEffect(() => {\n    const getPreviewData = () => __async(void 0, null, function* () {\n      try {\n        const response = yield fetch(`/api/v4/seek/job_ads/${jobAdId}/preview`, {\n          method: \"POST\"\n        });\n        const data = yield response.json();\n        setPreviewUrl(data.url);\n      } catch (e) {\n        console.error(e);\n      }\n    });\n    getPreviewData();\n  }, [jobAdId]);\n  return { previewUrl };\n};\n","\"use strict\";\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nimport { useState, useEffect } from \"react\";\nexport const useSeekAccounts = ({ jobId }) => {\n  const [seekAccounts, setSeekAccounts] = useState([]);\n  useEffect(() => {\n    const getSeekAccounts = () => __async(void 0, null, function* () {\n      try {\n        const response = yield fetch(`/api/v4/seek/jobs/${jobId}/accounts`);\n        const { accounts } = yield response.json();\n        setSeekAccounts(accounts);\n      } catch (error) {\n        console.log(error);\n      }\n    });\n    getSeekAccounts();\n  }, [jobId]);\n  return { seekAccounts, setSeekAccounts };\n};\n","\"use strict\";\nimport { useSeekGlobalData } from \"./useSeekGlobalData\";\nexport const useSeekCurrencies = () => {\n  const { processedData, setProcessedData } = useSeekGlobalData({\n    key: \"currencies\",\n    endpoint: \"/api/v4/seek/currencies\"\n  });\n  return { currencies: processedData, setCurrencies: setProcessedData };\n};\n","\"use strict\";\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nimport { useState, useEffect } from \"react\";\nimport axios from \"axios\";\nexport const useSeekGlobalData = ({ key, endpoint }) => {\n  const [processedData, setProcessedData] = useState([]);\n  useEffect(() => {\n    const getCurrencies = () => __async(void 0, null, function* () {\n      const dataStr = localStorage.getItem(key);\n      if (dataStr) {\n        const dataFromLocalStorage = JSON.parse(dataStr);\n        setProcessedData(dataFromLocalStorage);\n        return;\n      }\n      try {\n        const { data } = yield axios.get(endpoint);\n        const dataFromApi = data.data[key];\n        setProcessedData(dataFromApi);\n        localStorage.setItem(key, JSON.stringify(dataFromApi));\n      } catch (error) {\n        console.log(error);\n      }\n    });\n    getCurrencies();\n  }, [endpoint, key]);\n  return { processedData, setProcessedData };\n};\n","\"use strict\";\nimport { useSeekGlobalData } from \"./useSeekGlobalData\";\nexport const useSeekPayTypes = () => {\n  const { processedData, setProcessedData } = useSeekGlobalData({\n    key: \"payTypes\",\n    endpoint: \"/api/v4/seek/pay_types\"\n  });\n  return { payTypes: processedData, setPayTypes: setProcessedData };\n};\n","\"use strict\";\nimport { theme } from \"./ThemeContext/ThemeObject\";\nexport const classes = {\n  tableHeader: {\n    fontFamily: \"Source Sans Pro\",\n    fontWeight: \"bold\",\n    color: theme.palette.primary.main,\n    textTransform: \"capitalize\",\n    paddingLeft: 2,\n    paddingBottom: 3\n  },\n  tableStyling: {\n    \"& .MuiTableCell-root\": {\n      fontFamily: \"Source Sans Pro\",\n      borderInline: \"none\",\n      borderTop: \"none\"\n    },\n    \"& .MuiTable-root\": {\n      borderCollapse: \"collapse\"\n    }\n  }\n};\n","\"use strict\";\nimport {\n  BLACK,\n  DARK_RED,\n  GREEN,\n  LIGHT_GREEN,\n  LIGHT_RED,\n  RED,\n  SCOUT_BLUE,\n  SCOUT_BLUE_DARK,\n  SCOUT_SECONDARY_BLUE,\n  SCOUT_SECONDARY_LIGHT_BLUE,\n  SCOUT_TEAL,\n  WHITE,\n  LIGHT_BLUE,\n  PURPLE,\n  PINK,\n  MEDIUM_RED,\n  DARK_BLUE,\n  YELLOW,\n  OPAQUE_GREEN,\n  OPAQUE_BLUE,\n  OPAQUE_PINK,\n  OPAQUE_RED,\n  OPAQUE_DARK_BLUE,\n  OPAQUE_YELLOW,\n  OPAQUE_PURPLE,\n  GREY,\n  DARK_GREY\n} from \"./constants\";\nexport const theme = {\n  spacing: (factor) => `${8 * factor}px`,\n  palette: {\n    primary: {\n      main: SCOUT_BLUE,\n      dark: SCOUT_BLUE_DARK\n    },\n    secondary: {\n      main: SCOUT_SECONDARY_BLUE,\n      light: SCOUT_SECONDARY_LIGHT_BLUE,\n      medium: LIGHT_BLUE,\n      purple: PURPLE,\n      pink: PINK,\n      mediumRed: MEDIUM_RED,\n      darkBlue: DARK_BLUE,\n      yellow: YELLOW\n    },\n    success: {\n      main: GREEN,\n      light: LIGHT_GREEN\n    },\n    opaque: {\n      green: OPAQUE_GREEN,\n      blue: OPAQUE_BLUE,\n      pink: OPAQUE_PINK,\n      red: OPAQUE_RED,\n      darkBlue: OPAQUE_DARK_BLUE,\n      yellow: OPAQUE_YELLOW,\n      purple: OPAQUE_PURPLE\n    },\n    action: {\n      main: SCOUT_TEAL,\n      light: LIGHT_GREEN\n    },\n    error: {\n      main: RED,\n      light: LIGHT_RED,\n      dark: DARK_RED\n    },\n    common: {\n      white: WHITE,\n      black: BLACK,\n      grey: GREY,\n      darkGrey: DARK_GREY\n    }\n  },\n  typography: {\n    fontFamily: \"Source Sans Pro\"\n  },\n  props: {\n    MuiButton: {\n      variant: \"contained\",\n      color: \"primary\",\n      disableElevation: true\n    },\n    MuiSelect: {\n      variant: \"standard\"\n    },\n    MuiFormControl: {\n      variant: \"standard\"\n    }\n  },\n  overrides: {\n    MuiAutocomplete: {\n      inputRoot: {\n        flexGrow: 1,\n        marginRight: 12,\n        background: \"#FAFAFA\",\n        border: \"1px solid #EAEEF0\",\n        borderRadius: 6,\n        justifyContent: \"center\",\n        \"& svg\": {\n          fill: \"#939393\"\n        },\n        \"& fieldset\": {\n          border: 0\n        },\n        \"& input\": {\n          padding: \"14px 8px !important\"\n        },\n        \"&:hover\": {\n          border: \"1px solid #dde2e5 !important\"\n        },\n        \"&.Mui-disabled\": {\n          opacity: 0.7,\n          pointerEvents: \"none\",\n          color: \"inherit\"\n        }\n      },\n      paper: {\n        boxShadow: \"0px 2px 14px 0px rgba(48,90,111,0.16);\"\n      }\n    },\n    MuiSelect: {\n      root: {\n        height: \"100%\",\n        padding: 0,\n        display: \"flex\",\n        alignItems: \"center\",\n        color: \"#333333\",\n        paddingLeft: 20,\n        \"&:focus\": {\n          backgroundColor: \"#FFF !important\"\n        }\n      },\n      selectMenu: {\n        height: \"100%\"\n      }\n    },\n    MuiPopover: {\n      paper: {\n        boxShadow: \"0px 2px 14px 0px rgb(48 90 111 / 16%)\"\n      }\n    },\n    MuiOutlinedInput: {\n      input: {\n        height: \"2.75rem\",\n        padding: \"0px 15px\",\n        fontSize: \"0.85rem\"\n      },\n      root: {\n        \"& fieldset\": {\n          borderColor: \"#DDD !important\"\n        },\n        \"&:hover fieldset\": {\n          borderColor: \"#bdbdbd !important\"\n        },\n        \"&.Mui-focused fieldset\": {\n          borderColor: `${SCOUT_BLUE} !important`\n        },\n        \"&.Mui-error fieldset\": {\n          borderColor: `${RED} !important`\n        },\n        \"&.Mui-disabled\": {\n          opacity: 0.7,\n          pointerEvents: \"none\"\n        }\n      }\n    },\n    MuiTextField: {\n      root: {\n        marginTop: \"0.5rem\"\n      }\n    },\n    MuiAccordionSummary: {\n      root: {\n        backgroundColor: SCOUT_BLUE,\n        color: WHITE,\n        maxHeight: 40,\n        minHeight: \"auto\",\n        \"&$expanded\": {\n          minHeight: \"auto\"\n        }\n      },\n      content: {\n        \"&$expanded\": {\n          margin: \"inherit\"\n        }\n      },\n      expandIcon: {\n        color: WHITE\n      }\n    },\n    MuiButton: {\n      root: {\n        padding: \"10px 20px !important\",\n        \"&:focus, &:hover\": {\n          outline: \"0 !important\"\n        }\n      },\n      containedSecondary: {\n        color: \"#FFF\"\n      },\n      outlinedSecondary: {\n        color: SCOUT_SECONDARY_BLUE,\n        backgroundColor: SCOUT_SECONDARY_LIGHT_BLUE,\n        outline: 0,\n        border: 0,\n        \"&:focus, &:hover\": {\n          outline: \"0 !important\",\n          border: \"0 !important\"\n        },\n        \"&.Mui-disabled\": {\n          border: 0,\n          background: \"#f9f9f9\",\n          \"& svg\": {\n            fill: \"currentColor\"\n          }\n        },\n        \"& svg\": {\n          fill: SCOUT_SECONDARY_BLUE\n        }\n      }\n    },\n    MuiChip: {\n      deletable: {\n        \"&:focus\": {\n          backgroundColor: \"none\"\n        }\n      }\n    },\n    MuiPickersModal: {\n      dialogRoot: {\n        \"& .MuiDialogActions-root button\": {\n          backgroundColor: `${SCOUT_SECONDARY_BLUE} !important`,\n          \"&:hover\": {\n            backgroundColor: \"rgb(63, 137, 133) !important\"\n          }\n        }\n      }\n    },\n    MuiPickersToolbar: {\n      toolbar: {\n        backgroundColor: SCOUT_SECONDARY_LIGHT_BLUE\n      }\n    },\n    MuiPickersTimePickerToolbar: {\n      hourMinuteLabel: {\n        alignItems: \"center\"\n      }\n    },\n    MuiPickersToolbarText: {\n      toolbarTxt: {\n        color: `${SCOUT_SECONDARY_BLUE} !important`\n      },\n      toolbarBtnSelected: {\n        fontWeight: \"900\"\n      }\n    },\n    MuiPickersBasePicker: {\n      container: {\n        \"& button\": {\n          paddingTop: \"2px !important\",\n          paddingBottom: \"2px !important\"\n        }\n      }\n    },\n    MuiPickersClock: {\n      clock: {\n        backgroundColor: \"#FAFAFA\"\n      }\n    },\n    MuiPickersClockNumber: {\n      clockNumber: {\n        color: SCOUT_BLUE\n      }\n    }\n  }\n};\n","\"use strict\";\nexport const WHITE = \"#FFFFFF\";\nexport const BLACK = \"#000000\";\nexport const GREY = \"#939393\";\nexport const DARK_GREY = \"#666666\";\nexport const SCOUT_BLUE = \"#084d6d\";\nexport const SCOUT_BLUE_DARK = \"#05354c\";\nexport const SCOUT_TEAL = \"#5BC4BF\";\nexport const SCOUT_SECONDARY_BLUE = \"#5BC4BF\";\nexport const SCOUT_SECONDARY_LIGHT_BLUE = \"#EEFBFB\";\nexport const GREEN = \"#76D18F\";\nexport const LIGHT_GREEN = \"#EEFAF1\";\nexport const RED = \"#E37D7A\";\nexport const LIGHT_RED = \"#FEF7F7\";\nexport const DARK_RED = \"#D32F2F\";\nexport const LIGHT_BLUE = \"#6DBEBF\";\nexport const PURPLE = \"#9268F7\";\nexport const PINK = \"#F7A1FF\";\nexport const MEDIUM_RED = \"#EC6E85\";\nexport const DARK_BLUE = \"#7EA7E4\";\nexport const YELLOW = \"#E6A052\";\nexport const OPAQUE_GREEN = \"#EFFDF3\";\nexport const OPAQUE_BLUE = \"rgba(109, 190, 191, 0.12)\";\nexport const OPAQUE_PINK = \"rgba(247, 161, 255, 0.12)\";\nexport const OPAQUE_RED = \"rgba(252, 239, 239, 1)\";\nexport const OPAQUE_DARK_BLUE = \"rgba(252, 239, 239, 1)\";\nexport const OPAQUE_PURPLE = \"#F2EDFE\";\nexport const OPAQUE_YELLOW = \"#FCF4EA\";\n","\"use strict\";\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\nimport RecruitApiClient from \"../RecruitApiClient\";\nconst PERMISSION_EXPIRY_PERIOD = 10 * 60 * 1e3;\nexport const getPermissions = (apiKey) => __async(void 0, null, function* () {\n  try {\n    const permissionCache = localStorage.getItem(\"userPermissions\");\n    const permissionExpiry = localStorage.getItem(\"userPermissionsExpiry\");\n    if (permissionCache && permissionExpiry && parseInt(permissionExpiry) > Date.now()) {\n      return JSON.parse(permissionCache);\n    }\n    localStorage.removeItem(\"userPermissions\");\n    const { res } = yield RecruitApiClient.get(`/api/v4/user_permissions`, null);\n    localStorage.setItem(\"userPermissions\", JSON.stringify(res));\n    localStorage.setItem(\n      \"userPermissionsExpiry\",\n      (Date.now() + PERMISSION_EXPIRY_PERIOD).toString()\n    );\n    return res;\n  } catch (error) {\n    console.error(error);\n  }\n});\n","var map = {\n\t\"./af\": 25177,\n\t\"./af.js\": 25177,\n\t\"./ar\": 61509,\n\t\"./ar-dz\": 41488,\n\t\"./ar-dz.js\": 41488,\n\t\"./ar-kw\": 58676,\n\t\"./ar-kw.js\": 58676,\n\t\"./ar-ly\": 42353,\n\t\"./ar-ly.js\": 42353,\n\t\"./ar-ma\": 24496,\n\t\"./ar-ma.js\": 24496,\n\t\"./ar-ps\": 6947,\n\t\"./ar-ps.js\": 6947,\n\t\"./ar-sa\": 60301,\n\t\"./ar-sa.js\": 60301,\n\t\"./ar-tn\": 89756,\n\t\"./ar-tn.js\": 89756,\n\t\"./ar.js\": 61509,\n\t\"./az\": 95533,\n\t\"./az.js\": 95533,\n\t\"./be\": 28959,\n\t\"./be.js\": 28959,\n\t\"./bg\": 47777,\n\t\"./bg.js\": 47777,\n\t\"./bm\": 54903,\n\t\"./bm.js\": 54903,\n\t\"./bn\": 61290,\n\t\"./bn-bd\": 17357,\n\t\"./bn-bd.js\": 17357,\n\t\"./bn.js\": 61290,\n\t\"./bo\": 31545,\n\t\"./bo.js\": 31545,\n\t\"./br\": 11470,\n\t\"./br.js\": 11470,\n\t\"./bs\": 44429,\n\t\"./bs.js\": 44429,\n\t\"./ca\": 7306,\n\t\"./ca.js\": 7306,\n\t\"./cs\": 56464,\n\t\"./cs.js\": 56464,\n\t\"./cv\": 73635,\n\t\"./cv.js\": 73635,\n\t\"./cy\": 64226,\n\t\"./cy.js\": 64226,\n\t\"./da\": 93601,\n\t\"./da.js\": 93601,\n\t\"./de\": 77853,\n\t\"./de-at\": 26111,\n\t\"./de-at.js\": 26111,\n\t\"./de-ch\": 54697,\n\t\"./de-ch.js\": 54697,\n\t\"./de.js\": 77853,\n\t\"./dv\": 60708,\n\t\"./dv.js\": 60708,\n\t\"./el\": 54691,\n\t\"./el.js\": 54691,\n\t\"./en-au\": 53872,\n\t\"./en-au.js\": 53872,\n\t\"./en-ca\": 28298,\n\t\"./en-ca.js\": 28298,\n\t\"./en-gb\": 56195,\n\t\"./en-gb.js\": 56195,\n\t\"./en-ie\": 66584,\n\t\"./en-ie.js\": 66584,\n\t\"./en-il\": 65543,\n\t\"./en-il.js\": 65543,\n\t\"./en-in\": 9033,\n\t\"./en-in.js\": 9033,\n\t\"./en-nz\": 79402,\n\t\"./en-nz.js\": 79402,\n\t\"./en-sg\": 43004,\n\t\"./en-sg.js\": 43004,\n\t\"./eo\": 32934,\n\t\"./eo.js\": 32934,\n\t\"./es\": 97650,\n\t\"./es-do\": 20838,\n\t\"./es-do.js\": 20838,\n\t\"./es-mx\": 17730,\n\t\"./es-mx.js\": 17730,\n\t\"./es-us\": 56575,\n\t\"./es-us.js\": 56575,\n\t\"./es.js\": 97650,\n\t\"./et\": 3035,\n\t\"./et.js\": 3035,\n\t\"./eu\": 3508,\n\t\"./eu.js\": 3508,\n\t\"./fa\": 119,\n\t\"./fa.js\": 119,\n\t\"./fi\": 90527,\n\t\"./fi.js\": 90527,\n\t\"./fil\": 95995,\n\t\"./fil.js\": 95995,\n\t\"./fo\": 52477,\n\t\"./fo.js\": 52477,\n\t\"./fr\": 85498,\n\t\"./fr-ca\": 26435,\n\t\"./fr-ca.js\": 26435,\n\t\"./fr-ch\": 37892,\n\t\"./fr-ch.js\": 37892,\n\t\"./fr.js\": 85498,\n\t\"./fy\": 37071,\n\t\"./fy.js\": 37071,\n\t\"./ga\": 41734,\n\t\"./ga.js\": 41734,\n\t\"./gd\": 70217,\n\t\"./gd.js\": 70217,\n\t\"./gl\": 77329,\n\t\"./gl.js\": 77329,\n\t\"./gom-deva\": 32124,\n\t\"./gom-deva.js\": 32124,\n\t\"./gom-latn\": 93383,\n\t\"./gom-latn.js\": 93383,\n\t\"./gu\": 95050,\n\t\"./gu.js\": 95050,\n\t\"./he\": 11713,\n\t\"./he.js\": 11713,\n\t\"./hi\": 43861,\n\t\"./hi.js\": 43861,\n\t\"./hr\": 26308,\n\t\"./hr.js\": 26308,\n\t\"./hu\": 90609,\n\t\"./hu.js\": 90609,\n\t\"./hy-am\": 17160,\n\t\"./hy-am.js\": 17160,\n\t\"./id\": 74063,\n\t\"./id.js\": 74063,\n\t\"./is\": 89374,\n\t\"./is.js\": 89374,\n\t\"./it\": 88383,\n\t\"./it-ch\": 21827,\n\t\"./it-ch.js\": 21827,\n\t\"./it.js\": 88383,\n\t\"./ja\": 23827,\n\t\"./ja.js\": 23827,\n\t\"./jv\": 89722,\n\t\"./jv.js\": 89722,\n\t\"./ka\": 41794,\n\t\"./ka.js\": 41794,\n\t\"./kk\": 27088,\n\t\"./kk.js\": 27088,\n\t\"./km\": 96870,\n\t\"./km.js\": 96870,\n\t\"./kn\": 84451,\n\t\"./kn.js\": 84451,\n\t\"./ko\": 63164,\n\t\"./ko.js\": 63164,\n\t\"./ku\": 98174,\n\t\"./ku-kmr\": 6181,\n\t\"./ku-kmr.js\": 6181,\n\t\"./ku.js\": 98174,\n\t\"./ky\": 78474,\n\t\"./ky.js\": 78474,\n\t\"./lb\": 79680,\n\t\"./lb.js\": 79680,\n\t\"./lo\": 15867,\n\t\"./lo.js\": 15867,\n\t\"./lt\": 45766,\n\t\"./lt.js\": 45766,\n\t\"./lv\": 69532,\n\t\"./lv.js\": 69532,\n\t\"./me\": 58076,\n\t\"./me.js\": 58076,\n\t\"./mi\": 19467,\n\t\"./mi.js\": 19467,\n\t\"./mk\": 30306,\n\t\"./mk.js\": 30306,\n\t\"./ml\": 73739,\n\t\"./ml.js\": 73739,\n\t\"./mn\": 99053,\n\t\"./mn.js\": 99053,\n\t\"./mr\": 86169,\n\t\"./mr.js\": 86169,\n\t\"./ms\": 73386,\n\t\"./ms-my\": 92297,\n\t\"./ms-my.js\": 92297,\n\t\"./ms.js\": 73386,\n\t\"./mt\": 77075,\n\t\"./mt.js\": 77075,\n\t\"./my\": 72264,\n\t\"./my.js\": 72264,\n\t\"./nb\": 22274,\n\t\"./nb.js\": 22274,\n\t\"./ne\": 8235,\n\t\"./ne.js\": 8235,\n\t\"./nl\": 92572,\n\t\"./nl-be\": 43784,\n\t\"./nl-be.js\": 43784,\n\t\"./nl.js\": 92572,\n\t\"./nn\": 54566,\n\t\"./nn.js\": 54566,\n\t\"./oc-lnc\": 69330,\n\t\"./oc-lnc.js\": 69330,\n\t\"./pa-in\": 29849,\n\t\"./pa-in.js\": 29849,\n\t\"./pl\": 94418,\n\t\"./pl.js\": 94418,\n\t\"./pt\": 79834,\n\t\"./pt-br\": 48303,\n\t\"./pt-br.js\": 48303,\n\t\"./pt.js\": 79834,\n\t\"./ro\": 24457,\n\t\"./ro.js\": 24457,\n\t\"./ru\": 82271,\n\t\"./ru.js\": 82271,\n\t\"./sd\": 1221,\n\t\"./sd.js\": 1221,\n\t\"./se\": 33478,\n\t\"./se.js\": 33478,\n\t\"./si\": 17538,\n\t\"./si.js\": 17538,\n\t\"./sk\": 5784,\n\t\"./sk.js\": 5784,\n\t\"./sl\": 46637,\n\t\"./sl.js\": 46637,\n\t\"./sq\": 86794,\n\t\"./sq.js\": 86794,\n\t\"./sr\": 45719,\n\t\"./sr-cyrl\": 3322,\n\t\"./sr-cyrl.js\": 3322,\n\t\"./sr.js\": 45719,\n\t\"./ss\": 56000,\n\t\"./ss.js\": 56000,\n\t\"./sv\": 41011,\n\t\"./sv.js\": 41011,\n\t\"./sw\": 40748,\n\t\"./sw.js\": 40748,\n\t\"./ta\": 11025,\n\t\"./ta.js\": 11025,\n\t\"./te\": 11885,\n\t\"./te.js\": 11885,\n\t\"./tet\": 28861,\n\t\"./tet.js\": 28861,\n\t\"./tg\": 86571,\n\t\"./tg.js\": 86571,\n\t\"./th\": 55802,\n\t\"./th.js\": 55802,\n\t\"./tk\": 59527,\n\t\"./tk.js\": 59527,\n\t\"./tl-ph\": 29231,\n\t\"./tl-ph.js\": 29231,\n\t\"./tlh\": 31052,\n\t\"./tlh.js\": 31052,\n\t\"./tr\": 85096,\n\t\"./tr.js\": 85096,\n\t\"./tzl\": 79846,\n\t\"./tzl.js\": 79846,\n\t\"./tzm\": 81765,\n\t\"./tzm-latn\": 97711,\n\t\"./tzm-latn.js\": 97711,\n\t\"./tzm.js\": 81765,\n\t\"./ug-cn\": 48414,\n\t\"./ug-cn.js\": 48414,\n\t\"./uk\": 16618,\n\t\"./uk.js\": 16618,\n\t\"./ur\": 57777,\n\t\"./ur.js\": 57777,\n\t\"./uz\": 57609,\n\t\"./uz-latn\": 72475,\n\t\"./uz-latn.js\": 72475,\n\t\"./uz.js\": 57609,\n\t\"./vi\": 21135,\n\t\"./vi.js\": 21135,\n\t\"./x-pseudo\": 64051,\n\t\"./x-pseudo.js\": 64051,\n\t\"./yo\": 82218,\n\t\"./yo.js\": 82218,\n\t\"./zh-cn\": 52648,\n\t\"./zh-cn.js\": 52648,\n\t\"./zh-hk\": 1632,\n\t\"./zh-hk.js\": 1632,\n\t\"./zh-mo\": 31541,\n\t\"./zh-mo.js\": 31541,\n\t\"./zh-tw\": 50304,\n\t\"./zh-tw.js\": 50304\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 35358;"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","AIInterviewModal","jobDescription","isLoading","setIsLoading","useState","lastMessageRef","useRef","response","setResponse","generateChatResponse","useCallback","question","input","reactComponentRoot","fetch","method","headers","body","JSON","stringify","description","then","res","json","result","prevResponse","index","content","ResponseMessage","message","error","console","updateUI","felixContainer","number","button","querySelector","responseMessageContainer","nextElementSibling","style","display","innerHTML","dataInputField","document","getElementById","label","labelText","textContent","replace","LoadingMessage","value","handleButtonClick","event","targetElement","target","fieldContainer","closest","inputField","previousElementSibling","match","useEffect","buttons","getElementsByClassName","Array","from","forEach","addEventListener","removeEventListener","current","scrollIntoView","behavior","blink","BlinkingDot","delay","sx","animation","fontSize","classes","systemMessage","DELAYS_IN_SECONDS","key","closeIcon","onClick","preventDefault","parentElement","AIPrompterCloseIcon","responseMessageContent","dangerouslySetInnerHTML","__html","AIStudioModal","aiStudioEnabled","aiSummariesEnabled","aiStudioFrenchEnabled","showPreview","navbarState","jobFlow","setTlpModalOpen","prefillData","setGeneratedContent","aiStudioState","dispatch","useReducer","aiStudioReducer","initialAIStudioState","typeWriterRef","caretRef","requestController","aiButtonAnchorRef","hideButton","useMemo","URLPATH","URL","window","location","href","pathname","some","regex","test","generateDescription","type","AbortController","data","ai_studio","tone","generatedTone","job_details","jobDetails","send_email_copy","sendEmail","french","serializedData","serialize","signal","formData","length","localEnglishDescription","convertToLocalEnglish","payload","name","log","aborted","generateQuestions","question_type","questionType","number_of_questions","questions","localEnglishQuestions","typeWriter","text","i","charAt","setTimeout","open","currentStep","welcomeMessage","clearTimeout","handleClose","abort","handleCloseAction","navbarElement","navbarObserver","ResizeObserver","entries","contentRect","width","observe","disconnect","title","country","stepSelect","step","generationError","regenerateCallback","generationType","setGenerationError","backToHome","WelcomePage","zIndex","buttonContainer","buttonHovered","notificationData","hoverAnimation","navbarIsCollapsed","collapsedNavbar","notificationAnimation","newNavbarButtonContainer","newNavbarCollapsed","onMouseEnter","onMouseLeave","avatarContainer","ref","FelixButtonSVG","betaPill","anchorEl","onClose","modal","isDialogOpen","confirmCancelIsOpen","setDialogOpen","buttonCallback","callbackLoading","buttonText","url","featuresText","handleButtonAction","previewModal","teaserContainer","FelixStarsSVG","teaserHeader","teaserPill","fontWeight","teaserText","featureList","feature","featureListItem","featureListItemIcon","teaserButton","teaserCloseButton","pillClickHandler","pillsContainer","preferred_skills","filledPill","pill","endIcon","A","convertPreferredSkills","position_responsibilities","position_location","salary","company_name","company_description","company_benefits","emails","setEmails","snackbarState","setSnackbarState","state","handleDismissNotification","_a","dismissNotification","subscribeToChannel","useWebSockets","kind","getInitialNotifications","notifications","formattedNotifications","histories","notification","candidate_name","application_id","job_id","placement","transition","TransitionProps","timeout","notificationPopperContainer","badgeContent","notificationsBadge","notificationPopper","notificationHeader","notificationTitles","notificationButtons","notificationCloseButton","notificationViewButton","borderBox","notificationModalOpen","notificationModalContent","summaryData","isNotification","setSnackbar","questionData","emailData","goBack","jobId","applicationId","displayNotificationContent","editableDescription","handleCopy","copied","handleAddToJobClick","footerContainer","felixMessageContainer","FelixMessageSVG","felixMessage","maxWidth","modalTitle","footerButtonsContainer","minWidth","justifyContent","rowGap","footerRestartButton","footerContinueButton","CopyToClipboard","onCopy","setEditableDescription","generatedResponse","isEditing","setIsEditing","setCopied","playConfetti","setPlayConfetti","confettiTimeout","regenerationFunction","displayResponseContent","position","height","onChange","maxHeight","generatedResponseContainer","floatingActionButton","tinyMCE","majorVersion","prev","generatedContainer","force","duration","particleCount","descriptionHeader","descriptionHeaderText","aiToneTypes","english","frenchToEnglishTonetype","neutre","professionnel","enthousiaste","urgent","persuasif","englishToFrenchTonetypes","neutral","professional","casual","creative","excited","persuasive","backCloseButton","studio","positionTitle","setPositionTitle","fileList","setFileList","descriptionContainer","genericContainer","fieldHeader","onBlur","fieldName","marginBlock","fieldSubHeader","setFile","file","maxSize","performUpload","optionalInformationContainer","pillType","fullWidth","options","formContainer","checkbox","checked","formLabel","handleSecondaryButtonClick","handlePrimaryButtonClick","secondaryButtonText","primaryButtonText","primaryButtonID","felixMessageMaxWidth","disablePrimaryButton","inputValue","setInputValue","optionalInputType","handleDoneClick","handleKeyDown","shiftKey","fieldInput","isMultiLineInput","padding","placeholder","placeholderText","multiline","rows","felixMessageText","position_title","preferredSkills","setPreferredSkills","questionTypes","welcomeContainer","FelixSVG","headersAndOptionsContainer","header","showCaret","borderRight","lineHeight","welcomeHeader","subHeader","optionsContainer","option","switchLabels","labelActive","control","aiSwitchActive","switch","labelPlacement","defaultJobDetails","loadingType","social","advertisement","interview","summary","generateLoadingText","bulk_summary","interview_questions","follow_up_email","toggleButtonOptions","AIStudioForm","setQuestionType","jobInformationSource","setJobInformationSource","collapsed","setCollapsed","aiQuestionsContainer","setValue","AIStudioField","modalsOpen","setModalsOpen","getQuestions","jobTitle","userPermissions","setGeneratedResponse","setCurrentStep","isCreating","setIsCreating","questionsController","use_description","job_description","LIST_ITEMS_REGEX","split","slice","selected","enabled","required","rateable","handleSubmit","requests","newField","field","confidential","field_type","Promise","all","handleAddToNewJob","newQuestions","filter","q","screeningQuestions","aiModal","AIStudioResponse","addButtonText","item","handleSwitchChange","questionsContainer","handleSelectQuestion","flexDirection","marginTop","color","footerBackButton","footerAddButton","disabled","size","smartShareState","handleRichCopy","jobUrl","SocialSVG","viewBox","fill","xmlns","x","y","rx","cx","cy","ry","r","maskUnits","mask","d","filterUnits","colorInterpolationFilters","floodOpacity","in","values","radius","operator","stdDeviation","in2","mode","AdvertisementSVG","generationJobDescription","apiKey","smartShareReducer","initialSmartShareState","generatedResponseRef","getSelection","removeAllRanges","range","createRange","selectNode","addRange","execCommand","generatePost","fetchSocial","useCustomDescription","generationJobTitle","includeHashtags","generationTone","summaryLength","responseText","localEnglishResponse","generateSummary","sendableJobDescription","summaryParams","adType","summaryResponse","keyPointsResponse","includeKeyPoints","fetchSummary","fetchKeyPoints","ksp","marginLeft","unhoverAnimation","disableNextButton","displayFelixMessage","footerWidth","generatedKeyPoints","setGenerationJobDescription","maxCharacters","characterCounter","inputStepContainer","sideBySideContainer","adTypes","checkboxContainer","checkboxLabel","responseHeader","responseHeaderText","headerText","point","keyPoint","copyIcon","socialResponseContainer","socialCard","socialCardHeader","postTones","responseLength","metaData","setMetaData","matches","domain","metadata","socialCardPreview","image","previewImage","backgroundImage","noImageIcon","socialCardPreviewFooter","previewTitle","previewDescription","previewLink","skeleton","welcomePageSelections","advertisementSelection","welcomePageSelectionHeader","socialSelection","felixMessageContext","expanded","handleCloseModal","lastHoveredApplicant","summaryRef","loadingSummary","emailInputOpen","setEmailInputOpen","sendingEmails","setSendingEmails","aiModalContent","viewerRef","onExportClick","onSendEmailClick","handleAPIRequest","onSuccess","setLoaderState","secondaryButtonID","primaryButtonMinWidth","secondaryButtonMinWidth","alternateSecondaryButton","inclusions","setInclusions","inclusionsContainer","inclusion","checkboxGroup","inclusionsCheckbox","inclusionsLabel","selectedFormat","setSelectedFormat","selectedApplicants","handleDeselectApplicant","requestInsights","applicantHovered","setApplicantHovered","inclusionsArray","areAllSuitabilityComments","every","aiRow","defaultFormats","suitabilityCommentWarning","applicantsContainer","applicant","applicantInitials","candidate","firstname","lastname","removeApplicant","applicantName","setStep","defaultInclusions","setSummaryData","unsubscribeFromChannel","socketConnected","UID","Date","now","application_summary","format","information_include","application_ids","ok","status","handleDeselect","applicantId","showSocketMessage","renderStep","currentJobId","convertedSummaryData","pillButton","additional_information","summary_data","array_data","join","initialEmailText","s","emailText","setEmailText","subjectLine","setSubjectLine","isSending","setIsSending","emailQuestionsContainer","email_batch","applications_ids","subject","modalOpen","setModalOpen","emailTone","setEmailTone","setEmailData","generateFollowUpEmail","email_tone","toLowerCase","follow_up_questions","emailTones","requestQuestions","editablePositionTitle","setEditablePositionTitle","selectedTab","setSelectedTab","includes","setQuestions","questionsLoading","setQuestionsLoading","copiedQuestions","setCopiedQuestions","formatQuestionArray","_","questionSkeleton","deleteQuestion","saved_interview_questions","noSavedQuestions","marginBottom","FelixConfused","disableSecondaryButton","questionCopyText","copyToClipboard","selectedApplicantId","setQuestionData","interview_question","convertedQUestions","questionStringToArray","convertedQuestionData","emailModalOpen","setEmailModalOpen","saveSelectedQuestions","sendableQuestions","onFailure","columnGap","applicantNameHeader","rel","handleHoverApplicant","handleUnhoverApplicant","summaryGeneratingIds","setSummaryGeneratingIds","setExpanded","setLoadingSummary","dotPoints","indexOf","request","errors","isGeneratingSummary","summaryPopper","summaryPopover","expandIcon","noSummaryFelix","noSummary","noSummaryGenerate","generatedContent","tlpModalOpen","questionsModalOpen","setQuestionsModalOpen","tlpButtonIsHovered","setTlpButtonIsHovered","questionsButtonIsHovered","setQuestionsButtonIsHovered","deleteConfirmOpen","setDeleteConfirmOpen","rootContainer","aiHeader","buttonsContainer","talentLandingPage","aiButtonFilled","aiButton","previewContainer","QuestionsPreview","handleRemoveQuestion","splice","previewOnly","onSwitchChange","alignItems","deleteQuestionButton","EmailButton","forwardRef","inputOpen","buttonId","props","emailInputButton","displayName","ExportButton","exclusive","toggleButton","numberOfQuestions","arrayOfBooleans","copiedQuestion","setCopiedQuestion","handleCopyQuestion","className","copyButton","Number","collapsedSize","descriptionPreview","toggleDescriptionPreview","loadingHTML","sendEmailButtonId","emailButtonId","exportButtonId","emailTooltipOpen","setEmailTooltipOpen","emailTooltipHidden","setEmailTooltipHidden","viewOnlyHTMLParent","emailInputContainer","emailInput","tags","setTags","validation","emailIsValid","validationMessage","tagType","helperText","styles","inputStyles","labelStylesOverride","labelStyles","helperTextStylesOverride","helperTextStyles","autoFocus","sendEmailButton","transform","viewOnlyHTML","onOpen","primaryEndIcon","altFooterSecondaryButton","clipPath","stroke","strokeMiterlimit","x1","y1","x2","y2","gradientUnits","stopColor","offset","maskType","xmlnsXlink","gradientTransform","xlinkHref","RobotIcon","FelixGPTIcon","strokeWidth","dy","SelectInput","borderRadius","backgroundColor","border","fontFamily","textTransform","borderColor","marginRight","menuItemStyle","renderQuestionStatus","errorContainer","felixErrorContainer","errorMessageContainer","errorButtons","customMessages","loadingTextIndex","setLoadingTextIndex","changeTextIndex","loadingAnimation","loop","autoplay","animationData","rendererSettings","preserveAspectRatio","loadingText","loadingContainer","loadingMessage","socketsMessage","opacity","socketsInfoIcon","withScoutTheme","job","candidateName","calendlyAccount","events","setEvents","selectedEvent","setSelectedEvent","theme","get","user","access_token","collection","active","getData","root","loading","palette","primary","main","recContainer","recImage","user_name","recDetails","scheduling_url","meetingContainer","shadow","uri","noEvents","disableElevation","variant","history","back","startIcon","addToEvent","event_type_url","reload","candidateList","application","isOpen","setIsOpen","nextDisabled","setNextDisabled","jobPositions","setJobPositions","selectedJobPosition","setSelectedJobPosition","candidates","setCandidates","selectedCandidates","setSelectedCandidates","statuses","setStatuses","selectedStatuses","setSelectedStatuses","templates","setTemplates","selectedTemplate","setSelectedTemplate","defaultJob","setDefaultJob","editedSubject","setEditedSubject","editedBody","setEditedBody","ColorButton","textDecoration","handleStep","increment","Math","min","max","sendInvitations","err","localStorage","setItem","closeModal","TOTAL_STEPS","progressBar","statusIsLoading","setStatusIsLoading","initialRender","refreshApplications","applications","getJobApplications","replaceNullStatuses","uniqueStatuses","findIndex","inner","sort","a","b","selectedList","job_positions","getEventOptions","app","searchContainer","autocompleteField","inputRoot","autoCompleteInput","endAdornment","getOptionLabel","reference","filterSelectedOptions","disableClearable","newValue","renderTags","renderInput","params","InputProps","disableUnderline","startAdornment","multiple","noOptionsText","inputBase","displayEmpty","renderValue","MenuProps","paper","dialogPaper","PaperProps","newApplicants","handleStatusAdd","noData","chipContainer","chipItem","onDelete","handleStatusRemove","table","row","tableHeader","tableLg","tableMd","email","noApplicants","memo","setButtonText","handleClick","navigator","clipboard","writeText","handleEdit","container","details","booking","footer","editButton","editorReadyState","setEditorReadyState","handleDraftValue","contentBlock","contentState","ContentState","createFromBlockArray","contentBlocks","editorState","EditorState","createWithContent","email_templates","getCalendlyEmailTemplates","templateContainer","template","handleTemplateChange","noTemplates","templateView","formLabelWrapper","Editor","wrapperClassName","textEditor","toolbarClassName","textEditorToolbar","editorClassName","textEditorBody","onEditorStateChange","convertToRaw","getCurrentContent","blocks","toolbar","inline","inDropdown","noPreview","icon","overviewItem","overviewTitle","overviewDescription","overviewLink","overviewContainer","invalidAPIKey","hasAPIKey","BASE_URL","origin","badAPIModalInner","isNextPage","setIsNextPage","selectedType","setSelectedType","TYPES","pages","setPages","refOffset","setRefOffset","refWidth","setRefWidth","firstTabSwitch","setFirstTabSwitch","savedDateRange","setSavedDateRange","subtract","isDateSelectOpen","setIsDateSelectOpen","enteredTo","setEnteredTo","activeFilter","setActiveFilter","isFilterOpen","setIsFilterOpen","filterStatus","setFilterStatus","setinvalidAPIKey","apiParams","setApiParams","page","headerRefs","filterRefs","dateSelectAnchor","getEvents","inviteeParams","count","eventParams","max_start_time","min_start_time","invitees","invitee","pagination","next_page","onFocus","handleSelectedType","offsetLeft","getBoundingClientRect","handlePageUp","handlePageDown","selectedDays","to","disabledDays","before","modifiers","start","end","isSelectingFirstDay","day","isBeforeFirstDay","DateUtils","isDayBefore","handleDayClick","handleDayMouseEnter","actions","el","activeType","dateSelect","datePopover","anchorOrigin","vertical","horizontal","transformOrigin","numberOfMonths","fromMonth","onDayClick","onDayMouseEnter","typeUnderline","left","moreActions","filters","FILTERS","paddingBottom","filterWrapper","eventContainer","eventHeader","start_time","eventPagination","isExpanded","setIsExpanded","handlEdit","detailsTop","date","dateDot","end_time","invitees_counter","limit","detailsButton","detailsBottom","reschedule_url","focus","buttonRedLight","cancel_url","divider","buttonOutline","expandDetailItem","evt","timezone","created_at","CareersPortalReport","jobsCount","applicationsCount","pageViews","subWidget","widgetBlockContainer","widgetBlock","widgetBlockIcon","widgetBlockText","blockCount","blockTitle","portal","tabIndex","src","social_preview_image_url","social_preview_title","social_preview_description","USER_PREFERENCE_SOURCE","engageState","isFetched","fetchedPreferences","queryKey","queryFn","getPreferences","onError","refetchOnMount","refetchOnWindowFocus","refetchOnReconnect","staleTime","isLoadingCandidates","booleanQuery","searchSettings","searchFilters","callPaginatedAPI","query","searchAndFiltersRow","numberOfFilters","tableState","searchTable","userPreferenceSource","exportCsv","addSearch","drawerOpen","selectedItemIds","actionDrawerModals","items","ai_search","isLoadingItems","paginationState","totalItems","totalPages","headerStyle","TableRows","TableActionList","engageSearchActionsList","tableFilters","tableSearch","selectAllUrl","actionsState","showSearchTooltip","setShowSearchTooltip","tlpMatchText","setTlpMatchText","handleSearch","searchQuery","successMessage","show","boolean_query","searchInput","cursor","searchType","tlpMatchModalState","selectedTLP","onKeyDown","tlpMatch","searchAdornment","editBooleanIcon","searchTooltip","currentTarget","attachment_url","arrow","column","tableHovered","sticky","idTableCell","itemTitleTableCell","scrollShadowVisible","suburb","last_applied_on","jobs_applied_to","titleKeyType","maxItems","maxItemsLink","TagList","notes","attachments","selectedItem","viewAttachments","addNote","itemId","downloadAPICall","zip_file","candidate_ids","success","attachments_in_pdf","enabledColumns","columns","searches","activeColumns","addToPool","isSearch","selectAllBody","override_limit","externalEmail","selectedCandidateIds","apiUrl","downloadAttachments","exportAttachments","emailFallback","exportAsPdf","filterTab","setFilterTab","selectedPools","setSelectedPools","addingCandidates","setAddingCandidates","poolNameLengthError","setPoolNameLengthError","queryClient","allCurrentCandidates","candidate_pools","isLoadingPools","mutate","addCandidatePool","creatingPool","mutationFn","setQueryData","oldData","styleOverrides","subHeaderStyling","sharedClasses","mainModalContent","paddingInline","dropdownOptions","newValues","at","handleMultiSelectValueChange","loadingOptions","creatingOption","common","grey","paddingTop","primaryButtonCallback","candidate_pool_ids","pool","invalidateQueries","primaryButtonDisabled","secondaryButtonCallback","iconButton","iconButtonOpen","editableBooleanArray","setEditableBooleanArray","booleanQueryToEditableArray","modalHeader","modalMainContentContainer","editBooleanStepHeader","editedBooleanQuery","editableBooleanArrayToBooleanQuery","modalState","handleGetBooleanQuery","selectedJob","setSelectedJob","isLoadingTLP","setIsLoadingTLP","getSelectedJobTLP","html","jobsList","modalRow","modalFieldSubHeader","Virtualize","passOptions","handleSelectJob","passedStyles","autocomplete","freeSolo","selectJobPlaceholder","tlp","tlpMatchButton","jobs","editableBooleanQuery","initialSearchFilters","entity_ids","postal_codes","include_status","exclude_status","tag","date1","date2","employment_type","handleFilterChange","countriesData","parseCountryData","entities","filtersContainer","setPostcodes","postalCodes","selectOptions","tempSearchFilters","displayLabel","states","flat","freeInput","subLabel","dateRange","dateRangeTemp","dateFieldRange","selectedEmail","emailAnalytics","spacing","xs","paddingRight","rowWidget","widgetTextSubTitle","delayed_to","paddingLeft","widgetContentGridWrapper","overflowWrap","only_new","include_deleted","register","margin","minHeight","responsive","maintainAspectRatio","statistics","opened_email_statistics","stats","percentages","statusStatsWrapper","delivered","statusStatsWrapperMetrics","secondary","medium","delivered_pcent","opened","purple","opened_pcent","clicks","pink","clicks_pcent","bounced","mediumRed","unsubscribed","darkBlue","unsubscribed_pcent","scales","beginAtZero","ticks","stepSize","plugins","legend","status_statistics","textAlign","application_deleted","getStatusColor","isFetching","applicationsState","applicationsDispatch","headerStyles","titleCellId","allowMultipleSelection","applicationColumns","sortable","canToggle","emailsDispatch","selectedCandidatePoolId","modalTabValue","setModalTabValue","analyticsState","analyticsDispatch","genericTableReducer","initialTableState","sortBy","sortOrder","analyticsLoading","emailTemplates","emailTemplatesLoading","fetchingApplications","skipEmptyString","skipNull","arrayFormat","encode","pageHeader","email_template","toUpperCase","TabIndicatorProps","tabs","tabIndicator","borderBottom","navigateBackButton","emailTemplate","readonlyEditor","styling","email_attachments","templateAttachments","individualCandidatePoolsState","individualCandidatePoolsDispatch","emailsState","candidatePoolsState","containerRef","refetch","newPool","poolActionDrawerModals","candidatePool","selectedPool","candidatePoolActionsList","totalSelected","parentDiv","actionButtonsList","actionButtonId","handleDeletePool","deletingPool","action","deletePool","candidates_count","new_candidates","pool_tags","last_email_date","selectedPoolIds","openedFromTableActions","showTotalSelectedCandidates","candidate_link","candidate_email","added_date","postcode","candidate_phone_number","black","candidatePoolsDispatch","candidate_pool_id","deleteCandidate","assignment_ids","candidate_pool_assignments","tooltipLabel","elementId","actionCall","customEmptyStateMessage","analytics","link","centerCellContent","poolName","setPoolName","updatedCandidatePool","isLoadingUpdatePool","individualCandidatePoolsColumns","FormTextField","actionsColumnHeader","emailsColumns","handleCreatePool","savingPool","candidatePoolsColumns","candidatePoolActionsState","moreOptions","candidatePoolModalState","URL_PARAMS","engageDispatch","engageReducer","initialEngageState","tabIndicatorRef","handleTabChange","tabValue","search","getTabParam","pushState","getTabNumber","useLayoutEffect","selectedRowTitle","clientWidth","client","pageContainer","snackbarInput","initialIsOpen","strokeLinecap","strokeLinejoin","editableBooleanObject","changeBase","hasExclude","booleanEditorOperatorGroup","booleanEditorOperatorButton","addValue","setAddValue","rowIndex","isAddingRow","setIsAddingRow","addValueToRow","newEditableBooleanArray","queryValues","push","changeBaseOperator","baseOperator","changeOperator","booleanEditorContainer","booleanEditorRow","booleanEditorValuesContainer","queryValue","valueIndex","Fragment","booleanEditorValue","booleanEditorRemoveValueButton","removeValue","booleanEditorValueInput","onInput","setAttribute","booleanEditorAddButton","booleanEditorRemoveRowButtonContainer","booleanEditorRemoveRowButton","removeRow","booleanEditorOperatorContainer","LOADING_TEMPLATE_HTML_STRING","isSendingEmails","setIsSendingEmails","excludeApplicants","setExcludeApplicants","skipScoutTalentClients","setSkipScoutTalentClients","templateError","setTemplateError","setDelay","setSubject","setBody","setAttachments","setTemplateAttachments","templateSelectionRef","placeholders","formatOptions","disableEnforceFocus","role","actionModalFormLine","templateId","formAutocomplete","formCheckbox","modalSection","sectionHeader","candidate_pools_ids","email_template_id","exclude_applicants","stringToSeconds","new_email_attachments","rating","excludeApplicantsWithoutRating","isFormData","submissionError","setSubmissionError","emailInputRef","external_view","full_view","smart_forms","include_summary","children","other","hidden","TabProps","tabsContainer","indicatorWidth","urlParams","tabNumber","searchTableColumns","assets","blurb","info","setCode","snack","setSnack","redirectUrl","setRedirectUrl","sendingCode","setSendingCode","setEmail","password","setPassword","newPassword","setNewPassword","newPasswordConfirmation","setNewPasswordConfirmation","setDomain","showPassword","setShowPassword","showNewPassword","setShowNewPassword","showNewPasswordConfirmation","setShowNewPasswordConfirmation","setErrors","randomNumber","setRandomNumber","floor","random","emailFieldSelected","setEmailFieldSelected","passwordFieldSelected","setPasswordFieldSelected","newPasswordFieldSelected","setNewPasswordFieldSelected","newPasswordConfirmationFieldSelected","setNewPasswordConfirmationFieldSelected","domainFieldSelected","setDomainFieldSelected","singleSignOn","setSingleSignOn","resetPassword","setResetPassword","updatePassword","setUpdatePassword","token","setToken","setLoading","messages","submitButton","windowSize","setWindowSize","handleResize","innerWidth","innerHeight","useWindowSize","redirect","URLSearchParams","user_email","pop","handleEmailInput","finaliseLogin","removeItem","handleKeyPress","click","buttonSecondaryText","logoContainer","alt","loginFormContainer","loginForm","intervalToValidateInMinutes","autoComplete","inputs","InputLabelProps","shrink","inputLabel","inputIcons","severity","alert","edge","forgotPassword","sendTwoFactor","resendTwoFactorCode","errorMessage","ceil","fadeIn","fadeOut","loginButton","postSSOLogin","team_name","postResetPassword","notice","putUpdatePassword","postTwoFactor","authenticated","postTwoFactorCode","postLogin","password_disabled","twofa_enabled","clearAllPreferenceCache","imageAndBlurbContainer","infoPanel","infoPanelText","helpContainer","helpIcon","helpText","Child","setHeight","visible","node","offsetHeight","child","clientHeight","isArray","Application","showLinkedInURL","currentUser","newIntegrationEnabled","ApplicationState","ApplicationReducer","InitialApplicationState","setTabValue","showDialog","setShowDialog","pendingHref","setPendingHref","overviewTab","hasUnsavedChanges","cognology","scrollRef","urlIndex","applicationURL","loadingApplication","getApplicationData","ModalType","COGNOLOGY_WAITING_FOR_APPROVAL","getPermissions","api_key","formatUserPermissions","updateApplicationNotepad","updatingApplicationNotepad","useNotepadUpdater","onConfirmHandler","shouldSave","note","isAdminUser","admin","userTimeZone","timeZone","userEmail","suitability_comment","scrollToElement","block","applicationPageStickyHeader","_e","scrollButtons","candidateTabIndicator","candidateTabs","surroundingApplications","surround_application","total_number_in_current_filter","pre_app_id","surroundingApplicationsButton","pre_idx","next_app_id","next_idx","currentUserId","SEND_EMAIL","ADD_TO_EVENT","smsTemplatePermissions","INVITE_TO_TIMESLOT","ADD_FORM","SEND_FORM","EXPORT_TO_ONBOARD","snackbar","alternateColor","onCancelCallback","ApplicationBetaButton","slotProps","tooltip","boxShadow","betaButtonTooltipContainer","FelixSurveySVG","genericButtonSecondary","genericButton","browserTimezone","Intl","DateTimeFormat","resolvedOptions","ApplicationHeader","linkedInURL","setLinkedInURL","editLinkedInURL","setEditLinkedInURL","getQueryData","permissions","trashApplication","trashingApplication","onSettled","resendApplication","resendingApplication","updateLinkedInURL","updatingLinkedInURL","updateCandidateLinkedInURL","linkedin_url","exact","modalDesc","TRASH","callback","RESEND","validateLinkedInURL","LINKEDIN_URL_REGEX","handleLinkedinSubmit","sanitizeLinkedInURL","LinkedInSection","applicationHeaderItems","scoutNavyIcon","linkedInURLInput","clickableGreyIcon","linkedInURLLink","_b","_c","profileName","getLinkedInProfileName","background","existingCandidate","existing_candidate","candidateLink","orientation","flexItem","Applications","smallGreyIcon","phone1","formatAddress","address_details","gender_field","gender_full","time_zone","applicationHeaderActionsContainer","MOVE","CLONE","DELETE","DeleteApplication","recipients","primaryButtonId","SEARCH","ApplicationStatusPopover","setAnchorEl","applicationStatuses","getApplicationStatuses","job_application_statuses","initialData","updateApplicationStatus","updatingApplicationStatus","status_details","ArrowIcons","applicationStatusDropdownStyle","colour","applicationStatusPopoverStyle","Boolean","Export","exportButton","ScoutOnboardLogo","AlayaCare","setCandidate","setState","setTitle","gender","setGender","fieldRefs","firstName","lastName","mobile","alayaCareData","loadingAlayaCareData","getAlayaCareData","savedState","find","abbreviation","savedTitle","titles","savedGender","genders","alayaCareExport","exportingAlayaCare","mobile_phone","street","street1","street_cont","street2","suburb_town","ALAYACARE","modalStyleOverrides","modalContainer","overflow","modalDoubleColumn","innerRef","disablePortal","ListboxProps","autoCompleteListStyles","autoCompleteTextfield","inputErrors","trim","validateEmail","validateInputs","AlreadyExportedModal","alreadyExportedModalOpen","buttonName","revolve","referoo","hro","sparkhire","foundu","alreadyExportedModal","revolve_record_id","autocompleteStyle","Cognology","integrationsData","exportPreference","setExportPreference","startDate","setStartDate","setCountry","record","setRecord","approvalTemplate","setApprovalTemplate","reapproval","setReapproval","categories","setCategories","cognologyData","loadingCognologyData","useGetCognologyData","categoriesPayload","new_value","cognologyExport","exportingCognology","candidate_title","candidate_first_name","candidate_last_name","candidate_phone1","candidate_phone2","candidate_addr_street1","candidate_addr_street2","candidate_addr_suburb","candidate_addr_state","candidate_addr_postcode","candidate_addr_country","iso","requisition_form_id","candidate_gender","start_date","toISOString","candidate_employee_id","manager_id","recruitment_record_url","reapproval_required_for_modifications","approval_url","COGNOLOGY","EDIT_COGNOLOGY","cognology_requisition","requisition","reapprovalRequired","cognology_config","approval_bypassed","cognologySectionTitle","autoHighlight","includeInputInList","requisition_forms","_event","disableRipple","modalCancelButton","CognologyAfterApprovalModal","exportToCognology","genericRedButton","CognologyApprovalDetails","CognologyStep1","dateError","setDateError","countriesStates","getCountriesStates","countries","savedCountry","cognologyExportPreference","toString","directionRow","defaultValue","groupLabel","id_blank","SingleDatePicker","datePicker","isValid","toDate","cognologyCategoriesContainer","category","filterOptions","filtered","newCategories","application_assets","asset","cognologyAttachmentContainer","fileIcon","file_name","document_tags","CognologySummary","div","printable_name","yellow","Fit2Work","accountEmail","setAccountEmail","fit2WorkPackage","setFit2WorkPackage","setTemplate","candidateEmail","package","fit2WorkData","loadingFit2WorkData","getFit2WorkData","account_email","fit2WorkExport","exportingFit2Work","packagePayload","packages","package_ids","template_name","FIT2WORK","FoundU","preferredName","setPreferredName","sendWelcomeEmail","setSendWelcomeEmail","foundUExport","exportingFoundU","first_name","surname","preferred_name","send_welcome_email","FOUNDU","FormNumberField","Hronboard","hroUser","setHroUser","company","setCompany","setLocation","approvalNumber","setApprovalNumber","jobReferenceNumber","setJobReferenceNumber","glCode","setGlCode","phone","HronboardData","loadingHronboardData","getHronboardData","hronboardExport","exportingHronboard","_d","candidate_mobile_no","candidate_phone_no","phone2","hro_user","requisition_id","gl_code","HRONBOARD","hro_users","flexGrow","companies","locations","Mvs","mvsPackage","setMvsPackage","checks","setChecks","getMvsData","mvsExport","loadingMvsExport","package_id","blueprint_ids","c","MVS","packageChecks","checkFound","blueprints","OnboardExpress","workType","setWorkType","entity","setEntity","createdBy","setCreatedBy","revolveData","loadingRevolveData","getRevolveData","revolveExport","loadingRevolveExport","worktype","entity_name","created_by","candidate_addr_street","validateAUPhoneNumber","ONBOARD_EXPRESS","template_names","entity_names","worktypes","validatePhone","Referoo","setJobTitle","numberOfReferences","setNumberOfReferences","setNotes","questionnaire","setQuestionnaire","referooPackage","setReferooPackage","references","getReferooData","candidateCountry","referooExport","loadingReferooExport","last_name","phone_country","questionnairesNum","packagesNum","number_of_references_required","recruiter_email","REFEROO","top","questionnaires","MultilineFormTextField","Roubler","roublerExport","exportingRoubler","ROUBLER","SparkHire","emailMessage","setEmailMessage","scheduledAt","setScheduledAt","setTimezone","setJob","setQuestion","sparkHireData","loadingSparkHireData","getSparkHireData","savedTimezone","timezones","tz","sparkHireExport","exportingSparkHire","job_uuid","interview_questions_set_uuid","email_message","scheduled_time","SPARKHIRE","SingleDateTimePicker","disablePast","isBefore","Testgrid","testgridPackage","setTestgridPackage","setError","loadingPackages","getTestGridPackages","testGridExport","loadingTestGridExport","TESTGRID","UnusualActivity","referenceId","selectedReferee","comments","setComments","selectedButton","setSelectedButton","buttonsColor","resolution","resolveUnusualActivity","resolvingUnusualActivity","referee_id","reference_id","errorsLength","unusual_activities","UNUSUAL_ACTIVITY","verifyActivityButtonsContainer","verifyActivityButton","borderRightWidth","XRef","minReferees","setMinReferees","candidateNote","setCandidateNote","refereeNote","setRefereeNote","xRefPackage","setXRefPackage","referees","getXrefPackages","xRefExport","loadingXRefExport","min_referees","note_to_candidate","note_to_referee","XREF","String","OldIntegrationsLink","Fit2WorkRecord","updateFit2WorkStatus","updatingFit2WorkStatus","integrationDetails","integrationDetailsTable","integrationDetailsTableHeader","fit2_work_records","verticalAlign","package_name","check","report_path","FoundURecord","foundu_record","foundu_id","MvsRecord","mvs_requests","ReferooRecord","referoo_record","referoo_id","candidate_status","referees_status","referee","report_url","referoo_login_url","SparkHireRecord","sparkhire_record","share_link","TestgridRecord","test_grid_requests","score","XrefRecord","xref_records","UpdateStatusIcon","refetchIntegrationsData","refetchingIntegrationsData","useGetIntegrationsData","buttonLoading","outline","IntegrationsTab","setAlreadyExportedModalOpen","loadingIntegrationsData","integrations","cognology_login_url","flexWrap","isIntegrationAvailable","integrationCard","integrationCardImageContainer","component","hro_record_exported","cognology_record_exported","COGNOLOGY_APPROVED","priorities","AddEditTask","editedTask","setNote","setDate","due_at","priority","setPriority","p","assignedUser","setAssignedUser","taskCompleted","setTaskCompleted","completed_at","deleteTaskDialogOpen","setDeleteTaskDialogOpen","tasks","assignableUsers","loadingAssignableUsers","useGetAssignableUsers","addTask","addingTask","user_id","updateTask","updatingTask","updateApplicationTask","newTasks","t","deleteTask","deletingTask","task","ADD_EDIT_TASK","closeIconId","modalContent","modalCandidateName","v","htmlFor","prioritySelectStyling","listboxProps","secondaryButtonId","AddForm","selectedForm","setSelectedForm","ratings","setRatings","answers","setAnswers","questionErrors","setQuestionErrors","exitConfirmation","setExitConfirmation","questionsRef","formQuestions","fetchingFormQuestions","fetchFormQuestions","getFormQuestions","form_id","enabled_only","fields","createQuestionErrorsObject","answersAttributes","getAnswerAttributes","addForm","addingForm","removeQueries","wideModal","validateForm","ExitConfirmationModal","AddToEvent","selectedDay","setSelectedDay","selectedTimeSlot","setSelectedTimeSlot","setNotification","smsMessage","setSmsMessage","smsTemplate","setSmsTemplate","selectedEmailTemplate","setSelectedEmailTemplate","useGetEmailTemplate","displayError","displaySuccess","useDispatch","loadingEvents","useGetEvents","useGetSmsTemplatePlaceholders","sendingEmail","sendSms","sendingSms","addToEventSms","selectedDayEvents","begins_at","eventCandidates","attendees","candidateAlreadyBooked","validateInput","fieldsErrors","sms","actionModalHeader","timeslotAvailabilityButton","calendar","ControlledStaticDatePicker","displayStaticWrapperAs","views","shouldDisableDate","dailyTimeslots","dailyTimeslotsHeader","noTimeslots","addToEventTimeslotsContainer","fullyBooked","max_candidates","addToEventTimeslot","addToEventSecondStepContainer","smsMessageError","modalFooter","CustomSlider","zoomSlider","AttachmentPreviewModal","previewOpen","selectedAttachment","videoRef","isLoadingPreview","setIsLoadingPreview","currentIndex","setCurrentIndex","isVideoInterview","attachmentType","getAttachmentType","isVideoType","AttachmentType","Video","zoom","setZoom","zoomFactor","MAX_SCALE","VIDEO_INTERVIEW_DISPLAY_NAME","attached_file_name","delete","preview","throttledUpdateZoom","useThrottle","delta","prevZoom","zoomChange","round","abs","newZoom","onPinchHandler","useGesture","onPinch","direction","pinchDirection","previewData","previewAttachment","Word","showZoomSlider","Pdf","Image","handleWheelEvent","ctrlKey","passive","attachmentPreviewModal","attachmentPreviewTitle","attachmentPreviewContent","videoInterviewSrc","sources","VIDEO_INTERVIEW_SOURCE_INDEX","video","sharedProps","components","Audio","Text","source","handleDisplayContent","previewLoader","absoluteLoader","zoomSliderContainer","ZOOM_STEP","zoomIcons","ZoomOutSVG","ZoomInSVG","attachmentPreviewActions","downloadButton","paddingY","EmailBodyComponent","errorBox","addToEventEmailPlaceholder","EmailsDropdown","dropdownLabel","endpoint","loadingEmailTemplates","getEmailLetterheadGroupedEmailTemplates","group","errorStyles","WidgetBlock","heading","widgetBlockHeading","widgetBlockBody","RenderFormResponseBlocks","ApplicationId","submitted_by","expandedRows","linkToUser","formattedCreatedAtTime","getApplicationRatingColor","isNaN","parseFloat","FormsDropdown","smartForms","loadingSmartForms","getSmartForms","NotificationOptionSwitch","newTimestamp","setNewTimestamp","currentTime","setCurrentTime","listRef","isTimestampValid","timestamp","errorMessages","nameMessage","valueMessage","TIMESTAMP_REGEX","timeStringToSeconds","timeStampState","timestampError","timestampData","loadingTimestampData","updateTimestamp","updatingTimestamp","addTimestamp","deleteTimestamp","useTimestampData","useCurrentTime","tableRows","bookmarks","timestamps","TimestampTableRow","gap","borderType","TimestampTableForm","hasTyped","isAddingTimestamp","hasError","handleFieldChange","handleFocusBehavior","pause","timeStampInput","draggable","noWrapError","tableActionIcon","isEditingCurrentTimestamp","clearTimestampError","renderItem","fieldValue","seekToTimestamp","time","play","timeStampItem","alignContent","focusable","CreateApproval","movingPage","setMovingPage","approvalTemplates","loadingApprovalTemplates","getApprovalTemplates","enabled_requisition_forms","CREATE_APPROVAL","confirmDelete","setConfirmDelete","deleteApplication","dialogDescription","DeleteAttachment","deleteAttachment","deleteVideoInterview","deleteApi","DeleteFormResponse","formResponseId","deleteFormResponse","edit","selectedFormResponseAction","EditFormResponseModal","selectedFormId","EditingFormResponseId","FormName","formResponse","loadingFormResponse","useFormResponse","FormResponseId","loadingFormQuestions","useFormQuestions","editForm","editingForm","editFormResponse","initialAnswers","reduce","acc","getAnswerValue","initialRatings","loaderContainer","formResponseAnswers","EmailExternal","includeAttachments","setIncludeAttachments","includeSmartForms","setIncludeSmartForms","includeSummary","setIncludeSummary","sendExternalEmails","EMAIL_EXTERNAL","ExportToOnboard","exportToOnboard","exportingToOnboard","showTodayButton","InviteToTimeslot","recruiter","setRecruiter","eventType","setEventType","showTimeslots","setShowTimeslots","missingPlaceholderConfirmation","setMissingPlaceholderConfirmation","eventTypeId","recruiters","loadingRecruiters","getRecruiters","users","eventTypes","loadingEventTypes","getEventTypes","event_types","inviteByEmail","event_type_id","invitation","sendInviteSms","formSwitchLabels","switchActive","timeslotsContainer","timeslot","timeslotSubject","noTimeslotMessage","missingPlaceholders","checkMissingPlaceholders","INVITE_TO_TIMESLOT_PLACEHOLDER","handleEmailSubmission","MissingPlaceholdersConfirmationModal","missingPlaceholderList","overrideFunction","overridingLoading","MissingPlaceHolderDialogDescription","overrideColor","secondaryButtonAlternateColor","primaryButtonAlternateColor","switchOrder","MoveApplicationModal","cloneAttachments","setCloneAttachments","loadingJobs","getJobsOptions","textFieldLabel","handleApplication","handlingApplication","moveApplication","target_job","cloneApplication","to_job_id","cloning_assets","new_application_link","modalInfoStyle","SearchIndex","setIsDialogOpen","searchIndexData","isLoadingSearchIndex","getSearchIndex","updateSearchIndex","updatingSearchIndex","deleteSearchIndex","deletingSearchIndex","tableStyling","sameData","scout_data","search_data","td","SendEmail","selectedCareAdvantageEvent","setSelectedCareAdvantageEvent","emailPlaceholders","hasEventPermission","getEmailTemplateEndpoint","getEmailTemplateFromJob","careAdvantageEvents","getCareAdvantageEvents","event_id","care_advantage_event_id","subEntityGroupingEndpoint","getSubEntityGroupedEmailTemplates","group_templates","has_care_advantage_integration","care_advantage_events","lineBreak","validateFields","SendForm","setStatus","phoneNumbers","setPhoneNumbers","phoneNumberError","setPhoneNumberError","form","sendForm","sendingForm","status_id","sendFormBySMS","phones","sms_template_id","ADD_FORM_PLACEHOLDER","SendSms","setPhone","phoneError","setPhoneError","setSmsMessageError","SEND_SMS","multipleSms","TaskWorkflow","workflow","setWorkflow","workflows","loadingWorkflows","getWorkflows","assignWorkflow","assigningWorkflow","TASK_WORKFLOW","permission","Trash","actionsMenu","actionsItem","RED","DARK_RED","handleSelectItem","AISummary","sendApplicationSummary","updateSummary","updatingSummary","AISummaryContainer","AISummaryHeader","AISummaryMessage","generateSummaryButton","AISummaryButton","summaryLastUpdated","summary_updated_at","AISummaryNoAccess","svg","ActionButton","boldFont","Actions","ADD_RECORD","SendFormSVG","ExternalEmailSVG","Events","Integrations","interview_guide_url","AdditionalInfo","additionalInfoContainer","lodged_by","privacy_acknowledgement","original_job","AudioPreview","mediaContentContainer","controls","onLoadStart","onCanPlayThrough","ImagePreview","useDragScroll","imagePreviewContainer","onLoad","imagePreview","PdfPreview","scaledDimension","numPages","setNumPages","touchAction","onLoadError","onLoadSuccess","onLoadProgress","loaded","total","pdfPage","pageNumber","renderTextLayer","renderAnnotationLayer","GlobalWorkerOptions","workerSrc","version","TextPreview","VideoPreview","load","objectFit","NavigationButton","NavigationButtons","hasPrev","hasNext","docPreviewNavigation","ImagePreviewList","imageData","attachmentName","next","docPreviewContent","combinedData","attachmentsResult","videoInterviewResult","allSettled","getApplicationAttachments","getVideoInterview","attachmentsData","videoInterviewData","categorizeAttachments","videoInterview","files","videos","AttachmentTableRow","publicUrl","attachmentTitle","attachedBy","createdAt","timeZoneString","handleOpenItem","Item","selectedAttachmentAction","fileIconContainer","fileName","fileDate","fileAttachedBy","align","CopyLinkSVG","AttachmentTable","attachmentsList","attachment","public_url","attachment_title","attached_by","attached_url","hasVideo","hasFile","hasVideoInterview","getAttachmentAvailable","AttachmentTableHead","attachmentsContainer","noAttachments","emptyStateText","tableWrapper","watch_interview_link","heightOverride","uploadUrl","onUploadComplete","compact","maxVideoSize","NoAttachmentsSVG","NoFormResponsesSVG","fillRule","clipRule","Questionnaire","hrQuestion","hrAnswer","setHrAnswer","saveHrQuestion","savingHrQuestion","answers_attributes","field_id","question_id","field_choice_id","field_choice_ids","hr_answer","questionnaireContainer","answer","field_choices","formatSavedAnswer","onChangeCallback","QuestionsAndRatings","questionsAndRatingsContainer","questionRef","questionError","rate","Rating","hover","setHover","ratingButton","ratingColor","RatingCard","ratingCard","RatingLabel","PopperProps","Ratings","sortableSections","editRating","setEditRating","interviewRating","setInterviewRating","interview_rating","refRating","setRefRating","ref_check_rating","ratingErrors","setRatingErrors","rateApplication","ratingApplication","updateApplicationRating","updateUiPreferences","sections","sorting","order","sensors","coordinateGetter","RatingValue","displayValue","filteredSortableSections","RatingErrorMessage","overall_rating","qa_rating","editableRatings","ratingInput","sortableSectionsButton","sortableSectionsHeader","defaultSections","collisionDetection","onDragEnd","over","oldIndex","newIndex","newArray","strategy","section","Responses","showRatingInfo","setShowRatingInfo","jobQuestions","setJobQuestions","formatRatings","ratingsObject","m","field_value_id","rateResponses","ratingResponses","resetRatingForApplication","ratings_attributes","loadingRatings","getRatingSetForApplication","showRatings","newSelected","ratings_label","ratingInfoContainer","ratingInfoClickable","answerFound","question_answers","availabilityConfig","availability_config","removePadding","choice","fontStyle","whiteSpace","renderAnswer","emptyStateIcon","emptyStateMessage","sectionComponents","SectionName","CandidateTags","focused","inputId","FelixAISummary","Notepad","updateNote","updatingNote","ApplicationQuestionnaire","Attachments","Section","SectionComponent","SortableSection","attributes","listeners","setNodeRef","setActivatorNodeRef","Translate","OverviewTab","getUiPreferences","ui_preferences","addRecord","addingRecord","getHrQuestions","hr_answers","Jobs","AnswerApplicationHRQuestions","RenderFormResponseActions","setExpandedRows","formattedUpdatedAtTime","updated_at","handleExpandClick","rowId","form_name","ratingCell","FormResponseDetails","questionsAndAnswers","smartFormsAnswersPreviewContainer","formResponses","loadingFormResponses","getFormResponses","form_responses","NoResponses","colSpan","emptyStateContainer","TableHeader","smartFormsTableContainer","unmountOnExit","link_to_user","Task","completeTask","completingTask","assigned_user","candidateTaskChip","TasksTab","fetchingTasks","getApplicationTasks","filteredTasks","Tasks","candidateSectionContainer","TasksAndEventsTab","ScoutCalendarState","eventDispatch","ScoutCalendarReducer","InitialScoutCalendarState","createEventObject","getApplicationEvents","stickyHeader","handleSelectEvent","eventName","eventDescription","maxCandidates","attendeeId","attendee_id","event_type","duration_in_minutes","eventDate","eventId","dates","owner","ends_at","showCreateEventModal","userTimezone","showViewEventModal","newApplicationEnabled","defaultOptions","queries","ApplicationPage","ActionModal","approver","requisitionId","getApprovalFormData","isUpdating","setIsUpdating","approval","setApproval","comment","setComment","updateApprover","putApprovalForm","approvers_attributes","actionsModal","modalActions","modalEditButton","host","AnswersView","questionLabel","year","month","parseAnswers","ans","availabilityTableData","config","shift","totalTime","total_availability_time","ApprovalForm","setIndicatorWidth","approvalFormData","setApprovalFormData","isLoadingPermissions","setIsLoadingPermissions","isCloning","setIsCloning","isGeneratingBulkPdf","setIsGeneratingBulkPdf","setUserPermissions","reorderedAnswers","setReorderedAnswers","emailTemplateQuestions","setEmailTemplateQuestions","getUserPermissions","allRoles","roles","feature_groups","getApprovalForm","orderedAnswers","email_template_fields","TabPanel","jobDefaults","job_field","cur","jobPageContainer","jobPageHeader","approvalFormIconsContainer","iconGrey","cloneApprovalForm","generateBulkPdf","PDFIcon","modalSaveButton","approvalFormSubtitle","statusContainer","backToApprovalFormsButton","requisition_requester","documents","template_config","hide_assigned_user","hide_approval_administrator","approval_administrator","approvers","approvalFormState","applicationIcon","fromApproval","approvalFormId","createApprovalFormQuestionsObject","newObject","inputText","ApprovalFormPage","approvalTemplateData","authenticity_token","hash","approvalFormQuestions","setApprovalFormQuestions","setSelected","setIsValid","actioned","setActioned","questionsData","for_email_template","noticeContainer","noticeIcon","approvalPage","toggleButtonsContainer","coi_response","commit","statusText","saveButton","tableHeaders","TableData","previousApproverActioned","editModalOpen","setEditModalOpen","actionModalOpen","setActionModalOpen","trashAlertOpen","setTrashAlertOpen","selectedApprover","setSelectedApprover","showMore","setShowMore","sentAt","sent_at","line","actionAt","action_at","handleShowMore","copy","flag","approversTableCell","approverTableStateButton","coiColumn","normalButton","resendEmail","approverId","postResendEmail","approver_id","editable","_destroy","ApproversTable","approversTableHeader","DayRow","payrollDay","allowBreak","availabilityTableBody","heading_1","heading_2","from_time","to_time","break_time","total_time","AvailabilityAnswer","days","availabilityTableHeader","allow_break","week_start_day","DocumentViewer","EditApproverModal","approvalManagers","setApprovalManagers","newApprover","setNewApprover","getApprovalManagers","sort_order","requisition_managers","getApprovers","isMandatoryApprover","manager","ApprovalForms","enableEmailTemplateFields","newApprovalOptions","setNewApprovalOptions","isPublicLinkDialogOpen","setIsPublicLinkDialogOpen","isApprovalManagerDialogOpen","setIsApprovalManagerDialogOpen","actionsAnchorEl","setActionsAnchorEl","newApprovalFormModal","setNewApprovalFormModal","newApprovalTemplateModal","setNewApprovalTemplateModal","templateArchived","setTemplateArchived","entityDefaultApprovers","setEntityDefaultApprovers","getEntityDefaultApprovers","getEntityApprovers","entity_default_approvers","getPageParams","tabNo","ariaLabel","archived","ApprovalFormsTab","approvalForms","setApprovalForms","globalSelected","setGlobalSelected","selectAllIsChecked","setSelectAllIsChecked","selectAllIsIndeterminate","setSelectAllIsIndeterminate","setSearch","setFilters","defaultFilters","sortableColumns","setSortableColumns","sortableColumnsDefaults","rowsPerPage","setRowsPerPage","setTotalPages","totalApprovalForms","setTotalApprovalForms","setSortBy","setSortOrder","currentPage","setCurrentPage","density","setDensity","filterableEntities","setFilterableEntities","filterableAssignedUsers","setFilterableAssignedUsers","filterableRequesters","setFilterableRequesters","getFirstApprovalFormsAndPreferences","preferenceData","fetchPreferences","densityData","preference","densityPreference","selectedStates","selectedEntityIds","selectedAssignedUserIds","assigned_user_ids","selectedRequesters","requested_by_users","requester","sessionPage","sessionStorage","getItem","row_count","sortable_columns","getApprovalForms","requisitions","parseInt","resHead","setUserPreferences","newFilters","updateUiSettings","updatedFilters","getFilterableEntities","getFilters","getFilterableAssignedUsers","assigned_users","getFilterableRequesters","filtersRow","entityList","assignedUserList","requesterList","getAllApprovalForms","CHECKBOX_CELL_WIDTH","ID_CELL_WIDTH","CANDIDATE_CELL_WIDTH","tablePadding","ApprovalFormsTable","selectedApprovalForm","setSelectedApprovalForm","selectAllApprovalForms","setSelectAllApprovalForms","isFetchingAllApprovalForms","setIsFetchingAllApprovalForms","setTableHovered","canScroll","setCanScroll","tableRef","actionCellRef","titleCellRef","preventLoop","deleteApprovalForms","setDeleteApprovalForms","firstThreeColumnsWidth","noteAnchorEl","setNoteAnchorEl","handleArchiveApprovalForms","ids","_f","_g","_h","postArchiveApprovalForms","requisition_ids","failure","handleUnarchiveApprovalForms","postUnarchiveApprovalForms","handleTrashApprovalForms","deleteTrashApprovalForms","handleScrollableEnter","element","scrollWidth","scrollShadowLeft","displaySelectAll","renderTableCell","approvalForm","updatedAt","noLinkStyling","requisition_link","requested_by","form_template","arrowsContainer","scrollLeft","leftArrow","showArrows","right","offsetWidth","rightArrow","scrollBehavior","onScroll","indeterminate","newGlobalSelected","currentApp","selectAllGlobalSelected","inputProps","isPermittedOption","columnValue","newSortOrder","handleSortChange","attachmentsHeader","stickyRight","scrollShadowRight","_i","_j","_k","_l","_m","handleSelectOne","attachmentsCell","actionItems","handleOpenNote","noApplications","skeletonContainer","paginationParent","rowSelectContainer","rowSelect","selection","paginationMenuItems","paginationContainer","siblingCount","newPage","selectedTooltip","selectedTooltipText","selectedAllTooltipText","allApprovalForms","handleCloseNote","approvalFormNote","selectedTooltipButtonsContainer","selectedTooltipButton","ApprovalManagers","totalApprovalManagers","setTotalApprovalManagers","getFirstApprovalManagersAndPreferences","getAllApprovalManagers","ApprovalManagersTable","selectAllApprovalManagers","setSelectAllApprovalManagers","deleteApprovalManagers","setDeleteApprovalManagers","editedManager","setEditedManager","isDeleting","setIsDeleting","isFetchingAllApprovalManagers","setIsFetchingAllApprovalManagers","handleDeleteApprovalManager","approvalManagerId","deleteApprovalManager","handleDeleteMultipleManagers","requisition_manager_ids","approvalManager","approvalManagersTableHeaders","handleEditManager","allApprovalManagers","NewApprovalManager","nameError","setNameError","emailError","setEmailError","createApprovalManager","requisition_manager","updateApprovalManager","modalFormLine","DebouncedFormTextField","onDebouncedChange","newEditedManager","Search","tempSearch","setTempSearch","debouncedAPICall","ApprovalPublicLink","loadingData","setLoadingData","loadingApprovers","setLoadingApprovers","setApprovers","approvalAdministrator","setApprovalAdministrator","administratorList","setAdministratorList","requesterAttributes","fetchingCSV","setFetchingCSV","positionTitleError","setPositionTitleError","setName","requesterAttributesErrors","setRequesterAttributesErrors","setRequisitionId","validateQuestions","tempErrorMessage","isChecked","array","Set","destroyed","documents_attributes","attached","requisition_requester_attributes","approvalData","to_email","handleLookUpButton","questionId","positionId","getCSVData","answerExist","original_title","default_approvers","mandatoryBlank","entity_default_approver","hide_position_title","previous","fileContainer","fileSize","lastModified","updatedFileList","handleDeleteAttachment","mandatory","approversContainer","newApprovers","handleEmailChange","removeApprover","draftButton","footerButtons","validateRequesterAttributes","validateApprovalManagers","ApprovalPublicLinks","approvalPublicLinks","setApprovalPublicLinks","totalApprovalPublicLinks","setTotalApprovalPublicLinks","getFirstApprovalPublicLinksAndPreferences","getApprovalPublicLinks","requisition_public_links","alertError","requisitionPublicLink","ApprovalPublicLinksTable","selectedApprovalPublicLink","setSelectedApprovalPublicLink","selectAllApprovalPublicLinks","setSelectAllApprovalPublicLinks","deleteAlertOpen","setDeleteAlertOpen","deleteApprovalPublicLinks","setDeleteApprovalPublicLinks","editingApprovalPublicLink","setEditingApprovalPublicLink","handleDeleteApprovalPublicLinks","requisition_public_link_ids","approvalPublicLink","approvalPublicLinkHeaders","linkContainer","public_link","approval_template_name","handleEditApprovalPublicLink","publicLink","ApprovalTemplate","approvalTemplateId","entityId","setApprovalTemplateData","getApprovalTemplate","backButton","AdvancedTab","setOptions","approvalTemplateEmail","setApprovalTemplateEmail","currVal","updatedApprovalTemplateFormOptions","approvalTemplateFormOptions","tabContent","tabContentTitle","tabContentBody","defaultValues","groupBy","ApprovalTemplateSettings","templateName","setTemplateName","selectedQuestion","setSelectedQuestion","setTabNumber","templateApprovers","setTemplateApprovers","setEmailTemplates","setTempErrorMessage","invalidEmailIndex","setInvalidEmailIndex","isMounted","defaultApprovers","approvalOptions","getEmailTemplates","optionsBooleanValues","approval_form_title_position","invalid","approvalTemplateObj","for_application","optionsNumericValues","handleSubmitAction","handleValidateTitle","cloneApprovalTemplate","requisition_form","redirect_url","fieldsUrl","updateApprovalTemplate","createApprovalTemplate","path","modalTabsContainer","settingTabs","tab","tabTitle","hoverTabTitle","modalFormContainer","closeIconContainer","questionsList","ApproversListAutoComplete","handleMandatoryButton","approverItemList","mandatoryLabel","ApproversListText","invalidEmail","DefaultApproversTab","newInvalidEmailIndex","currentApprover","FormTitleTab","questionListItemSelected","questionListItem","selectButton","TemplateTitleTab","tabContentError","ApprovalTemplates","setApprovalTemplates","creators","setCreators","setActiveColumns","dropdownSetting","totalApprovalTemplates","setTotalApprovalTemplates","getFirstApprovalTemplatesAndPreferences","selectedCreatedBy","getCreators","handleChangeActiveColumns","ApprovalTemplatesTable","deleteApprovalTemplates","setDeleteApprovalTemplates","editingApprovalTemplate","setEditingApprovalTemplate","setAction","handleArchiveOrTrashApprovalTemplates","postArchiveApprovalTemplates","approval_template_ids","deleteTrashApprovalTemplates","handleUnarchiveApprovalTemplates","postUnarchiveApprovalTemplates","handleAction","approvalTemplateHeaders","titleLink","requisition_form_fields_link","approvalTemplateNote","FilterDropdown","dropdownOpen","setDropdownOpen","loadingFilters","setLoadingFilters","tempFilters","setTempFilters","setNumberOfFilters","calculateNumberOfFilters","creatorOptions","creator","popover","filterPopoverContent","scrollableFilters","filterPopoverHeader","clearButton","applyButton","filterOptionContainer","MoveApprovalTemplate","setHasError","assignedMoveOptions","setMoveJobOptions","moveTo","setMoveTo","fetchMoveJobData","getTargetEntities","moveApprovalTemplate","subTitle","noEntitys","revertloadButton","noteBody","setNoteBody","savingNote","setSavingNote","saveNote","prevApprovalTemplates","newApprovalTemplates","approvalTemplateIndex","editNotePopover","notesTitle","noteInput","maxRows","notesButtonContainer","notesCancelButton","notesEditSaveButton","ArchivedFormsAndTemplates","automationContainer","DndFieldDropdown","handleFieldSwitchChange","newSortableColumns","onClickAway","popoverContent","tableSettingsHeader","isSwitched","FieldDropdown","handleChange","entityOptions","assignedUserOptions","requesterOptions","defaultFilterOptions","sortableField","sortableSwitchLabels","template_id","cognologyRecordId","newUI","containsDuplicates","questionObj","NewApproval","entityApprovalAdmin","setLoadingEmailTemplates","setLoadingAssignableUsers","approvalEmailTemplate","setApprovalEmailTemplate","attachedDocuments","setAttachedDocuments","setAssignableUsers","loadingFormData","setLoadingFormData","dataInitialized","setDataInitialized","setJobs","setApplications","setApplication","fetchingJobs","setFetchingJobs","setFetchingApplications","fetchingInitialJobsAndApplications","setFetchingInitialJobsAndApplications","approvalAnsweredIds","setApprovalAnsweredIds","showPositionTitle","validatePositionTitle","cognology_record_id","assigned_user_id","new_ui","handleSaveDraft","draft","handleSubmitApproval","updateApprovalForm","getApprovalTemplateData","fullAdministratorList","emailTemplateQuestionsData","getApplications","formApprovers","formAssignedUser","rankObj","checkBoxObj","convertAnswer","getApproverManagers","getAssignableUsers","assignable_users","getJobs","handleDeleteDocument","newAttachedDocuments","backToJobButton","sectionSubtitle","deleted","approverOptions","renderOption","hide_email_template","enable_approval_template_for_applications","cancelButton","NewApprovalModal","isNavigating","setIsNavigating","fetchApprovalTemplates","NewApprovalModalFromCandidate","templateOptions","setTemplateOptions","fetchEnabledApprovalTemplates","getEnabledApprovalTemplates","NewApprovalPublicLink","publicLinkName","setPublicLinkName","approval_template_id","approvalPublicLinkObj","updateApprovalPublicLink","requisition_public_link","createApprovalPublicLink","prevValue","prevApprovalForms","newApprovalForms","approvalFormIndex","AddSystemField","selectStatusRef","systemFields","setSystemFields","selectedField","setSelectedField","errorField","setErrorField","addSystemField","getSystemFields","system_fields","actionsModalReducedPadding","formError","modalFooterSmallerSection","modalCreateButton","fromTime","setFromTime","toTime","setToTime","calculateTotalTime","breakTime","shiftStart","shiftEnd","add","timeDiff","diff","tableTextfield","dateAdapter","disableOpenPicker","timeString","newData","textField","isDisabled","AvailabilityPreview","weekDuration","week_duration","defaultState","val","calculateTotalShiftsAndHours","newState","totalShifts","totalHours","totalShiftsAndHours","setTotalShiftsAndHours","onRowChange","tableHeaderStyling","tableLayout","tableDivider","errorBoxCheckbox","BooleanFieldSwitch","setFieldValue","isSystemField","labelSx","NewEmailTemplateField","editingQuestion","setLabel","errorLabel","setErrorLabel","errorChoices","setErrorChoices","choiceList","setChoiceList","addChoice","removeChoice","clearChoices","updateChoice","switchChoices","useFieldChoiceList","labelRef","choicesRef","setDefaultValue","newEmailTemplateField","clearData","fieldObject","jsonString","assign","parse","putQuestion","handleChoiceInput","modalWrapper","addChoiceContainer","addChoiceHead","addChoiceLabel","modalAddChoiceButton","onRemoveChoice","inlineError","fieldTypeOptions","fieldTypeValues","Select","Rank","Availability","Checkbox","Textarea","DateOptions","NewField","fieldType","setFieldType","enabledSwitch","setEnabledSwitch","requiredSwitch","setRequiredSwitch","confidentialSwitch","setConfidentialSwitch","rateableSwitch","setRateableSwitch","setWeekDuration","weekStartDay","setWeekStartDay","headingOne","setHeadingOne","headingTwo","setHeadingTwo","setAllowBreak","fieldTypeRef","object","availabilityContainer","SortableChoice","NewSystemFieldSVG","QuestionCardSensor","activators","handler","nativeEvent","isPrimary","dataset","testid","baseVal","interactiveElements","tagName","isInteractiveElement","Questions","allQuestions","setAllQuestions","approvalTemplateSettings","setEditingQuestion","handleDragEnd","updateApprovalFormQuestions","questionIndex","is_approval_form_title","newTemplateData","entity_id","catch","finally","questionsPageContainer","infoIcon","enable_declaration_of_conflict_of_interest","actionsContianer","actionButton","questionsHeader","OptionToggleGroup","settingButton","noQuestionsContainer","noQuestionsText","SortableItem","tempEnabled","setTempEnabled","tempRequired","setTempRequired","tempConfidential","setTempConfidential","tempIsFormTitle","setTempIsFormTitle","isDragging","cloneQuestion","handleUpdateActions","fieldId","indexOfAllquestions","newApprivalFormTitleQuestionId","handleSelectApprovalFormTitle","manual","dialogProps","setDialogProps","dialogId","questionsWrapper","dragHandle","questionInput","sortableItemSwitchContainer","answered","handleCloneQuestion","deletable","toTitleCase","sentence","word","ActivityIcon","activity","verb","actor","system","ActivitiesTab","candidateId","setAddRecord","activities","loadingActivities","getCandidateActivities","getApplicationActivities","addCandidateNote","addingCandidateNote","isSms","previousActivityIsOnDifferentDate","activity_html","email_status","emailStatus","showNoteContainer","indirect_object","overflowY","AddRecord","Candidate","CandidateState","CandidateReducer","InitialCandidateState","openMergeModal","setOpenMergeModal","loadingCandidate","getCandidateData","candidateHeaderContainer","candidateNameHeader","candidateActionIconsContainer","Candidates","duplicated_candidates","openEditModal","editedCandidate","CandidateDispatch","openDeleteModal","candidateApplicationsTableLink","sister_entity_application","application_link","job_link","job_title","entity_link","candidateApplicationsRating","getRatingColor","candidateApplicationsTableStatusContainer","status_colour","CREATE_TEXT","tag_list","updateCandidateTags","candidateSectionHeader","clearIcon","entity_tags","newTags","startsWith","isNew","listStyle","popper","AddEditTaskModal","createCandidateTask","creatingCandidateTask","updateCandidateTask","updatingCandidateTask","deleteCandidateTask","deletingCandidateTask","candidateTaskModalIsOpen","CandidateTask","completeCandidateTask","completingCandidateTask","CandidateTasksTab","EmptyTab","TaskWorkflowModal","taskWorkflowModalIsOpen","CandidateTasks","getCandidateTasks","Entities","MergeCandidates","confirmMerge","setConfirmMerge","mergeCandidates","mergingCandidates","address1","address2","notepad","setNotepad","streetDetails","street_number","street_type","countryDetails","ProfileTab","updateCandidateNotepad","updatingCandidateNotepad","loadingApplications","candidateApplicationsTableSettings","getCandidateApplications","employee_id","candidateNameContainer","linkedInButton","candidateProfileDetails","candidateProfileAddress","candidateApplicationsTableState","candidateApplicationsTableColumn","CandidatePage","CandidatesState","CandidatesReducer","InitialCandidatesState","pref","getDensityPreferences","handleUserPreferenceChange","postUserPreferences","candidatesTableSettings","loadingCandidates","getCandidates","candidatesTableState","candidatesPageContainer","candidatesPageHeader","idLabel","candidatesActionsListItem","CandidatesDispatch","Link","attribute","number_of_applications","DeleteCandidate","successSnackbarPayload","errorSnackbarPayload","linkedin","address","candidateData","candidateAddress","updateCandidate","updatingCandidate","arg","address_attributes","country_id","countryId","state_id","stateId","newCandidates","updatedCandidate","editCandidateModalContent","editCandidateModalDetailsHeader","editCandidateModalDetailsRows","streetTypes","streetTypesAutocomplete","editCandidateListboxStyle","editCandidateAutocompleteTextfield","newErrors","candidatesTableColumn","CandidatesPage","BetaButton","applicationBetaButton","disableDropDown","createButtonAction","createButtonDiv","addIcon","dropdownIcon","LoadingButtonView","loadingCaption","rest","LoadingButton","activeStep","buttonSecondaryLight","steps","isSaving","buttonSecondary","DonutChart","font","family","cutout","borderWidth","labels","external","externalTooltipHandler","layout","bottom","datasets","hoverBackgroundColor","hoverOffset","LineChart","chartAreaBorder","beforeDraw","chart","args","ctx","chartArea","save","strokeStyle","lineWidth","setLineDash","borderDash","lineDashOffset","borderDashOffset","strokeRect","restore","tension","grid","drawBorder","drawTicks","pointRadius","pointHoverRadius","hoverBorderWidth","hoverBorderColor","pointBackgroundColor","pointBorderColor","autocompleteService","placesService","COUNTRY_ABBR","Australia","Canada","requiredRef","activeError","viewJobsAd","city","script","createElement","appendChild","loadScript","getPlacePredictions","trailing","leading","google","maps","places","AutocompleteService","PlacesService","componentRestrictions","AutocompleteSessionToken","types","results","newOptions","terms","reverse","prevAnswers","formControl","forcePopupIcon","autoCompletePopper","placeId","place_id","getDetails","place","PlacesServiceStatus","OK","formattedAddress","addressComponents","removeCountryFromAddress","formatted_address","handlePlaceSelect","onInputChange","newInputValue","autoCompleteRoot","autoCompleteClose","structured_formatting","main_text_matched_substrings","parts","main_text","part","highlight","secondary_text","attachmentHovered","setAttachmentHovered","emailAttachmentsList","templateAttachment","emailAttachmentContainer","emailAttachmentIcon","emailAttachmentName","humanFileSize","attached_file_size","newAttachments","removeAttachment","AutocompleteInput","optionLabel","dateField","matchedValue","onKeyPress","setShowPreview","alignSelf","CircularProgressWithLabel","thickness","circle","CircularStatic","progress","setProgress","timer","setInterval","prevProgress","clearInterval","EmptyState","svgIcon","populateValue","FormCheckboxGroup","checkboxStyle","labelStyle","defaultChecked","tip","FormRadioButtonGroup","radioStyle","onInternalChange","FormRadioButtonWithTextInputGroup","populateRanks","choices","ranks","FormRankField","setRanks","rankFieldOption","rankFieldSelect","newRanks","FormSelectField","FormSelectWithIconField","TextInput","resize","willChange","dataTestId","maxLength","inputRef","textWrap","unit","FormTextFieldBlur","debounceTime","DebouncedFormNumberField","DebouncedFormTextFieldBlur","MultilineDebouncedFormTextField","successDialog","successCheck","successDialogText","advertisement_id","dialogButtonContainer","successDialogContainer","InputWrapper","StyledTag","Listbox","MultiSelect","setOpen","getRootProps","getInputProps","getTagProps","getListboxProps","getOptionProps","groupedOptions","autoSelect","displayOption","MultiSelectWithCreate","hasMaximumCharacter","MultiTagInput","isFocused","setIsFocused","selectedForDelete","setSelectedForDelete","setMessage","handleAddTag","multiTagLabel","textAndTagsWrapper","focusedStyles","tagSelected","tagIconButton","handleRemoveTag","tagIcon","onPaste","clipboardData","uniqueTags","invalidTags","validTags","handlePaste","textInput","caretColor","multiTagHelperText","fixedErrorBox","ServerDay","onDaySelect","outsideCurrentMonth","isSelected","nextDayIsSelected","previousDayIsSelected","pickersDay","ActionBar","onAccept","onCancel","white","MultipleDatesPicker","setSelectedDays","n","isAfter","onActionAccept","multipleDatesPickerLabel","multipleDatesPickerInput","multipleDatesPickerExtraDates","slots","actionBar","multipleDatesPickerStaticDatePicker","py","px","idx","DayItem","removeSelectedDate","mb","typography","SelectField","todayButtonStyling","maxDate","minDate","dateLibInstance","pickerStyles","timeSteps","hours","minutes","openTo","UncontrolledSingleDatePicker","handleDateChange","ControlledTimePicker","minutesInterval","materialTimePicker","calendarHeader","smsTemplateName","setSmsTemplateName","smsTemplateError","setSmsTemplateError","notify","smsTemplates","fetchingSmsTemplates","getSmsTemplates","sms_templates","saveTemplate","savingTemplate","saveSmsTemplate","addToEventListboxProps","addToEventCharacterCount","saveSMSTemplateError","saveSMSTemplateButton","TransitionDown","getSnackbarStyle","snackbarSuccess","snackbarWarning","snackbarError","isVisible","setIsVisible","clearSnack","handleClear","TransitionComponent","ClickAwayListenerProps","mouseEvent","touchEvent","snackbarMessageIconContainer","getSnackbarIcon","snackbarMessage","snackbarButton","StyledTooltip","customHeight","firstElement","isMouseEnter","setIsMounterEnter","elevation","chip","tagContent","styledChip","styledChipLabel","errorDescription","bold","italic","list","renderRow","displayTooltip","setDisplayTooltip","dataSet","inlineStyle","refCallback","hasOwnProperty","enterDelay","noWrap","OuterElementContext","OuterElementType","outerProps","ListboxComponent","itemData","smUp","breakpoints","up","noSsr","itemCount","itemSize","getChildSize","gridRef","resetAfterIndex","useResetCache","Provider","outerElementType","innerElementType","overscanCount","StyledPopper","listbox","boxSizing","hasIdAndRef","disableListWrap","PopperComponent","optionIndex","formattedTemplates","groupName","RenderRow","VirtualizeGrouped","renderGroup","modalButtonBase","modalSecondaryButton","DENSITIES","ColumnSettings","sendLocalUserPreferences","newColumns","ui_preference","clearPreferenceCache","handleDensitySwitchChange","newDensity","Filters","MIN_DATE","dateFieldClass","datefieldsContainerClass","dateRangeInputsRefs","handleDateOrder","activeElement","handleDateFieldChange","datePickerCalendar","onlyStartDate","addDayToRange","first","daysOfWeek","last","modifiersStyles","borderTopLeftRadius","borderBottomLeftRadius","borderTopRightRadius","borderBottomRightRadius","filterSelectGroupStyle","filterSelectSubLabelStyle","sliderContainer","adornmentContainer","StyledInput","inputPostcode","setInputPostcode","inputRadius","setInputRadius","handleRadiusSearch","ratingSlider","valueLabelDisplay","valueLabelFormat","getAriaValueText","parentRef","tableAndArrowsContainer","handleScrollableExit","handleScroll","hasActionItems","numberOfRows","showNoItemsMessage","allItemIds","actionsTableCell","handleSelectAllOnPage","notSortable","skeletonContaineStyle","noResultsContainer","leftPosition","setLeftPosition","handleScrollLeft","handleScrollRight","HEIGHT","MARGIN_BOTTOM","ExpandableLinkedTags","showExpandedItems","setShowExpandedItems","showTooltip","setShowTooltip","handleShowTooltip","displayedItems","displayBadge","Tag","badge","numberOfItems","viewAllItem","showLess","disableFocusListener","disableHoverListener","onAuxClick","textOverflow","BORDER_HEIGHT","userSelect","notesExpanded","setNotesExpanded","hasOverflow","setHasOverflow","scrollHeight","noteContainer","noteSubject","noteUser","noted_by","notesExpandContract","setNoteSubject","setPreviewOpen","setSelectedAttachment","sortedAttachments","applicationLink","isShareable","attachmentItem","isLoadingSelectAll","setIsLoadingSelectAll","selectAllWithActionsTooltip","selectAllWithActionsTooltipButton","defaultSort","modals","selectedItems","addSelected","removeSelected","addAllPageItems","removeAllPageItems","NoEventsSVG","FelixAISVG","NoTasksSVG","FelixAIActiveSVG","AcceptedIcon","DeclinedIcon","moreContent","dialog","tickWrapper","tickGreen","crossWrapper","crossRed","dialogHeader","confirmationButton","buttonRed","setConfirmCancelIsOpen","generatingDownload","setGeneratingDownload","downloadURL","setDownloadURL","emailFallbackMessage","setEmailFallbackMessage","hasFetchedData","setHasFetchedData","handleDownload","downloadModalContent","downloadModalDescription","download","FilePreviewModal","allowDownload","setText","setPreview","getText","getPreveiwImage","getAttribute","onDocumentLoadSuccess","previewable","fileLinkContainer","attached_content_type","overflowX","ad","jobAds","setAds","adsStatus","setDialogLoading","setDialogUrl","setDialogAdID","setDialogTitle","setDialogDescription","setDialogButtonText","setDialogButtonCallback","setSelectedAd","handleSnack","handleArchive","urls","indeed_urls","viewjobs_urls","adBoard","getExpireAdButtonStyle","class","handleExpire","getContinueDraftButtonStyle","buttonGreenLight","getCloneAdButtonStyle","put","newAds","copyJob","expired","renderActiveIcons","renderDraftIcon","renderExpiredIcon","iconRed","buttonStyle","handleButtonStyle","actionsContainer","actionButtonContainer","columnRefrence","columnButtonPadding","showIcons","handleDelete","selectedAd","ADTYPES","filterAnchorEl","setFilterAnchorEl","selectedAdType","handleAdTypeChange","filterMenu","AdTable","dialogUrl","dialogTitle","dialogButtonText","dialogButtonCallback","dialogLoading","dialogOpen","isSnackOpen","setIsSnackOpen","snackMessage","setSnackMessage","bb_job_title","rowHeader","center","bb_job_ref","broadbean_urls","BroadbeanAds","ads","iframeUrl","setIframeUrl","a11yProps","getAds","new_broadbean_url","containerOuter","banner","toggleButtonGroup","substring","handleClone","council_jobs_ad_expiry_date","approved","iconGreen","active_on_seek","active_on_council_jobs","preview_url","edit_url","clone_url","ApproveSVG","CouncilJobsAd","jobAdId","setAd","approving","setApproving","handleApprove","getAd","adPageContainer","adPageHeader","backToJobAdButton","approveButton","headerContent","detailsTitle","ad_details","council_jobs_employer_name","council_jobs_categories_to_sentence","job_type_to_sentence","council_jobs_apply_type","council_jobs_apply_value","council_jobs_posting_options","updated_by","CouncilJobsAds","newAdButton","handleInitialContent","contentArray","getDefaults","defaults","indexs","NewCouncilJobsAd","adDetails","setAdDetails","setIsSaving","council_jobs_contact_email","council_jobs_region","council_jobs_state","council_jobs_job_type","url_str","clone_id","handleSave","send_to_council_jobs","council_jobs_categories","job_ad","region","categories_options","job_type","isExpiryDialogOpen","setExpiryDialogOpen","handleLocalExpiryChange","newExpiryDate","setNewExpiryDate","calendarOpen","setCalendarOpen","expired_at","expiryMessage","expiryDateMessage","advertisement_published_at","disableMaskedInput","published","publishedDate","calculateMinDate","expiryPostPickerMessage","expiryChangePreview","expiryDateContainer","expiryTitle","expiryDate","buttonDateConfirm","seekResponse","ExpiryPopover","immediateExpiryOnClick","dateExpiryOnClick","expiryActionsAnchorEl","setExpiryActionsAnchorEl","filterButton","dialogAdID","IdibuAds","newUrl","setNewUrl","new_ad_url","iframe_url","jobCellRef","tableContainer","expiry","sponsored","sponsorText","IndeedAds","setPage","maxAds","setMaxAds","maxPages","setMaxPages","setSelectedAdType","loadingCreate","setLoadingCreate","errorModalOpen","setErrorModalOpen","getInitialAds","job_ads","currentType","currentRows","createNewJob","isSingleJob","defaultPage","adminUser","expiryDialogOpen","downIcon","buttonExpiry","openExpiryDialog","handleReplay","post","showDeleteOption","listing_location_display","seek_live_url","newDate","adId","createAdDialogOpen","setCreateAdDialogOpen","seekAccounts","selectedSeekAccount","setSelectedSeekAccount","jsonResponse","reset","useInitSeekAd","dialogContainer","dropdown","SeekAds","setAdminUser","setErrorMessage","useSeekAccounts","admin_user","TableSkeleton","skeletonComponent","boxStyle","borderTop","featured","ViewJobsAds","tableHeaderRow","tableCellData","tableBody","noRecords","AttachmentAndGoogleDriveSelector","setGoogleFileList","maxFiles","noClick","noKeyboard","onDragOver","setIsDraggedOver","onDragLeave","onDropRejected","setIsRejected","onDrop","acceptedFiles","parsedFiles","File","uploadFiles","isDraggedOver","isRejected","percentCompleted","setPercentCompleted","isGoogleLoading","setIsGoogleLoading","setClient","developerKey","setDeveloperKey","FormData","append","onUploadProgress","progressEvent","openPicker","authRes","popup","setPopup","uploadFromGoogleDrive","openGoogleDrive","w","h","screen","openPopup","developer_key","client_json","clientId","client_id","viewId","viewMimeTypes","showUploadView","showUploadFolders","supportDrives","multiselect","customScopes","callbackFunction","docsIds","docs","doc","handleOpenPicker","checkUrlInterval","closed","close","dragAreaWithGoogleDrive","dragAreaOver","fillOpacity","buttonGroup","selectFilesButton","selectFilesGoogleButton","AttachmentSelector","fileRejections","validator","maximumSize","dragArea","scale","fileRejection","DebounceInput","DocTypeIcon","doctype","HtmlEditor","editorRef","handleEditorAction","getContent","initialValue","onInit","editor","init","menubar","statusbar","paste_data_images","min_height","max_height","autoresize_bottom_margin","relative_urls","remove_script_host","browser_spellcheck","convert_urls","toolbar1","toolbar2","powerpaste_word_import","powerpaste_html_import","content_style","HtmlEditorFonts","contextmenu","font_size_formats","font_family_formats","QuestionHTML","QuestionFieldGenerator","csvOptions","selectedCSVOption","setSelectedCSVOption","setPositionId","questionHTMLTemplate","formDateWrapper","formDatePickerStyles","lookUpButton","QuestionFieldViewer","questionsRankInput","RequisitionInfoViewer","requisitionInfos","setRequisitionInfos","updateAnswer","updateCheckbox","SingleAttachmentSelector","acceptedFile","isHovered","setIsHovered","dragAreaSingle","dragAreaOverSingle","selectFilesButtonSingle","formatUserPermissionsAsArray","rolesArray","channel","onReceive","setSocketConnected","subscription","consumer","subscriptions","remove","create","connected","received","newCalendarEnabled","newApplicationsRef","hasRecruitmentTeamEnabled","recruitment_team_enabled","flexBasis","Banner","EventCircle","backgroundSize","backgroundPosition","kpiSection","fluctuation","iconColor","isSuccess","getKpiItems","fluctuation_daily","toLocaleString","Loader","recruitment_ad_user","pinned","setOrder","orderBy","setOrderBy","titleContainer","sectionTitle","ml","mr","jobsConfig","fetchUISwitch","filtersApplied","jobStatusFeature","showNewApplicants","hideArrows","isDashboard","TaskItem","handleCompleteTask","isCompleted","getColor","mt","taskable_type","flexShrink","priorityTag","dateTag","checkTag","STATUSES","Tab","tabRef","setTab","tabDimensions","setTabDimensions","fetchNextPage","isFetchingNextPage","hasNextPage","pageParam","getTasks","to_do","getNextPageParam","lastPage","nextPage","completed","childNodes","buttonElement","tabContainer","taskContainer","scrollTop","flex","allItems","flatMap","dateCurrent","isFirst","isLast","calculateAllItems","hasUpcomingEvent","headerContainer","copyEventLinks","darkGrey","MAX_CHARACTERS","AttendeeList","filteredAttendees","attendee","Attendee","numberOfAttendees","tagText","application_url","lineContainer","connectingLine","infoContainer","candidatesContainer","timeContainer","eventSubject","eventLinksHTML","eventDateTimeString","toLocaleDateString","weekday","toLocaleTimeString","hour","minute","eventLink","candidateLinks","copyRichHTML","bodyContainer","editInfoText","QuestionsList","loadingQuestions","setLoadingQuestions","switchContainer","enabled_for_summary","GoogleScript","googleScriptTabJobData","setGoogleScriptTabJobData","setIsEdited","templateRef","google_conversion_script","hintText","PanelWorkflow","chairsOptions","setChairsOptions","panelWorkflowTabJobData","setPanelWorkflowTabJobData","fetchWorkflowData","getJobPanelChairs","panel_chairs","panel_members","panel_observers","RequisitionInfo","requisitionInfoTabJobData","setRequisitionInfoTabJobData","setEditable","requisitionInfoId","setRequisitionInfoId","getRequisitionInfos","requisition_info","createRequisitionInfos","modalCreateRequisitionButton","requisitionWrapper","requisitionInput","updateRequisitionButton","Revolve","revolveTabJobData","setRevolveTabJobData","revolve_position_title","TestGrid","automatedTests","testGridPackages","setAutomatedTests","setApplicationStatuses","setTestGridPackages","testIndex","setTestIndex","getAutomatedTests","test_grid_tests","getTestgridPackages","test_grid_packages","handleOpenModal","removeAutomatedTest","newAutomatedTests","testGridContainer","titleAndButtonContainer","newButton","cols","reply","tgPackage","trigger_status_id","pass_at","pass_status_id","fail_status_id","tableActions","tableEditButton","tableDeleteButton","noTests","TestGridModal","selectedPackage","setSelectedPackage","selectedTriggerStatus","setSelectedTriggerStatus","passAt","setPassAt","selectedPassStatus","setSelectedPassStatus","selectedFailStatus","setSelectedFailStatus","trigger","pass","passStatus","failStatus","refObject","applicaitonStatuses","sliderLine","percentageSlider","modalSendButton","errorRef","newTests","AutoForward","autoForwarders","templatesList","setAutoForwarders","forwardIndex","setForwardIndex","getAutoForwarders","auto_forwarders","getTemplatesAndPlaceholders","removeAutoForwarder","immutableRemove","forwarder","recipient_emails","noAutoForwarders","isLoadingTemplateList","NewAutoForward","tempEmails","setTempEmails","isLoadingTemplate","setIsLoadingTemplate","selectedStatus","setSelectedStatus","handleSelectTemplate","secondsToString","previewSkeleton","htmlContent","previewHeader","emailPreview","scope","auto_forwarder","newAutoForwarders","AutoReply","autoReplies","setAutoReplies","hasCareAdvantageIntegration","setHasCareAdvantageIntegration","setCareAdvantageEvents","replyIndex","setReplyIndex","getAutoReplies","auto_emails","removeAutoReplies","email_template_name","NewAutoReply","emailSetting","setEmailSetting","email_setting","care_advantage_event_name","targetEvent","newReplies","AutoSMSForward","autoForwards","setAutoForwards","getAutoForwards","auto_sms_forwards","removeAutoForwards","forward","NewAutoSMSForward","tempPhones","setTempPhones","smsTemplateOptions","getBodyFromSmsTemplateValue","jsonBody","newForward","AutoSMSReply","setEventTypes","auto_sms_replies","sms_template_name","isLoadingEventTypes","NewAutoSMSReply","selectedEventType","setSelectedEventType","autoReply","AutoStatuses","handleEditTabChange","questionBased","ratingBased","questionBasedAS","setQuestionBasedAS","ratingBasedAS","setRatingBasedAS","hasRadioButtonQuestions","setHasRadioButtonQuestions","getQuestionBasedAS","auto_statuses_question_based","getRatingBasedAS","auto_statuses_rating_based","autoStatuses","setAutoStatuses","NoAutoStatusSVG","xmlnsxlink","QuestionBased","new","addField","deleteField","updateField","hoveredField","setHoveredField","radioQuestions","setRadioQuestions","getRadioButtonQuestions","handleAddNewAutoStatus","auto_status_question_based","auto_status_conditions_attributes","handleNewAutoStatusField","tempAutoStatus","filteredQuestion","f","handleRemoveField","fieldIndex","handleDeleteAutoStatus","autoStatusesCopy","handleChangeStatus","statusId","prevAutoStatuses","handleChangeField","handleEnableStatus","autoStatusesContainer","autoStatus","statusIndex","autoStatusesSubContainer","statusFormLine","addNewFieldButton","deleteButton","addNewStatusButton","noStatusesAddButton","RatingBased","handleRatingChange","prevAutoStatus","rating_range","auto_status_rating_based","min_rating","max_rating","handleStatusChange","handleNewAutoStatus","DebouncedSlider","debouncedOnChange","getAriaLabel","TimeBased","statusTransitions","setStatusTransitions","numberError","setNumberError","getStatusTransitions","status_transitions","statusTransition","status_transition","newStatusTransitions","handleNewStatusTransition","from_status_id","to_status_id","handleDeleteStatusTransition","debouncedNumberInputCallback","newNumberError","CancelButton","DelaySelect","valueWithFallback","DELAY_OPTIONS","DelaySelectWrapper","ImmediateChangesNotice","Description","descriptionTabJobData","setDescriptionTabJobData","aiPrefillData","setSummary","setDescription","setButtonHovered","aiStudioOpen","setAiStudioOpen","warnText","emojiRegex","headerRow","EditJob","aiInterview","aiStudio","aiStudioSummaries","jobFeedActive","canAddIndeedDemographicQ","mainTabValue","setMainTabValue","jobLoading","setJobLoading","editTabValue","setEditTabValue","changeURL","timezoneOptions","setTimezoneOptions","brandOptions","setBrandOptions","requisitionsOptions","setRequisitionsOptions","classificationsOptions","setClassificationsOptions","localOptions","setLocalOptions","autoRaterOptions","setAutoRaterOptions","assignedUsersOptions","setAssignedUsersOptions","salespersonOptions","setSalespersonOptions","jobPanelChairsOptions","setJobPanelChairsOptions","rmTeamOptions","setRmTeamOptions","changeTab","setChangeTab","generalTabJobData","setGeneralTabJobData","templateTabJobData","setTemplateTabJobData","sourcesTabJobData","setSourcesTabJobData","sourceListIds","setSourceListIds","attachmentsTabJobData","setAttachmentsTabJobData","candidateAttachments","setCandidateAttachments","warningModalOpen","setWarningModalOpen","hasActiveSeekAd","setHasActiveSeekAd","isToggled","setIsToggled","lastUpdate","setLastUpdate","isEdited","resolvedIndex","convertToPanelIndex","convertToNormalTabIndex","getJob","setFetchedData","jobResponse","editGeneralJobDefault","editPanelWorkflowDefault","editGoogleScriptDefault","editRevolveDefault","editRequisitionInfoDefault","editDescriptionDefault","editTemplateDefault","editSourcesDefault","candidate_attachments","fetchActiveSeekAds","getActiveSeekAd","paid_role","user_type","onbeforeunload","mutation","updateJob","handleUpdateJob","editObj","editJobObject","lastSaved","lastSavedFormat","pickedtimezone","editJobPageHeader","backAndLastSaveContainer","editTabsContainer","editTabs","editTabIndicator","tabsSubheader","toggleIcon","iconPosition","TabGroup","JOB_INFORMATION","CANDIDATE_SETTINGS","AUTOMATION","ADVANCED","ConfigureApplicationHRQuestions","test_grid_configured","revolve_configured","entity_settings","show_panel_workflow","newJobData","setNewJobsData","applicationQuestionTemplateId","application_question_template","EditJobToggleLeftSVG","EditJobToggleRightSVG","Classifications","selectedClassification","setSelectedClassification","classification_list","classification","classification_ids","prevState","parent","classificationLabel","selectGroup","generalModalFormLine","classifications","sub_classifications","sub_occupation_classifications","addSourceButton","tempArray","addSourceLabel","expandOptionalFields","setExpandOptionalFields","loadingTimezones","isLoadingTimezones","setCountries","expires_at","employment_status","salary_info","number_of_vacancies","from_email","external_approval_id","checkReference","referenceValidation","valid","correct_format","countriesWithlabels","localeCompare","handleGetCountries","fetchOptionalSectionData","brand","autoRater","sales","rmTeam","local","getJobTimezones","getJobBrand","getJobrequisitions","getJobClassifications","getJobAutoRaters","getJobAssignableUsers","getSalesPeople","getRMteamMembers","getJobLocales","brands","auto_raters","sales_people","rm_team_members","locales","handleValidateFields","firstError","isSame","accordionRoot","accordionSummary","entity_email","locale","address_state","fullWidthFieldContainer","editJobsConfig","additionalOptionsDefaults","linkedin_listing_opt_in","auto_ratings","auto_rater","entity_privacy_acknowledgement","entity_privacy_acknowledgement_link","internal","features","smart_form_recipients","show_smart_form_recipients","pin_jobs","pinned_users","salesperson","rm_team_member","HRQuestions","noticeHeader","noticeBody","questionsTitle","canEnable","addHRQuestionSystemField","enableable","setEnableable","putHRQuestion","newHRField","NoQuestionSVG","deleteHRQuestion","autoRating","isDemographicQuestion","setIsDemographicQuestion","felixAISwitch","setFelixAISwitch","baseSwitchStyle","aiSwitch","updateRank","updateRankValue","updateRating","is_demographic_question","felix_ai_interview_prompter","errMsg","showAiToggle","handleSelectRating","handleRankInput","handleSelectRankValue","autoRatingOptions","rank","rank_value","NoQuestionArrowSVG","QuestionList","filteredQuestions","applicationCount","applications_count","aiStudioField","updateJobQuestions","tempRateable","setTempRateable","tempWeight","setTempWeight","weight","tempFelixAI","setTempFelixAI","isQuestionEditable","originalWeight","originalAiInterviewPrompter","switchTypes","aiPrompterToggleText","actionButtonsContainer","SortableItemSwitch","isActive","isEditable","switchLabel","AccountClockIcon","SourceTypes","Sources","sourceOptions","setSourceOptions","selectedCountry","setSelectedCountry","selectedSource","setSelectedSource","getSourceOptions","sourcesData","sortedSourcesData","tempSources","SourcesIconSVG","Template","template_enabled","EditJobPage","SkeletonTable","_row","_cell","j","AddTasks","selectedApplicant","setSelectedApplicant","setAssignedUserOptions","assignTo","setAssignTo","fetchJobs","useJobsForTask","fetchApplications","useApplicationsForTask","fetchCreateFormData","getTask","getPriority","createNewTask","newTask","pt","CeridianDayforce","setEnabled","retryLoading","setRetryLoading","entityUsesCeridian","entity_is_configured","handleRetryUpload","handleFilter","getStatusText","Processing","Pending","failed_file_renaming","upload_confirmed","uploading_failed","filterContainer","export_status","upload_time","exported_successfully","exported_confirmation_time","clickable","noCandidateContainer","MoveJob","getMoveJobs","moveJob","RatingSet","deleteBulk","setDeleteBulk","ratingOptions","setRatingOptions","raterOptions","setRaterOptions","raterName","setRaterName","deleteUserConfirm","setDeleteUserConfirm","fetchRatingData","ratingSets","raters","getRatingSets","getRaters","rating_sets","deleteSet","deleteRatingSet","deleteRaters","deleteRaterSet","buttonGreen","deleteApplicant","tableRow","rater_name","sets","noWorkflows","Revisions","openContent","setOpenContent","versionNumber","setVersionNumber","revisions","setRevisions","disableButton","setDisableButton","createNewVersion","revertRevision","fetchRevision","ticked","getRevision","filteredRevisions","job_revisions","revision","filteredLogs","logs","change_from","change_to","filteredOptions","optionKey","prototype","call","currentRevision","revisionsModalContent","revisionsTitle","revisionsContent","sliderInput","marks","revisionsSubTitle","changesTableContent","revisionsVersionsIcon","revisionsVersionsContent","revisionsVersionsContentBlue","editor_url","optionsText","revisionsVersionsContentDescription","blind_rating","hide_rating_activity","title_field","linkedin_field","indeed_apply","employee_id_field","attachmentContent","codeChangesOnly","renderTableData","noRevisions","revisionsActions","StartWorkFlow","workflowOptions","setWorkflowOptions","usersOptions","setUserOptions","workflowName","setWorkflowName","newWorkflowURL","setNewWorkflowURL","fetchWorkFlowData","createNewWorkflow","createNewWorkflowButton","jobAttachments","jobHasPrivacyAcknowledgement","jobIsLoading","jobOptions","jobSources","newNoteOnApplicationEnabled","SORTABLE_COLUMN_IDS_TO_REMOVE","SortableColumnId","NOTES","NOTE_PAD","PERMANENT_RECORD","filterableStatuses","setFilterableStatuses","filterableCountries","setFilterableCountries","filterableSuburbs","setFilterableSuburbs","selectAllApplications","setSelectAllApplications","totalApplications","setTotalApplications","initialModalsOpen","newApplicationPage","setNewApplicationPage","handleSortTranslate","saveSortableColumns","rowCount","getFirstApplicationsAndPreferences","sortAndFilterData","columnsAndLimitData","sortAndFilterpreferences","columnsAndLimitPreferences","selectedCountries","selectedSuburbs","updatedColumns","getUpdatedSortableColumns","exclude_job_attribute","sort_by","sort_direction","getFilterableStatuses","filterable_statuses","getFilterableCountries","getFilterableSuburbs","suburbs","deselectAll","handleDeselectCandidate","clearAllSelection","showGender","applicationsContainer","handleOpenAIInsights","aiInsights","statusList","countryList","suburbList","newApplication","newApplicationButton","componentsProps","enableSortableColumn","prevSortableColumn","updatedSortableColumns","sortableColumn","getAllApplications","handleTemplatePermissions","inviteToTimeslot","deleteApplications","ApplicationsActionsPanel","ai_studio_summaries_enabled","foundu_enabled","foundu_auth_url","useContext","EntityContext","changeStatus","ExternalEmailIcon","exportToPdf","move","exportToFoundu","actionButtonAI","ApplicationsTable","selectedApplication","setSelectedApplication","isFetchingAllApplications","setIsFetchingAllApplications","attachmentsListOpen","setAttachmentsListOpen","statusAnchorEl","setStatusAnchorEl","statusIsSending","setStatusIsSending","candidateCellRef","statusDropdownRef","applicantAnchorEl","setApplicantAnchorEl","setLastHoveredApplicant","selectedAIApplicant","setSelectedAIApplicant","notesRef","activeNote","setActiveNote","canAddNote","putApplicationStatus","newApplications","selectedNote","isNotePad","NoteState","NOTEPAD","requestAnimationFrame","newApplicationLink","handleHover","candidateCell","candidateIcon","applicationStatus","statusDropdown","statusClamp","anchor","statusLoader","statusColour","noteRef","handleShowAttachmentsList","aiQuestionsButton","allApplications","noteState","handleSelectAttachment","statusDropdownItems","statusDropdownItem","CeridianIcon","ResendIcon","statusOptions","countryOptions","suburbOptions","filterSwitchLabels","filterSwitchActive","filterSwitch","isNotEditable","setIsNotEditable","noteError","setNoteError","prevApplications","applicationIndex","currentApplication","errorText","noteEditButtonContainer","emojiInString","NOTES_ERROR_MESSAGE","usePlaceholders","useEmailTemplatesOptions","getEmailTemplate","bookableCandidates","closeModalCallback","CSVExport","selectedFields","setSelectedFields","individualRating","handleClickChip","previousSelections","csvExportModal","csvExportHeader","csvExportSubheader","chipPacket","chipSelected","csvExportButton","ChangeStatus","noStatusSelected","setNoStatusSelected","tempGlobalSelected","setTempGlobalSelected","confirm","change_status","EmailCandidates","setIsLoadingTemplateList","sendableBody","setSendableBody","setPlaceholders","isLoadingEventList","setIsLoadingEventList","commaSeparatedAppIds","errorData","ExportFoundU","isSubmitting","setIsSubmitting","setSendEmail","failedCount","failed","workato","ExportPDF","failedExports","setFailedExports","centerColumn","exportErrors","failedExport","ExternalEmail","includeSummaries","setIncludeSummaries","selectedRecruiter","setSelectedRecruiter","timeslotHovered","setTimeslotHovered","recruiterRef","eventTypeRef","bodyRef","selectedMonth","setSelectedMonth","getTimeslots","queryString","handleSubmitEmail","sameDay","datelist","onMonthChange","dailyTimeslotsContainer","timeslotTime","timeslotType","ellipsis","expandedTimeslot","timeslotNote","modalCandidatesHeader","MoveApplications","setIsLoadingJobs","jobList","setJobList","noJobSelected","setNoJobSelected","jobListRef","getJobList","createApplicantQuestionsObject","genderOptions","NewApplication","apply_with_mobile","apply_with_phone","regionValue","setRegionValue","countryValue","setCountryValue","applicantDetails","setApplicantDetails","applicantDetailsDefault","applicantQuestions","setApplicantQuestions","uploadErrors","setUploadErrors","sourceValue","setSourceValue","sourceError","setSourceError","privacyAcknowledged","setPrivacyAcknowledged","privacyError","setPrivacyError","sendNotification","setSendNotification","uploadsRef","addressFirstLine","addressSecondLine","employeeId","sourceRef","privacyRef","handleClearForm","detailsError","uploadError","sourceInvalid","duplicates","fullWidthField","formAutocompleteDisabled","uploadSection","uploadSectionContent","upload","uploadContainer","uploadLabel","sourceContainer","modalConfirmationButton","candidate_attributes","applicationData","source_id","send_notification","SMSCandidates","hasTemplatePermissions","templatesLoading","setTemplatesLoading","setSavingTemplate","messageContent","setMessageContent","contentError","setContentError","contentRef","isSMSContentValid","getTemplates","deleteSmsTemplate","smsTemplateId","newTemplates","sms_template","editTemplate","stopPropagation","characterCount","saveSMSTemplateContainer","TempCSVExport","applications_report","with_answers","exact_states","exclude_unrated","defaultErrors","notesError","setNotesError","newNote","closeNoteHandler","notesContainer","SelectedApplicants","searchTerm","setSearchTerm","candidateSearch","selectedApplicantsTableHeader","selectedApplicantsTable","filterCandidates","statusDropdownSelected","statusClampSelected","availabilityColumnCell","onRemoveCandidate","totalAttachments","setTotalAttachments","attachmentId","deleteJobAttachment","fetchAttachments","fetchInitialAttachments","getJobAttachments","job_attachments","CandidateAttachments","isPillTick","setIsPillTick","Resume","newAttachment","setNewAttachment","activeId","setActiveId","handleDragStart","checkPillValue","handleAttachmentInput","onRemoveAttachment","handleAddAttachment","checkedPill","addAttachmentButton","onDragStart","SortableRow","ClicksNoBackgroundSVG","EmailStatus","emailStatuses","setEmailStatuses","totalEmailStatuses","setTotalEmailStatuses","previewId","setPreviewId","isCancelling","setIsCancelling","hoveredScheduleButtons","setHoveredScheduleButtons","unscheduleIndex","setUnscheduleIndex","unscheduleDialogOpen","setUnscheduleDialogOpen","unscheduledDetailsIsHovered","setUnscheduledDetailsIsHovered","selectedEmailStatusId","setSelectedEmailStatusId","fetchInitialEmailStatuses","getEmailStatuses","job_email_statuses","fetchEmailStatuses","cancelEmail","emailStatusId","cancelEmailBatch","handleCancel","newIsCancelling","resetIsCancelling","handleUnscheduleDialogOpen","statusPastTense","handlePreview","canceled_at","unscheduledEmailDetails","newHoveredRows","unsheduledDetailsPopover","unsheduledDetailsLabel","unsheduledDetailsInfo","canceled_by","cancelEmailButton","newHoveredScheduleButton","newHoveredScheduleButtons","handleOpen","disableFocusRipple","filterLabel","widgetContainer","bounced_pcent","candidateTableWrapper","noEmailStatusContainer","noEmailStatusesText","NoEmailStatusSVG","StatusTypeOcpm","BouncedSVG","ClicksSVG","DeliveredSVG","OpenedSVG","Statistics","UnsubscribedSVG","ChartWidget","Chart","ChartIcon","chartTitle","setData","dateFrom","setDateFrom","dateTo","setDateTo","chartAnimation","fetchData","fromDate","getGraphData","end_date","widget","titleAndDateContainer","backdropFilter","noDataContainer","noDataIcon","DatePicker","createContext","Job","jobCounts","setJobCounts","stateAnchorEl","setStateAnchorEl","unarchiveLoading","setUnarchiveLoading","cloneLoading","setCloneLoading","iframeLoading","setIframeLoading","stateIsSending","setStateIsSending","isResending","setIsResending","resourses","setResourses","resourceDefault","isPinning","setIsPinning","pinnedByCurrentUser","setPinnedByCurrentUser","pinned_by_user","jobCountsResponse","getJobCounts","handleStateChange","putChangedState","job_states","job_statuses","putChangedStatus","handleScrollClose","handlePin","putUnpinJob","unpinJob","putPinJob","pinJob","jobArchivedContainer","jobArchiveAlert","jobUnarchiveButton","putUnarchiveJob","job_ids","handleUnarchiveJob","actionButtons","queryParams","stateStatusContainer","stateDropdown","statusDownIcon","applicationsTabButton","open_applications_count","openApplications","publishedAt","published_at","expiresAt","createdByLink","entityLink","brandLink","brand_link","iframeContainer","frameBorder","stateOptions","SingleMultiposter","showSeek","setShowSeek","showIndeed","setShowIndeed","showIdibu","setShowIdibu","showBroadbean","setShowBroadbean","showCouncilJobs","setShowCouncilJobs","showViewJobs","setViewJobs","multiposterSelection","setMultiposterSelection","seek","indeed","idibu","broadbean","council_jobs","view_jobs","multiposterContainer","toggleContainer","logoSize","displayAdType","editMode","editingId","handleNewNote","handleEditNote","handleDeleteNote","newNoteContainer","notesNewButton","noteContent","noteText","noteActions","notesSkeleton","noNotesText","Notes","setEditMode","editedNote","setEditedNote","setEditingId","fetchNotes","getNotes","job_notes","job_note","putNote","deleteNote","noteId","noteEdit","handleNoteInput","noteEditFooter","SadNoteSVG","ApplicationsAndViews","widgetBlockNew","unique_page_views","daily_unique_views","unique_views","CreationExpiry","jobTimeZone","creationExpiryContainer","widgetIcon","DateWidget","utcDate","dayToExpired","getTime","expiryDateColor","widgetText","widgetTextTitle","widgetTextContent","infoWidgetWidth","setInfoWidgetWidth","infoWidgetRef","widgetObserver","infoWidget","jobInfoContainer","infoText","infoTextTitle","infoTextContent","Subcontainer","subcontainer","JobPage","ExportCSV","isError","setIsError","getCSVExport","postDensitySetting","setStatusOptions","publishedRange","setPublishedRange","expiryRange","setExpiryRange","validDate","setValidDate","publishedStart","publishedEnd","expiryStart","expiryEnd","publishedModifiers","expiryModifiers","handleDateInput","isStart","newTemp","updateStatusTempFilter","handleExpandChange","statusSelectOptions","updateStatusSelectOptions","addLocalStorageItem","FILTERS_KEY","multiSelectContainer","summaryTypography","accordionDetails","dateDisplay","inputFormat","dateInput","invalidDate","setFetchUISwitch","debouncedSearch","showPinnedJobs","setShowPinnedJobs","filterKeys","getEntites","getLocations","getAssignedUsers","getRecruitmentAdUsers","recruitment_ad_users","getStatuses","currentStateOptions","group_pinned","fetchUISettings","filtersLength","postUISettings","getLocalStorageItem","archivedStateOptions","iconButtonSelected","showEntitySection","Misc","tableHeadingAlignment","tableHeadingWidth","tableHeadingTransform","EnhancedTableHead","onSelectAllClick","numSelected","onRequestSort","hovered","headCell","property","sortDirection","titleHeaderCell","cellAnimate","actionsHeaderCell","maxJobs","setMaxJobs","firstLoad","setFirstLoad","setHovered","deleteJobs","setDeleteJobs","allColumns","noteRefs","vpHeight","arrowHeight","handleRequestSort","handleSelectAllClick","newSelecteds","scrollToTableTop","scrollTo","reloadJobs","handleUnarchiveJobs","putUnrchiveJobs","labelId","wordBreak","titleCell","stateColumn","noDropdown","noStatuses","noteColumn","note_index","listId","isItemSelected","selectedIndex","concat","actionsCell","iconGray","searchOrFilterApplied","handleTrashJobs","selectedJobId","pinnedJobs","setPinnedJobs","isLoadingPinned","setIsLoadingPinned","tempState","setTempState","stateError","setStateError","tempStatus","setTempStatus","pinResponse","setPinResponse","getPinnedJobs","exclude_pinned","dashboard","with_new_applications","getNewStateAndStatus","handleStateDropdownClose","changeState","handleStatusDropdownClose","newStatus","handleArchiveJobs","putArchiveJobs","cloneJob","cloningJob","tableRowSharedProps","handleStateDropdown","showDropdown","handleStatusDropdown","isPinnedSection","pinnedCount","showPinnedBorder","changeStateTense","CurrentJobsTableHeader","hideSortIcon","CurrentJobsTableRow","stateErrorTooltip","stateLoader","formatDate","postJobNote","prevJobs","newJobs","jobIndex","NewJob","confirmCreatedJobOpen","setConfirmCreatedJobOpen","confirmFailJobOpen","setConfirmFailJobOpen","createType","setCreateType","setJobOptions","jobDefaultOptions","setJobDefaultOptions","prefixReference","setPrefixReference","clonedJob","setClonedJob","copiedJob","setCopiedJob","createJobDefault","editJobUrl","setEditJobUrl","tlpPreviewCollapsed","setTlpPreviewCollapsed","setEntities","selectedEntity","setSelectedEntity","loadingEntities","setLoadingEntities","getEntities","current_entity","importResources","createJob","clonedOptions","prefix","cloneJobsOptions","referencePrefix","auto_job_reference_prefix","verticleLineWhite","stepNumberGreen","editStep","verticleLine","stepNumberGrey","modalHeaderContent","cloneJobInput","newJobsConfig","resource_field_choices","guess","modalContentStep3","reviewSubheaders","reviewContent","reviewBoxes","weightValue","iconGreenResources","jobEntity","StyledBreadcrumbs","breadcrumbsData","isHorizontalOverflow","useIsOverflow","newBreadCrumbData","nameRegex","hrefRegex","breadcrumb","convertBreadcrumbsData","breadcrumbContainer","homeIcon","separator","breadcrumbSeparator","breadcrumbs","underline","userInfo","setChangingEntity","widgetsbarExpanded","menuOpen","setMenuOpen","avatarAnchorEl","profileDropdownContainer","profileAvatar","profileDropdownIcon","loadingLogout","setLoadingLogout","masqueradeIconHovered","setMasqueradeIconHovered","alertState","setAlertState","profileMenuItems","links","sourceURL","logOut","openChangingEntity","showAvatar","unmasqueradeURL","avatarSmall","masqueradeAvatar","profileDropdownMenuContainer","profileInformation","profileNameAndEntityContainer","roleInformationWrapper","roleNames","roleInformation","multiEntitiesAccess","profileDropdownMenuItemsContainer","profileDropdownMenuItem","setSearchQuery","openSearch","setOpenSearch","searchIcon","searchDialog","clearSearch","widgetsbarState","setWidgetsbarState","showButtonContainer","hideButtonContainer","Event","dispatchEvent","userEntities","setUserEntities","setEntityId","getUserEntities","switchEntityDialog","valueField","labelField","switchEntityButton","isUAT","setWidgetsbarExpanded","changingEntity","checkLocalStorage","uatBanner","appMenuAnchorEl","setAppMenuAnchorEl","isRecruit","logo","appMenuContainer","appMenuContainerCollapsed","appMenuItemsContainer","appMenuItemsContainerCollapsed","appMenuItems","setNavbarState","setChildState","handleNavbarStateChange","expandCollapseButtonContainer","navbarWidths","expandCollapseButton","menuItems","activeChild","childState","handleChildPopperState","collapsedNavigationChildContainer","submenu","subItem","expandedParents","activeItem","menuItemChildrenContainer","menuItemChild","IS_ENGAGE_URL","newEngageEnabled","setExpandedParents","setActiveItem","filterMenuItems","filteredMenuItems","defaultMenuItems","discoverActiveItem","RegExp","navigationItemsContainer","navigationItemsContainerCollapsed","menuItemParent","activeParent","menuItemParentCollapsed","onCollapsedClick","tempExpandedParents","handleParentClick","renderIcon","menuItemExpandCollapseIcon","aiStudioSettings","navbarContainer","accordian","accordionButton","activitiesContainer","isExecuted","isInitialLoading","getActivityFeed","lastDate","scrollToBottom","Infinity","onTransitionEnd","isToday","recentlyViewedList","setRecentlyViewedList","getRecentlyViewed","recentlyViewedContainer","view","renderColor","controller","request_url","caption","ENGAGE_URL","calendlyEnabled","selectedDate","setSelectedDate","setMonth","weekStart","createMultipleEvents","eventCreated","setEventCreated","useEvents","handleAddEvent","single","widgetsContainerPadding","widgetsbarContainer","widgetsbarWidths","addButton","instance","WidgetsbarWrapper","EditFormPage","formId","SmartFormFieldsState","loadingSystemFields","selectedSystemField","systemFieldError","sourceTypes","ImportFields","sourceType","setSourceType","importFields","loadingSources","getRequisitionForms","selectedSourceId","CreateEditField","actionStates","fetchedFormData","refetchFormData","updateQuestions","questionsActionStates","smartFormSettings","originalQuestions","smartFormState","refetchForms","modalType","UPDATE","updateActions","ListItem","setManager","setOpenManager","editName","setEditName","editEmail","setEditEmail","createStatus","createError","addManager","editStatus","editError","editManager","SampleList","openManager","managers","deleteStatus","deleteError","deleteManager","SmartFormFields","SmartFormFieldsReducer","InitialSmartFormFieldsState","getSmartForm","smartFormsPageContainer","smartFormsPageHeader","CREATE","actionButtonLabel","showModal","showSmartFormModal","CLONE_WITHOUT_FORM","fetchingEntities","forms","fetchingForms","createUpdateSmartForm","cloneForm","updateSmartForm","postSmartForm","defaultSwitch","SmartFormPreview","SmartFormsState","SmartFormsReducer","InitialSmartFormsState","headerRef","smartForm","loadingSmartForm","SmartFormPreviewPage","SmartForms","loadingForms","totalForms","DeleteTooltip","SmartFormsTable","deleteSmartForm","enabledAnchorEl","setEnabledAnchorEl","deleteForm","handleEnabledDropdown","handleEnabledDropdownClose","SmartFormsTableHeaders","enabledDropdown","SmartFormsPage","elementRef","withFormValidation","exitDialogOpen","setExitDialogOpen","snackbarPayload","recruiterOptions","loadingRecruiterOptions","getEventRecruiters","errorsMessage","sessions","createEventParams","break_length","breaks","user_ids","number_of_sessions","createEvents","creatingEvents","createEventsBatches","emojiError","editEvent","editingEvent","updateEvent","newList","createEventModalTitle","FirstStep","SecondStep","ReviewStep","DateDisplay","datesAnchorEl","setDatesAnchorEl","multipleDatesIndicator","progressHeader","isOptionEqualToValue","autocompleteListboxStyle","autocompleteTextfield","selectedTime","second","hourAndMinute","newDateAndTime","newDates","MAX_VISIBLE_AVATARS","statusIconMap","accepted","declined","getIcon","CustomBadge","overlap","renderAvatar","avatar","curr","GroupedAvatars","setAvatarAnchorEl","hasDescription","descriptionText","memorisedDescriptionText","editIcon","CandidateGroupedAvatars","noCandidatesAssigned","wordWrap","EventCreated","eventCreatedModalContainer","eventCreatedModalTitle","eventSessionsContainer","session","ListView","openConfirmationDialog","setOpenConfirmationDialog","deleteEvent","deletingEvent","useDeleteEvent","nextEventIsOnSameDate","previousEventIsOnDifferentDate","listViewCircleIcon","listViewEventTime","listViewEventTitle","listViewInfoTag","listViewSectionTitle","getAttendees","listViewNoCandidatesAssigned","setDefault","localizer","isMobile","getPlatform","viewDate","setViewDate","showList","setShowList","calendarAnchorEl","setCalendarAnchorEl","calendarView","setCalendarView","withoutModal","handleSelectSlot","slot","startDay","isoWeekday","startOf","getWeekStart","handleCreateEvent","addNewEventsPopover","dateCalendar","viewAndSettingsContainer","viewAndSettingsButton","weekPeriodContainer","calendarArrows","timezoneInfo","scrollToTime","defaultView","WEEK","timeslots","selectable","onSelectSlot","onSelecting","onNavigate","eventLength","sessionLength","formats","dayFormat","dayPropGetter","setFilter","filteredEvents","setFilteredEvents","filterEvents","ModalProps","itemContainer","itemDetails","ActionButtons","openDialog","sendEmails","sendEmailBatchesToCandidates","smsCandidates","loadingStatuses","event_application_statuses","getEventApplicationStatuses","changingStatus","changeApplicationStatuses","actionModalContent","actionModalTemplateTitle","SelectedCandidatesTable","application_rating","confirmAction","setConfirmAction","currentUserIsARecruiter","removeCandidates","removingCandidates","removeAttendees","updatedCandidates","updateInvitation","updatingInvitation","updateAttendeeInvitation","updatedRecruiters","attendeeIndex","updatedEvents","deleteAndRemoveDialogDescription","longEventTitle","modalDeleteAndCloseContainer","candidatesListContainer","applicationUrl","job_reference","noCandidatesContainer","acceptingInviteContainer","acceptingInviteButtonGroup","selectedCandidatesIndicatorContainer","clearSelectionButton","updatedList","ScoutCalendarPage","ThemeContext","baseTheme","overrides","fontWeightBold","Component","propTypes","setResolution","findingDescriptions","ua","findings","renderFindings","minRows","resolution_endpoint","ServiceApi","$","attr","getPage","pack","price_pack","AdminIntegrationsIndex","renderIntegrations","integration","icon2x","icons","icon3x","srcSet","render","this","AdminIntegrationsInfoShow","constructor","super","info_tabs","packs","ctaLabel","cta_label","targetUrl","target_url","showButton","show_button","tabClass","tabSelected","tabPaneClass","currentPack","sending","sent","componentDidMount","unlisten","listen","getInfo","componentWillUnmount","priceList","price","enableButtons","handlePackChange","tabPanes","AdminIntegrationsNew","AdminIntegrationsShow","integration_edit_path","pageResponse","AdminMenu","detailSidebar","showAllIntegrations","bool","removeClass","addClass","mobileExpanded","renderHub","apps","menu","renderServices","services","service","showAll","configured","info_only","toggleIntegrationsList","renderComingSoon","applicationName","brandImageUrl","showServicesAndIntegrations","toggleDetailSidebar","toggleMobileNav","PayingUserIndexTemplate","entityValues","rootEntityValues","stateValues","selectCallback","bind","rolePaidFilterCallback","buildCol","buildControls","elem","paid","buildRow","buildHeaders","sortCallback","buildSortableHeader","stateName","filterCallback","prop","payingUserFilters","root_entities","user_states","multi","paginationCallback","csvSubmit","filterSubmit","payingUserIndex","default_filter","root_entity_id","data_name","sort_key","sort_state","getSubservice","serviceId","AdminServicesIndex","AdminServiceShow","subservices","subservice_items","serviceTitle","subservice","AdminSubserviceShow","btnLabel","btn_label","AdminSubmenu","cname","cvalue","exdays","setTime","expires","toGMTString","cookie","ca","decodeURIComponent","setCookie","getCookie","subMenuId","clickHandler","subitem","stopImmediatePropagation","VideoInterview","videoCurrentTime","videoJS","bookmarkTxt","timeMins","timeSecs","editTxt","editNum","editSecs","editMins","addId","removeIndex","videoId","bookMarks","deletedVideo","secs","videoJsOptions","videoSources","player","videoNode","promises","bookmark","variables","seconds","timeStamp","sortBookmarks","createBookmark","previousAry","calTimeStamp","addBookmark","mins","dropDown","updateBookmark","deleteBookmark","handleUpdateTime","updateColor","deletePermission","onSubmit","handleEditSubmit","handleInput","padTimeWithZeros","exitEdit","handleAddSubmit","showBookmarkTime","deleteVideo","deleteVideoUrl","logActivity","activityUrl","VideoInterviewClass","VideoInterviewAdmin","VideoInterviewClient","VideoWrapperClass","VideoWrapperAdmin","VideoWrapperClient","VideoUpload","updateUrl","showBookmark","showDeleteButton","getVideo","createVideo","savedBookmarks","addMultipleBookmarks","getBookmarks","on","addTextTrack","dispose","showVideo","Upload","uploading","slug","uploadProgress","videoPlayer","responseVideoURL","transcoding","loadingState","validFile","videoState","Id","checkVideoState","handelUpload","totalSize","prepareUploadingVideo","uploadFile","xhr","XMLHttpRequest","onprogress","done","setRequestHeader","send","onloadend","getMetaData","prepareLink","rejectedFiles","errorsList","fileSizeLimit","progressStyles","accept","bookmarkId","bookMarkID","IntegrationSettings","integration_id","auth_string","componentWillMount","MvsRequestTest","onPackageChange","SavedSearchItem","savedSearch","isStaff","itemUrl","emailUrl","saveCallback","ajax","saved_search","defaultLabel","post_code1","post_code2","by_title","ret","encodeDataParams","encodeStatus","encodeTags","renderSearchLink","parameters","renderFilters","dataParams","encodeURIComponent","SavedSearchTable","ScoutTrainingsIndex","courses","loadCourses","accessToken","endPoint","scout_candidate_id","Accept","syncCandidate","ScoutTrainingsPortalButton","PropTypes","func","ScoutTrainingsTable","course","provider","commencemented_at","onChangeFunctionName","formattedData","ScoutAddButton","re","innerText","handleSelect","ScoutAutocomplete","limitation","opt","attrs","includeBlank","urlHeaders","searchString","searchUrl","unshift","optionsFirstLoad","getOptions","handleLimitationChange","moveType","selectedLabel","limitationSelect","isMulti","joinValues","loadOptions","cache","isRequired","NestedAutocomplete","parentValue","childBaseUrl","childUrl","parentName","parentLabel","parentUrl","setParentValue","ScoutSelect","selectingOption","formatEmail","getDerivedStateFromProps","nextProps","optionsForQuery","str","LinkControl","CustomControlColumn","DataColumn","InPlaceInputEditor","editing","toggleEditing","inputCallback","LinkColumn","ScoutFilter","filterFields","localSubmit","out","media","CallbackHeader","DataHeader","ScoutTablePagination","renderControl","renderPageControl","renderActiveLink","renderForwardControl","renderBackwardControl","classNames","total_pages","current_page","output","total_records","float","ScoutIndexRow","zebraClass","ScoutIndexTable","renderPagination","renderLoadingRow","renderNothingFound","renderTableBody","idName","ScoutTags","UNSAFE_componentWillReceiveProps","FilteringOptionsTable","defaultStatuses","defaultTags","canFilterScoutClients","setHidden","componentTags","onDropdownChange","newStatuses","parseDate","parsed","isDate","FORMAT","onRemoveClick","onDayChange","dayPickerInput","inputDay","getInput","getFullYear","updatedTags","onSorting","SearchResultsHeader","SearchResultsHeaderRow","isSortingAsc","context","isSortingDesc","defaultClassName","contextTypes","SearchResultsItem","post_code","SearchResultsPagination","isEmpty","renderPreviousPage","previous_page","renderNextPage","isNothingToRender","renderFirstPage","firstPage","renderLastPage","renderPages","previousPages","nextPages","SearchBox","acceptCharset","SortingContext","SearchResultsTable","loadResults","searchEndpoint","url_with_params","param","$searchName","searchName","savedSearchEndpoint","credentials","isSearchSaved","handleSorting","handlePagination","skill","handleFilterOnSubmit","handleFilterOnChange","renderError","hasResults","renderHeader","renderResultsWithSpinner","renderResults","renderNoResults","isSearchSave","handleSaveSearch","SearchResultsTableWithSpinner","AccordionItem","Accordion","adEditorCancelButton","activityList","setList","finished","setFinished","getActivities","prevId","__this","__arguments","generator","reject","fulfilled","rejected","throw","apply","defaultExpanded","accordianButton","accordianTitle","isToday2","dateContainer","borderBottomColor","salaryTypes","AdEditor","jobAdParams","saving","setSaving","savingDraft","setSavingDraft","isSuccessDialogOpen","setIsSuccessDialogOpen","setActiveStep","isExitModalOpen","setIsExitModalOpen","updateAnswers","setActiveError","companyName","industry","industry_options","listing_classification","subIndustry","sub_industry_options","listing_sub_classification","reportToWork","report_to","language","remoteWork","remote","remote_type_options","hires","number_of_hires","hiring","always_hiring","employmentType","work_type_options","work_type","schedule","schedules_options","schedules","isStartDate","selectedSalaryType","salary_type","rangeTo","salary_max","rangeFrom","salary_min","rangeUnit","payment_frequencies_options","salary_frequency","additionalPay","additional_payment_options","additional_payments","benefits","salary_benefit_options","salary_benefits","submitResume","require_resume","isApplicationDeadline","application_deadline","applicationDeadline","startConversation","applicant_starts_conversation","covidPrecautions","covid_precautions","jobReference","askQualifications","applicant_qualifications","ad_preview","submit","listing_location","requiredRefs","checkErrors","getPlainText","Step1","Step2","Step3","handleNextButton","handleNext","__defProp","defineProperty","__defProps","defineProperties","__getOwnPropDescs","getOwnPropertyDescriptors","__getOwnPropSymbols","getOwnPropertySymbols","__hasOwnProp","__propIsEnum","propertyIsEnumerable","__defNormalProp","obj","enumerable","configurable","writable","__spreadValues","__spreadProps","stepContainer","select","value2","greyBox","greyInput","greyIcon","country_options","IconComponent","languages_options","controlledNumberInput","errorOutline","w200","jobAdPropTypes","handleMultiCheck","asterisk","small","calendarContainer","errorStartDate","overlay","calendarOverlay","requiredHeader","salaryInput","inputAdornment","wrap","salaryDropdown","pay","benefit","large","textBox","setIsMobile","previewType","previewDetails","previewButtons","previewContent","applicationSettings","applicationSettingsInner","subFormControl","borderLeft","actionText","spaceItems","removeIcon","sliderTitle","sliderValue","thumb","stepperRoot","stepItem","stepIconActive","stepIconCompleted","stepIconRoot","stepLabelIconContainer","stepLabelLabel","stepLabelActive","stepLabelCompleted","stepHover","stepNoHover","dark","light","sponsorJobContainer","pointerEvents","sponsorJobSubTitle","hireCounter","smallText","mediumText","budgetInput","budgetInutFocused","estimatedResults","paragraphTitle","paragraph","submitButtonContainer","menuItem","AdList","requestNewAdUrl","getNewAdUrl","buttonPrimary","buttonActive","buttonGrey","buttonPrimaryLight","buttonWhite","disableIcon","budgetTypes","SponsoredJobEditor","sponsoredAd","isAdvanced","setIsAdvanced","costPerClick","setCostPerClick","isEndDate","setIsEndDate","budgetType","setBudgetType","budget2","budget_type","budget","setBudget","budget_amount","hireCount","setHireCount","hires_number","endDate","setEndDate","budgetInputFocused","selectMenu","job_ad_id","indeed_access_token","sponsored_job","__async","expire","archive","borderCollapse","borderSpacing","GenericDialog","KpiCard","indicator","getClasses","TRENDING_ICONS","trendingIcon","down","steady","card","cardImageContainer","cardImage","imageUrl","STATUS_COLOR","good","bad","average","borderLeftColor","backgroundRepeat","kpiIcon","directionStatus","cardInner","kpiCategories","settingsOpen","setSettingsOpen","getDashboard","manageMetrics","cards","cardProps","KpiSettings","kpiSettings","setSettings","getCardList","kpiA","kpiB","settings","getDashboardSettings","fetchSettings","kpi","currentPosition","swapWith","newSettings","moveCard","saveDashboardSettings","buttonProgress","THRESHOLD_DIRECTION_OPTS","KpiSettingsCard","good_direction","bad_direction","onCheck","moveButton","paperCon","tooltipEl","canvas","parentNode","getOrCreateTooltip","lines","tableHead","trow","th","titleText","createTextNode","span","tr","tableRoot","firstChild","positionX","offsetTop","positionY","caretX","caretY","bodyFont","string","eyeCon","titleLines","bodyLines","QontoConnector","alternativeLabel","borderTopWidth","StepperComponent","connector","iconContainer","StepIconProps","editExistingJob","setEditExistingJob","checkoutUrl","setCheckoutUrl","checkNewListingUrl","setCheckNewListingUrl","workLocation","work_location","payType","pay_type","payRangeLow","payRangeHigh","jobPreview","job_preview","externalUrl","external_url","externalId","external_id","checkout_url","check_new_listing_url","newAnswers","errorChecks","referrer","worklocations","paytypes","parseSalary","salaryIntervalLabel","extrabenefits","_a2","_b2","descriptionLabel","linkOutEnabled","privacyOverLimit","seek_billing_reference","seek_billing_reference_flag","job_url_prop","brandingEnabled","setBrandingEnabled","maxBulletPoints","setMaxBulletPoints","failedSeekDialogOpen","setFailedSeekDialogOpen","failedSeekDialogMessage","setfailedSeekDialogMessage","getSeekAdBrandingData","setGetSeekAdBrandingData","activeErrorMessage","setActiveErrorMessage","previewUrl","usePreviewSeekAd","getJobData","link_out","video_embed_code","ad_type","use_suggested_classification","difference","current_step","error_message","Step4","failDialog","PinkRadio","AdProductSelection","debouncedTitle","seekAdProduct","setSeekAdProduct","adProductInfo","setAdProductInfo","loadingSeekAdProduct","setLoadingSeekAdProduct","selectedId","setSelectedId","setSelectedValue","handleChangeAdType","branding","searchBulletPoints","products","information","advertisementProducts","product","exception","getSeekAdProducts","sm","md","seekAdType","seekEmbeddedHTML","sellingPoints","sp","index2","AdSelection","getSeekAdSelectionData","setGetSeekAdSelectionData","loadingSeekAdType","setLoadingSeekAdType","selectedValue","seekAnzHirerAdvertisementCreationProducts","getSeekAdType","enabledIndicator","seekAdTypeDisabled","advertisementTypeCode","ExitConfirmationDialog","saveDraft","ExitExistingDialogContent","closeContainer","ExitNewDialogContent","PayDetails","payTypes","useSeekPayTypes","currencies","useSeekCurrencies","payDetailsContainer","salary_interval","basisCode","intervalCode","setSalaryType","currency","salary_additional_text","SeekBillingReference","billing_reference","workSalaryOptions","WorkTypes","listing_work_type","loadingSeekAdAllCategories","setLoadingSeekAdTypeAllCategories","loadingSeekAdCategories","setLoadingSeekAdCategories","seekAdCategories","setSeekAdCategories","getSeekAdCategoriesData","setGetSeekAdCategoriesData","categoriesIndex","setCategoriesIndex","debouncedAddress","updateCategoryIndex","rawData","jobCategories","getSeekAdCategories","getSugestedSeekAdCategories","jobCategorySuggestions","errorAutocomplete","listing_sub_classification_display","jobCategory","listing_classification_display","seek_account_id","loadingSeekAdBranding","setLoadingSeekAdBranding","seekBrandindInfo","setSeekBrandindInfo","advertisementBrandings","edges","pageInfo","branding_id","standout_bullets","standoutBullets","setStandoutBullet","RenderList","endCursor","seekYoutubeUrl","video_position","imageLength","images","typeCode","reviewQuestionText","posting_questionnaire","secondaryRadioGroup","secondaryRadio","optionHint","include_privacy","TextAreaWithCounter","SCOUT_BLUE","SCOUT_SECONDARY_LIGHT_BLUE","SCOUT_SECONDARY_BLUE","WHITE","exLarge","listStylePosition","checkboxWrapper","subheading","closeModalContainer","SeekAd","__publicField","getHeaders","handleResponse","CategoryDeck","categoryList","onMoveStatus","setDefaults","saved","setSaved","dirty","setDirty","differentFromDefaults","setDifferentFromDefaults","hasParentSettings","setHasParentSettings","fetchCategories","getCategories","initialiseCategories","has_parent_settings","defaultsDiff","updateCategories","cats","category_assignment","toS","categoryColumn","handleStatusChanged","defaultsData","categoryName","defaultCategoryColumn","categories2","createDefaultCategories","removeCategories","TextUsModal","selectedApplications","setSelectedApplications","isGroupMessage","setIsGroupMessage","isSelectModalOpen","setIsSelectModalOpen","largeModal","setLargeModal","toggleTextusModal","classList","contains","paramsSerializer","modalRoot","modalLarge","Messenger","conversationsLoading","setConversationsLoading","userOptionsLoading","setUserOptionsLoading","setSending","conversations","setConversations","userOptions","showSidebar","setShowSidebar","selectedConversation","setSelectedConversation","signature","setSignature","scheduleDate","setScheduleDate","scheduleTime","setScheduleTime","isPm","setIsPm","groupMessage","setGroupMessage","fetchConversations","applications2","conversationsData","candidate_id","conversations2","matchingConversation","convo","candidate_phone","candidate_tags","handleTimeValueForPost","fetchUserOptions","initData","modalLeft","sent_time","conversation","modalRight","handleSend","campaign_title","schedule_time","newConversations","msg","existingConversations","combinedConversations","newConversation","CandidateDetails","remainingApplicants","CandidateFilter","unselectedStatuses","reducePadding","filterIcon","filterIconActive","popperStatuses","popperOptions","positionFixed","popperItem","chipNoItems","CandidateListItem","fromNow","excerpt","ChatBox","isSchedulerOpen","setIsSchedulerOpen","timeInputEl","textArea","TagPicker","insertTag","selectionStart","TemplatePicker","SignatureToggle","sendButton","spinner","schedulerButton","schedulerButtonActive","popperScheduler","schedulerOptions","startingTimeInputWrapper","startTimeInput","timeBntGroupWrapper","isAMActive","isPMActive","popperTemplate","popperItemTemplate","noHover","ChatWindow","noMessages","chatContainer","asHours","ChatItem","chatItemContainer","alignRight","chatItem","fromCandidate","SelectRecipients","selectedUsers","setSelectedUsers","setUnselectedStatuses","DataSourcedComponent","PaginatedDataSource","parseBrowserHash","fetchCSV","handleSort","value_object","filter_map","path_func","parseResponse","param_filters","empty","jQuery","that","response_data","dataCallback","sort_field","checked2","getOptionValue","getLabel","getValue","useFormValidator","inputError","ServiceComponent","ServiceInterfaceClient","notices","alerts","beforeId","before_id","componentRequireContext","tempNotificationData","syntax","inherits","dropShadow","listStyleType","customDescription","use_custom_description","include_hashtags","summary_length","centeredBiggerMargin","resume","summaryContainer","tlpPreview","toggleTlpPreview","historyId","questionString","questionArray","custom_get","calendly","buttonIcon","borderStyle","borderTopColor","default_text","letterSpacing","marginleft","baseOperatorsRegex","parenthesisContentRegex","baseOperators","onlyBaseOperators","exec","match2","detectOperator","queryPart","opaque","green","red","blue","convertedFilters","bigToggleButton","visibility","errorIcon","hr_answer_set","rating_set","getSmsTemplatePlaceholders","getEmailTemplateFromCalendar","applicationIds","added","invited","emailTemplateId","form_response","send_form","send_sms_form","getVideoTimestamps","assetId","asset_id","createVideoTimestamp","timestampName","timestampValue","updateVideoTimestamp","timestampId","deleteVideoTimestamp","taskId","showFormResponse","getVideoInterviewBookmarks","deleteVideoInterviewBookmark","createVideoInterviewBookmark","updateVideoInterviewBookmark","revolve_record","getIntegrationsData","packageId","hro_record","roubler_record","getCognologyData","cognology_record","permissionKey","scoutOnboard","xref","applicationKey","mvs","foundU","testGrid","roubler","fit2work","alayacare","integrationName","integrationConfig","warn","hasPermission","isEnabled","hasApplicationKey","paddingX","rating_value","ModalType2","SectionName2","AttachmentType2","asSeconds","secondsToTimeString","InitialTimeStampState","isRefetching","savedCategoryValue","savedCategory","form_response_id","question_and_answers","timestampAdded","setTimestampAdded","fetchTimestampsAPI","updateTimestampApi","createTimestampApi","deleteTimestampApi","videoElement","getCurrentTime","actionsMenuPaperCommonStyles","flexFlow","publicLinkId","systemFieldId","position_id","new_position","emailItemList","actionsModalReducedPaddingCommonStyles","tableTimeTextfield","msOverflowStyle","scrollbarWidth","filterPopoverHeaderCommonStyles","approversHeader","pending","actionGroup","h2","High","Normal","Low","htmlEditor","startOfDay","endOfDay","endOf","ul","li","timePicker","noContentWrapper","modalConfirmationButtonCommonStyles","sectionContent","modalBody","sectionSubHeader","gridColumn","gridRow","leftArrowStyles","rightArrowStyles","noteBox","actionsMenuSpanCommonStyles","isScrollable","itemsOnPage","newSelectedItems","globalRes","globalPreferences","localRes","localPreferences","dialogConfirmButton","dropdownText","rowSelectContainerAlt","translate","american","describe","it","expect","AmericanSpellings","toBeDefined","toStrictEqual","not","toMatch","BritishSpellings","oldString","newString","newLen","oldLen","editLength","maxEditLength","bestPath","newPos","oldPos","extractCommon","oldValue","removed","diagonalPath","basePath","addPath","removePath","oldPos2","canAdd","canRemove","pushComponent","buildValues","newCount","oldCount","commonCount","equals","changes","change","lastEnd","everyLowerCase","charCodeAt","fromCharCode","everyUpperCase","toBe","original","translateWord","translateCase","isUpperCase","charIndex","oldChar","newChar","translated","endsWith","isSecureContext","HTML","PLAINBLOB","Blob","HTMLBLOB","write","ClipboardItem","_0","onFinally","failureMessage","__pow","pow","bytes","si","dp","thresh","units","u","toFixed","immutableCopy","singular","amount","questionInputLabel","questionDateWrapper","useStyles","handlePaginatedResponse","getPaginated","dashboardStyles","marginInline","requisitionTitle","paddingBlock","h4","removeButton","tableActionsReply","tabFooter","loadingWrapper","placeItems","loadingContent","graphWrapper","noDataText","generateButton","JOB_INFORMATION_OFFSET","JOB_INFORMATION_TAB_GROUP_SIZE","CANDIDATE_SETTINGS_OFFSET","CANDIDATE_SETTINGS_TAB_GROUP_SIZE","AUTOMATION_OFFSET","AUTOMATION_TAB_GROUP_SIZE","ADVANCED_OFFSET","convertToGroupAndTabIndex","panelIndex","createTabIndex","getApplicationsForTask","setId","userId","typeId","getPlaceholders","updateNotes","noteTextInput","actionButtonStyles","resend","ceridianDayforce","ID","CANDIDATE","GENDER","SUBURB","STATE","COUNTRY","DATE","RATING","STATUS","PHONE","CANDIDATE_TAGS","baseButtonStyles","csvExportCheckboxContainer","selectedApplicantsTableStyles","selectedApplicantsTableRowStyles","statusClampCommonStyles","statusClampDropdownStyles","statusClampHoverStyles","candidateSearchCommonStyles","formGroup","justifyItems","noteTitle","attachmentsTitle","emailStatusesSkeleton","Published","Draft","Unpublished","Saved","Closed","NoteState2","SortableColumnId2","getUISettings","statusID","checkboxLabels","uncheckedLabel","checkboxContainerStyles","dateDisplayBox","iconBlue","lineClamp","boxOrient","unpublished","statusClampAfterStyles","statusClampDropdownAfterStyles","selectedTooltipCommonStyles","pinJobsButton","pinJobsNotActive","archivedHeaders","archivedDropdownOptions","fieldDropdownSetting","localDefaults","setClassificationIds","editAttachmentsDefault","indeed_salary","sponsor_on_indeed","job_expiry_email_reminder","_n","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","_y","_z","_A","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_R","_S","_T","_U","_V","_W","_X","_Y","_Z","__","_$","_aa","_ba","_ca","_da","_ea","_fa","_ga","_ha","_ia","_ja","_ka","_la","_ma","_na","_oa","_pa","_qa","_ra","_sa","_ta","_ua","_va","_wa","_xa","_ya","_za","_Aa","_Ba","_Ca","_Da","attachmentObject","updatedExpiryDate","utc","external_requisition_id","salesperson_id","pinned_users_ids","recipient_ids","brand_id","auto_rater_id","smart_form_recipients_ids","recruitment_ad_user_id","application_recipient_ids","application_recipient","panel_chair_ids","panel_member_ids","panel_observer_ids","source_ids","additionalOptions","sub","newEngage","isEngage","source_type","expiryCacheKey","cacheKey","responseExpiryStr","responseFromLocal","setIsDragging","startPoint","handleMouseDown","clientX","clientY","handleMouseMove","dx","handleMouseUp","removeProperty","currentRef","updateChoiceAttr","newTempId","oldId","newId","setInputError","debouncedCheckOverflow","cb","shouldWait","waitingArgs","timeoutFunc","basePrimaryButtonStyles","baseSecondaryButtonStyles","WebkitLineClamp","WebkitBoxOrient","scrollShadowAfterStyles","scrollShadowBeforeStyles","switchLabelsCommonStyles","_arrowStyles","applyButtonStyles","filterPopoverContentStyles","rowSelectContainerCommonStyles","contentType","typeMap","audio","typePrefix","userAgent","isAndroid","isIOS","isMac","isWindows","ALLOWED_FORMATS","long","short","shortWithDayOfWeek","onlyTime","ymd","localStoreValue","sortableColumnMap","Map","set","usedIds","matchingColumn","blob","event_batch","attendee_ids","MAIN_COLOR","ALTERNATE_COLOR","BAD_COLOR","ALTERNATE_BAD_COLOR","TEAL_LIGHT","contentHeader","contentWrapper","gridWrapper","datePickerHeaderWrapper","buttonBackSuccess","buttonBackFail","repeatDayPopoverWrapper","checkBoxGroupWrapper","popoverWrapper","inputFullWidth","jobCheckBox","availabilitySummary","conflictsContentWrapper","eventSummaryGrid","eventSummaryGridWrapper","loadingStepsWrapper","modalHeaderRight","modalActionButtons","checkBoxes","checkBoxOff","setJsonResponse","seekAccountId","setPreviewUrl","setSeekAccounts","accounts","processedData","setProcessedData","useSeekGlobalData","setCurrencies","dataStr","dataFromLocalStorage","dataFromApi","setPayTypes","borderInline","factor","SCOUT_BLUE_DARK","LIGHT_BLUE","PURPLE","PINK","MEDIUM_RED","DARK_BLUE","YELLOW","GREEN","LIGHT_GREEN","OPAQUE_GREEN","OPAQUE_BLUE","OPAQUE_PINK","OPAQUE_RED","OPAQUE_DARK_BLUE","OPAQUE_YELLOW","OPAQUE_PURPLE","SCOUT_TEAL","LIGHT_RED","BLACK","GREY","DARK_GREY","MuiButton","MuiSelect","MuiFormControl","MuiAutocomplete","MuiPopover","MuiOutlinedInput","MuiTextField","MuiAccordionSummary","containedSecondary","outlinedSecondary","MuiChip","MuiPickersModal","dialogRoot","MuiPickersToolbar","MuiPickersTimePickerToolbar","hourMinuteLabel","MuiPickersToolbarText","toolbarTxt","toolbarBtnSelected","MuiPickersBasePicker","MuiPickersClock","clock","MuiPickersClockNumber","clockNumber","permissionCache","permissionExpiry"],"sourceRoot":""}